diff options
author | Peter Bengtsson <mail@peterbe.com> | 2020-12-08 21:46:22 -0500 |
---|---|---|
committer | Peter Bengtsson <mail@peterbe.com> | 2020-12-08 21:46:22 -0500 |
commit | a065e04d529da1d847b5062a12c46d916408bf32 (patch) | |
tree | fe0f8bcec1ff39a3c499a2708222dcf15224ff70 /files/pt-br | |
parent | 218934fa2ed1c702a6d3923d2aa2cc6b43c48684 (diff) | |
download | translated-content-a065e04d529da1d847b5062a12c46d916408bf32.tar.gz translated-content-a065e04d529da1d847b5062a12c46d916408bf32.tar.bz2 translated-content-a065e04d529da1d847b5062a12c46d916408bf32.zip |
update based on https://github.com/mdn/yari/issues/2028
Diffstat (limited to 'files/pt-br')
354 files changed, 0 insertions, 60735 deletions
diff --git a/files/pt-br/_wikihistory.json b/files/pt-br/_wikihistory.json deleted file mode 100644 index d1ef78862e..0000000000 --- a/files/pt-br/_wikihistory.json +++ /dev/null @@ -1,17374 +0,0 @@ -{ - "Aprender": { - "modified": "2020-08-17T01:24:04.475Z", - "contributors": [ - "GiovanniHD201E", - "Magela", - "Anonymous", - "SphinxKnight", - "wcqueiroz", - "leticiacampanharo", - "svarlamov", - "julio-elipse", - "CodexZombie", - "Ermesoml", - "LucasPrado", - "phhoffmann", - "mrmorais", - "Gilbertosilvax1", - "teoli", - "toscano", - "CNicola", - "JamileLima", - "Diegoprsz", - "Doug_Fany", - "gustavoaraujo", - "-" - ] - }, - "Aprender/CSS": { - "modified": "2020-07-16T22:25:36.584Z", - "contributors": [ - "fbilinski", - "peas", - "adoniasvitorio", - "melostbr", - "stefanocbl", - "ThiagoMSArrais", - "uteifeld", - "megaday", - "mak213k", - "luan03" - ] - }, - "Aprender/CSS/Construindo_blocos": { - "modified": "2020-07-16T22:28:09.218Z", - "contributors": [ - "terasider" - ] - }, - "Aprender/CSS/Construindo_blocos/Cascade_and_inheritance": { - "modified": "2020-08-10T11:05:37.121Z", - "contributors": [ - "dsantana77" - ] - }, - "Aprender/CSS/Construindo_blocos/The_box_model": { - "modified": "2020-11-09T11:05:07.161Z", - "contributors": [ - "wilsonbrandao", - "eduardodarocha", - "warleyfdias" - ] - }, - "Aprender/CSS/Estilizando_texto": { - "modified": "2020-11-10T21:16:01.558Z", - "contributors": [ - "wilsonbrandao", - "WesleyCristiano" - ] - }, - "Aprender/Como_contribuir": { - "modified": "2020-07-16T22:33:45.702Z", - "contributors": [ - "MistarSometung", - "SphinxKnight", - "G_Nascimento", - "AdrianoCh" - ] - }, - "Aprender/Ferramentas_e_teste": { - "modified": "2020-07-16T22:38:56.887Z", - "contributors": [ - "GPrimola" - ] - }, - "Aprender/Front-end_web_developer": { - "modified": "2020-11-06T17:15:48.569Z", - "contributors": [ - "flaviomicheletti", - "SphinxKnight", - "marcus.simei", - "vinidesign.web", - "victorwvieira", - "etc_william" - ] - }, - "Aprender/Getting_started_with_the_web": { - "modified": "2020-11-12T14:47:17.943Z", - "contributors": [ - "msevero.vasconcelos", - "Magela", - "wcqueiroz", - "ivanagui2", - "adoniasvitorio", - "LucianoHanna", - "RobMota", - "gustavoaraujo", - "duuz" - ] - }, - "Aprender/Getting_started_with_the_web/A_web_e_seus_padrões": { - "modified": "2020-09-30T16:25:35.717Z", - "contributors": [ - "kleversonsc", - "Xxxtechnopy", - "wilkersalazar" - ] - }, - "Aprender/Getting_started_with_the_web/CSS_basico": { - "modified": "2020-07-16T22:35:02.824Z", - "contributors": [ - "Magela", - "The-Physicist", - "klisostom", - "SphinxKnight", - "MidianLima", - "wcqueiroz", - "fpsaraiva", - "otavioarc", - "yosasuke", - "rsip22", - "MatheusSales", - "DiegoBousfield", - "gustavoaraujo" - ] - }, - "Aprender/Getting_started_with_the_web/Como_a_Web_funciona": { - "modified": "2020-07-16T22:34:02.146Z", - "contributors": [ - "raucer", - "Magela", - "wcqueiroz", - "joaopaulogn.dev", - "kleinerbr", - "otavioarc", - "pablobfonseca", - "gustavoaraujo" - ] - }, - "Aprender/Getting_started_with_the_web/HTML_basico": { - "modified": "2020-09-28T22:22:12.899Z", - "contributors": [ - "kleversonsc", - "Magela", - "cisojacobsen", - "lukebarneys", - "The-Physicist", - "wcqueiroz", - "helton-mori-dev", - "fabianosantos.net", - "RobMota", - "brunopulis", - "marciioluucas", - "rsip22", - "DiegoBousfield", - "gustavoaraujo" - ] - }, - "Aprender/Getting_started_with_the_web/JavaScript_basico": { - "modified": "2020-11-19T13:42:46.355Z", - "contributors": [ - "msevero.vasconcelos", - "yurigauermarques", - "imsantosrodrigo", - "di3goCS", - "raucer", - "soarescamila", - "lucas-av7", - "Magela", - "wcqueiroz", - "helton-mori-dev", - "pietromesadri", - "raphaelhenrique", - "gabrielrosa2004", - "fernandosavio", - "Ralf_Amr", - "otavioarc", - "davilmaster", - "mrmorais", - "marcio-ti", - "barrosval", - "capaci", - "MatheusSales", - "DiegoBousfield", - "leleofg", - "gustavoaraujo" - ] - }, - "Aprender/Getting_started_with_the_web/Publicando_seu_site": { - "modified": "2020-07-16T22:34:28.025Z", - "contributors": [ - "raucer", - "Magela", - "wcqueiroz", - "tuxpilgrim", - "Fernandolrs", - "otavioarc", - "barrosval", - "gustavoaraujo" - ] - }, - "Aprender/Getting_started_with_the_web/com_que_seu_site_vai_parecer": { - "modified": "2020-11-26T14:10:39.382Z", - "contributors": [ - "SphinxKnight", - "Fernando_Moreira", - "Magela", - "wcqueiroz", - "rafael-junio", - "RobMota", - "Gabriela-23", - "ricardoferreirades", - "psergiojr", - "gustavoaraujo" - ] - }, - "Aprender/Getting_started_with_the_web/instalando_programas_basicos": { - "modified": "2020-07-16T22:34:10.512Z", - "contributors": [ - "Magela", - "wcqueiroz", - "israeljunior", - "helton-mori-dev", - "el-unicorn", - "rafael-junio", - "RobMota", - "leocadiomichael", - "CNicola", - "gustavoaraujo" - ] - }, - "Aprender/Getting_started_with_the_web/lidando_com_arquivos": { - "modified": "2020-07-16T22:34:37.257Z", - "contributors": [ - "Andrya", - "Magela", - "wcqueiroz", - "RobMota", - "SphinxKnight", - "Mservicos", - "Gabriela-23", - "ricardoferreirades", - "rsip22", - "rvNN", - "CNicola", - "gustavoaraujo" - ] - }, - "Aprender/HTML": { - "modified": "2020-10-31T12:06:06.944Z", - "contributors": [ - "yurigauermarques", - "Magela", - "wcqueiroz", - "julio-elipse", - "Gabriela-23", - "luzniek", - "Fernandolrs", - "Leodma", - "lsvinicius", - "dnlezin" - ] - }, - "Aprender/HTML/Introducao_ao_HTML": { - "modified": "2020-11-27T11:33:56.639Z", - "contributors": [ - "msevero.vasconcelos", - "SphinxKnight", - "marcus.simei", - "Magela", - "wcqueiroz", - "Gabriela-23", - "BrunoThomaz", - "JonatasTeixeira", - "Ronicley", - "Isaakie", - "stefanocbl", - "farfael", - "yfernandes", - "AnteroJunior", - "erickmartim", - "andrekutianski" - ] - }, - "Aprender/HTML/Introducao_ao_HTML/Criando_hyperlinks": { - "modified": "2020-10-09T12:32:10.057Z", - "contributors": [ - "imsantosrodrigo", - "soarescamila", - "klisostom", - "wcqueiroz", - "joaopaulogn.dev", - "Kardhyr", - "programando", - "fossalex", - "stefanocbl" - ] - }, - "Aprender/HTML/Introducao_ao_HTML/Debugging_HTML": { - "modified": "2020-10-10T15:20:53.986Z", - "contributors": [ - "imsantosrodrigo", - "ricardo-ap-abreu", - "drikoh", - "charles_melara", - "Marnei-Cardoso" - ] - }, - "Aprender/HTML/Introducao_ao_HTML/Estrutura_de_documento_e_sites": { - "modified": "2020-10-10T12:24:24.277Z", - "contributors": [ - "imsantosrodrigo", - "LucasPereira", - "Lukff", - "wcqueiroz", - "felipe-luiz" - ] - }, - "Aprender/HTML/Introducao_ao_HTML/Formatacao_avancada_texto": { - "modified": "2020-11-03T03:15:01.344Z", - "contributors": [ - "SphinxKnight", - "MiguelZK", - "imsantosrodrigo", - "klisostom", - "romulocarvalho", - "itamarsilva" - ] - }, - "Aprender/HTML/Introducao_ao_HTML/Fundamentos_textuais_HTML": { - "modified": "2020-10-08T15:21:36.053Z", - "contributors": [ - "imsantosrodrigo", - "soarescamila", - "Magela", - "hillary-reis", - "klisostom", - "wcqueiroz", - "digoribeiro", - "joaopaulogn.dev", - "RobMota", - "SphinxKnight", - "programando", - "stefanocbl" - ] - }, - "Aprender/HTML/Introducao_ao_HTML/Getting_started": { - "modified": "2020-12-07T16:55:14.326Z", - "contributors": [ - "Magela", - "soarescamila", - "wcqueiroz", - "diegobarcelar", - "Gabriela-23", - "IsabellaMacedo", - "hocraveiro", - "GustavoAlvesDaSilvaCoder", - "allysonthales", - "jorgeclesio" - ] - }, - "Aprender/HTML/Introducao_ao_HTML/Test_your_skills:_HTML_text_basics": { - "modified": "2020-10-02T10:40:58.435Z", - "contributors": [ - "lufesipe", - "incaDigital" - ] - }, - "Aprender/HTML/Introducao_ao_HTML/The_head_metadata_in_HTML": { - "modified": "2020-07-16T22:23:22.939Z", - "contributors": [ - "Danilo", - "Magela", - "klisostom", - "leoc01", - "wcqueiroz", - "daliannyvieira", - "Luan4560", - "joaopaulogn.dev", - "RobMota", - "Gabriela-23", - "programando", - "mitlearning", - "stefanocbl", - "kenobll" - ] - }, - "Aprender/HTML/Multimedia_and_embedding": { - "modified": "2020-09-18T10:32:28.552Z", - "contributors": [ - "gcrz", - "MiscoTrisco", - "wcqueiroz", - "finkenauer", - "MatheusKozaku" - ] - }, - "Aprender/HTML/Multimedia_and_embedding/Adding_vector_graphics_to_the_Web": { - "modified": "2020-08-14T16:08:27.991Z", - "contributors": [ - "MarcosClaro" - ] - }, - "Aprender/HTML/Multimedia_and_embedding/Images_in_HTML": { - "modified": "2020-07-16T22:24:47.423Z", - "contributors": [ - "cisojacobsen", - "LucasPereira", - "rafaelblink", - "brunopulis" - ] - }, - "Aprender/HTML/Multimedia_and_embedding/Other_embedding_technologies": { - "modified": "2020-07-16T22:25:03.448Z", - "contributors": [ - "cisojacobsen", - "MatheusBorges", - "LucasPereira" - ] - }, - "Aprender/HTML/Multimedia_and_embedding/Responsive_images": { - "modified": "2020-07-16T22:24:37.186Z", - "contributors": [ - "gustavaum", - "davimh", - "rafaelcavalcante", - "BrunoThomaz" - ] - }, - "Aprender/HTML/Multimedia_and_embedding/Video_and_audio_content": { - "modified": "2020-07-16T22:24:55.358Z", - "contributors": [ - "LucasPereira", - "LucasPrado" - ] - }, - "Aprender/HTML/Tables": { - "modified": "2020-07-16T22:25:14.343Z", - "contributors": [ - "nicolearagao", - "BeatrizCavallieri" - ] - }, - "Aprender/HTML/Tables/Basics": { - "modified": "2020-11-17T04:01:03.837Z", - "contributors": [ - "SphinxKnight", - "aluizioneto", - "Caio_Rocha" - ] - }, - "Aprender/HTML/como-fazer": { - "modified": "2020-07-16T22:22:30.419Z", - "contributors": [ - "wcqueiroz", - "julio-elipse", - "slopesricardo" - ] - }, - "Aprender/JavaScript": { - "modified": "2020-08-28T11:51:35.506Z", - "contributors": [ - "moukinchung", - "Chanpt", - "daniel-neiva", - "BeatrizCavallieri", - "leanfj", - "Takeshi-S", - "Abraham.G.", - "wcqueiroz", - "paulopompeu", - "CarlosFariass", - "leticiacampanharo", - "helton-mori-dev", - "SphinxKnight", - "gucaveira", - "aoc85", - "7aylors", - "gabrielrosa2004", - "byxande", - "amc97", - "Velasco", - "marcio-ti", - "Victorfm2167", - "diogoslima", - "deyvid0123" - ] - }, - "Aprender/JavaScript/Client-side_web_APIs": { - "modified": "2020-07-16T22:32:41.822Z", - "contributors": [ - "georgebueno77", - "helton-mori-dev", - "WellingtonFR", - "allanregess", - "Wendryl", - "andersoonluan" - ] - }, - "Aprender/JavaScript/Client-side_web_APIs/Client-side_storage": { - "modified": "2020-09-30T03:03:23.191Z", - "contributors": [ - "SphinxKnight", - "Paulo_Rezende" - ] - }, - "Aprender/JavaScript/Client-side_web_APIs/Introdução": { - "modified": "2020-11-04T14:49:24.547Z", - "contributors": [ - "domuserk", - "nunes.rodrigo.dev", - "BeatrizCavallieri", - "GLuchtenberg", - "fpsaraiva", - "FernandaBernardo" - ] - }, - "Aprender/JavaScript/Elementos_construtivos": { - "modified": "2020-07-16T22:31:10.224Z", - "contributors": [ - "Danilo", - "artphil", - "renansouza", - "psergiojr", - "tecnobr" - ] - }, - "Aprender/JavaScript/Elementos_construtivos/Build_your_own_function": { - "modified": "2020-07-20T16:29:20.448Z", - "contributors": [ - "eziotristao", - "gabriel_cadu", - "artphil", - "greysonf" - ] - }, - "Aprender/JavaScript/Elementos_construtivos/Código_em_loop": { - "modified": "2020-07-16T22:31:21.519Z", - "contributors": [ - "gabriel_cadu", - "lucas-av7", - "jess-silvano", - "recofka" - ] - }, - "Aprender/JavaScript/Elementos_construtivos/Events": { - "modified": "2020-07-16T22:31:39.504Z", - "contributors": [ - "suyfranca", - "PGama-Rodrigo", - "douglast2t", - "greysonf", - "VictorGom3s" - ] - }, - "Aprender/JavaScript/Elementos_construtivos/Functions": { - "modified": "2020-07-16T22:31:26.363Z", - "contributors": [ - "artphil", - "samu101108" - ] - }, - "Aprender/JavaScript/Elementos_construtivos/Image_gallery": { - "modified": "2020-07-16T22:31:44.008Z", - "contributors": [ - "greysonf" - ] - }, - "Aprender/JavaScript/Elementos_construtivos/Return_values": { - "modified": "2020-07-16T22:31:34.447Z", - "contributors": [ - "gabriel_cadu", - "Danilo", - "greysonf" - ] - }, - "Aprender/JavaScript/Elementos_construtivos/conditionals": { - "modified": "2020-11-20T11:18:47.143Z", - "contributors": [ - "Coronel-Marc", - "gabriel_cadu", - "euvanribeiro", - "greysonf", - "biakp", - "joficial", - "raphaeljq", - "francoforget", - "fenobalao" - ] - }, - "Aprender/JavaScript/Howto": { - "modified": "2020-07-16T22:33:10.988Z", - "contributors": [ - "edvoidcode", - "kabwto" - ] - }, - "Aprender/JavaScript/Objetos": { - "modified": "2020-07-16T22:31:52.228Z", - "contributors": [ - "rafaelsantosjor", - "webfelipemaia", - "Tiagosb", - "claudiolcastro", - "carlos-rafael", - "juniorcaires" - ] - }, - "Aprender/JavaScript/Objetos/Adding_bouncing_balls_features": { - "modified": "2020-07-16T22:32:35.532Z", - "contributors": [ - "greysonf" - ] - }, - "Aprender/JavaScript/Objetos/Básico": { - "modified": "2020-07-16T22:32:01.105Z", - "contributors": [ - "clivelton", - "WellingtonFR", - "rafaelsantosjor", - "hmilena", - "webfelipemaia" - ] - }, - "Aprender/JavaScript/Objetos/Herança": { - "modified": "2020-07-16T22:32:15.784Z", - "contributors": [ - "WellingtonFR", - "greysonf" - ] - }, - "Aprender/JavaScript/Objetos/JSON": { - "modified": "2020-07-16T22:32:28.309Z", - "contributors": [ - "euvanribeiro", - "WellingtonFR", - "mateus1siqueira", - "greysonf" - ] - }, - "Aprender/JavaScript/Objetos/Object-oriented_JS": { - "modified": "2020-07-16T22:32:07.136Z", - "contributors": [ - "rpizzolato", - "WellingtonFR", - "greysonf" - ] - }, - "Aprender/JavaScript/Objetos/Object_building_practice": { - "modified": "2020-07-16T22:32:32.103Z", - "contributors": [ - "tonMoraes", - "greysonf" - ] - }, - "Aprender/JavaScript/Objetos/Object_prototypes": { - "modified": "2020-07-16T22:32:21.988Z", - "contributors": [ - "WellingtonFR", - "DanStos", - "greysonf" - ] - }, - "Aprender/Learning_and_getting_help": { - "modified": "2020-07-16T22:40:49.138Z", - "contributors": [ - "GiovanniHD201E" - ] - }, - "Aprender/Release_notes": { - "modified": "2020-10-15T20:54:28.940Z", - "contributors": [ - "3ltons" - ] - }, - "CSS/Usando_caixas_flexiveis_css": { - "modified": "2019-09-08T09:50:19.292Z", - "contributors": [ - "emaia", - "gabrielbarros28", - "FernandaBernardo", - "rvNN", - "trestini", - "afonsopacifer", - "brunoqueiros", - "deaballe" - ] - }, - "Construindo_um_complemento": { - "modified": "2019-03-23T23:05:15.518Z", - "contributors": [ - "rodrigopadula" - ] - }, - "DOM": { - "modified": "2019-03-23T23:35:40.503Z", - "contributors": [ - "teoli" - ] - }, - "DOM/Referencia_do_DOM": { - "modified": "2019-07-12T13:54:33.473Z", - "contributors": [ - "wcqueiroz", - "AlyoshaS", - "tuanny", - "arai", - "srsaude" - ] - }, - "DOM/Referencia_do_DOM/Events": { - "modified": "2020-08-30T22:44:17.906Z", - "contributors": [ - "bermarques" - ] - }, - "DOM/Referencia_do_DOM/Examples": { - "modified": "2019-03-23T22:11:58.983Z", - "contributors": [ - "virginiarcruz" - ] - }, - "DOM/Referencia_do_DOM/How_to_create_a_DOM_tree": { - "modified": "2019-03-23T22:11:56.223Z", - "contributors": [ - "virginiarcruz" - ] - }, - "DOM/Referencia_do_DOM/Introdução": { - "modified": "2020-12-03T17:12:30.790Z", - "contributors": [ - "aotakeda", - "xKbryan", - "herculesgabriel", - "mfdj.1999", - "tomazcunha", - "andrekutianski", - "ramonfranklyn", - "onsistec" - ] - }, - "DOM/Referencia_do_DOM/Whitespace_in_the_DOM": { - "modified": "2019-03-18T21:38:03.775Z", - "contributors": [ - "jpreuss", - "coloringa" - ] - }, - "DragDrop": { - "modified": "2019-03-23T23:34:35.791Z", - "contributors": [ - "drewp" - ] - }, - "DragDrop/Drag_and_Drop": { - "modified": "2019-12-03T23:38:01.288Z", - "contributors": [ - "CharlesEduardoSCBR", - "rodrigofazenda", - "cezaraugusto", - "saviski", - "jpalharini" - ] - }, - "DragDrop/Drag_and_Drop/Arrastar_e_soltar_arquivos": { - "modified": "2020-03-05T12:27:04.657Z", - "contributors": [ - "NOOB_DISNEY" - ] - }, - "Games": { - "modified": "2019-11-13T05:55:50.889Z", - "contributors": [ - "SphinxKnight", - "Aschlla", - "wbamberg", - "allanthales", - "LucasPrado", - "quindai", - "dayanyrec", - "sidbalito", - "-", - "michaelws25" - ] - }, - "Games/Anatomy": { - "modified": "2019-03-18T21:46:19.514Z", - "contributors": [ - "kaluabentes", - "wbamberg", - "Emanuelpantoja" - ] - }, - "Games/Introduction": { - "modified": "2019-03-23T22:16:29.874Z", - "contributors": [ - "wbamberg", - "LucasPrado", - "quindai" - ] - }, - "Games/Introduction_to_HTML5_Game_Gevelopment_(summary)": { - "modified": "2019-03-18T20:49:07.398Z", - "contributors": [ - "G_Nascimento" - ] - }, - "Games/Publishing_games": { - "modified": "2019-07-16T19:29:14.975Z", - "contributors": [ - "SubaruSama" - ] - }, - "Games/Techniques": { - "modified": "2019-01-16T21:47:44.488Z", - "contributors": [ - "wbamberg", - "zerox347", - "ladybenko" - ] - }, - "Games/Techniques/2D_collision_detection": { - "modified": "2020-07-04T08:12:21.880Z", - "contributors": [ - "erickcpassos", - "deyvidfk", - "Erickfgfg" - ] - }, - "Games/Techniques/3D_on_the_web": { - "modified": "2019-03-18T20:56:23.810Z", - "contributors": [ - "ViniciusMatias" - ] - }, - "Games/Techniques/Control_mechanisms": { - "modified": "2019-04-12T01:31:35.859Z" - }, - "Games/Tools": { - "modified": "2019-03-23T22:21:04.609Z", - "contributors": [ - "wbamberg", - "LincePotiguara" - ] - }, - "Games/Tools/asm.js": { - "modified": "2019-01-17T01:24:47.932Z", - "contributors": [ - "wbamberg", - "skwcontadores" - ] - }, - "Games/Tutorials": { - "modified": "2020-04-12T15:58:10.944Z" - }, - "Games/Tutorials/2D_Breakout_game_pure_JavaScript": { - "modified": "2020-04-12T15:58:11.112Z", - "contributors": [ - "JoeParrilla" - ] - }, - "Games/Tutorials/2D_Breakout_game_pure_JavaScript/Move_the_ball": { - "modified": "2020-04-12T15:58:12.124Z", - "contributors": [ - "liara987" - ] - }, - "Glossario": { - "modified": "2020-10-07T11:13:14.110Z", - "contributors": [ - "peterbe", - "SphinxKnight", - "wcqueiroz", - "wbamberg", - "matheusdmm", - "-", - "gusleindecker" - ] - }, - "Glossario/404": { - "modified": "2019-03-23T22:47:20.165Z", - "contributors": [ - "raduq" - ] - }, - "Glossario/502": { - "modified": "2019-03-23T22:47:23.868Z", - "contributors": [ - "raduq" - ] - }, - "Glossario/AJAX": { - "modified": "2020-01-10T00:02:09.757Z", - "contributors": [ - "brunofrra", - "mariozuany", - "barrosval", - "rogeriomoraessp" - ] - }, - "Glossario/API": { - "modified": "2019-10-20T21:41:36.383Z", - "contributors": [ - "htmribeiro", - "raphaelhenrique", - "andrekutianski", - "raduq" - ] - }, - "Glossario/ASCII": { - "modified": "2020-08-07T10:40:43.821Z", - "contributors": [ - "rafhaelfitzpatrick", - "mak213k" - ] - }, - "Glossario/Abstração": { - "modified": "2019-03-23T22:35:53.964Z", - "contributors": [ - "jjmars" - ] - }, - "Glossario/Acessibilidade": { - "modified": "2019-03-23T22:05:43.916Z", - "contributors": [ - "MarceloBRN" - ] - }, - "Glossario/Adobe_Flash": { - "modified": "2019-03-18T21:44:03.570Z", - "contributors": [ - "SaraJade" - ] - }, - "Glossario/Algoritmo": { - "modified": "2019-01-17T02:26:12.294Z", - "contributors": [ - "SaraJade" - ] - }, - "Glossario/Alpha": { - "modified": "2020-11-15T12:30:40.587Z", - "contributors": [ - "IsaqueDiniz" - ] - }, - "Glossario/Apple_Safari": { - "modified": "2019-03-18T21:43:59.859Z", - "contributors": [ - "SaraJade" - ] - }, - "Glossario/Argument": { - "modified": "2019-03-23T22:04:07.640Z", - "contributors": [ - "apsychox", - "SaraJade", - "gabrielrosa2004" - ] - }, - "Glossario/Arpanet": { - "modified": "2019-03-23T22:06:40.692Z", - "contributors": [ - "SaraJade" - ] - }, - "Glossario/Assincrono": { - "modified": "2019-03-18T21:43:52.623Z", - "contributors": [ - "SaraJade" - ] - }, - "Glossario/Atributo": { - "modified": "2019-05-30T03:05:20.743Z", - "contributors": [ - "jorgeclesio", - "GoToLoop" - ] - }, - "Glossario/Bandwidth": { - "modified": "2020-03-28T04:45:58.336Z", - "contributors": [ - "joelson.ejr" - ] - }, - "Glossario/BigInt": { - "modified": "2019-06-01T11:26:46.232Z", - "contributors": [ - "emersonbroga" - ] - }, - "Glossario/Booleano": { - "modified": "2019-03-23T23:02:25.617Z", - "contributors": [ - "eduardocezarinossp", - "ViniciusMachado", - "trestini" - ] - }, - "Glossario/CDN": { - "modified": "2019-01-16T22:59:44.431Z", - "contributors": [ - "Rickslayer" - ] - }, - "Glossario/CMS": { - "modified": "2019-03-23T22:31:12.002Z", - "contributors": [ - "Rickslayer" - ] - }, - "Glossario/CORS": { - "modified": "2019-12-23T23:53:25.142Z", - "contributors": [ - "FernandoKGA" - ] - }, - "Glossario/CRUD": { - "modified": "2020-12-05T13:04:05.864Z", - "contributors": [ - "IsaqueDiniz" - ] - }, - "Glossario/CSS": { - "modified": "2019-03-23T22:17:45.507Z", - "contributors": [ - "psergiojr" - ] - }, - "Glossario/CSSOM": { - "modified": "2020-11-13T12:20:41.027Z", - "contributors": [ - "IsaqueDiniz" - ] - }, - "Glossario/CSS_Selector": { - "modified": "2019-03-23T22:06:48.887Z", - "contributors": [ - "IsmaelEzequiel" - ] - }, - "Glossario/CSS_pixel": { - "modified": "2020-11-14T14:30:11.858Z", - "contributors": [ - "IsaqueDiniz" - ] - }, - "Glossario/CSS_preprocessor": { - "modified": "2020-11-13T12:59:56.480Z", - "contributors": [ - "IsaqueDiniz" - ] - }, - "Glossario/Cabecalho_HTTP": { - "modified": "2019-12-23T23:53:58.987Z", - "contributors": [ - "FernandoKGA" - ] - }, - "Glossario/Cache": { - "modified": "2020-08-20T08:30:54.843Z", - "contributors": [ - "joaomantovani", - "FernandoKGA" - ] - }, - "Glossario/Call_stack": { - "modified": "2019-08-25T21:21:29.113Z", - "contributors": [ - "helton-mori-dev" - ] - }, - "Glossario/Callback_function": { - "modified": "2019-03-23T22:02:52.552Z", - "contributors": [ - "MRND-DTR", - "MattBizzo" - ] - }, - "Glossario/Caractere": { - "modified": "2019-03-18T21:46:30.079Z", - "contributors": [ - "melostbr" - ] - }, - "Glossario/Chrome": { - "modified": "2019-03-23T22:32:20.365Z", - "contributors": [ - "meldenne" - ] - }, - "Glossario/Class": { - "modified": "2019-03-23T22:50:05.950Z", - "contributors": [ - "victor-borges" - ] - }, - "Glossario/Conversao_de_Tipo": { - "modified": "2019-03-18T21:32:31.465Z", - "contributors": [ - "aleexmuller" - ] - }, - "Glossario/DOM": { - "modified": "2019-03-23T23:10:39.579Z", - "contributors": [ - "GoToLoop", - "gabrielagabriel", - "panaggio" - ] - }, - "Glossario/Declaração": { - "modified": "2019-03-23T22:23:07.569Z", - "contributors": [ - "Franck_Moreira" - ] - }, - "Glossario/Doctype": { - "modified": "2019-03-18T21:46:11.657Z", - "contributors": [ - "lucasbd" - ] - }, - "Glossario/Domínio": { - "modified": "2019-03-18T21:36:28.595Z", - "contributors": [ - "GPrimola" - ] - }, - "Glossario/ECMA": { - "modified": "2019-03-23T22:30:25.897Z", - "contributors": [ - "GoToLoop" - ] - }, - "Glossario/Elemento": { - "modified": "2020-08-23T14:35:41.260Z", - "contributors": [ - "josewest700", - "wcqueiroz", - "luiszambon" - ] - }, - "Glossario/Endereco_IP": { - "modified": "2019-03-18T21:44:09.753Z", - "contributors": [ - "SaraJade" - ] - }, - "Glossario/Endianness": { - "modified": "2019-03-18T21:33:18.048Z", - "contributors": [ - "paulobruno", - "pauloantonelli" - ] - }, - "Glossario/Entity_header": { - "modified": "2019-03-18T21:10:53.093Z", - "contributors": [ - "coloringa" - ] - }, - "Glossario/Escopo": { - "modified": "2019-03-23T22:09:33.536Z", - "contributors": [ - "Fernandolrs" - ] - }, - "Glossario/Falsy": { - "modified": "2019-03-18T21:15:58.741Z", - "contributors": [ - "eduardocezarinossp", - "jeanonline" - ] - }, - "Glossario/Flex": { - "modified": "2019-03-18T20:42:53.641Z", - "contributors": [ - "helton-mori-dev" - ] - }, - "Glossario/Forbidden_header_name": { - "modified": "2020-01-18T00:05:07.612Z", - "contributors": [ - "FernandoKGA", - "darleizillmer" - ] - }, - "Glossario/Forbidden_response_header_name": { - "modified": "2019-03-18T21:26:05.371Z", - "contributors": [ - "darleizillmer" - ] - }, - "Glossario/Funcao-First-class": { - "modified": "2019-03-18T21:32:51.242Z", - "contributors": [ - "thiagosaife", - "emersonmdca" - ] - }, - "Glossario/Função": { - "modified": "2019-03-18T21:34:00.632Z", - "contributors": [ - "apsychox" - ] - }, - "Glossario/Fuzzing": { - "modified": "2019-09-06T03:22:02.462Z", - "contributors": [ - "SphinxKnight", - "fscholz", - "ygormaximo" - ] - }, - "Glossario/Gecko": { - "modified": "2019-12-23T23:52:37.656Z", - "contributors": [ - "FernandoKGA" - ] - }, - "Glossario/General_header": { - "modified": "2019-05-24T15:18:50.536Z", - "contributors": [ - "Glmsnc" - ] - }, - "Glossario/Global_object": { - "modified": "2019-03-18T21:40:17.626Z", - "contributors": [ - "ebragaparah" - ] - }, - "Glossario/Grade": { - "modified": "2020-07-14T21:04:41.276Z", - "contributors": [ - "Dianakc" - ] - }, - "Glossario/Grid_Areas": { - "modified": "2019-03-23T22:14:26.280Z", - "contributors": [ - "kaiomarcio", - "heltonss" - ] - }, - "Glossario/HSTS": { - "modified": "2019-03-18T21:26:13.963Z", - "contributors": [ - "darleizillmer" - ] - }, - "Glossario/HTML": { - "modified": "2019-03-23T22:22:10.633Z", - "contributors": [ - "psergiojr", - "rafaelcavalcante", - "barrosval" - ] - }, - "Glossario/HTTP": { - "modified": "2019-03-23T22:21:56.435Z", - "contributors": [ - "aretw0", - "barrosval" - ] - }, - "Glossario/HTTP_2": { - "modified": "2019-06-08T19:33:12.373Z", - "contributors": [ - "wcqueiroz" - ] - }, - "Glossario/Hoisting": { - "modified": "2020-01-23T16:47:05.779Z", - "contributors": [ - "GuilhermePiovesan", - "rolandgnm" - ] - }, - "Glossario/IIFE": { - "modified": "2019-03-23T22:41:51.789Z", - "contributors": [ - "daviccardoso", - "fbidu", - "MarcoRibeiro" - ] - }, - "Glossario/IPv4": { - "modified": "2019-03-18T21:44:10.032Z", - "contributors": [ - "SaraJade" - ] - }, - "Glossario/IPv6": { - "modified": "2019-03-18T21:45:04.897Z", - "contributors": [ - "SaraJade" - ] - }, - "Glossario/IRC": { - "modified": "2019-06-03T01:34:33.650Z", - "contributors": [ - "wcqueiroz" - ] - }, - "Glossario/ISO": { - "modified": "2019-08-19T01:24:15.027Z", - "contributors": [ - "KoffeeBunker" - ] - }, - "Glossario/Idempotente": { - "modified": "2019-09-01T01:44:12.557Z", - "contributors": [ - "FernandoKGA" - ] - }, - "Glossario/Identificador": { - "modified": "2019-03-23T22:28:41.179Z", - "contributors": [ - "apsychox", - "OrdepPedro", - "danilobarion1986" - ] - }, - "Glossario/IndexedDB": { - "modified": "2019-03-23T22:30:14.736Z", - "contributors": [ - "GoToLoop" - ] - }, - "Glossario/Internet": { - "modified": "2019-03-18T21:45:04.739Z", - "contributors": [ - "SaraJade" - ] - }, - "Glossario/JPEG": { - "modified": "2019-03-18T21:44:01.853Z", - "contributors": [ - "SaraJade" - ] - }, - "Glossario/Jank": { - "modified": "2019-01-17T10:31:38.830Z", - "contributors": [ - "IgorGoncalves" - ] - }, - "Glossario/JavaScript": { - "modified": "2020-07-14T13:39:05.371Z", - "contributors": [ - "jose.elias.0703", - "rbertoche", - "barrosval" - ] - }, - "Glossario/Key": { - "modified": "2019-03-23T22:02:49.869Z", - "contributors": [ - "Hikashii" - ] - }, - "Glossario/Linguagem_de_programação_dinâmica": { - "modified": "2020-07-02T21:45:18.003Z", - "contributors": [ - "raucer" - ] - }, - "Glossario/Metadata": { - "modified": "2019-11-05T19:38:53.604Z", - "contributors": [ - "klisostom" - ] - }, - "Glossario/Mozilla_Firefox": { - "modified": "2019-12-23T23:52:10.939Z", - "contributors": [ - "FernandoKGA" - ] - }, - "Glossario/Mutavel": { - "modified": "2019-03-18T21:42:49.961Z", - "contributors": [ - "VitorHFLopes" - ] - }, - "Glossario/Navegador": { - "modified": "2019-03-18T21:43:58.161Z", - "contributors": [ - "SaraJade" - ] - }, - "Glossario/Navegador_Opera": { - "modified": "2019-03-18T21:44:16.421Z", - "contributors": [ - "SaraJade" - ] - }, - "Glossario/Node.js": { - "modified": "2019-03-23T22:30:20.248Z", - "contributors": [ - "joelwallis", - "GoToLoop" - ] - }, - "Glossario/Nome_de_domínio": { - "modified": "2019-03-18T21:43:57.004Z", - "contributors": [ - "SaraJade" - ] - }, - "Glossario/Nulo": { - "modified": "2019-03-23T23:02:20.116Z", - "contributors": [ - "trestini" - ] - }, - "Glossario/Número": { - "modified": "2019-03-23T22:04:09.762Z", - "contributors": [ - "gabrielrosa2004" - ] - }, - "Glossario/OOP": { - "modified": "2019-03-23T22:34:54.131Z", - "contributors": [ - "raduq" - ] - }, - "Glossario/OTA": { - "modified": "2019-03-23T22:30:21.110Z", - "contributors": [ - "GoToLoop" - ] - }, - "Glossario/Objeto": { - "modified": "2019-03-23T22:46:59.570Z", - "contributors": [ - "raduq" - ] - }, - "Glossario/OpenGL": { - "modified": "2019-03-18T21:45:06.071Z", - "contributors": [ - "fitojb", - "leandroleo2" - ] - }, - "Glossario/Operador": { - "modified": "2019-06-06T00:19:52.618Z", - "contributors": [ - "wcqueiroz", - "rubenfaria" - ] - }, - "Glossario/Operando": { - "modified": "2019-03-23T22:04:38.960Z", - "contributors": [ - "rubenfaria" - ] - }, - "Glossario/Origem": { - "modified": "2019-12-23T23:53:08.917Z", - "contributors": [ - "FernandoKGA" - ] - }, - "Glossario/PHP": { - "modified": "2019-09-19T14:26:56.337Z", - "contributors": [ - "Lucas-Santos", - "jorgeclesio", - "Danilo_Santos" - ] - }, - "Glossario/Palavra-chave": { - "modified": "2020-08-25T13:00:01.177Z", - "contributors": [ - "duduindo", - "LeoCrespi" - ] - }, - "Glossario/Pixel": { - "modified": "2019-03-18T21:40:44.589Z", - "contributors": [ - "ingridmachado" - ] - }, - "Glossario/Polyfill": { - "modified": "2019-03-23T22:06:23.757Z", - "contributors": [ - "vmellos", - "vgonsalez" - ] - }, - "Glossario/Port": { - "modified": "2019-03-23T22:24:11.899Z", - "contributors": [ - "mak213k" - ] - }, - "Glossario/Prefixos_vendor": { - "modified": "2019-03-23T22:29:28.726Z", - "contributors": [ - "UzumakiArtanis", - "angelorubin", - "deyvid0123" - ] - }, - "Glossario/Preflight_request": { - "modified": "2020-03-18T17:01:01.937Z", - "contributors": [ - "leandroatavares", - "leandrokanis" - ] - }, - "Glossario/Primitivo": { - "modified": "2019-03-23T23:02:25.520Z", - "contributors": [ - "user2015", - "melostbr", - "trestini" - ] - }, - "Glossario/Programação_de_Computadores": { - "modified": "2019-03-23T22:36:02.574Z", - "contributors": [ - "jjmars" - ] - }, - "Glossario/Progressive_web_apps": { - "modified": "2020-11-29T08:12:45.879Z", - "contributors": [ - "IsaqueDiniz" - ] - }, - "Glossario/Protocolo": { - "modified": "2019-03-23T22:22:26.263Z", - "contributors": [ - "ViniciusMachado", - "melostbr" - ] - }, - "Glossario/Prototype": { - "modified": "2019-03-23T22:15:29.194Z", - "contributors": [ - "andre-bahia" - ] - }, - "Glossario/Proxy_server": { - "modified": "2020-06-30T09:57:05.710Z", - "contributors": [ - "lutzleonardo15", - "elvisguarda03" - ] - }, - "Glossario/Pseudo-class": { - "modified": "2019-03-23T22:22:16.368Z", - "contributors": [ - "LuanComputacao" - ] - }, - "Glossario/Pseudo-element": { - "modified": "2019-03-18T21:19:40.409Z", - "contributors": [ - "theuves" - ] - }, - "Glossario/Python": { - "modified": "2019-03-23T22:21:19.519Z", - "contributors": [ - "ViniciusMachado" - ] - }, - "Glossario/REST": { - "modified": "2020-09-02T21:05:55.192Z", - "contributors": [ - "fernandohtr" - ] - }, - "Glossario/Recursão": { - "modified": "2019-06-18T22:36:11.172Z", - "contributors": [ - "deomorxsy", - "apsychox" - ] - }, - "Glossario/Reflow": { - "modified": "2020-03-13T16:11:18.382Z", - "contributors": [ - "EduardoDaSilva" - ] - }, - "Glossario/Request_header": { - "modified": "2019-03-18T21:25:47.888Z", - "contributors": [ - "Filipe-Souza" - ] - }, - "Glossario/Responsive_web_design": { - "modified": "2019-03-18T21:37:44.626Z", - "contributors": [ - "coloringa" - ] - }, - "Glossario/Ruby": { - "modified": "2019-03-23T22:39:33.555Z", - "contributors": [ - "ygormaximo" - ] - }, - "Glossario/SDP": { - "modified": "2020-11-24T03:27:06.272Z", - "contributors": [ - "guiseek" - ] - }, - "Glossario/SEO": { - "modified": "2019-03-23T22:28:40.636Z", - "contributors": [ - "Aschlla" - ] - }, - "Glossario/SGML": { - "modified": "2019-03-18T21:38:45.984Z", - "contributors": [ - "jorgeclesio" - ] - }, - "Glossario/SVG": { - "modified": "2019-03-23T22:17:51.716Z", - "contributors": [ - "coloringa", - "psergiojr" - ] - }, - "Glossario/Self-Executing_Anonymous_Function": { - "modified": "2019-03-18T21:24:13.352Z", - "contributors": [ - "itumoraes" - ] - }, - "Glossario/Semantica": { - "modified": "2019-11-06T20:51:20.923Z", - "contributors": [ - "klisostom", - "wcqueiroz" - ] - }, - "Glossario/Servidor": { - "modified": "2019-03-23T22:47:28.024Z", - "contributors": [ - "GoToLoop", - "raduq" - ] - }, - "Glossario/Sincrono": { - "modified": "2019-03-18T21:43:56.155Z", - "contributors": [ - "SaraJade" - ] - }, - "Glossario/Sloppy_mode": { - "modified": "2019-07-03T00:15:27.167Z", - "contributors": [ - "opedropaes", - "marciooliveira" - ] - }, - "Glossario/Stacking_context": { - "modified": "2019-03-23T22:09:15.293Z", - "contributors": [ - "rener_bz" - ] - }, - "Glossario/String": { - "modified": "2019-03-23T22:48:30.483Z", - "contributors": [ - "coloringa", - "reuel.jonathan" - ] - }, - "Glossario/Symbol": { - "modified": "2019-03-18T21:36:11.562Z", - "contributors": [ - "RafaelAdao", - "trestini" - ] - }, - "Glossario/TCP": { - "modified": "2019-03-18T21:45:12.989Z", - "contributors": [ - "SaraJade" - ] - }, - "Glossario/TLS": { - "modified": "2019-03-18T21:44:01.071Z", - "contributors": [ - "SaraJade" - ] - }, - "Glossario/Tag": { - "modified": "2019-06-14T07:53:04.390Z", - "contributors": [ - "wcqueiroz", - "Renisson-Silva" - ] - }, - "Glossario/Three_js": { - "modified": "2019-03-18T21:44:29.352Z", - "contributors": [ - "lucaspontoexe" - ] - }, - "Glossario/Tratando_Formulários_com_PHP": { - "modified": "2019-05-30T02:54:29.717Z", - "contributors": [ - "jorgeclesio" - ] - }, - "Glossario/Truthy": { - "modified": "2019-03-23T22:44:49.553Z", - "contributors": [ - "cezaraugusto", - "jeanonline" - ] - }, - "Glossario/URI": { - "modified": "2019-03-23T22:05:53.369Z", - "contributors": [ - "pedropaulosuzuki" - ] - }, - "Glossario/URL": { - "modified": "2019-03-23T22:17:47.485Z", - "contributors": [ - "psergiojr" - ] - }, - "Glossario/UTF-8": { - "modified": "2020-08-07T20:20:51.387Z", - "contributors": [ - "rafhaelfitzpatrick" - ] - }, - "Glossario/UX": { - "modified": "2019-06-27T03:02:50.385Z", - "contributors": [ - "wcqueiroz" - ] - }, - "Glossario/Valor": { - "modified": "2019-03-23T22:09:43.019Z", - "contributors": [ - "melostbr", - "Fernandolrs" - ] - }, - "Glossario/Variável": { - "modified": "2019-03-23T22:04:07.138Z", - "contributors": [ - "apsychox", - "melostbr", - "gabrielrosa2004" - ] - }, - "Glossario/Viewport": { - "modified": "2020-01-10T08:14:42.218Z", - "contributors": [ - "marlonveiga-santos" - ] - }, - "Glossario/W3C": { - "modified": "2020-01-10T00:07:54.607Z", - "contributors": [ - "brunofrra", - "GPrimola" - ] - }, - "Glossario/WHATWG": { - "modified": "2019-03-18T21:36:57.818Z", - "contributors": [ - "GPrimola" - ] - }, - "Glossario/WebSockets": { - "modified": "2019-03-18T21:30:41.662Z", - "contributors": [ - "rbertoche" - ] - }, - "Glossario/Wrapper": { - "modified": "2020-08-07T11:26:36.555Z", - "contributors": [ - "rafhaelfitzpatrick", - "Fernandolrs" - ] - }, - "Glossario/XHR_(XMLHttpRequest)": { - "modified": "2019-04-26T09:39:50.976Z", - "contributors": [ - "helton-mori-dev" - ] - }, - "Glossario/XML": { - "modified": "2019-03-23T22:17:58.150Z", - "contributors": [ - "psergiojr" - ] - }, - "Glossario/array": { - "modified": "2019-06-22T20:19:15.594Z", - "contributors": [ - "lucaslombardif", - "RNT17", - "gabrielagabriel", - "gusleindecker" - ] - }, - "Glossario/arvore_de_acessibilidade": { - "modified": "2020-11-11T16:52:08.076Z", - "contributors": [ - "IsaqueDiniz" - ] - }, - "Glossario/caret": { - "modified": "2020-07-09T00:00:12.770Z", - "contributors": [ - "ooVictorFranco" - ] - }, - "Glossario/character_encoding": { - "modified": "2020-08-07T20:35:41.005Z", - "contributors": [ - "rafhaelfitzpatrick" - ] - }, - "Glossario/conteiner_de_alinhamento": { - "modified": "2020-11-07T17:45:53.749Z", - "contributors": [ - "IsaqueDiniz" - ] - }, - "Glossario/degradação_graciosa": { - "modified": "2020-09-22T20:12:45.099Z", - "contributors": [ - "BeatrizCavallieri", - "Dianakc" - ] - }, - "Glossario/https": { - "modified": "2019-03-18T21:44:09.623Z", - "contributors": [ - "SaraJade" - ] - }, - "Glossario/jQuery": { - "modified": "2019-05-17T17:03:39.259Z", - "contributors": [ - "ElsonMendes" - ] - }, - "Glossario/marcação": { - "modified": "2020-07-18T12:20:15.308Z", - "contributors": [ - "jose.elias.0703" - ] - }, - "Glossario/property": { - "modified": "2019-03-18T21:46:28.428Z", - "contributors": [ - "apsychox", - "melostbr" - ] - }, - "Glossario/property/CSS": { - "modified": "2019-03-18T21:46:38.697Z", - "contributors": [ - "melostbr" - ] - }, - "Glossario/property/JavaScript": { - "modified": "2020-11-21T11:51:09.095Z", - "contributors": [ - "IsaqueDiniz" - ] - }, - "Glossario/seguro": { - "modified": "2019-09-01T01:44:39.467Z", - "contributors": [ - "FernandoKGA" - ] - }, - "Glossario/topico_de_alinhamento": { - "modified": "2020-11-08T11:34:22.567Z", - "contributors": [ - "IsaqueDiniz" - ] - }, - "Glossario/undefined": { - "modified": "2019-03-23T22:47:22.150Z", - "contributors": [ - "raduq" - ] - }, - "Glossario/webp": { - "modified": "2019-03-18T21:42:09.223Z", - "contributors": [ - "MarcosNakamine" - ] - }, - "Glossary/Block": { - "modified": "2019-03-18T21:20:53.271Z", - "contributors": [ - "Sheppy" - ] - }, - "Glossary/Block/CSS": { - "modified": "2019-03-18T21:20:51.476Z", - "contributors": [ - "hlays" - ] - }, - "HTML/Attributes": { - "modified": "2019-03-23T23:39:13.093Z", - "contributors": [ - "MatCAlv", - "LeonardoPacheco", - "FelipeFonseca" - ] - }, - "HTML/Forms_in_HTML": { - "modified": "2019-03-23T23:38:57.820Z", - "contributors": [ - "digovc", - "andrejunges", - "phenriqueleao" - ] - }, - "Hello_World_Rust": { - "modified": "2019-03-23T22:54:34.208Z", - "contributors": [ - "IvomarS", - "molokdotc" - ] - }, - "Instalando_Rust": { - "modified": "2019-03-23T22:54:43.463Z", - "contributors": [ - "molokdotc" - ] - }, - "JSON": { - "modified": "2019-03-23T23:24:58.365Z", - "contributors": [ - "teoli", - "estevamdf" - ] - }, - "Learn/Accessibility": { - "modified": "2020-09-28T22:33:19.289Z", - "contributors": [ - "helton-mori-dev", - "hadleyel" - ] - }, - "Learn/Accessibility/Acessibilidade_problemas": { - "modified": "2020-07-16T22:40:36.530Z", - "contributors": [ - "luan0ap", - "msales" - ] - }, - "Learn/Accessibility/CSS_e_JavaScript": { - "modified": "2020-07-16T22:40:18.608Z", - "contributors": [ - "raphaelminacio" - ] - }, - "Learn/Accessibility/HTML": { - "modified": "2020-07-16T22:40:14.200Z", - "contributors": [ - "claubatista", - "msales", - "djagher" - ] - }, - "Learn/CSS/Building_blocks/Selectors": { - "modified": "2020-09-20T16:23:13.975Z", - "contributors": [ - "Dhiezon_Gois", - "chrisdavidmills" - ] - }, - "Learn/CSS/Building_blocks/Selectors/Attribute_selectors": { - "modified": "2020-08-10T15:51:24.045Z", - "contributors": [ - "dsantana77" - ] - }, - "Learn/CSS/CSS_layout": { - "modified": "2020-07-31T21:27:32.805Z", - "contributors": [ - "cyz", - "WesleyCristiano", - "peas", - "webfelipemaia", - "agathasilva28", - "Tiagosb", - "chrisdavidmills" - ] - }, - "Learn/CSS/CSS_layout/Flexbox": { - "modified": "2020-07-16T22:26:55.364Z", - "contributors": [ - "peas", - "GPrimola", - "magnonp" - ] - }, - "Learn/CSS/CSS_layout/Fluxo_Normal": { - "modified": "2020-07-16T22:27:22.550Z", - "contributors": [ - "GiovanniHD201E" - ] - }, - "Learn/CSS/CSS_layout/Intro_leiaute_CSS": { - "modified": "2020-07-16T22:27:07.240Z", - "contributors": [ - "GiovanniHD201E" - ] - }, - "Learn/CSS/CSS_layout/Layout_de_varias_colunas": { - "modified": "2020-07-16T22:27:11.776Z", - "contributors": [ - "FabricioBernardes" - ] - }, - "Learn/CSS/CSS_layout/Positioning": { - "modified": "2020-07-16T22:26:45.710Z", - "contributors": [ - "GiovanniHD201E" - ] - }, - "Learn/CSS/CSS_layout/Responsive_Design": { - "modified": "2020-08-22T17:27:59.073Z", - "contributors": [ - "manoelbjr", - "crisleitaoguerra" - ] - }, - "Learn/CSS/First_steps": { - "modified": "2020-09-21T13:39:03.225Z", - "contributors": [ - "BeatrizCavallieri", - "josealisson95", - "dmchaves", - "gpdias", - "danielSramos", - "arthurssfreitas", - "felipekafuri", - "chrisdavidmills" - ] - }, - "Learn/CSS/First_steps/Como_CSS_e_estruturado": { - "modified": "2020-11-07T13:04:16.800Z", - "contributors": [ - "sabertoletti32", - "JuniorUbarana", - "Edsonoguera", - "danfrsv", - "felipekafuri" - ] - }, - "Learn/CSS/First_steps/How_CSS_works": { - "modified": "2020-07-27T17:09:53.707Z", - "contributors": [ - "warleyfdias", - "lancaluis", - "LuisFreitas1", - "Edsonoguera", - "danielcmelonio", - "cirogomes58" - ] - }, - "Learn/CSS/First_steps/Iniciando": { - "modified": "2020-07-27T14:59:56.561Z", - "contributors": [ - "warleyfdias", - "klisostom" - ] - }, - "Learn/CSS/First_steps/O_que_e_CSS": { - "modified": "2020-10-15T22:23:04.005Z", - "contributors": [ - "klisostom" - ] - }, - "Learn/CSS/First_steps/Using_your_new_knowledge": { - "modified": "2020-07-16T22:28:04.939Z", - "contributors": [ - "LuisFreitas1" - ] - }, - "Learn/CSS/Howto": { - "modified": "2020-07-16T22:25:43.674Z", - "contributors": [ - "chrisdavidmills" - ] - }, - "Learn/CSS/Howto/CSS_Perguntas_Frequentes": { - "modified": "2020-07-16T22:25:45.672Z", - "contributors": [ - "JefersonOliveira90" - ] - }, - "Learn/Common_questions": { - "modified": "2020-07-16T22:35:26.243Z", - "contributors": [ - "ManoMartins", - "mrmorais", - "rudolfo" - ] - }, - "Learn/Common_questions/Como_a_internet_funciona": { - "modified": "2020-07-16T22:35:37.501Z", - "contributors": [ - "firenhite", - "wcqueiroz", - "danielbrai", - "barrosval", - "lhenriquenunes", - "mrmorais" - ] - }, - "Learn/Common_questions/Como_configurar_um_servidor_de_testes_local": { - "modified": "2020-07-16T22:35:53.295Z", - "contributors": [ - "RenanArques", - "wcqueiroz", - "SphinxKnight", - "linoveloso", - "vgabrielps", - "Edusar" - ] - }, - "Learn/Common_questions/Como_voce_hospeda_seu_site_Google_App_Engine": { - "modified": "2020-07-16T22:35:52.368Z", - "contributors": [ - "Felipe-GB", - "wcqueiroz" - ] - }, - "Learn/Common_questions/O_que_são_hyperlinks": { - "modified": "2020-09-14T13:55:12.468Z", - "contributors": [ - "lathne" - ] - }, - "Learn/Common_questions/Pages_sites_servers_and_search_engines": { - "modified": "2020-07-16T22:35:40.295Z", - "contributors": [ - "Magela", - "tavieto", - "brunoAlves", - "wcqueiroz", - "juliana-amoasei", - "danielbrai" - ] - }, - "Learn/Common_questions/Pensando_antes_de_codificar": { - "modified": "2020-07-16T22:35:34.836Z", - "contributors": [ - "firenhite", - "wcqueiroz" - ] - }, - "Learn/Common_questions/Quanto_custa_fazer_algo_web": { - "modified": "2020-07-16T22:35:45.917Z", - "contributors": [ - "wcqueiroz" - ] - }, - "Learn/Common_questions/Que_software_eu_preciso": { - "modified": "2020-07-16T22:35:33.538Z", - "contributors": [ - "sredoja" - ] - }, - "Learn/Common_questions/Upload_files_to_a_web_server": { - "modified": "2020-11-22T03:28:22.451Z", - "contributors": [ - "kvojps" - ] - }, - "Learn/Common_questions/Using_Github_pages": { - "modified": "2020-07-16T22:35:51.948Z", - "contributors": [ - "Celio1234" - ] - }, - "Learn/Common_questions/What_is_a_domain_name": { - "modified": "2020-07-16T22:35:44.455Z", - "contributors": [ - "wcqueiroz", - "Amarildo", - "clstrni" - ] - }, - "Learn/Common_questions/ferramentas_de_desenvolvimento_do_navegador": { - "modified": "2020-07-16T22:35:47.861Z", - "contributors": [ - "gilmargn", - "italorangel", - "ocaccy", - "7aylors", - "rubenfaria" - ] - }, - "Learn/Common_questions/o_que_e_um_web_server": { - "modified": "2020-07-16T22:35:31.716Z", - "contributors": [ - "wcqueiroz", - "thaishfmarques", - "erickandrade", - "lfpelison", - "kleinerbr", - "linielson" - ] - }, - "Learn/JavaScript/Asynchronous": { - "modified": "2020-08-22T17:58:38.750Z", - "contributors": [ - "manoelbjr", - "Sheppy" - ] - }, - "Learn/JavaScript/Asynchronous/Conceitos": { - "modified": "2020-10-06T09:57:59.299Z", - "contributors": [ - "joseluizmonteirojr", - "bellammuniz" - ] - }, - "Learn/JavaScript/Asynchronous/Escolhendo_abordagem_correta": { - "modified": "2020-10-15T22:33:23.228Z", - "contributors": [ - "manoelbjr" - ] - }, - "Learn/JavaScript/Asynchronous/Introdução": { - "modified": "2020-07-16T22:33:17.985Z", - "contributors": [ - "bellammuniz" - ] - }, - "Learn/JavaScript/Asynchronous/Promises": { - "modified": "2020-08-22T16:43:55.918Z", - "contributors": [ - "manoelbjr", - "luan0ap" - ] - }, - "Learn/JavaScript/Asynchronous/Timeouts_and_intervals": { - "modified": "2020-07-16T22:33:21.635Z", - "contributors": [ - "vbarcellos", - "bellammuniz" - ] - }, - "Learn/JavaScript/First_steps": { - "modified": "2020-07-16T22:29:54.330Z", - "contributors": [ - "Magela", - "MattBizzo", - "alefesouza", - "linielson", - "rdeiana", - "chrisdavidmills" - ] - }, - "Learn/JavaScript/First_steps/A_first_splash": { - "modified": "2020-08-28T16:05:03.838Z", - "contributors": [ - "webfelipemaia", - "zKhiro", - "MattBizzo", - "rubenfaria", - "thiagolucio" - ] - }, - "Learn/JavaScript/First_steps/Arrays": { - "modified": "2020-07-16T22:30:57.011Z", - "contributors": [ - "izaqueJr", - "gabriel_cadu", - "VictorGom3s", - "BrunoThomaz" - ] - }, - "Learn/JavaScript/First_steps/Gerador_de_historias_bobas": { - "modified": "2020-07-16T22:31:02.876Z", - "contributors": [ - "gabriel_cadu", - "kaiqueprazeres", - "VictorGom3s", - "fenobalao", - "carlos-rafael" - ] - }, - "Learn/JavaScript/First_steps/Matematica": { - "modified": "2020-07-16T22:30:27.765Z", - "contributors": [ - "leonardogbxv", - "VictorCPPlanas", - "etc_william", - "BrunoBit", - "webfelipemaia", - "MattBizzo", - "rubenfaria" - ] - }, - "Learn/JavaScript/First_steps/O_que_e_JavaScript": { - "modified": "2020-08-28T14:30:44.945Z", - "contributors": [ - "moukinchung", - "webfelipemaia", - "di3goCS", - "LuizEduS", - "fersouza90", - "Magela", - "lzhudson", - "rubenfaria", - "MattBizzo", - "BiancaAlves", - "thierryrenematos" - ] - }, - "Learn/JavaScript/First_steps/Strings": { - "modified": "2020-07-16T22:30:40.936Z", - "contributors": [ - "lzhudson", - "BrunoThomaz" - ] - }, - "Learn/JavaScript/First_steps/Teste_suas_habilidades:_variaveis": { - "modified": "2020-07-18T16:26:39.168Z", - "contributors": [ - "webfelipemaia" - ] - }, - "Learn/JavaScript/First_steps/Useful_string_methods": { - "modified": "2020-07-16T22:30:49.411Z", - "contributors": [ - "izaqueJr", - "Juliohub", - "VictorCPPlanas", - "greysonf", - "mwilson.oliveira", - "colares" - ] - }, - "Learn/JavaScript/First_steps/Variáveis": { - "modified": "2020-07-18T12:10:35.369Z", - "contributors": [ - "webfelipemaia", - "Magela", - "lzhudson", - "MattBizzo", - "rubenfaria", - "fenobalao" - ] - }, - "Learn/JavaScript/First_steps/What_went_wrong": { - "modified": "2020-07-16T22:30:35.893Z", - "contributors": [ - "Ramon9825", - "lzhudson", - "VictorGom3s", - "MattBizzo", - "rubenfaria", - "francoforget", - "ReinaldoLuna" - ] - }, - "Learn/Server-side": { - "modified": "2020-07-16T22:36:01.419Z", - "contributors": [ - "caveman-0", - "greysonf", - "chrisdavidmills" - ] - }, - "Learn/Server-side/Django": { - "modified": "2020-08-25T19:47:59.806Z", - "contributors": [ - "glauconeto", - "victorruand", - "caveman-0", - "marcoxavier2005", - "julianofischer", - "rodrigowmendes", - "joanasouza", - "dougfeltrim", - "jozadaquebatista" - ] - }, - "Learn/Server-side/Django/Admin_site": { - "modified": "2020-08-21T19:03:06.539Z", - "contributors": [ - "ecoscom", - "jefersonsalvador", - "fossalex", - "theafien" - ] - }, - "Learn/Server-side/Django/Authentication": { - "modified": "2020-07-16T22:37:23.404Z", - "contributors": [ - "ecoscom", - "fossalex" - ] - }, - "Learn/Server-side/Django/Forms": { - "modified": "2020-07-16T22:37:33.125Z", - "contributors": [ - "ecoscom", - "fossalex", - "letuche" - ] - }, - "Learn/Server-side/Django/Generic_views": { - "modified": "2020-08-26T10:32:14.826Z", - "contributors": [ - "ecoscom", - "fossalex" - ] - }, - "Learn/Server-side/Django/Home_page": { - "modified": "2020-08-26T10:26:47.773Z", - "contributors": [ - "ecoscom", - "glauconeto", - "fossalex" - ] - }, - "Learn/Server-side/Django/Hospedagem": { - "modified": "2020-09-05T19:47:24.465Z", - "contributors": [ - "Ricardo_Ribeiro" - ] - }, - "Learn/Server-side/Django/Introdução": { - "modified": "2020-09-05T19:15:55.942Z", - "contributors": [ - "rykarumstuler", - "ecoscom", - "edivandyeimes", - "kiabo", - "Guilhermeasper", - "caveman-0", - "lopespaz", - "Nordor1" - ] - }, - "Learn/Server-side/Django/Models": { - "modified": "2020-08-26T10:09:56.378Z", - "contributors": [ - "ecoscom", - "jefersonsalvador", - "Carine-Neris", - "fossalex", - "FRebeca", - "lucasjponce", - "montovaneli", - "lopespaz" - ] - }, - "Learn/Server-side/Django/Sessões": { - "modified": "2020-07-16T22:37:27.571Z", - "contributors": [ - "ecoscom", - "tamiryspino", - "fossalex", - "brendonhc" - ] - }, - "Learn/Server-side/Django/Testing": { - "modified": "2020-07-16T22:37:38.133Z", - "contributors": [ - "ecoscom" - ] - }, - "Learn/Server-side/Django/Tutorial_website_biblioteca_local": { - "modified": "2020-08-26T10:23:14.303Z", - "contributors": [ - "ecoscom", - "caveman-0", - "ViniciusMatias", - "victordfb", - "lopespaz", - "naiieandrade" - ] - }, - "Learn/Server-side/Django/ambiente_de_desenvolvimento": { - "modified": "2020-08-26T10:15:03.041Z", - "contributors": [ - "ecoscom", - "BraianF", - "ViniciusMatias" - ] - }, - "Learn/Server-side/Django/skeleton_website": { - "modified": "2020-08-20T01:54:03.884Z", - "contributors": [ - "BraianF", - "jefersonsalvador", - "letuche", - "ViniciusMatias", - "lopespaz", - "faustobenini" - ] - }, - "Learn/Server-side/Django/web_application_security": { - "modified": "2020-08-21T19:04:44.833Z", - "contributors": [ - "ecoscom" - ] - }, - "Learn/Server-side/Express_Nodejs": { - "modified": "2020-07-16T22:37:54.607Z", - "contributors": [ - "AAntoniazzi", - "ClemerJunior", - "fabiano.monte" - ] - }, - "Learn/Server-side/Express_Nodejs/Displaying_data": { - "modified": "2020-07-16T22:38:30.773Z", - "contributors": [ - "bivoigt" - ] - }, - "Learn/Server-side/Express_Nodejs/Displaying_data/flow_control_using_async": { - "modified": "2020-07-16T22:38:33.142Z", - "contributors": [ - "caiollavos" - ] - }, - "Learn/Server-side/Express_Nodejs/Introdução": { - "modified": "2020-07-16T22:38:12.682Z", - "contributors": [ - "ddanielcardoso", - "ErialdoDFfreitas", - "luane-aquino", - "AAntoniazzi", - "andersonse", - "TecladistaProd" - ] - }, - "Learn/Server-side/Express_Nodejs/Tutorial_local_library_website": { - "modified": "2020-07-16T22:38:16.508Z", - "contributors": [ - "ddanielcardoso", - "moronimotta" - ] - }, - "Learn/Server-side/Express_Nodejs/ambiente_de_desenvolvimento": { - "modified": "2020-07-16T22:38:00.195Z", - "contributors": [ - "ddanielcardoso", - "AAntoniazzi", - "danilosetubal" - ] - }, - "Learn/Server-side/Express_Nodejs/deployment": { - "modified": "2020-07-16T22:38:50.392Z", - "contributors": [ - "gabrielfdg10", - "andersonse" - ] - }, - "Learn/Server-side/Express_Nodejs/mongoose": { - "modified": "2020-07-16T22:38:22.513Z", - "contributors": [ - "maletta", - "TatiTheFreaK", - "arturlicks", - "Samuscosta" - ] - }, - "Learn/Server-side/Express_Nodejs/skeleton_website": { - "modified": "2020-07-16T22:38:05.698Z", - "contributors": [ - "moronimotta" - ] - }, - "Learn/Server-side/First_steps": { - "modified": "2020-11-23T00:02:31.153Z", - "contributors": [ - "kvojps", - "Magela", - "c1c3ru", - "kjerinic" - ] - }, - "Learn/Server-side/First_steps/Client-Server_overview": { - "modified": "2020-12-06T18:07:14.325Z", - "contributors": [ - "duduindo", - "kvojps", - "MicaelFN" - ] - }, - "Learn/Server-side/First_steps/Introdução": { - "modified": "2020-12-06T18:10:00.170Z", - "contributors": [ - "duduindo", - "kvojps" - ] - }, - "Learn/Server-side/First_steps/Seguranca_site": { - "modified": "2020-07-16T22:36:29.289Z", - "contributors": [ - "The-Physicist", - "wcqueiroz" - ] - }, - "Learn/Tools_and_testing/Client-side_JavaScript_frameworks": { - "modified": "2020-11-20T15:01:38.744Z", - "contributors": [ - "Marrior-dot", - "gevsantos", - "CodeDotJS" - ] - }, - "Learn/Tools_and_testing/Client-side_JavaScript_frameworks/Comecando_com_React": { - "modified": "2020-10-29T12:43:23.860Z", - "contributors": [ - "pachicodes", - "Aleks", - "Ismael-Oliv", - "gilmargn", - "angelorubin", - "gsb6" - ] - }, - "Learn/Tools_and_testing/Client-side_JavaScript_frameworks/Vue_iniciando": { - "modified": "2020-07-16T22:39:49.009Z", - "contributors": [ - "fred_melo_07" - ] - }, - "Learn/Tools_and_testing/Cross_browser_testing": { - "modified": "2020-07-16T22:39:00.890Z", - "contributors": [ - "caiquesandrade", - "wbamberg", - "arai" - ] - }, - "Learn/Tools_and_testing/Cross_browser_testing/Introduction": { - "modified": "2020-07-16T22:39:04.327Z", - "contributors": [ - "jozadaquebatista" - ] - }, - "Localização": { - "modified": "2019-03-23T23:25:17.486Z", - "contributors": [ - "-", - "ronaldo-bonfim" - ] - }, - "MDN": { - "modified": "2020-02-19T18:02:47.459Z", - "contributors": [ - "jswisher", - "SphinxKnight", - "wcqueiroz", - "wbamberg", - "gutoribeiro", - "Jeremie", - "-", - "PriscillaAlcalde", - "Sheppy" - ] - }, - "MDN/About": { - "modified": "2019-09-11T08:06:52.705Z", - "contributors": [ - "SphinxKnight", - "wbamberg", - "larimaza", - "luisfvieira", - "luc4smoreira", - "jswisher", - "joaopaulosama", - "leandroruel", - "Danilson_Veloso", - "-", - "morvanabonin", - "A.M.M.A." - ] - }, - "MDN/Comunidade": { - "modified": "2019-03-23T23:18:59.817Z", - "contributors": [ - "sauloandrade", - "wbamberg", - "mrmorais", - "CNicola", - "camimq", - "-", - "Fabiola" - ] - }, - "MDN/Comunidade/Roles": { - "modified": "2019-03-18T20:53:49.801Z", - "contributors": [ - "helton-mori-dev" - ] - }, - "MDN/Comunidade/Trabalhando_em_comunidade": { - "modified": "2020-02-19T19:05:23.989Z", - "contributors": [ - "jswisher", - "wbamberg", - "MarceloBRN", - "Fernandolrs", - "mak213k", - "RenanBirck" - ] - }, - "MDN/Comunidade/Whats_happening": { - "modified": "2019-03-23T23:00:32.486Z", - "contributors": [ - "wbamberg", - "-" - ] - }, - "MDN/Contribute": { - "modified": "2019-12-26T13:39:13.687Z", - "contributors": [ - "maugravena", - "wcqueiroz", - "wbamberg", - "GPrimola", - "Aschlla", - "alexrohleder", - "-", - "rodrigopadula", - "marksabbath", - "Sheppy" - ] - }, - "MDN/Contribute/Collaboration_tactics": { - "modified": "2019-11-20T21:37:10.315Z", - "contributors": [ - "wbamberg", - "angellica.araujo" - ] - }, - "MDN/Contribute/Feedback": { - "modified": "2020-09-30T17:52:17.404Z", - "contributors": [ - "chrisdavidmills", - "jswisher", - "SphinxKnight", - "elenderg", - "wbamberg", - "leandroruel", - "GilvanFernandes" - ] - }, - "MDN/Contribute/Getting_started": { - "modified": "2020-09-30T17:15:19.127Z", - "contributors": [ - "chrisdavidmills", - "wbamberg", - "haskellcamargo", - "mrmorais", - "-", - "takahan", - "annacruz", - "Fabiola" - ] - }, - "MDN/Contribute/Processos": { - "modified": "2019-01-16T19:51:57.687Z", - "contributors": [ - "wbamberg", - "-" - ] - }, - "MDN/Contribute/criando_e_editando_paginas": { - "modified": "2020-01-20T16:42:55.893Z", - "contributors": [ - "mauJr", - "wbamberg", - "blue-bee", - "chrisdavidmills", - "chalix", - "LuccasBarbosa", - "juniorgarcia", - "rafaelcgstz", - "edu_jobs", - "A.M.M.A.", - "yelken" - ] - }, - "MDN/Contribute/guia": { - "modified": "2019-01-16T19:17:27.272Z", - "contributors": [ - "wbamberg", - "-", - "angellica.araujo" - ] - }, - "MDN/Contribute/guia/Como-marcar-as-paginas-corretamente": { - "modified": "2019-03-18T21:15:59.373Z", - "contributors": [ - "wbamberg", - "Aschlla", - "fcard", - "juniorgarcia", - "tkovs", - "fabianosantos.net" - ] - }, - "MDN/Contribute/guia/Converter_exemplos_codigo_para_ao_vivo": { - "modified": "2019-03-23T23:11:54.642Z", - "contributors": [ - "wbamberg", - "gleidiin", - "isaelss", - "PTLozano", - "Ladeia" - ] - }, - "MDN/Contribute/guia/Create_an_MDN_account": { - "modified": "2019-03-23T22:57:58.896Z", - "contributors": [ - "eduardo.klein", - "wbamberg", - "jaimemaretoli", - "jokafla", - "123gvdblanche" - ] - }, - "MDN/Contribute/guia/Create_an_interactive_exercise_to_help_learning_the_web": { - "modified": "2019-11-06T11:43:24.278Z", - "contributors": [ - "WellingtonFR", - "wbamberg", - "arthur2323" - ] - }, - "MDN/Contribute/guia/Create_an_interactive_exercise_to_help_learning_the_web/distant_example": { - "modified": "2019-01-17T10:48:33.130Z", - "contributors": [ - "wbamberg", - "arthur2323" - ] - }, - "MDN/Contribute/guia/Do_a_technical_review": { - "modified": "2019-03-23T23:03:05.824Z", - "contributors": [ - "wbamberg", - "luisfvieira", - "Gilbertosilvax1", - "takahan", - "-" - ] - }, - "MDN/Contribute/guia/Do_an_editorial_review": { - "modified": "2020-09-17T12:48:11.904Z", - "contributors": [ - "PauloNFraga", - "wbamberg", - "Gregory", - "o2over", - "pauloaug", - "Gilbertosilvax1", - "KadirTopal", - "sprodrigues", - "-", - "takahan" - ] - }, - "MDN/Contribute/guia/Escreva_um_artigo_para_ajudar_aprender_sobre_a_Web": { - "modified": "2020-02-28T22:24:45.284Z", - "contributors": [ - "wbamberg", - "BrunoThomaz" - ] - }, - "MDN/Contribute/guia/Set_the_summary_for_a_page": { - "modified": "2019-03-23T23:03:38.091Z", - "contributors": [ - "wbamberg", - "Gilbertosilvax1", - "fabiobasso", - "-", - "EduardoRedressa" - ] - }, - "MDN/Contribute/guia/Tag_JavaScript_pages": { - "modified": "2019-01-16T21:06:45.074Z", - "contributors": [ - "wbamberg", - "Gilbertosilvax1", - "marcionitao", - "rafamaxber" - ] - }, - "MDN/Editor": { - "modified": "2020-09-30T15:43:15.561Z", - "contributors": [ - "chrisdavidmills", - "wbamberg", - "-", - "teoli", - "BrKaosh", - "Lindonj1" - ] - }, - "MDN/Editor/Basics": { - "modified": "2020-09-30T15:43:15.730Z", - "contributors": [ - "chrisdavidmills", - "soarescamila" - ] - }, - "MDN/Guidelines": { - "modified": "2020-09-30T15:31:17.173Z", - "contributors": [ - "chrisdavidmills", - "wcqueiroz", - "wbamberg", - "Sheppy" - ] - }, - "MDN/Guidelines/Style_guide": { - "modified": "2020-09-30T15:31:17.845Z", - "contributors": [ - "chrisdavidmills", - "jswisher", - "Carlos_Mir_de_Souza", - "helton-mori-dev", - "CodexZombie", - "wbamberg", - "RobMota", - "-" - ] - }, - "MDN/Kuma": { - "modified": "2019-09-09T15:53:42.526Z", - "contributors": [ - "SphinxKnight", - "wbamberg", - "richellyitalo" - ] - }, - "MDN/Paineis": { - "modified": "2019-06-06T00:53:15.090Z", - "contributors": [ - "wcqueiroz" - ] - }, - "MDN/Structures": { - "modified": "2020-09-30T12:56:58.874Z", - "contributors": [ - "chrisdavidmills", - "wbamberg", - "alipseight" - ] - }, - "MDN/Structures/Compatibility_tables": { - "modified": "2020-10-15T22:05:41.325Z", - "contributors": [ - "chrisdavidmills", - "paulakfleck", - "MarcosNakamine", - "henriquebortoletti", - "Felipebros", - "PabloHarger", - "wbamberg", - "cautnew", - "rafaelcavalcante" - ] - }, - "MDN/Structures/Macros": { - "modified": "2020-09-30T12:56:59.059Z", - "contributors": [ - "chrisdavidmills", - "wcqueiroz" - ] - }, - "MDN/Tools": { - "modified": "2020-09-30T16:52:54.238Z", - "contributors": [ - "chrisdavidmills", - "wbamberg", - "alipseight", - "-", - "jswisher" - ] - }, - "MDN/Tools/KumaScript": { - "modified": "2020-11-30T12:49:15.264Z", - "contributors": [ - "chrisdavidmills", - "wbamberg", - "AndreDea" - ] - }, - "MDN/Tools/KumaScript/Solucionando_problemas_de_erros_de_KumaScript": { - "modified": "2020-09-30T16:52:54.520Z", - "contributors": [ - "chrisdavidmills", - "wbamberg", - "GPrimola" - ] - }, - "MDN/Tools/Page_regeneration": { - "modified": "2020-09-30T16:52:54.361Z", - "contributors": [ - "chrisdavidmills", - "wbamberg", - "-", - "juniorgarcia" - ] - }, - "Mozilla": { - "modified": "2019-03-23T23:37:34.048Z", - "contributors": [ - "joselima", - "-", - "ethertank", - "ziyunfei" - ] - }, - "Mozilla/Add-ons": { - "modified": "2019-09-09T13:10:10.949Z", - "contributors": [ - "SphinxKnight", - "Fernandolrs", - "luciolb", - "kaue", - "Doug_Fany", - "ThiagoEscarrone", - "EduardoRedressa", - "fabianosantos.net", - "-", - "janlima", - "jswisher" - ] - }, - "Mozilla/Add-ons/WebExtensions": { - "modified": "2019-09-04T15:18:11.465Z", - "contributors": [ - "brasmon8351", - "julio-elipse", - "MarceloGhelman", - "thiagopelizoni", - "jcjesus", - "Mostard", - "leanfj", - "lubarino", - "jlamim", - "wbamberg" - ] - }, - "Mozilla/Add-ons/WebExtensions/API": { - "modified": "2019-11-26T22:19:20.258Z", - "contributors": [ - "wbamberg", - "Makyen" - ] - }, - "Mozilla/Add-ons/WebExtensions/API/alarms": { - "modified": "2020-10-15T22:07:15.567Z", - "contributors": [ - "wbamberg", - "thiagopelizoni" - ] - }, - "Mozilla/Add-ons/WebExtensions/API/bookmarks": { - "modified": "2020-10-15T22:07:18.478Z", - "contributors": [ - "wbamberg", - "thiagopelizoni" - ] - }, - "Mozilla/Add-ons/WebExtensions/API/browserAction": { - "modified": "2020-10-15T22:07:24.197Z", - "contributors": [ - "wbamberg", - "thiagopelizoni" - ] - }, - "Mozilla/Add-ons/WebExtensions/API/browserSettings": { - "modified": "2020-10-15T22:07:20.929Z", - "contributors": [ - "wbamberg", - "thiagopelizoni" - ] - }, - "Mozilla/Add-ons/WebExtensions/API/browsingData": { - "modified": "2020-10-15T22:07:21.259Z", - "contributors": [ - "thiagopelizoni" - ] - }, - "Mozilla/Add-ons/WebExtensions/API/clipboard": { - "modified": "2020-10-15T22:07:18.172Z", - "contributors": [ - "thiagopelizoni" - ] - }, - "Mozilla/Add-ons/WebExtensions/API/commands": { - "modified": "2020-10-15T22:07:21.541Z", - "contributors": [ - "wbamberg", - "thiagopelizoni" - ] - }, - "Mozilla/Add-ons/WebExtensions/API/contentScripts": { - "modified": "2020-10-15T22:07:22.642Z", - "contributors": [ - "thiagopelizoni" - ] - }, - "Mozilla/Add-ons/WebExtensions/API/contextualIdentities": { - "modified": "2020-10-15T21:58:40.272Z", - "contributors": [ - "wbamberg", - "thiagopelizoni", - "eduardMariano" - ] - }, - "Mozilla/Add-ons/WebExtensions/API/cookies": { - "modified": "2020-10-15T22:07:19.571Z", - "contributors": [ - "wbamberg", - "thiagopelizoni" - ] - }, - "Mozilla/Add-ons/WebExtensions/API/menus": { - "modified": "2020-10-15T22:28:27.733Z", - "contributors": [ - "Sam-Marx" - ] - }, - "Mozilla/Add-ons/WebExtensions/API/tabs": { - "modified": "2020-10-15T22:34:17.119Z", - "contributors": [ - "Jonathan_Watt" - ] - }, - "Mozilla/Add-ons/WebExtensions/API/tema": { - "modified": "2020-10-15T22:16:55.245Z", - "contributors": [ - "Aschlla" - ] - }, - "Mozilla/Add-ons/WebExtensions/Anatomia_de_uma_WebExtension": { - "modified": "2019-09-29T21:36:50.619Z", - "contributors": [ - "AdaiasMagdiel", - "jefersonnavarro", - "samuel.abreu", - "lubarino", - "jlamim" - ] - }, - "Mozilla/Add-ons/WebExtensions/Browser_support_for_JavaScript_APIs": { - "modified": "2020-10-15T20:55:06.952Z", - "contributors": [ - "jaimemaretoli" - ] - }, - "Mozilla/Add-ons/WebExtensions/Empacotando_e_instalando": { - "modified": "2019-03-18T21:15:50.836Z", - "contributors": [ - "lubarino" - ] - }, - "Mozilla/Add-ons/WebExtensions/Examples": { - "modified": "2019-03-18T21:03:20.319Z", - "contributors": [ - "jefersonnavarro", - "thiagopelizoni", - "FelipeBergmann" - ] - }, - "Mozilla/Add-ons/WebExtensions/Intercept_HTTP_requests": { - "modified": "2019-03-18T21:01:56.380Z", - "contributors": [ - "thiagopelizoni" - ] - }, - "Mozilla/Add-ons/WebExtensions/O_que_vem_a_seguir_": { - "modified": "2019-03-18T21:01:38.952Z", - "contributors": [ - "jefersonnavarro" - ] - }, - "Mozilla/Add-ons/WebExtensions/Passo-a-Passo": { - "modified": "2019-12-28T20:44:44.265Z", - "contributors": [ - "euvanribeiro", - "rodolfo.ghiggi", - "jefersonnavarro", - "WiataganPaz", - "Mostard", - "lubarino" - ] - }, - "Mozilla/Add-ons/WebExtensions/What_are_WebExtensions": { - "modified": "2019-03-18T21:05:24.593Z", - "contributors": [ - "fthiagogv", - "Mostard" - ] - }, - "Mozilla/Add-ons/WebExtensions/manifest.json": { - "modified": "2020-10-15T21:55:09.220Z", - "contributors": [ - "wbamberg" - ] - }, - "Mozilla/Add-ons/WebExtensions/manifest.json/permissões": { - "modified": "2020-10-15T22:03:55.675Z", - "contributors": [ - "wbamberg", - "MarceloGhelman", - "Weslei" - ] - }, - "Mozilla/Add-ons/WebExtensions/manifest.json/short_name": { - "modified": "2020-10-15T21:55:07.308Z", - "contributors": [ - "wbamberg", - "gutoribeiro" - ] - }, - "Mozilla/Add-ons/WebExtensions/manifest.json/web_accessible_resources": { - "modified": "2020-10-15T22:23:15.449Z", - "contributors": [ - "AdaiasMagdiel" - ] - }, - "Mozilla/Add-ons/WebExtensions/pre-requisitos": { - "modified": "2019-03-23T22:48:17.751Z", - "contributors": [ - "IgorOFC", - "jlamim" - ] - }, - "Mozilla/Add-ons/WebExtensions/sua_primeira_WebExtension": { - "modified": "2019-03-18T21:05:56.580Z", - "contributors": [ - "lubarino", - "Mostard", - "andregarzia" - ] - }, - "Mozilla/Add-ons/WebExtensions/user_interface": { - "modified": "2020-03-23T21:27:50.719Z", - "contributors": [ - "chrisdavidmills" - ] - }, - "Mozilla/Add-ons/WebExtensions/user_interface/Itens_do_menu_de_contexto": { - "modified": "2020-03-23T22:11:58.441Z", - "contributors": [ - "Sam-Marx" - ] - }, - "Mozilla/Developer_guide": { - "modified": "2019-03-23T23:38:41.412Z", - "contributors": [ - "chrisdavidmills", - "regisdiogo", - "josivansilva" - ] - }, - "Mozilla/Developer_guide/Codigo_Fonte": { - "modified": "2019-03-23T23:36:39.907Z", - "contributors": [ - "chrisdavidmills", - "jntesteves" - ] - }, - "Mozilla/Developer_guide/Mozilla_build_FAQ": { - "modified": "2019-03-23T23:30:00.484Z", - "contributors": [ - "chrisdavidmills", - "fscholz", - "tfsthiago11121" - ] - }, - "Mozilla/Firefox": { - "modified": "2020-01-18T14:01:54.191Z", - "contributors": [ - "leela52452", - "SphinxKnight", - "wbamberg", - "rafael-junio", - "mrmorais", - "cezarcruz", - "-", - "chocoelho", - "fahadkalil" - ] - }, - "Mozilla/Firefox/Novas_funcionalidades": { - "modified": "2019-01-17T00:25:13.965Z", - "contributors": [ - "wbamberg", - "marcio-ti" - ] - }, - "Mozilla/Firefox/Releases": { - "modified": "2019-01-16T20:18:57.986Z", - "contributors": [ - "wbamberg", - "-" - ] - }, - "Mozilla/Firefox/Releases/1.5": { - "modified": "2019-03-23T23:00:27.323Z", - "contributors": [ - "wbamberg", - "-" - ] - }, - "Mozilla/Firefox/Releases/3": { - "modified": "2020-11-20T04:48:59.691Z", - "contributors": [ - "wbamberg" - ] - }, - "Mozilla/Firefox/Releases/3/Zoom_de_página_inteira": { - "modified": "2019-03-18T21:29:46.640Z", - "contributors": [ - "Hv60T" - ] - }, - "Mozilla/Firefox/Releases/49": { - "modified": "2019-03-23T22:24:00.355Z", - "contributors": [ - "wbamberg", - "wdot789" - ] - }, - "Mozilla/Firefox/Releases/50": { - "modified": "2019-03-18T21:11:50.773Z", - "contributors": [ - "duduindo", - "wbamberg", - "jerfeson" - ] - }, - "Mozilla/Firefox/Releases/57": { - "modified": "2019-03-18T20:55:45.402Z", - "contributors": [ - "duduindo", - "wbamberg", - "ialexsilva", - "marcoarw" - ] - }, - "Mozilla/Firefox/Releases/65": { - "modified": "2019-03-18T21:21:43.693Z", - "contributors": [ - "yellowag" - ] - }, - "Projeto:Como_ajudar_com_MDN": { - "modified": "2019-03-23T23:38:18.895Z", - "contributors": [ - "hlays", - "wbamberg", - "teoli", - "jaydson", - "jswisher" - ] - }, - "Sections_and_Outlines_of_an_HTML5_document": { - "modified": "2020-10-07T01:45:20.737Z", - "contributors": [ - "leandroembu", - "Lucas_Inacio", - "davimdantas", - "SaggitariusA", - "webennes", - "edercampelo", - "IgorGoncalves", - "dann", - "netoguimaraes", - "Stutz.D", - "eduardodx", - "AluisioASG" - ] - }, - "The_XSLT_JavaScript_Interface_in_Gecko": { - "modified": "2019-03-23T23:03:42.725Z", - "contributors": [ - "ethertank" - ] - }, - "The_XSLT_JavaScript_Interface_in_Gecko/Advanced_Example": { - "modified": "2019-03-23T23:03:40.500Z", - "contributors": [ - "EduardoRedressa" - ] - }, - "Tools": { - "modified": "2020-07-16T22:44:17.244Z", - "contributors": [ - "vanteew29", - "SphinxKnight", - "rafaelsiza", - "wbamberg", - "redbob365", - "alipseight", - "LuccasBarbosa", - "-", - "_GabrielDuque", - "marinalimeira", - "eduardojmatos", - "jlamim", - "teoli", - "gutierri", - "nanardo", - "fabianosantos.net", - "AJCSantos", - "paulo007", - "bbenatti", - "fernando.karpinski", - "ronaldo-bonfim" - ] - }, - "Tools/3D_View": { - "modified": "2020-07-16T22:34:25.511Z", - "contributors": [ - "italo-baciliere", - "wbamberg", - "Tomaz-Vieira", - "pablobfonseca" - ] - }, - "Tools/Add-ons": { - "modified": "2020-07-16T22:36:23.640Z", - "contributors": [ - "wbamberg", - "mak213k", - "DiegoTelles" - ] - }, - "Tools/Add-ons/DOM_Inspector_Pt-Br": { - "modified": "2020-07-16T22:36:24.634Z", - "contributors": [ - "wbamberg", - "DiegoTelles" - ] - }, - "Tools/Browser_Console": { - "modified": "2020-07-16T22:35:42.624Z", - "contributors": [ - "wbamberg", - "Wallison_S.F", - "jlamim" - ] - }, - "Tools/CSS_Coverage": { - "modified": "2019-03-23T22:21:34.758Z", - "contributors": [ - "wbamberg", - "mak213k" - ] - }, - "Tools/Debugger/How_to": { - "modified": "2020-07-16T22:35:08.214Z", - "contributors": [ - "wbamberg" - ] - }, - "Tools/Debugger/How_to/Examine,_modify,_and_watch_variables": { - "modified": "2020-07-16T22:35:13.183Z", - "contributors": [ - "wbamberg", - "mak213k" - ] - }, - "Tools/Debugger_(before_Firefox_52)": { - "modified": "2019-03-23T22:21:37.545Z", - "contributors": [ - "wbamberg" - ] - }, - "Tools/Debugger_(before_Firefox_52)/Disable_breakpoints": { - "modified": "2019-03-23T22:21:41.910Z", - "contributors": [ - "wbamberg", - "mak213k" - ] - }, - "Tools/Depurador": { - "modified": "2020-07-30T07:50:39.719Z", - "contributors": [ - "LeandroVCastro", - "wbamberg", - "flavioms7", - "LincePotiguara", - "vitorcardoso", - "Danilson_Veloso", - "GilvanFernandes", - "JAugusto", - "maybe", - "Radicalzinho", - "teoli", - "IvomarS" - ] - }, - "Tools/Depurador/Set_a_logpoint": { - "modified": "2020-07-16T22:35:20.440Z", - "contributors": [ - "luan0ap" - ] - }, - "Tools/Depuração_Remota": { - "modified": "2020-07-16T22:35:37.857Z", - "contributors": [ - "wbamberg", - "marciowb", - "nanardo", - "glacywhite", - "Giovane", - "MarcoRovida" - ] - }, - "Tools/DevToolsAPI": { - "modified": "2020-07-16T22:35:25.742Z", - "contributors": [ - "wbamberg", - "NResultados" - ] - }, - "Tools/Editor_de_Estilos": { - "modified": "2020-07-16T22:35:00.708Z", - "contributors": [ - "wbamberg", - "MurilloLima", - "maybe", - "bbenatti" - ] - }, - "Tools/Eyedropper": { - "modified": "2020-07-16T22:36:07.729Z", - "contributors": [ - "wbamberg", - "netoguimaraes" - ] - }, - "Tools/Inspetor_de_Armazenamento": { - "modified": "2020-07-16T22:36:10.142Z", - "contributors": [ - "erlongs", - "wbamberg", - "danieltex" - ] - }, - "Tools/Keyboard_shortcuts": { - "modified": "2020-07-16T22:35:49.510Z", - "contributors": [ - "wbamberg", - "fabianosantos.net", - "andredias", - "zerossB" - ] - }, - "Tools/Medir_uma_porcao_da_pagina": { - "modified": "2020-07-16T22:36:39.043Z", - "contributors": [ - "marlonveiga-santos" - ] - }, - "Tools/Memory": { - "modified": "2020-07-16T22:36:27.239Z", - "contributors": [ - "wbamberg", - "luizschinemann" - ] - }, - "Tools/Modo_Design_Adaptavel": { - "modified": "2020-07-16T22:35:22.122Z", - "contributors": [ - "cristiano-soares", - "wbamberg", - "jsx", - "teoli", - "EvertonPortela" - ] - }, - "Tools/Network_Monitor": { - "modified": "2020-07-16T22:35:30.854Z", - "contributors": [ - "jamrocha", - "wbamberg", - "fabianosantos.net", - "lisaldofjf", - "cleverson", - "Lokojbkf" - ] - }, - "Tools/Notas_de_lancamento": { - "modified": "2020-07-16T22:35:56.858Z", - "contributors": [ - "wbamberg", - "fabianosantos.net", - "-" - ] - }, - "Tools/Page_Inspector": { - "modified": "2020-07-16T22:34:29.304Z", - "contributors": [ - "wbamberg", - "GaPerez10", - "karen-evelyn", - "danielferreira.developer", - "teoli", - "pablobfonseca", - "maybe", - "nanardo", - "pfurtado", - "MarcoBruno" - ] - }, - "Tools/Page_Inspector/How_to": { - "modified": "2020-07-16T22:34:31.751Z", - "contributors": [ - "wbamberg", - "sidgan" - ] - }, - "Tools/Page_Inspector/How_to/Edit_CSS_filters": { - "modified": "2020-07-16T22:34:45.449Z", - "contributors": [ - "wbamberg", - "jgeovani" - ] - }, - "Tools/Page_Inspector/How_to/Examinando_eventos_escuta": { - "modified": "2020-07-16T22:34:35.841Z", - "contributors": [ - "wbamberg", - "fabianosantos.net" - ] - }, - "Tools/Page_Inspector/How_to/Examine_and_edit_CSS": { - "modified": "2020-07-16T22:34:43.033Z", - "contributors": [ - "wbamberg", - "wdot789", - "raphaellima8", - "jaimemaretoli", - "julianadfg" - ] - }, - "Tools/Page_Inspector/How_to/Examine_grid_layouts": { - "modified": "2020-07-16T22:34:47.464Z", - "contributors": [ - "wbamberg", - "nobrewilk" - ] - }, - "Tools/Page_Inspector/How_to/Open_the_Inspector": { - "modified": "2020-07-16T22:34:32.967Z", - "contributors": [ - "wbamberg", - "larimaza" - ] - }, - "Tools/Page_Inspector/How_to/Trabalho_Com_Animaçoes": { - "modified": "2020-07-16T22:34:36.936Z", - "contributors": [ - "wbamberg", - "o2over" - ] - }, - "Tools/Rulers": { - "modified": "2020-07-16T22:36:26.507Z", - "contributors": [ - "wbamberg", - "barddes", - "Jeremie", - "kazumi" - ] - }, - "Tools/Settings": { - "modified": "2020-07-16T22:36:35.275Z", - "contributors": [ - "wbamberg", - "jaimemaretoli", - "jhonatasrm", - "julianadfg" - ] - }, - "Tools/Shader_Editor": { - "modified": "2020-07-16T22:35:54.762Z", - "contributors": [ - "wbamberg", - "stephaniehobson", - "bassam", - "joselima", - "idenilson" - ] - }, - "Tools/Simulador_Firefox_OS_1.1": { - "modified": "2020-07-16T22:35:58.114Z", - "contributors": [ - "wbamberg", - "faelpinho" - ] - }, - "Tools/Web_Console": { - "modified": "2020-07-16T22:34:06.990Z", - "contributors": [ - "cautnew", - "wbamberg", - "DiegoTelles", - "javaroldo", - "danielferreira.developer", - "gmoraes", - "paulojackson42", - "teoli", - "kosikfl" - ] - }, - "Tools/Web_Console/Helpers": { - "modified": "2020-07-16T22:34:12.817Z", - "contributors": [ - "wbamberg", - "akando" - ] - }, - "Tools/Web_Console/Opening_the_Web_Console": { - "modified": "2020-07-16T22:34:17.352Z", - "contributors": [ - "josimaraLima", - "cautnew" - ] - }, - "Tools/Web_Console/The_command_line_interpreter": { - "modified": "2020-07-16T22:34:19.266Z", - "contributors": [ - "luizcowbtf" - ] - }, - "Tools/Working_with_iframes": { - "modified": "2020-07-16T22:36:12.025Z", - "contributors": [ - "wbamberg", - "kausdev", - "Vinicius_Vieira" - ] - }, - "Tools/atuação": { - "modified": "2020-07-16T22:36:13.436Z", - "contributors": [ - "wbamberg", - "IgorGoncalves", - "ricardolima89", - "gilton", - "samuelpontes" - ] - }, - "Using_geolocation": { - "modified": "2019-03-23T23:36:21.393Z", - "contributors": [ - "rafaelcavalcante", - "paulo-raoni", - "ted_k", - "michaelycus", - "ronaldo.ap.abreu", - "emilianocarvalho" - ] - }, - "Web": { - "modified": "2020-07-13T10:40:01.246Z", - "contributors": [ - "jose.elias.0703", - "jorgeclesio", - "ChristoPy", - "Munhoz", - "RenanBirck", - "BrendonFerreira", - "AlanCezarAraujo", - "-", - "PriscillaAlcalde", - "rbrandao", - "sheldonled", - "cezarcruz", - "rafaelsakurai", - "Sheppy" - ] - }, - "Web/API": { - "modified": "2019-06-15T02:48:05.766Z", - "contributors": [ - "wcqueiroz", - "julio-elipse", - "MatheusCuba", - "KadirTopal", - "sprodrigues", - "teoli", - "panaggio", - "ethertank", - "srsaude", - "Sheppy" - ] - }, - "Web/API/ANGLE_instanced_arrays": { - "modified": "2020-10-15T22:14:15.404Z", - "contributors": [ - "eliasmelgaco" - ] - }, - "Web/API/API_Push": { - "modified": "2019-03-23T22:39:02.907Z", - "contributors": [ - "rodrigoalexandresc", - "fahadkalil", - "rmunhoz" - ] - }, - "Web/API/API_Push/Best_Practices": { - "modified": "2020-05-23T16:17:14.549Z", - "contributors": [ - "brunoartc" - ] - }, - "Web/API/API_Web_Audio": { - "modified": "2019-03-18T20:58:41.484Z", - "contributors": [ - "SphinxKnight", - "italoadler", - "GleisonLuis", - "MichelAlonso", - "gidenilson", - "Sheppy", - "DavidWalsh", - "rbrandao", - "taltk9", - "teoli", - "unreleasedmix" - ] - }, - "Web/API/API_Web_Audio/Sintetizador_simples": { - "modified": "2020-09-29T13:36:38.578Z", - "contributors": [ - "Trek" - ] - }, - "Web/API/API_de_Desempenho": { - "modified": "2020-04-24T14:27:05.156Z", - "contributors": [ - "rbertoche" - ] - }, - "Web/API/AbortSignal": { - "modified": "2020-10-15T22:03:40.637Z", - "contributors": [ - "MatheusCuba" - ] - }, - "Web/API/AbortSignal/aborted": { - "modified": "2020-10-15T22:05:39.005Z", - "contributors": [ - "marcelorobson001" - ] - }, - "Web/API/AbstractWorker": { - "modified": "2019-03-23T23:11:23.809Z", - "contributors": [ - "teoli", - "mklauck" - ] - }, - "Web/API/AbstractWorker/onerror": { - "modified": "2019-03-23T22:50:42.630Z", - "contributors": [ - "daltonmenezes" - ] - }, - "Web/API/Ambient_Light_Events": { - "modified": "2019-03-23T22:10:24.978Z", - "contributors": [ - "andre-mendes" - ] - }, - "Web/API/Animation": { - "modified": "2019-03-23T22:27:19.257Z", - "contributors": [ - "mrmorais", - "hbmuller", - "rachelnabors" - ] - }, - "Web/API/Animation/cancel": { - "modified": "2019-03-23T22:32:30.370Z", - "contributors": [ - "JohnLatties" - ] - }, - "Web/API/Animation/currentTime": { - "modified": "2019-03-23T22:08:24.693Z", - "contributors": [ - "Schieck" - ] - }, - "Web/API/Animation/playState": { - "modified": "2019-03-23T22:08:37.256Z", - "contributors": [ - "Schieck" - ] - }, - "Web/API/AnimationEvent": { - "modified": "2019-03-23T22:45:30.935Z", - "contributors": [ - "edu-ricardo", - "teoli", - "takahan" - ] - }, - "Web/API/AnimationEvent/AnimationEvent": { - "modified": "2019-03-23T22:45:31.301Z", - "contributors": [ - "takahan" - ] - }, - "Web/API/AnimationEvent/animationName": { - "modified": "2019-03-23T22:45:37.004Z", - "contributors": [ - "teoli", - "takahan" - ] - }, - "Web/API/AnimationEvent/elapsedTime": { - "modified": "2019-03-23T22:45:36.142Z", - "contributors": [ - "teoli", - "takahan" - ] - }, - "Web/API/AnimationEvent/initAnimationEvent": { - "modified": "2019-03-23T22:45:29.493Z", - "contributors": [ - "teoli", - "takahan" - ] - }, - "Web/API/AnimationEvent/pseudoElement": { - "modified": "2019-03-23T22:45:35.200Z", - "contributors": [ - "teoli", - "takahan" - ] - }, - "Web/API/Attr": { - "modified": "2019-03-23T23:11:31.038Z", - "contributors": [ - "MatheusCuba", - "renansouza", - "teoli", - "mklauck" - ] - }, - "Web/API/Attr/localName": { - "modified": "2019-03-23T22:18:49.389Z", - "contributors": [ - "juniorgarcia" - ] - }, - "Web/API/AudioContext": { - "modified": "2020-08-25T13:06:48.450Z", - "contributors": [ - "duduindo", - "italoadler", - "GPrimola", - "EduardoFerr", - "jpmedley" - ] - }, - "Web/API/AudioContext/currentTime": { - "modified": "2019-03-23T22:31:21.913Z", - "contributors": [ - "deyvid0123" - ] - }, - "Web/API/AudioNode": { - "modified": "2019-03-23T22:37:43.755Z", - "contributors": [ - "gidenilson" - ] - }, - "Web/API/Background_Tasks_API": { - "modified": "2020-10-15T22:22:54.939Z", - "contributors": [ - "maatheusgouveia" - ] - }, - "Web/API/BatteryManager": { - "modified": "2019-03-23T23:18:25.418Z", - "contributors": [ - "teoli", - "eliezerb" - ] - }, - "Web/API/BatteryManager/charging": { - "modified": "2019-03-23T23:18:26.621Z", - "contributors": [ - "teoli", - "eliezerb" - ] - }, - "Web/API/BatteryManager/chargingTime": { - "modified": "2019-03-23T23:17:02.480Z", - "contributors": [ - "teoli", - "eliezerb" - ] - }, - "Web/API/BatteryManager/dischargingTime": { - "modified": "2019-03-23T23:16:57.249Z", - "contributors": [ - "teoli", - "eliezerb" - ] - }, - "Web/API/BatteryManager/level": { - "modified": "2019-03-23T23:16:57.347Z", - "contributors": [ - "teoli", - "eliezerb" - ] - }, - "Web/API/BatteryManager/onchargingchange": { - "modified": "2019-03-23T23:16:56.594Z", - "contributors": [ - "teoli", - "eliezerb" - ] - }, - "Web/API/BatteryManager/onchargingtimechange": { - "modified": "2019-03-23T23:16:56.942Z", - "contributors": [ - "teoli", - "eliezerb" - ] - }, - "Web/API/BatteryManager/ondischargintimechange": { - "modified": "2019-03-23T23:16:54.139Z", - "contributors": [ - "teoli", - "eliezerb" - ] - }, - "Web/API/BatteryManager/onlevelchange": { - "modified": "2019-03-23T23:16:53.281Z", - "contributors": [ - "teoli", - "eliezerb" - ] - }, - "Web/API/BiquadFilterNode": { - "modified": "2020-10-15T22:02:35.671Z", - "contributors": [ - "Jonathanifpe" - ] - }, - "Web/API/Blob": { - "modified": "2020-10-15T21:31:54.891Z", - "contributors": [ - "CahMoraes", - "Flicksie", - "gabrielacaesar", - "jkdrangel", - "vandercijr", - "wancharle", - "raduq", - "Caique39", - "willianbriotto", - "teoli", - "jeffersoncardoso100" - ] - }, - "Web/API/Blob/Blob": { - "modified": "2020-10-15T22:09:55.306Z", - "contributors": [ - "thiagosaife", - "TiagoOliveiraz" - ] - }, - "Web/API/Blob/size": { - "modified": "2020-10-15T22:13:56.876Z", - "contributors": [ - "thiagosaife" - ] - }, - "Web/API/Blob/slice": { - "modified": "2019-03-18T21:46:37.104Z", - "contributors": [ - "Julio_Lira" - ] - }, - "Web/API/Blob/type": { - "modified": "2020-10-15T22:13:55.601Z", - "contributors": [ - "thiagosaife" - ] - }, - "Web/API/Body": { - "modified": "2020-10-15T22:30:31.056Z", - "contributors": [ - "Wind1808" - ] - }, - "Web/API/Body/json": { - "modified": "2020-10-15T22:30:29.688Z", - "contributors": [ - "tohdi1" - ] - }, - "Web/API/BroadcastChannel": { - "modified": "2020-10-15T22:14:45.422Z", - "contributors": [ - "Rondinelly" - ] - }, - "Web/API/CSS": { - "modified": "2019-07-14T13:19:26.783Z", - "contributors": [ - "onsistec", - "teoli", - "takahan" - ] - }, - "Web/API/CSS_Object_Model": { - "modified": "2019-03-23T22:34:08.999Z", - "contributors": [ - "allissondebrito" - ] - }, - "Web/API/Cache": { - "modified": "2019-03-23T22:09:25.465Z", - "contributors": [ - "khaosdoctor" - ] - }, - "Web/API/CanvasRenderingContext2D": { - "modified": "2020-11-14T05:59:14.329Z", - "contributors": [ - "pedrinhofss", - "TalissonOliveira", - "ThiagOliveira26", - "elciodalosto", - "ioxua-os", - "marcio-ti", - "rudolfo" - ] - }, - "Web/API/CanvasRenderingContext2D/arc": { - "modified": "2020-11-29T22:05:48.491Z", - "contributors": [ - "jfelipearaujo" - ] - }, - "Web/API/CanvasRenderingContext2D/arcTo": { - "modified": "2020-10-15T22:10:00.175Z", - "contributors": [ - "Leodma" - ] - }, - "Web/API/CanvasRenderingContext2D/beginPath": { - "modified": "2019-03-23T22:18:53.160Z", - "contributors": [ - "MarceloBRN" - ] - }, - "Web/API/CanvasRenderingContext2D/clearRect": { - "modified": "2019-03-23T22:18:47.441Z", - "contributors": [ - "MarceloBRN" - ] - }, - "Web/API/CanvasRenderingContext2D/clip": { - "modified": "2019-03-23T22:26:54.054Z", - "contributors": [ - "Drako" - ] - }, - "Web/API/CanvasRenderingContext2D/closePath": { - "modified": "2019-03-23T22:18:51.433Z", - "contributors": [ - "MarceloBRN" - ] - }, - "Web/API/CanvasRenderingContext2D/fill": { - "modified": "2019-03-23T22:18:51.215Z", - "contributors": [ - "MarceloBRN" - ] - }, - "Web/API/CanvasRenderingContext2D/fillRect": { - "modified": "2019-03-23T22:18:47.156Z", - "contributors": [ - "MarceloBRN" - ] - }, - "Web/API/CanvasRenderingContext2D/fillStyle": { - "modified": "2019-03-23T22:15:27.700Z", - "contributors": [ - "MarceloBRN", - "sergiorg" - ] - }, - "Web/API/CanvasRenderingContext2D/lineTo": { - "modified": "2019-03-23T22:18:50.928Z", - "contributors": [ - "MarceloBRN" - ] - }, - "Web/API/CanvasRenderingContext2D/moveTo": { - "modified": "2019-03-23T22:18:47.951Z", - "contributors": [ - "MarceloBRN" - ] - }, - "Web/API/CanvasRenderingContext2D/quadraticCurveTo": { - "modified": "2019-03-18T21:42:53.744Z", - "contributors": [ - "ollieestuff" - ] - }, - "Web/API/CanvasRenderingContext2D/rect": { - "modified": "2019-03-18T21:43:19.793Z", - "contributors": [ - "MarceloBRN" - ] - }, - "Web/API/CanvasRenderingContext2D/stroke": { - "modified": "2019-03-23T22:18:51.989Z", - "contributors": [ - "MarceloBRN" - ] - }, - "Web/API/CanvasRenderingContext2D/strokeRect": { - "modified": "2019-03-23T22:18:48.512Z", - "contributors": [ - "MarceloBRN" - ] - }, - "Web/API/CharacterData": { - "modified": "2020-10-15T22:12:28.607Z", - "contributors": [ - "marcos180212" - ] - }, - "Web/API/ChildNode": { - "modified": "2020-10-15T21:55:14.252Z", - "contributors": [ - "mateusvelleda", - "AlanSantos11", - "stevenwdv" - ] - }, - "Web/API/ChildNode/after": { - "modified": "2020-10-15T22:17:31.621Z", - "contributors": [ - "pedroguilhermelima" - ] - }, - "Web/API/ChildNode/remove": { - "modified": "2020-10-15T21:55:19.824Z", - "contributors": [ - "SphinxKnight", - "gutoribeiro" - ] - }, - "Web/API/ClipboardEvent": { - "modified": "2020-10-15T22:15:35.028Z", - "contributors": [ - "duduindo", - "AnarcoPhysics" - ] - }, - "Web/API/CloseEvent": { - "modified": "2019-09-12T20:33:31.828Z", - "contributors": [ - "marlonveiga-santos", - "rener_bz", - "dougKronos" - ] - }, - "Web/API/CloseEvent/CloseEvent": { - "modified": "2020-10-15T22:24:43.626Z", - "contributors": [ - "marlonveiga-santos" - ] - }, - "Web/API/Console": { - "modified": "2019-03-23T23:17:34.298Z", - "contributors": [ - "JorgeMadson", - "teoli", - "Webysther", - "khalid32", - "lfarroco" - ] - }, - "Web/API/Console/assert": { - "modified": "2019-03-23T22:25:22.069Z", - "contributors": [ - "mayronmedeiros" - ] - }, - "Web/API/Console/clear": { - "modified": "2020-10-15T22:29:37.104Z", - "contributors": [ - "webfelipemaia" - ] - }, - "Web/API/Console/count": { - "modified": "2019-03-23T22:16:10.687Z", - "contributors": [ - "vspedr" - ] - }, - "Web/API/Console/dir": { - "modified": "2019-03-23T22:50:36.909Z", - "contributors": [ - "belsanpesou" - ] - }, - "Web/API/Console/error": { - "modified": "2019-03-23T22:45:13.263Z", - "contributors": [ - "raduq" - ] - }, - "Web/API/Console/info": { - "modified": "2019-03-23T22:29:13.618Z", - "contributors": [ - "zaclummys", - "HugoOliveira" - ] - }, - "Web/API/Console/log": { - "modified": "2019-03-23T22:56:56.119Z", - "contributors": [ - "odahcam", - "Higo" - ] - }, - "Web/API/Console/table": { - "modified": "2020-10-15T22:16:14.686Z", - "contributors": [ - "elielsonbatista" - ] - }, - "Web/API/Console/time": { - "modified": "2019-10-03T22:24:48.908Z", - "contributors": [ - "gcacars" - ] - }, - "Web/API/Console/timeEnd": { - "modified": "2019-03-23T23:04:24.266Z", - "contributors": [ - "teoli", - "perrucho" - ] - }, - "Web/API/Console/timeStamp": { - "modified": "2019-10-03T22:25:43.901Z", - "contributors": [ - "gcacars" - ] - }, - "Web/API/Console/warn": { - "modified": "2019-03-18T21:45:25.881Z", - "contributors": [ - "raduq" - ] - }, - "Web/API/Console_API": { - "modified": "2020-10-15T22:22:48.975Z", - "contributors": [ - "luan0ap" - ] - }, - "Web/API/Crypto": { - "modified": "2020-10-15T21:59:00.174Z", - "contributors": [ - "Sipmann", - "Hikashii" - ] - }, - "Web/API/Crypto/subtle": { - "modified": "2020-10-15T21:59:00.200Z", - "contributors": [ - "fscholz", - "Hikashii" - ] - }, - "Web/API/CryptoKey": { - "modified": "2019-03-23T22:02:50.915Z", - "contributors": [ - "Hikashii" - ] - }, - "Web/API/CryptoKey/algorithm": { - "modified": "2019-03-23T22:02:41.629Z", - "contributors": [ - "Hikashii" - ] - }, - "Web/API/CryptoKey/extractable": { - "modified": "2019-03-23T22:02:42.520Z", - "contributors": [ - "Hikashii" - ] - }, - "Web/API/CryptoKey/type": { - "modified": "2019-03-23T22:02:48.076Z", - "contributors": [ - "Hikashii" - ] - }, - "Web/API/CryptoKey/usages": { - "modified": "2019-03-23T22:02:45.135Z", - "contributors": [ - "Hikashii" - ] - }, - "Web/API/CustomElementRegistry": { - "modified": "2020-10-15T22:10:44.693Z", - "contributors": [ - "mtsgeneroso" - ] - }, - "Web/API/DOMException": { - "modified": "2020-10-15T22:14:05.527Z", - "contributors": [ - "hamadecd", - "viniciuspdasilva" - ] - }, - "Web/API/DOMImplementation": { - "modified": "2020-10-15T22:10:56.598Z", - "contributors": [ - "connorshea" - ] - }, - "Web/API/DOMImplementation/createDocument": { - "modified": "2020-10-15T22:11:04.094Z", - "contributors": [ - "jeronimojr" - ] - }, - "Web/API/DOMString": { - "modified": "2019-03-23T22:03:59.387Z", - "contributors": [ - "oirodolfo" - ] - }, - "Web/API/DOMStringList": { - "modified": "2019-03-23T22:03:44.815Z", - "contributors": [ - "MaikeNegreiros" - ] - }, - "Web/API/DOMStringMap": { - "modified": "2019-05-02T19:22:48.801Z", - "contributors": [ - "wbamberg", - "samir.araujo" - ] - }, - "Web/API/DataTransfer": { - "modified": "2019-09-02T08:22:55.109Z", - "contributors": [ - "gugaburigo29", - "wbamberg", - "Murillo_Brandao" - ] - }, - "Web/API/DeviceAcceleration": { - "modified": "2019-03-23T22:09:29.028Z", - "contributors": [ - "Fernandolrs" - ] - }, - "Web/API/DeviceRotationRate": { - "modified": "2019-03-23T22:09:26.114Z", - "contributors": [ - "Fernandolrs" - ] - }, - "Web/API/Document": { - "modified": "2019-07-14T14:49:00.357Z", - "contributors": [ - "onsistec", - "defr4g", - "brevvi", - "otaviogui", - "aarrigo", - "rodrigocnascimento", - "GabrielAmazonas", - "Joao.JS", - "lionbtt", - "teoli" - ] - }, - "Web/API/Document/Document": { - "modified": "2019-07-17T13:05:53.557Z", - "contributors": [ - "onsistec", - "pleshw" - ] - }, - "Web/API/Document/ElementoRegistrado": { - "modified": "2019-03-23T22:20:55.282Z", - "contributors": [ - "rener_bz", - "mak213k" - ] - }, - "Web/API/Document/URL": { - "modified": "2019-03-23T22:25:43.664Z", - "contributors": [ - "littlecouto" - ] - }, - "Web/API/Document/activeElement": { - "modified": "2019-03-23T22:24:43.471Z", - "contributors": [ - "wbamberg", - "fscholz", - "fernandosavio", - "DiegoYungh" - ] - }, - "Web/API/Document/alinkColor": { - "modified": "2020-10-15T22:23:30.202Z", - "contributors": [ - "g-malaconi", - "VictorhMalheiro" - ] - }, - "Web/API/Document/anchors": { - "modified": "2019-03-23T22:10:28.887Z", - "contributors": [ - "wbamberg", - "fernandosavio" - ] - }, - "Web/API/Document/bgColor": { - "modified": "2019-03-18T20:59:10.676Z", - "contributors": [ - "SphinxKnight", - "henrywm" - ] - }, - "Web/API/Document/body": { - "modified": "2019-03-23T22:49:43.056Z", - "contributors": [ - "josantana" - ] - }, - "Web/API/Document/characterSet": { - "modified": "2020-10-15T22:26:02.890Z", - "contributors": [ - "g-malaconi" - ] - }, - "Web/API/Document/close": { - "modified": "2019-03-23T22:05:22.094Z", - "contributors": [ - "henrywm" - ] - }, - "Web/API/Document/compatMode": { - "modified": "2019-03-18T20:59:09.892Z", - "contributors": [ - "SphinxKnight", - "macalha" - ] - }, - "Web/API/Document/contentType": { - "modified": "2020-10-15T22:21:16.690Z", - "contributors": [ - "onsistec" - ] - }, - "Web/API/Document/createElement": { - "modified": "2019-03-23T22:54:23.615Z", - "contributors": [ - "guilherme-adesouza", - "diogoreducino", - "teoli", - "nicholascamp" - ] - }, - "Web/API/Document/createElementNS": { - "modified": "2019-03-23T22:38:59.962Z", - "contributors": [ - "LinuxPowerBR" - ] - }, - "Web/API/Document/currentScript": { - "modified": "2019-03-23T22:50:44.919Z", - "contributors": [ - "wbamberg", - "Mathmovic" - ] - }, - "Web/API/Document/defaultView": { - "modified": "2019-03-23T22:45:13.537Z", - "contributors": [ - "macalha" - ] - }, - "Web/API/Document/designMode": { - "modified": "2019-03-23T22:46:53.988Z", - "contributors": [ - "caueamaral" - ] - }, - "Web/API/Document/doctype": { - "modified": "2020-10-15T22:21:15.720Z", - "contributors": [ - "onsistec" - ] - }, - "Web/API/Document/documentElement": { - "modified": "2019-03-23T22:50:37.447Z", - "contributors": [ - "coloringa", - "belsanpesou" - ] - }, - "Web/API/Document/documentURI": { - "modified": "2020-10-15T22:21:10.338Z", - "contributors": [ - "onsistec" - ] - }, - "Web/API/Document/elementFromPoint": { - "modified": "2019-03-23T22:29:17.399Z", - "contributors": [ - "cezaraugusto" - ] - }, - "Web/API/Document/execCommand": { - "modified": "2020-10-15T22:28:17.705Z", - "contributors": [ - "vladwoguerbezerra" - ] - }, - "Web/API/Document/fullscreen": { - "modified": "2020-10-15T22:27:26.847Z", - "contributors": [ - "Eliezer62" - ] - }, - "Web/API/Document/getElementById": { - "modified": "2019-09-15T13:18:53.343Z", - "contributors": [ - "brasmon8351", - "hackerftsg", - "IcaroSantana", - "Filipe-Souza", - "eustabio_junior", - "teoli", - "khalid32", - "willian", - "YgorFranca" - ] - }, - "Web/API/Document/getElementsByClassName": { - "modified": "2019-03-23T22:32:17.595Z", - "contributors": [ - "fcard", - "lucasbento", - "marcelo.bastos" - ] - }, - "Web/API/Document/getElementsByName": { - "modified": "2020-10-15T22:22:47.482Z", - "contributors": [ - "KyryIx" - ] - }, - "Web/API/Document/getElementsByTagName": { - "modified": "2020-10-15T22:18:04.997Z", - "contributors": [ - "JailsonAraujo" - ] - }, - "Web/API/Document/getSelection": { - "modified": "2019-03-23T22:54:15.369Z", - "contributors": [ - "expalmer" - ] - }, - "Web/API/Document/hasFocus": { - "modified": "2019-03-23T22:34:09.192Z", - "contributors": [ - "renatoluna" - ] - }, - "Web/API/Document/head": { - "modified": "2019-03-23T22:49:41.577Z", - "contributors": [ - "josantana" - ] - }, - "Web/API/Document/height": { - "modified": "2019-03-23T22:04:29.295Z", - "contributors": [ - "macalha" - ] - }, - "Web/API/Document/images": { - "modified": "2019-03-23T23:06:58.234Z", - "contributors": [ - "teoli", - "JorgeRodrigues9" - ] - }, - "Web/API/Document/implementation": { - "modified": "2019-03-18T21:16:40.902Z", - "contributors": [ - "macalha" - ] - }, - "Web/API/Document/importNode": { - "modified": "2020-10-15T21:47:31.458Z", - "contributors": [ - "fscholz", - "wbamberg", - "VitorVRS" - ] - }, - "Web/API/Document/keydown_event": { - "modified": "2019-04-15T09:18:45.968Z", - "contributors": [ - "irenesmith", - "manoelcampos" - ] - }, - "Web/API/Document/keypress_event": { - "modified": "2019-09-23T02:29:04.664Z", - "contributors": [ - "SphinxKnight", - "TiagoEmanuel", - "wbamberg", - "chrisdavidmills", - "JRodrigues13" - ] - }, - "Web/API/Document/keyup_event": { - "modified": "2019-04-18T03:51:22.396Z", - "contributors": [ - "irenesmith", - "fscholz", - "thaynacoelho" - ] - }, - "Web/API/Document/location": { - "modified": "2019-03-23T22:22:06.393Z", - "contributors": [ - "HugoBex" - ] - }, - "Web/API/Document/origin": { - "modified": "2020-10-15T22:14:43.600Z", - "contributors": [ - "Rondinelly" - ] - }, - "Web/API/Document/querySelector": { - "modified": "2019-08-15T13:21:36.389Z", - "contributors": [ - "fernandosavio", - "teoli", - "AshfaqHossain", - "HenriqueSilverio" - ] - }, - "Web/API/Document/querySelectorAll": { - "modified": "2019-03-23T23:35:24.346Z", - "contributors": [ - "maarysantos", - "fernandosavio", - "teoli", - "zapimaster" - ] - }, - "Web/API/Document/readyState": { - "modified": "2019-08-15T13:11:06.674Z", - "contributors": [ - "imnotvirus", - "macalha" - ] - }, - "Web/API/Document/referrer": { - "modified": "2019-03-23T22:44:47.032Z", - "contributors": [ - "alexandrefsans", - "TAGBrasil" - ] - }, - "Web/API/Document/scripts": { - "modified": "2019-03-23T23:14:44.682Z", - "contributors": [ - "teoli", - "BrenoPolanski" - ] - }, - "Web/API/Document/write": { - "modified": "2020-10-29T21:41:43.539Z", - "contributors": [ - "PedroHen1", - "webfelipemaia" - ] - }, - "Web/API/Document/writeln": { - "modified": "2019-03-23T23:10:34.523Z", - "contributors": [ - "teoli", - "jsx", - "Nathalino_Pacheco" - ] - }, - "Web/API/DocumentFragment": { - "modified": "2020-06-18T15:03:01.638Z", - "contributors": [ - "moiteiro", - "haskellcamargo", - "teoli", - "felfiz" - ] - }, - "Web/API/Element": { - "modified": "2019-03-18T21:08:52.187Z", - "contributors": [ - "fscholz", - "coloringa", - "fime", - "teoli" - ] - }, - "Web/API/Element/accessKey": { - "modified": "2019-03-23T22:27:15.059Z", - "contributors": [ - "DiasNetoJ" - ] - }, - "Web/API/Element/addEventListener": { - "modified": "2019-03-23T23:35:46.468Z", - "contributors": [ - "SphinxKnight", - "LesleyAndreza", - "wbamberg", - "cautnew", - "teoli", - "guipremonsa" - ] - }, - "Web/API/Element/animate": { - "modified": "2019-03-23T22:07:02.826Z", - "contributors": [ - "evandrolacerda" - ] - }, - "Web/API/Element/attributes": { - "modified": "2019-03-23T22:27:10.096Z", - "contributors": [ - "DiasNetoJ" - ] - }, - "Web/API/Element/classList": { - "modified": "2019-03-23T22:21:03.577Z", - "contributors": [ - "elnascimento", - "rafaelcavalcante", - "LucasRuy" - ] - }, - "Web/API/Element/className": { - "modified": "2019-03-23T22:37:29.089Z", - "contributors": [ - "lucasmedina" - ] - }, - "Web/API/Element/click_event": { - "modified": "2019-03-23T22:00:01.063Z", - "contributors": [ - "irenesmith", - "rochucky", - "fscholz", - "diegocesar" - ] - }, - "Web/API/Element/closest": { - "modified": "2020-10-15T21:57:42.583Z", - "contributors": [ - "mateusvelleda", - "willamesoares" - ] - }, - "Web/API/Element/getAttribute": { - "modified": "2019-03-23T23:08:02.469Z", - "contributors": [ - "brunoravanhani", - "teoli", - "gabrieltr" - ] - }, - "Web/API/Element/getBoundingClientRect": { - "modified": "2020-10-15T21:46:45.096Z", - "contributors": [ - "SphinxKnight", - "cezaraugusto", - "Daibushi" - ] - }, - "Web/API/Element/getElementsByClassName": { - "modified": "2020-10-15T22:29:44.232Z", - "contributors": [ - "leonardomaier" - ] - }, - "Web/API/Element/id": { - "modified": "2019-03-23T23:09:45.457Z", - "contributors": [ - "brunoravanhani", - "teoli", - "khalid32", - "alexandrem" - ] - }, - "Web/API/Element/innerHTML": { - "modified": "2020-07-14T14:51:24.487Z", - "contributors": [ - "aquiles23", - "SphinxKnight", - "g-thome", - "n4rut0r31", - "fnsc.luis" - ] - }, - "Web/API/Element/insertAdjacentHTML": { - "modified": "2019-03-23T22:50:34.232Z", - "contributors": [ - "rafaelcavalcante", - "raphaelchaib", - "belsanpesou" - ] - }, - "Web/API/Element/matches": { - "modified": "2019-03-23T22:20:51.438Z", - "contributors": [ - "jozadaquebatista" - ] - }, - "Web/API/Element/mousedown_event": { - "modified": "2019-04-30T14:20:11.230Z", - "contributors": [ - "wbamberg", - "irenesmith", - "KaykyB" - ] - }, - "Web/API/Element/mouseenter_event": { - "modified": "2019-04-30T14:17:45.007Z", - "contributors": [ - "wbamberg", - "irenesmith", - "fscholz", - "jppaschoal" - ] - }, - "Web/API/Element/mouseover_event": { - "modified": "2019-04-30T14:03:03.928Z", - "contributors": [ - "wbamberg", - "irenesmith", - "Bobson360" - ] - }, - "Web/API/Element/name": { - "modified": "2019-03-23T22:18:12.202Z", - "contributors": [ - "RafaelGiordanno" - ] - }, - "Web/API/Element/outerHTML": { - "modified": "2019-03-23T22:34:59.844Z", - "contributors": [ - "LucianoCardoso" - ] - }, - "Web/API/Element/querySelector": { - "modified": "2019-03-23T23:02:11.163Z", - "contributors": [ - "fernandoleal", - "teoli", - "tbai" - ] - }, - "Web/API/Element/querySelectorAll": { - "modified": "2019-05-03T00:57:05.010Z", - "contributors": [ - "wbamberg", - "viniciusvms", - "teoli", - "LuizPanariello" - ] - }, - "Web/API/Element/removeAttribute": { - "modified": "2019-03-23T23:06:58.347Z", - "contributors": [ - "teoli", - "cel055" - ] - }, - "Web/API/Element/scrollIntoView": { - "modified": "2020-10-15T21:52:05.069Z", - "contributors": [ - "mateusvelleda", - "thiago890-3", - "mausim" - ] - }, - "Web/API/Element/scrollLeft": { - "modified": "2020-10-15T21:46:51.554Z", - "contributors": [ - "djornada", - "SphinxKnight", - "eustabio_junior" - ] - }, - "Web/API/Element/scrollTop": { - "modified": "2019-03-23T22:40:30.613Z", - "contributors": [ - "samuelsilvadev", - "Alex-Alan-Nunes" - ] - }, - "Web/API/Element/scrollWidth": { - "modified": "2020-10-15T21:56:42.511Z", - "contributors": [ - "SphinxKnight", - "joaovinicius" - ] - }, - "Web/API/Element/setAttribute": { - "modified": "2019-03-23T22:31:48.961Z", - "contributors": [ - "rplaurindo" - ] - }, - "Web/API/Element/setAttributeNS": { - "modified": "2019-03-23T22:21:30.240Z", - "contributors": [ - "edgardleal" - ] - }, - "Web/API/Element/tagName": { - "modified": "2019-03-23T22:07:25.667Z", - "contributors": [ - "VitorHFLopes" - ] - }, - "Web/API/Element/touchstart_event": { - "modified": "2019-04-30T14:26:22.509Z", - "contributors": [ - "wbamberg", - "irenesmith", - "fscholz", - "ZekDtonik" - ] - }, - "Web/API/Encoding_API": { - "modified": "2020-10-15T22:25:14.787Z", - "contributors": [ - "luan0ap" - ] - }, - "Web/API/Event": { - "modified": "2019-03-23T23:01:39.950Z", - "contributors": [ - "ralfting", - "gregori", - "juliocarneiro", - "fscholz" - ] - }, - "Web/API/Event/Comparativo_entre_Event_Targets": { - "modified": "2019-11-03T21:25:56.066Z", - "contributors": [ - "rayonnunes" - ] - }, - "Web/API/Event/Event": { - "modified": "2020-10-15T21:42:53.584Z", - "contributors": [ - "fscholz", - "juliocarneiro" - ] - }, - "Web/API/Event/currentTarget": { - "modified": "2019-03-18T21:42:03.631Z", - "contributors": [ - "leom806", - "WederPachecoSilva" - ] - }, - "Web/API/Event/defaultPrevented": { - "modified": "2019-03-23T22:53:50.174Z", - "contributors": [ - "Fabiolux" - ] - }, - "Web/API/Event/initEvent": { - "modified": "2019-05-30T19:08:33.694Z", - "contributors": [ - "RoinujNosde", - "rodrigocnascimento" - ] - }, - "Web/API/Event/isTrusted": { - "modified": "2020-10-15T22:15:35.212Z", - "contributors": [ - "AnarcoPhysics" - ] - }, - "Web/API/Event/preventDefault": { - "modified": "2019-03-23T22:39:06.025Z", - "contributors": [ - "juliocarneiro" - ] - }, - "Web/API/Event/srcElement": { - "modified": "2019-03-23T22:35:07.248Z", - "contributors": [ - "macalha" - ] - }, - "Web/API/Event/stopImmediatePropagation": { - "modified": "2019-03-18T20:45:36.763Z", - "contributors": [ - "MarcioCorrea", - "caueamaral", - "junior201110" - ] - }, - "Web/API/Event/stopPropagation": { - "modified": "2020-08-29T13:09:53.471Z", - "contributors": [ - "geffbatista", - "diegolaquino", - "drigores", - "strael1", - "raul3k" - ] - }, - "Web/API/Event/target": { - "modified": "2020-11-05T02:57:14.382Z", - "contributors": [ - "SphinxKnight", - "miguelbrn", - "LucasRuy" - ] - }, - "Web/API/Event/type": { - "modified": "2019-03-23T23:22:07.699Z", - "contributors": [ - "teoli", - "mateuspv" - ] - }, - "Web/API/EventListener": { - "modified": "2019-03-23T22:20:33.890Z", - "contributors": [ - "cezaraugusto" - ] - }, - "Web/API/EventSource": { - "modified": "2019-03-23T22:50:15.004Z", - "contributors": [ - "ronrother", - "Madalosso", - "leonardopandrade" - ] - }, - "Web/API/EventSource/EventSource": { - "modified": "2019-03-18T21:30:57.351Z", - "contributors": [ - "ronrother" - ] - }, - "Web/API/EventSource/onerror": { - "modified": "2019-03-18T21:30:45.574Z", - "contributors": [ - "ronrother" - ] - }, - "Web/API/EventTarget": { - "modified": "2019-03-23T23:16:55.717Z", - "contributors": [ - "victor_emanuel", - "teoli", - "khalid32", - "eliezerb" - ] - }, - "Web/API/EventTarget/EventTarget": { - "modified": "2020-10-15T22:24:50.823Z", - "contributors": [ - "marlonveiga-santos" - ] - }, - "Web/API/EventTarget/dispatchEvent": { - "modified": "2019-03-18T21:17:11.648Z", - "contributors": [ - "angellica.araujo" - ] - }, - "Web/API/EventTarget/removeEventListener": { - "modified": "2020-10-15T21:37:49.617Z", - "contributors": [ - "mateusvelleda", - "angellica.araujo" - ] - }, - "Web/API/Fetch_API": { - "modified": "2020-10-15T21:42:57.080Z", - "contributors": [ - "mateusvelleda", - "BrunoLucas", - "fapbatista", - "tcelestino" - ] - }, - "Web/API/Fetch_API/Basic_concepts": { - "modified": "2020-02-17T13:24:31.887Z", - "contributors": [ - "diezan", - "LincePotiguara" - ] - }, - "Web/API/Fetch_API/Using_Fetch": { - "modified": "2020-10-15T21:51:06.123Z", - "contributors": [ - "CharlesEduardoSCBR", - "PauloNFraga", - "rodrigost23", - "puppe1990", - "mateusvelleda", - "AndreRodriguesMelo", - "jeronimojr", - "JEricFarias", - "Italox", - "claudemirmendes", - "nelsonealves", - "dowgssss", - "FranciscoJunior", - "DanZeuss", - "rennerocha" - ] - }, - "Web/API/Fetch_API/Uso_de_busca_Cross-global": { - "modified": "2019-03-18T20:48:56.041Z", - "contributors": [ - "matluz" - ] - }, - "Web/API/File": { - "modified": "2019-03-23T23:11:40.315Z", - "contributors": [ - "ivanmrosa", - "teoli", - "Beterraba" - ] - }, - "Web/API/File/Using_files_from_web_applications": { - "modified": "2019-03-23T23:36:41.452Z", - "contributors": [ - "chrisdavidmills", - "FelipeFonseca" - ] - }, - "Web/API/FileList": { - "modified": "2019-03-23T22:14:37.211Z", - "contributors": [ - "julianotcp" - ] - }, - "Web/API/FileReader": { - "modified": "2019-03-18T20:49:40.766Z", - "contributors": [ - "andersonmo", - "hugonmelo", - "ricardoferreirades", - "belsanpesou", - "rafaelcalpena", - "teoli", - "wbruno" - ] - }, - "Web/API/FileReader/FileReader": { - "modified": "2019-09-27T14:33:41.762Z", - "contributors": [ - "junior-jornada", - "helton-mori-dev" - ] - }, - "Web/API/FileReader/onload": { - "modified": "2019-12-24T01:07:36.177Z", - "contributors": [ - "euvanribeiro", - "educhigon" - ] - }, - "Web/API/FileReader/readAsArrayBuffer": { - "modified": "2019-03-23T22:25:41.700Z", - "contributors": [ - "fabioleardini" - ] - }, - "Web/API/FileReader/readAsBinaryString": { - "modified": "2019-03-23T22:27:28.165Z", - "contributors": [ - "teoli", - "Cyrkran" - ] - }, - "Web/API/FileReader/readAsDataURL": { - "modified": "2019-03-23T22:51:10.920Z", - "contributors": [ - "W3SS", - "DiegoYungh" - ] - }, - "Web/API/FileReader/readAsText": { - "modified": "2019-03-23T22:15:55.068Z", - "contributors": [ - "fellypsantos" - ] - }, - "Web/API/FormData": { - "modified": "2019-03-23T23:08:47.831Z", - "contributors": [ - "cautnew", - "CassianoD2", - "julianotcp", - "qixmiers", - "alexandresn", - "teoli", - "slackrichard" - ] - }, - "Web/API/FormData/FormData": { - "modified": "2019-03-23T22:15:46.234Z", - "contributors": [ - "luislobo14rap", - "emersonlaurentino" - ] - }, - "Web/API/FormData/append": { - "modified": "2019-03-23T22:36:07.939Z", - "contributors": [ - "Ascamp", - "rogerioac", - "DouglasValdo" - ] - }, - "Web/API/FormData/delete": { - "modified": "2019-03-23T22:52:03.924Z", - "contributors": [ - "DouglasValdo" - ] - }, - "Web/API/FormData/entries": { - "modified": "2020-10-15T22:22:54.323Z", - "contributors": [ - "abalioni" - ] - }, - "Web/API/FormData/get": { - "modified": "2019-03-23T22:49:19.241Z", - "contributors": [ - "antoniomquadrosfilho" - ] - }, - "Web/API/FormData/getAll": { - "modified": "2020-10-15T22:10:15.102Z", - "contributors": [ - "enieber" - ] - }, - "Web/API/FormData/has": { - "modified": "2020-10-15T22:22:52.357Z", - "contributors": [ - "abalioni" - ] - }, - "Web/API/FormData/set": { - "modified": "2019-03-23T22:30:34.242Z", - "contributors": [ - "welingtonms" - ] - }, - "Web/API/FullscreenOptions": { - "modified": "2020-10-15T22:15:52.238Z", - "contributors": [ - "TecladistaProd" - ] - }, - "Web/API/Gamepad_API": { - "modified": "2020-10-15T22:23:34.951Z", - "contributors": [ - "IuriPires" - ] - }, - "Web/API/Geolocation": { - "modified": "2020-10-15T21:26:05.516Z", - "contributors": [ - "Sipmann", - "eduardobrenn", - "Leodma", - "teoli", - "cirocosta" - ] - }, - "Web/API/Geolocation/clearWatch": { - "modified": "2020-10-15T22:15:59.752Z", - "contributors": [ - "TecladistaProd" - ] - }, - "Web/API/Geolocation/getCurrentPosition": { - "modified": "2019-01-16T20:45:52.604Z", - "contributors": [ - "Gutem", - "fscholz", - "robsonalvesbh" - ] - }, - "Web/API/Geolocation/watchPosition": { - "modified": "2019-03-23T22:50:20.143Z", - "contributors": [ - "Gutem" - ] - }, - "Web/API/GeolocationCoordinates": { - "modified": "2019-12-10T09:35:08.897Z", - "contributors": [ - "chrisdavidmills", - "eduardobrenn" - ] - }, - "Web/API/GeolocationCoordinates/altitude": { - "modified": "2020-10-15T22:16:41.064Z", - "contributors": [ - "chrisdavidmills", - "wallisonfelipe" - ] - }, - "Web/API/GeolocationPosition": { - "modified": "2020-10-15T22:07:16.029Z", - "contributors": [ - "chrisdavidmills", - "Sipmann", - "bbarreto" - ] - }, - "Web/API/GeolocationPosition/coords": { - "modified": "2019-12-10T11:04:44.065Z", - "contributors": [ - "chrisdavidmills", - "bbarreto" - ] - }, - "Web/API/GeolocationPositionError": { - "modified": "2019-12-10T10:45:27.387Z", - "contributors": [ - "chrisdavidmills", - "nandotorres" - ] - }, - "Web/API/GlobalEventHandlers": { - "modified": "2019-03-23T22:31:33.398Z", - "contributors": [ - "teoli" - ] - }, - "Web/API/GlobalEventHandlers/onabort": { - "modified": "2019-03-23T22:28:55.671Z", - "contributors": [ - "cezaraugusto" - ] - }, - "Web/API/GlobalEventHandlers/onblur": { - "modified": "2019-03-23T22:28:57.111Z", - "contributors": [ - "cezaraugusto" - ] - }, - "Web/API/GlobalEventHandlers/onchange": { - "modified": "2019-03-23T22:28:49.180Z", - "contributors": [ - "nathaliabruno", - "cezaraugusto" - ] - }, - "Web/API/GlobalEventHandlers/onclick": { - "modified": "2020-10-15T22:17:11.589Z", - "contributors": [ - "g-otn" - ] - }, - "Web/API/GlobalEventHandlers/oncontextmenu": { - "modified": "2019-03-23T22:28:42.538Z", - "contributors": [ - "cezaraugusto" - ] - }, - "Web/API/GlobalEventHandlers/onerror": { - "modified": "2019-03-23T22:31:39.576Z", - "contributors": [ - "mantovani" - ] - }, - "Web/API/GlobalEventHandlers/onfocus": { - "modified": "2019-03-23T22:26:20.214Z", - "contributors": [ - "tmoraes" - ] - }, - "Web/API/GlobalEventHandlers/onkeyup": { - "modified": "2020-10-15T22:03:53.967Z", - "contributors": [ - "Sipmann", - "kinkurek" - ] - }, - "Web/API/GlobalEventHandlers/onload": { - "modified": "2019-03-23T22:21:10.943Z", - "contributors": [ - "jeanonline" - ] - }, - "Web/API/GlobalEventHandlers/onlostpointercapture": { - "modified": "2020-10-15T22:22:03.373Z", - "contributors": [ - "mdeamf" - ] - }, - "Web/API/GlobalEventHandlers/onscroll": { - "modified": "2020-10-15T22:23:08.144Z", - "contributors": [ - "marlonveiga-santos", - "Antonio.Carvalho" - ] - }, - "Web/API/HTMLCanvasElement": { - "modified": "2019-03-23T22:03:54.461Z", - "contributors": [ - "zbjornson" - ] - }, - "Web/API/HTMLCanvasElement/getContext": { - "modified": "2019-03-23T22:03:59.683Z", - "contributors": [ - "Bigous", - "raffaeldantass" - ] - }, - "Web/API/HTMLCanvasElement/height": { - "modified": "2020-10-15T22:02:34.563Z", - "contributors": [ - "valdeirpsr" - ] - }, - "Web/API/HTMLCanvasElement/toDataURL": { - "modified": "2020-10-15T22:02:37.180Z", - "contributors": [ - "pererinha", - "valdeirpsr" - ] - }, - "Web/API/HTMLCollection": { - "modified": "2019-03-23T22:53:46.166Z", - "contributors": [ - "Papaxibe" - ] - }, - "Web/API/HTMLContentElement": { - "modified": "2019-03-23T22:20:56.663Z", - "contributors": [ - "mak213k" - ] - }, - "Web/API/HTMLContentElement/Seletor": { - "modified": "2019-03-23T22:20:59.150Z", - "contributors": [ - "mak213k" - ] - }, - "Web/API/HTMLContentElement/getDistributedNodes": { - "modified": "2019-03-23T22:21:10.713Z", - "contributors": [ - "mak213k" - ] - }, - "Web/API/HTMLDivElement": { - "modified": "2019-03-23T22:50:39.476Z", - "contributors": [ - "oirodolfo", - "belsanpesou" - ] - }, - "Web/API/HTMLElement": { - "modified": "2019-03-23T22:40:10.318Z", - "contributors": [ - "wanderson-webdev", - "fscholz" - ] - }, - "Web/API/HTMLElement/blur": { - "modified": "2020-10-15T22:12:54.970Z", - "contributors": [ - "salgueiroso" - ] - }, - "Web/API/HTMLElement/click": { - "modified": "2019-03-23T22:40:11.186Z", - "contributors": [ - "brunopulis", - "LisandroTSilva" - ] - }, - "Web/API/HTMLElement/contentEditable": { - "modified": "2019-03-23T22:24:22.391Z", - "contributors": [ - "Fernandolrs", - "brunopulis" - ] - }, - "Web/API/HTMLElement/contextMenu": { - "modified": "2020-10-15T22:26:34.894Z", - "contributors": [ - "arthurssfreitas" - ] - }, - "Web/API/HTMLElement/dataset": { - "modified": "2020-10-15T21:46:41.594Z", - "contributors": [ - "lago.aaron", - "Fernandolrs", - "Sipmann", - "emanueloliveira" - ] - }, - "Web/API/HTMLElement/focus": { - "modified": "2019-03-23T22:24:13.859Z", - "contributors": [ - "erikseyti", - "brunopulis" - ] - }, - "Web/API/HTMLElement/lang": { - "modified": "2019-03-23T22:24:27.501Z", - "contributors": [ - "brunopulis" - ] - }, - "Web/API/HTMLElement/offsetHeight": { - "modified": "2019-03-18T20:58:59.560Z", - "contributors": [ - "SphinxKnight", - "kiaratto" - ] - }, - "Web/API/HTMLElement/offsetLeft": { - "modified": "2019-03-18T20:59:09.678Z", - "contributors": [ - "SphinxKnight", - "alinemorelli" - ] - }, - "Web/API/HTMLElement/offsetParent": { - "modified": "2020-10-15T21:46:48.347Z", - "contributors": [ - "SphinxKnight", - "eustabio_junior" - ] - }, - "Web/API/HTMLElement/offsetTop": { - "modified": "2020-10-15T21:49:48.848Z", - "contributors": [ - "SphinxKnight", - "j.bruni", - "alinemorelli" - ] - }, - "Web/API/HTMLElement/offsetWidth": { - "modified": "2020-10-15T21:54:49.481Z", - "contributors": [ - "SphinxKnight", - "gsoldateli" - ] - }, - "Web/API/HTMLInputElement": { - "modified": "2020-08-07T01:52:15.111Z", - "contributors": [ - "VictorRabelo", - "CaitlinWeb" - ] - }, - "Web/API/HTMLInputElement/select": { - "modified": "2019-03-23T22:32:02.717Z", - "contributors": [ - "sirgallifrey" - ] - }, - "Web/API/HTMLInputElement/setSelectionRange": { - "modified": "2019-03-23T22:05:50.440Z", - "contributors": [ - "gulima" - ] - }, - "Web/API/HTMLOptionElement": { - "modified": "2020-10-15T22:22:43.860Z" - }, - "Web/API/HTMLOptionElement/Option": { - "modified": "2019-09-07T19:12:47.492Z", - "contributors": [ - "Rogerio-Viana" - ] - }, - "Web/API/HTMLSelectElement": { - "modified": "2019-03-18T21:38:12.809Z", - "contributors": [ - "Speich" - ] - }, - "Web/API/HTMLSelectElement/checkValidity": { - "modified": "2019-03-18T21:38:22.714Z", - "contributors": [ - "marceloogeda" - ] - }, - "Web/API/HTMLShadowElement": { - "modified": "2020-10-15T21:52:05.842Z", - "contributors": [ - "Sipmann", - "mak213k" - ] - }, - "Web/API/HTMLSpanElement": { - "modified": "2020-10-15T22:22:56.970Z", - "contributors": [ - "CleberL" - ] - }, - "Web/API/History": { - "modified": "2020-10-15T22:11:45.385Z", - "contributors": [ - "duduindo", - "Renancp01" - ] - }, - "Web/API/History_API": { - "modified": "2019-03-18T21:10:42.375Z", - "contributors": [ - "CaioCosta", - "rodgerpaulo", - "william-costa", - "bsunderhus", - "sistematico" - ] - }, - "Web/API/History_API/Exemplo": { - "modified": "2019-03-18T21:40:08.609Z", - "contributors": [ - "oidanieljunior" - ] - }, - "Web/API/IDBCursor": { - "modified": "2019-03-23T22:48:07.804Z", - "contributors": [ - "zerossB" - ] - }, - "Web/API/IDBFactory": { - "modified": "2019-03-23T22:10:18.775Z", - "contributors": [ - "falecomoantonio" - ] - }, - "Web/API/ImageCapture": { - "modified": "2020-10-15T22:28:50.119Z", - "contributors": [ - "LucasRuy" - ] - }, - "Web/API/IndexedDB_API": { - "modified": "2020-05-11T15:56:57.963Z", - "contributors": [ - "nstseek", - "chrisdavidmills", - "MOB-atheist", - "zenithpolar", - "guilhermemar", - "IgorGoncalves", - "cirocosta" - ] - }, - "Web/API/IndexedDB_API/Basic_Concepts_Behind_IndexedDB": { - "modified": "2020-01-13T04:48:43.968Z", - "contributors": [ - "chrisdavidmills", - "wbamberg", - "jppaschoal", - "camilaavilarinho", - "guilhermemar", - "IgorGoncalves" - ] - }, - "Web/API/IndexedDB_API/Usando_IndexedDB": { - "modified": "2020-01-13T04:48:43.522Z", - "contributors": [ - "chrisdavidmills", - "guilhermemar", - "IgorGoncalves", - "gustavo-veiga", - "sheldonled" - ] - }, - "Web/API/KeyboardEvent": { - "modified": "2019-03-18T21:09:09.329Z", - "contributors": [ - "fscholz", - "wbamberg", - "fernandosouza", - "Grohden", - "waglero" - ] - }, - "Web/API/Location": { - "modified": "2020-08-19T00:11:30.219Z", - "contributors": [ - "pabrrs", - "trGalho" - ] - }, - "Web/API/Location/assign": { - "modified": "2019-03-18T21:41:56.186Z", - "contributors": [ - "Rhubenni_Telesco" - ] - }, - "Web/API/Location/reload": { - "modified": "2019-03-23T22:30:11.123Z", - "contributors": [ - "fcard", - "alexrohleder" - ] - }, - "Web/API/Location/search": { - "modified": "2020-10-15T22:29:57.299Z", - "contributors": [ - "AlanCezarAraujo" - ] - }, - "Web/API/MediaDevices": { - "modified": "2019-03-18T21:43:19.059Z", - "contributors": [ - "helitonmartins" - ] - }, - "Web/API/MediaStreamTrack": { - "modified": "2019-03-23T22:53:44.701Z", - "contributors": [ - "lucasolivier" - ] - }, - "Web/API/MessageChannel": { - "modified": "2019-03-18T21:44:58.784Z", - "contributors": [ - "fadonascimento" - ] - }, - "Web/API/MessagePort": { - "modified": "2020-10-15T22:26:27.296Z", - "contributors": [ - "bershanskiy" - ] - }, - "Web/API/MessagePort/postMessage": { - "modified": "2020-10-15T22:26:29.157Z", - "contributors": [ - "jhserodio" - ] - }, - "Web/API/MouseEvent": { - "modified": "2020-09-27T23:19:33.221Z", - "contributors": [ - "marcio1002", - "vapier" - ] - }, - "Web/API/MouseEvent/clientX": { - "modified": "2019-03-23T22:06:38.718Z", - "contributors": [ - "bernardosze" - ] - }, - "Web/API/MouseEvent/clientY": { - "modified": "2020-10-15T22:29:11.740Z", - "contributors": [ - "GuilhermeSND" - ] - }, - "Web/API/MutationObserver": { - "modified": "2020-10-15T21:33:46.490Z", - "contributors": [ - "mateusvelleda", - "alexanmtz", - "diegolw" - ] - }, - "Web/API/Navigation_timing_API": { - "modified": "2019-03-23T22:50:45.488Z", - "contributors": [ - "MarcelMorais", - "Gutem" - ] - }, - "Web/API/Navigator": { - "modified": "2019-03-23T23:01:42.784Z", - "contributors": [ - "wbamberg", - "teoli" - ] - }, - "Web/API/Navigator/battery": { - "modified": "2019-03-23T23:16:59.785Z", - "contributors": [ - "teoli", - "jsx", - "eliezerb" - ] - }, - "Web/API/Navigator/cookieEnabled": { - "modified": "2020-10-15T22:13:23.552Z", - "contributors": [ - "macalha" - ] - }, - "Web/API/Navigator/deviceMemory": { - "modified": "2020-10-15T22:12:37.929Z", - "contributors": [ - "macalha" - ] - }, - "Web/API/Navigator/geolocation": { - "modified": "2020-10-15T21:47:10.975Z", - "contributors": [ - "mateusvelleda", - "michaelycus" - ] - }, - "Web/API/Navigator/getUserMedia": { - "modified": "2019-03-23T23:30:19.364Z", - "contributors": [ - "viktorRock", - "fscholz", - "srsaude" - ] - }, - "Web/API/Navigator/share": { - "modified": "2020-10-15T22:27:50.572Z", - "contributors": [ - "LucasRuy" - ] - }, - "Web/API/NavigatorID": { - "modified": "2019-03-23T23:01:42.494Z", - "contributors": [ - "teoli" - ] - }, - "Web/API/NavigatorID/platform": { - "modified": "2020-10-15T21:27:41.688Z", - "contributors": [ - "GarkGarcia", - "teoli", - "khalid32", - "eliezerb" - ] - }, - "Web/API/NavigatorID/userAgent": { - "modified": "2020-10-15T21:58:19.578Z", - "contributors": [ - "GarkGarcia", - "thedjmarcelo" - ] - }, - "Web/API/NavigatorLanguage": { - "modified": "2019-03-23T22:03:53.998Z", - "contributors": [ - "teoli" - ] - }, - "Web/API/NavigatorLanguage/language": { - "modified": "2019-03-23T22:03:54.652Z", - "contributors": [ - "klzns" - ] - }, - "Web/API/NavigatorOnLine": { - "modified": "2019-03-23T22:02:07.133Z", - "contributors": [ - "marciioluucas", - "chrisdavidmills" - ] - }, - "Web/API/NavigatorOnLine/Online_and_offline_events": { - "modified": "2019-03-23T23:39:13.247Z", - "contributors": [ - "chrisdavidmills", - "claudiareginadasilvacorrea", - "jpalharini" - ] - }, - "Web/API/NavigatorOnLine/onLine": { - "modified": "2020-10-15T22:15:18.142Z", - "contributors": [ - "renatoluna" - ] - }, - "Web/API/NavigatorPlugins": { - "modified": "2020-10-15T22:19:29.947Z", - "contributors": [ - "Fernandolrs" - ] - }, - "Web/API/NavigatorPlugins/javaEnabled": { - "modified": "2020-10-15T22:19:29.661Z", - "contributors": [ - "Fernandolrs" - ] - }, - "Web/API/Node": { - "modified": "2019-03-23T23:30:08.400Z", - "contributors": [ - "marimeireles", - "oirodolfo", - "teoli", - "khalid32", - "srsaude" - ] - }, - "Web/API/Node/Entendendo_o_uso_do_método_AppendChild-javascript": { - "modified": "2019-03-23T22:40:45.924Z", - "contributors": [ - "Josue-Bastos" - ] - }, - "Web/API/Node/appendChild": { - "modified": "2019-03-23T23:22:30.959Z", - "contributors": [ - "teoli", - "khalid32", - "srsaude" - ] - }, - "Web/API/Node/baseURI": { - "modified": "2019-03-23T22:40:41.805Z", - "contributors": [ - "cammarin", - "Josue-Bastos" - ] - }, - "Web/API/Node/childNodes": { - "modified": "2019-03-23T23:07:10.128Z", - "contributors": [ - "teoli", - "fegemo" - ] - }, - "Web/API/Node/cloneNode": { - "modified": "2019-03-23T22:48:59.947Z", - "contributors": [ - "Gutemberg" - ] - }, - "Web/API/Node/contains": { - "modified": "2019-03-23T23:21:21.502Z", - "contributors": [ - "teoli", - "AshfaqHossain", - "carlosbg" - ] - }, - "Web/API/Node/firstChild": { - "modified": "2019-03-23T22:49:01.978Z", - "contributors": [ - "Gutemberg" - ] - }, - "Web/API/Node/innerText": { - "modified": "2019-03-18T21:15:34.228Z", - "contributors": [ - "cammarin" - ] - }, - "Web/API/Node/insertBefore": { - "modified": "2019-03-18T20:54:40.356Z", - "contributors": [ - "greysonf", - "debone", - "teoli", - "khalid32", - "reniesiqueira" - ] - }, - "Web/API/Node/isConnected": { - "modified": "2020-10-15T22:32:18.058Z", - "contributors": [ - "dev-danilosilva" - ] - }, - "Web/API/Node/lastChild": { - "modified": "2019-03-23T22:40:51.317Z", - "contributors": [ - "Gutemberg" - ] - }, - "Web/API/Node/nextSibling": { - "modified": "2019-03-23T23:22:09.728Z", - "contributors": [ - "teoli", - "khalid32", - "reniesiqueira" - ] - }, - "Web/API/Node/parentNode": { - "modified": "2019-03-23T22:40:47.017Z", - "contributors": [ - "michelsouza", - "Gutemberg" - ] - }, - "Web/API/Node/previousSibling": { - "modified": "2019-03-23T23:14:20.558Z", - "contributors": [ - "wbamberg", - "teoli", - "jsx", - "cesarwbr" - ] - }, - "Web/API/Node/removeChild": { - "modified": "2019-03-23T23:30:06.977Z", - "contributors": [ - "teoli", - "khalid32", - "srsaude" - ] - }, - "Web/API/Node/replaceChild": { - "modified": "2019-03-23T23:12:27.414Z", - "contributors": [ - "paulocmoreno", - "teoli", - "khalid32", - "matheuslc" - ] - }, - "Web/API/Node/textContent": { - "modified": "2020-10-15T22:19:54.189Z", - "contributors": [ - "EduardoDaSilva", - "marlonveiga-santos" - ] - }, - "Web/API/NodeFilter": { - "modified": "2019-03-23T22:03:52.772Z", - "contributors": [ - "oirodolfo" - ] - }, - "Web/API/NodeList": { - "modified": "2020-10-15T21:55:05.252Z", - "contributors": [ - "Sipmann", - "caueamaral", - "fernandosavio" - ] - }, - "Web/API/NotificationAction": { - "modified": "2020-10-15T22:22:52.083Z", - "contributors": [ - "jowks" - ] - }, - "Web/API/OfflineAudioContext": { - "modified": "2020-10-15T22:02:59.025Z", - "contributors": [ - "EduardoFerr" - ] - }, - "Web/API/Page_Visibility_API": { - "modified": "2019-03-23T22:34:14.511Z", - "contributors": [ - "renatoluna" - ] - }, - "Web/API/ParentNode": { - "modified": "2019-03-23T22:19:41.961Z", - "contributors": [ - "jpmedley" - ] - }, - "Web/API/ParentNode/childElementCount": { - "modified": "2020-10-15T22:28:04.061Z", - "contributors": [ - "leofalcao10" - ] - }, - "Web/API/ParentNode/children": { - "modified": "2019-03-23T22:19:42.340Z", - "contributors": [ - "rafaelcavalcante" - ] - }, - "Web/API/ParentNode/querySelector": { - "modified": "2020-10-15T22:23:27.840Z", - "contributors": [ - "VictorhMalheiro" - ] - }, - "Web/API/Path2D": { - "modified": "2020-10-15T22:06:13.090Z", - "contributors": [ - "dayvitSiqueira" - ] - }, - "Web/API/Performance": { - "modified": "2020-10-15T21:54:03.274Z", - "contributors": [ - "fscholz", - "jpmedley" - ] - }, - "Web/API/Performance/now": { - "modified": "2019-03-18T20:49:36.800Z", - "contributors": [ - "helton-mori-dev", - "gabrieltobi" - ] - }, - "Web/API/Performance/toJSON": { - "modified": "2020-10-15T21:54:01.565Z", - "contributors": [ - "fscholz", - "gabrieltobi" - ] - }, - "Web/API/PositionOptions": { - "modified": "2019-03-23T22:47:40.708Z", - "contributors": [ - "victorkurauchi" - ] - }, - "Web/API/ProcessingInstruction": { - "modified": "2019-03-18T21:38:06.302Z", - "contributors": [ - "coloringa" - ] - }, - "Web/API/PushManager": { - "modified": "2019-03-18T21:44:59.987Z", - "contributors": [ - "GPrimola", - "M4ttscx" - ] - }, - "Web/API/RTCCertificate": { - "modified": "2020-10-15T22:22:00.681Z", - "contributors": [ - "hsulipe" - ] - }, - "Web/API/RTCDataChannel": { - "modified": "2019-03-23T22:05:58.861Z", - "contributors": [ - "Lavyk" - ] - }, - "Web/API/RTCIceTransport": { - "modified": "2020-10-15T22:22:02.457Z", - "contributors": [ - "hsulipe" - ] - }, - "Web/API/RTCPeerConnection": { - "modified": "2020-10-15T22:18:53.156Z", - "contributors": [ - "Leonardocezar", - "matheuschimelli", - "labforcode" - ] - }, - "Web/API/RTCPeerConnection/connectionState": { - "modified": "2020-10-15T22:25:43.424Z", - "contributors": [ - "Mellogab" - ] - }, - "Web/API/RandomSource": { - "modified": "2019-03-23T22:43:17.216Z", - "contributors": [ - "Hikashii", - "Jeremie" - ] - }, - "Web/API/RandomSource/getRandomValues": { - "modified": "2019-05-25T15:24:30.476Z", - "contributors": [ - "dowgssss", - "Gutem" - ] - }, - "Web/API/Request": { - "modified": "2020-10-15T22:02:39.204Z", - "contributors": [ - "valdeirpsr" - ] - }, - "Web/API/Request/Request": { - "modified": "2020-10-15T22:15:05.741Z", - "contributors": [ - "duduindo", - "fininhors" - ] - }, - "Web/API/Response": { - "modified": "2020-10-15T22:09:39.986Z", - "contributors": [ - "paulo9mv", - "leandroruel", - "jeovazero" - ] - }, - "Web/API/SVGAElement": { - "modified": "2020-10-15T22:03:03.797Z", - "contributors": [ - "Shadowlast14" - ] - }, - "Web/API/SVGAElement/SVGAlement.target": { - "modified": "2019-03-18T21:38:17.281Z", - "contributors": [ - "Shadowlast14" - ] - }, - "Web/API/SVGAnimateTransformElement": { - "modified": "2020-10-16T17:55:44.269Z", - "contributors": [ - "felipepaz" - ] - }, - "Web/API/Seleção": { - "modified": "2020-10-15T22:13:16.385Z", - "contributors": [ - "adrianowead" - ] - }, - "Web/API/Sensor": { - "modified": "2020-10-15T22:32:16.467Z", - "contributors": [ - "jpmedley" - ] - }, - "Web/API/Server-sent_events": { - "modified": "2020-06-16T11:34:37.745Z", - "contributors": [ - "alattalatta" - ] - }, - "Web/API/Server-sent_events/Using_server-sent_events": { - "modified": "2020-10-15T22:30:47.227Z", - "contributors": [ - "LucasPereira" - ] - }, - "Web/API/ServiceWorkerContainer": { - "modified": "2019-03-18T20:53:05.893Z", - "contributors": [ - "Gustavo_Armoa", - "jpmedley" - ] - }, - "Web/API/ServiceWorkerContainer/register": { - "modified": "2019-03-23T22:05:54.667Z", - "contributors": [ - "wallacemaxters" - ] - }, - "Web/API/ServiceWorkerGlobalScope": { - "modified": "2020-10-15T22:18:38.860Z", - "contributors": [ - "fscholz" - ] - }, - "Web/API/ServiceWorkerGlobalScope/clients": { - "modified": "2020-10-15T22:18:38.711Z", - "contributors": [ - "rafaelcavalcante" - ] - }, - "Web/API/Service_Worker_API": { - "modified": "2019-03-23T22:20:45.840Z", - "contributors": [ - "alcidesqueiroz", - "dicarlosdesign" - ] - }, - "Web/API/Service_Worker_API/Using_Service_Workers": { - "modified": "2020-07-29T08:44:07.257Z", - "contributors": [ - "edusantana", - "rfdeoliveira", - "marciocamargo", - "italoportinho", - "Lucasktrindade" - ] - }, - "Web/API/SharedWorker": { - "modified": "2019-03-23T22:10:27.798Z", - "contributors": [ - "chrisdavidmills" - ] - }, - "Web/API/SharedWorker/port": { - "modified": "2019-03-23T22:10:34.513Z", - "contributors": [ - "Schrammel" - ] - }, - "Web/API/SpeechGrammar": { - "modified": "2020-10-15T22:17:17.231Z", - "contributors": [ - "rafaelvanat" - ] - }, - "Web/API/SpeechSynthesis": { - "modified": "2019-03-23T22:02:23.080Z", - "contributors": [ - "_marciojrtorres" - ] - }, - "Web/API/SpeechSynthesisUtterance": { - "modified": "2019-03-23T22:25:09.613Z", - "contributors": [ - "chrisdavidmills" - ] - }, - "Web/API/SpeechSynthesisUtterance/voice": { - "modified": "2019-03-23T22:25:16.059Z", - "contributors": [ - "niltoncsr" - ] - }, - "Web/API/Storage": { - "modified": "2020-10-15T21:38:56.944Z", - "contributors": [ - "Sipmann", - "Auugustocesar", - "andrekutianski", - "Sebastianz" - ] - }, - "Web/API/Storage/clear": { - "modified": "2019-03-23T22:22:06.554Z", - "contributors": [ - "nicolastarzia" - ] - }, - "Web/API/Storage/getItem": { - "modified": "2020-10-15T21:46:36.499Z", - "contributors": [ - "mateusvelleda", - "victormaestri", - "carol-caires" - ] - }, - "Web/API/Storage/key": { - "modified": "2020-10-15T22:22:54.532Z", - "contributors": [ - "andalvalmeida" - ] - }, - "Web/API/Storage/length": { - "modified": "2019-03-18T21:39:13.697Z", - "contributors": [ - "bfabbri" - ] - }, - "Web/API/Storage/removeItem": { - "modified": "2019-03-23T22:26:49.057Z", - "contributors": [ - "eduardogomesv" - ] - }, - "Web/API/Storage/setItem": { - "modified": "2019-03-23T22:47:38.418Z", - "contributors": [ - "larodiel" - ] - }, - "Web/API/StorageManager": { - "modified": "2020-10-15T22:19:33.863Z", - "contributors": [ - "Rondinelly" - ] - }, - "Web/API/Streams_API": { - "modified": "2020-10-15T22:07:15.490Z", - "contributors": [ - "NandoRFS", - "chrisdavidmills" - ] - }, - "Web/API/Streams_API/Concepts": { - "modified": "2019-03-18T21:30:10.010Z", - "contributors": [ - "thiagopelizoni" - ] - }, - "Web/API/SubtleCrypto": { - "modified": "2020-10-15T21:58:59.814Z", - "contributors": [ - "fscholz", - "Hikashii", - "prebytes" - ] - }, - "Web/API/SubtleCrypto/GenerateKey": { - "modified": "2019-03-23T22:02:52.131Z", - "contributors": [ - "Hikashii" - ] - }, - "Web/API/SubtleCrypto/deriveKey": { - "modified": "2019-03-23T22:02:44.403Z", - "contributors": [ - "Hikashii" - ] - }, - "Web/API/SubtleCrypto/importKey": { - "modified": "2019-03-23T22:02:45.337Z", - "contributors": [ - "Hikashii" - ] - }, - "Web/API/URL": { - "modified": "2020-10-15T21:33:01.700Z", - "contributors": [ - "mateusvelleda", - "teoli" - ] - }, - "Web/API/URL/createObjectURl": { - "modified": "2020-10-15T21:23:35.850Z", - "contributors": [ - "fscholz", - "teoli", - "srsaude" - ] - }, - "Web/API/URL/revokeObjectURL": { - "modified": "2019-03-23T22:23:24.178Z", - "contributors": [ - "emmanueldaher" - ] - }, - "Web/API/URL/searchParams": { - "modified": "2020-10-15T22:02:37.369Z", - "contributors": [ - "mateusvelleda", - "marabesi" - ] - }, - "Web/API/URLSearchParams": { - "modified": "2019-03-23T22:18:19.994Z", - "contributors": [ - "marcelobonatto" - ] - }, - "Web/API/URLSearchParams/get": { - "modified": "2019-03-18T21:33:42.386Z", - "contributors": [ - "DanieleCastilho" - ] - }, - "Web/API/URLSearchParams/values": { - "modified": "2019-03-18T21:33:34.299Z", - "contributors": [ - "DanieleCastilho" - ] - }, - "Web/API/ValidityState": { - "modified": "2020-10-15T22:08:46.419Z", - "contributors": [ - "Zavarock" - ] - }, - "Web/API/WebGL_API": { - "modified": "2019-04-05T15:51:08.757Z", - "contributors": [ - "MarceloBRN", - "julio-elipse", - "fscholz", - "teoli", - "fvargaspf@gmail.com" - ] - }, - "Web/API/WebGL_API/Tutorial": { - "modified": "2019-03-23T22:48:58.032Z", - "contributors": [ - "fscholz" - ] - }, - "Web/API/WebGL_API/Tutorial/Adicionando_conteudo_2D_a_um_contexto_WebGL": { - "modified": "2019-03-23T22:43:19.265Z", - "contributors": [ - "Nathipg", - "francopan" - ] - }, - "Web/API/WebGL_API/Tutorial/Getting_started_with_WebGL": { - "modified": "2019-03-23T22:43:23.994Z", - "contributors": [ - "etc_william", - "Nathipg", - "MarceloBRN" - ] - }, - "Web/API/WebRTC_API": { - "modified": "2020-02-27T08:49:05.980Z", - "contributors": [ - "iankressin", - "aledebarba", - "pedro-surf", - "Sheppy" - ] - }, - "Web/API/WebRTC_API/Protocols": { - "modified": "2020-12-04T03:01:14.311Z", - "contributors": [ - "guiseek" - ] - }, - "Web/API/WebRTC_API/Simples_RTCDataChannel_amostra": { - "modified": "2019-03-23T22:09:18.720Z", - "contributors": [ - "fscholz", - "wbamberg", - "Gurigraphics" - ] - }, - "Web/API/WebSocket": { - "modified": "2019-03-23T22:25:02.860Z", - "contributors": [ - "Fernandolrs", - "mak213k", - "mshmeirelles" - ] - }, - "Web/API/WebVR_API": { - "modified": "2019-03-23T22:13:23.567Z", - "contributors": [ - "Fernandolrs", - "kausdev" - ] - }, - "Web/API/WebVR_API/Using_the_WebVR_API": { - "modified": "2020-04-03T23:13:18.030Z", - "contributors": [ - "Cleide724" - ] - }, - "Web/API/Web_Animations_API": { - "modified": "2020-09-26T01:35:21.265Z", - "contributors": [ - "mfuji09" - ] - }, - "Web/API/Web_Animations_API/Usando_a_Web_Animations_API": { - "modified": "2020-09-26T01:35:23.652Z", - "contributors": [ - "rafaelpradella" - ] - }, - "Web/API/Web_Crypto_API": { - "modified": "2019-03-23T22:16:32.658Z", - "contributors": [ - "GPrimola", - "Hikashii", - "cristof" - ] - }, - "Web/API/Web_Storage_API_pt_br": { - "modified": "2019-09-19T15:22:07.557Z", - "contributors": [ - "elenderg", - "wcqueiroz", - "Mathmovic" - ] - }, - "Web/API/Web_Storage_API_pt_br/Using_the_Web_Storage_API": { - "modified": "2019-03-18T21:45:09.650Z", - "contributors": [ - "liddack", - "nilocoelhojunior" - ] - }, - "Web/API/Web_Workers_API": { - "modified": "2019-04-07T16:56:48.451Z", - "contributors": [ - "MatLinkM", - "leonardosnt", - "jika", - "devmessias" - ] - }, - "Web/API/Window": { - "modified": "2020-07-28T17:31:29.548Z", - "contributors": [ - "maleskena", - "vinibudd", - "naotenhologin", - "danielferreira.developer", - "haskellcamargo", - "teoli", - "panaggio" - ] - }, - "Web/API/Window/URL": { - "modified": "2019-03-23T22:04:44.414Z", - "contributors": [ - "jika" - ] - }, - "Web/API/Window/Window.localStorage": { - "modified": "2019-03-18T21:09:45.741Z", - "contributors": [ - "yandiro", - "wwwjsw", - "jjmars" - ] - }, - "Web/API/Window/alert": { - "modified": "2020-03-30T12:44:24.443Z", - "contributors": [ - "raulnunesodre", - "teoli", - "alexandrem" - ] - }, - "Web/API/Window/applicationCache": { - "modified": "2019-03-23T22:51:36.521Z", - "contributors": [ - "haskellcamargo" - ] - }, - "Web/API/Window/closed": { - "modified": "2019-03-18T20:58:51.070Z", - "contributors": [ - "SphinxKnight", - "haskellcamargo" - ] - }, - "Web/API/Window/confirm": { - "modified": "2019-03-23T22:53:06.274Z", - "contributors": [ - "AlyoshaS", - "marcoaraujojunior", - "fabreu" - ] - }, - "Web/API/Window/crypto": { - "modified": "2019-03-23T22:12:19.817Z", - "contributors": [ - "Hikashii", - "AlexandreBarros" - ] - }, - "Web/API/Window/document": { - "modified": "2019-03-23T22:49:44.918Z", - "contributors": [ - "diogobenica", - "LucasRamos" - ] - }, - "Web/API/Window/event": { - "modified": "2019-03-23T22:34:58.265Z", - "contributors": [ - "macalha" - ] - }, - "Web/API/Window/fullScreen": { - "modified": "2019-03-23T22:50:57.657Z", - "contributors": [ - "macalha" - ] - }, - "Web/API/Window/getSelection": { - "modified": "2019-03-23T22:22:20.343Z", - "contributors": [ - "pedroqueiroz94", - "fernandosouza" - ] - }, - "Web/API/Window/history": { - "modified": "2019-03-23T22:21:53.007Z", - "contributors": [ - "Drycoder027" - ] - }, - "Web/API/Window/innerHeight": { - "modified": "2019-03-23T22:07:12.963Z", - "contributors": [ - "thedjmarcelo" - ] - }, - "Web/API/Window/length": { - "modified": "2019-03-23T22:45:02.985Z", - "contributors": [ - "diogobenica" - ] - }, - "Web/API/Window/location": { - "modified": "2019-03-23T22:44:54.419Z", - "contributors": [ - "AntLouiz", - "brunoeduardo" - ] - }, - "Web/API/Window/matchMedia": { - "modified": "2019-03-23T22:25:52.785Z", - "contributors": [ - "MarcosNakamine" - ] - }, - "Web/API/Window/navigator": { - "modified": "2019-03-23T23:16:57.470Z", - "contributors": [ - "teoli", - "eliezerb" - ] - }, - "Web/API/Window/ondevicelight": { - "modified": "2019-03-23T22:08:54.681Z", - "contributors": [ - "rener_bz" - ] - }, - "Web/API/Window/onscroll": { - "modified": "2019-03-23T23:31:45.467Z", - "contributors": [ - "teoli", - "khalid32", - "Leeehandro" - ] - }, - "Web/API/Window/openDialog": { - "modified": "2019-03-23T23:04:23.875Z", - "contributors": [ - "saulodecarlo", - "teoli", - "perrucho" - ] - }, - "Web/API/Window/performance": { - "modified": "2019-03-23T22:44:28.136Z", - "contributors": [ - "augustoclaro" - ] - }, - "Web/API/Window/popstate_event": { - "modified": "2019-04-26T08:34:23.645Z", - "contributors": [ - "chrisdavidmills", - "irenesmith", - "RQuadros", - "fscholz", - "brunoeduardo" - ] - }, - "Web/API/Window/print": { - "modified": "2020-10-15T21:47:11.931Z", - "contributors": [ - "alvarocjunq", - "macalha", - "Auugustocesar" - ] - }, - "Web/API/Window/prompt": { - "modified": "2019-03-23T22:57:04.834Z", - "contributors": [ - "mahenrique", - "fnsc.luis" - ] - }, - "Web/API/Window/requestAnimationFrame": { - "modified": "2020-10-15T21:50:51.013Z", - "contributors": [ - "mateusvelleda", - "NoiSyBoY", - "hiperesp", - "sambrmg", - "calaca" - ] - }, - "Web/API/Window/requestIdleCallback": { - "modified": "2020-11-03T11:18:19.041Z", - "contributors": [ - "luan0ap" - ] - }, - "Web/API/Window/resize_event": { - "modified": "2019-04-30T14:03:51.758Z", - "contributors": [ - "wbamberg", - "chrisdavidmills", - "irenesmith", - "sergio_orugian" - ] - }, - "Web/API/Window/scroll": { - "modified": "2019-03-23T22:13:21.030Z", - "contributors": [ - "diego-c" - ] - }, - "Web/API/Window/scrollBy": { - "modified": "2019-03-18T21:42:36.427Z", - "contributors": [ - "TecladistaProd" - ] - }, - "Web/API/Window/scrollByPages": { - "modified": "2019-03-23T22:23:22.523Z", - "contributors": [ - "LucasRuy" - ] - }, - "Web/API/Window/scrollTo": { - "modified": "2019-03-23T22:45:04.416Z", - "contributors": [ - "diogobenica" - ] - }, - "Web/API/Window/scrollY": { - "modified": "2020-10-15T21:48:53.869Z", - "contributors": [ - "mateusvelleda", - "Jerffersonferreira" - ] - }, - "Web/API/Window/sessionStorage": { - "modified": "2019-08-02T11:53:58.107Z", - "contributors": [ - "leila", - "haskellcamargo", - "PTLozano", - "Fulanodigital" - ] - }, - "Web/API/Window/setCursor": { - "modified": "2019-03-23T22:50:55.979Z", - "contributors": [ - "macalha" - ] - }, - "Web/API/Window/setImmediate": { - "modified": "2019-03-23T22:04:49.012Z", - "contributors": [ - "jika" - ] - }, - "Web/API/WindowBase64": { - "modified": "2019-03-23T22:33:40.909Z", - "contributors": [ - "teoli" - ] - }, - "Web/API/WindowBase64/atob": { - "modified": "2020-10-15T21:46:04.009Z", - "contributors": [ - "mateusvelleda", - "joaoricardo_rm" - ] - }, - "Web/API/WindowEventHandlers": { - "modified": "2020-03-01T23:25:36.916Z", - "contributors": [ - "kudnx", - "teoli" - ] - }, - "Web/API/WindowEventHandlers/onhashchange": { - "modified": "2019-03-23T22:56:05.373Z", - "contributors": [ - "cleydsonjr", - "abensur" - ] - }, - "Web/API/WindowEventHandlers/onpopstate": { - "modified": "2019-03-23T22:46:07.205Z", - "contributors": [ - "brunoeduardo" - ] - }, - "Web/API/WindowEventHandlers/onstorage": { - "modified": "2019-03-23T22:03:39.969Z", - "contributors": [ - "GPrimola", - "gustavoverasmorais" - ] - }, - "Web/API/WindowOrWorkerGlobalScope": { - "modified": "2019-03-23T22:06:16.824Z", - "contributors": [ - "angelorubin", - "Bzbarsky" - ] - }, - "Web/API/WindowOrWorkerGlobalScope/fetch": { - "modified": "2019-03-23T22:06:21.567Z", - "contributors": [ - "dowgssss" - ] - }, - "Web/API/WindowOrWorkerGlobalScope/setInterval": { - "modified": "2020-10-15T22:16:56.864Z", - "contributors": [ - "luan0ap" - ] - }, - "Web/API/WindowTimers": { - "modified": "2019-03-23T23:01:45.978Z", - "contributors": [ - "teoli" - ] - }, - "Web/API/WindowTimers/clearTimeout": { - "modified": "2020-10-15T21:31:54.685Z", - "contributors": [ - "GarkGarcia", - "teoli", - "Willkuns" - ] - }, - "Web/API/Worker": { - "modified": "2020-10-28T22:21:09.210Z", - "contributors": [ - "oliveiracaue", - "filipemarins", - "gxovano" - ] - }, - "Web/API/XMLDocument": { - "modified": "2020-10-15T22:12:36.526Z", - "contributors": [ - "ExE-Boss", - "msilvaj" - ] - }, - "Web/API/XMLDocument/async": { - "modified": "2019-04-24T21:10:36.508Z", - "contributors": [ - "ExE-Boss", - "edurodriguesdias" - ] - }, - "Web/API/XMLHttpRequest": { - "modified": "2019-05-02T20:01:13.466Z", - "contributors": [ - "wbamberg", - "anhaabaete", - "halkliff", - "brunoczim", - "andrekutianski", - "DaniloDev", - "wdoering", - "rogeriomoraessp", - "teoli", - "fusionchess" - ] - }, - "Web/API/XMLHttpRequest/Requisicoes_sincronas_e_assincronas": { - "modified": "2019-03-18T20:53:32.225Z", - "contributors": [ - "helton-mori-dev", - "Laercio89", - "erickfaraujo", - "filipecalasans", - "melostbr" - ] - }, - "Web/API/XMLHttpRequest/Usando_XMLHttpRequest": { - "modified": "2019-03-23T23:31:13.941Z", - "contributors": [ - "JosOe", - "yuhzador", - "glaudiston", - "flaviomicheletti", - "RodrigoMarques", - "vitornogueira", - "teoli", - "MarcoBruno", - "vagnerleitte" - ] - }, - "Web/API/XMLHttpRequest/abort": { - "modified": "2019-03-23T22:16:54.432Z", - "contributors": [ - "gustavobeavis" - ] - }, - "Web/API/XMLHttpRequest/onreadystatechange": { - "modified": "2019-03-23T22:16:58.340Z", - "contributors": [ - "brunoczim", - "gustavobeavis" - ] - }, - "Web/API/XMLHttpRequest/open": { - "modified": "2020-10-15T22:03:41.298Z", - "contributors": [ - "halkliff", - "mauromattos00" - ] - }, - "Web/API/XMLHttpRequest/readyState": { - "modified": "2019-05-15T10:26:01.821Z", - "contributors": [ - "eduardovivi", - "gustavobeavis" - ] - }, - "Web/API/XMLHttpRequest/send": { - "modified": "2020-10-15T22:05:47.894Z", - "contributors": [ - "duduindo", - "EduardoFerr" - ] - }, - "Web/API/XMLHttpRequest/setRequestHeader": { - "modified": "2020-10-15T22:18:51.386Z", - "contributors": [ - "devlhm" - ] - }, - "Web/API/XMLHttpRequest/timeout": { - "modified": "2019-03-23T22:27:06.677Z", - "contributors": [ - "trestini" - ] - }, - "Web/API/notificacoes": { - "modified": "2020-11-27T03:23:53.561Z", - "contributors": [ - "SphinxKnight", - "Lukazovic", - "maatheusgouveia", - "HugoRibeiro", - "AlvaroAlves", - "teoli", - "salomaosnff" - ] - }, - "Web/Accessibility/ARIA": { - "modified": "2020-05-04T12:03:49.162Z", - "contributors": [ - "BeatrizCavallieri", - "rener_bz", - "Aschlla", - "meche", - "chrisdavidmills" - ] - }, - "Web/Accessibility/ARIA/ARIA_Guides": { - "modified": "2019-03-23T22:05:06.841Z", - "contributors": [ - "mak213k" - ] - }, - "Web/Accessibility/ARIA/ARIA_Techniques": { - "modified": "2020-08-05T20:31:43.497Z", - "contributors": [ - "alisson-suzigan", - "Sheppy" - ] - }, - "Web/Accessibility/ARIA/ARIA_Techniques/Usando_o_atributo_aria-labelledby": { - "modified": "2019-03-23T23:02:11.347Z", - "contributors": [ - "eduardojmatos" - ] - }, - "Web/Accessibility/ARIA/ARIA_Techniques/Usando_o_atributo_aria-required": { - "modified": "2019-03-18T21:46:23.148Z", - "contributors": [ - "ivanoliveira" - ] - }, - "Web/Accessibility/ARIA/ARIA_Techniques/Usando_o_slider_role": { - "modified": "2019-03-23T22:16:26.114Z", - "contributors": [ - "rener_bz" - ] - }, - "Web/Accessibility/ARIA/ARIA_Techniques/Using_the_aria-describedby_attribute": { - "modified": "2020-01-24T10:16:14.859Z", - "contributors": [ - "BiancaPereira" - ] - }, - "Web/Accessibility/ARIA/ARIA_Techniques/Using_the_aria-label_attribute": { - "modified": "2019-03-23T22:43:08.260Z", - "contributors": [ - "duduindo", - "NeoOrion" - ] - }, - "Web/Accessibility/ARIA/ARIA_Techniques/Utilizando_o_alert_role": { - "modified": "2019-03-23T22:50:52.511Z", - "contributors": [ - "Aschlla", - "iCynthia" - ] - }, - "Web/Accessibility/ARIA/ARIA_Test_Cases": { - "modified": "2019-03-23T23:03:31.037Z", - "contributors": [ - "hannahlere" - ] - }, - "Web/Accessibility/ARIA/Guia_para_implementar_o_leitor_de_tela_ARIA": { - "modified": "2019-03-23T22:29:38.626Z", - "contributors": [ - "caio.rrs" - ] - }, - "Web/Accessibility/ARIA/Roles": { - "modified": "2020-09-18T19:22:52.644Z", - "contributors": [ - "Painatalman", - "rafaelcavalcante" - ] - }, - "Web/Accessibility/ARIA/Web_applications_and_ARIA_FAQ": { - "modified": "2019-03-23T22:27:11.984Z", - "contributors": [ - "Aschlla" - ] - }, - "Web/Accessibility/ARIA/forms": { - "modified": "2019-03-23T22:29:43.271Z", - "contributors": [ - "Aschlla", - "caio.rrs" - ] - }, - "Web/Accessibility/ARIA/forms/Dicas_básicas_de_form": { - "modified": "2019-03-23T22:29:41.083Z", - "contributors": [ - "rener_bz", - "Fernandolrs", - "caio.rrs" - ] - }, - "Web/Accessibility/ARIA/forms/Multipart_labels": { - "modified": "2019-03-23T22:27:34.088Z", - "contributors": [ - "Aschlla" - ] - }, - "Web/Accessibility/ARIA/forms/alerts": { - "modified": "2019-09-09T08:04:08.002Z", - "contributors": [ - "brunopulis" - ] - }, - "Web/Accessibility/ARIA/widgets": { - "modified": "2019-01-16T23:07:41.279Z", - "contributors": [ - "julianosilvaa" - ] - }, - "Web/Accessibility/ARIA/widgets/Visão_geral": { - "modified": "2019-03-23T22:29:34.759Z", - "contributors": [ - "Aschlla", - "caio.rrs" - ] - }, - "Web/Acessibilidade": { - "modified": "2019-09-09T14:18:55.700Z", - "contributors": [ - "SphinxKnight", - "julio-elipse", - "marciioluucas", - "Aschlla", - "takahan", - "IanRamosC", - "rodrigopadula" - ] - }, - "Web/Acessibilidade/Accessibilidade_para_plataforma_movel": { - "modified": "2019-03-18T21:15:58.279Z", - "contributors": [ - "nathaliabruno", - "takahan" - ] - }, - "Web/Acessibilidade/An_overview_of_accessible_web_applications_and_widgets": { - "modified": "2019-03-23T22:27:46.873Z", - "contributors": [ - "Aschlla" - ] - }, - "Web/Acessibilidade/Desenvolvimento_Web": { - "modified": "2019-03-23T22:45:20.334Z", - "contributors": [ - "Aschlla", - "takahan" - ] - }, - "Web/Acessibilidade/Entendendo_WCAG": { - "modified": "2019-06-04T11:18:03.017Z", - "contributors": [ - "Rondinelly" - ] - }, - "Web/Acessibilidade/Entendendo_WCAG/Keyboard": { - "modified": "2020-05-04T20:14:49.956Z", - "contributors": [ - "viviccamargo88" - ] - }, - "Web/Acessibilidade/Problemas_com_JAWS_no_Firefox": { - "modified": "2019-03-23T22:45:26.552Z", - "contributors": [ - "takahan" - ] - }, - "Web/CSS": { - "modified": "2019-12-23T19:24:02.129Z", - "contributors": [ - "euvanribeiro", - "SphinxKnight", - "dekxside", - "julio-elipse", - "phenriqueleao", - "GPrimola", - "arthur2323", - "rafaelcavalcante", - "DiegoBRodrigues", - "fcard", - "KikenCris", - "teoli", - "MatCAlv", - "rodrigopadula", - "Estevaosoberano", - "angelorubin", - "fvargaspf@gmail.com", - "gabrielima" - ] - }, - "Web/CSS/--*": { - "modified": "2019-03-23T22:04:16.687Z", - "contributors": [ - "filipetorres" - ] - }, - "Web/CSS/-moz-box-ordinal-group": { - "modified": "2019-03-18T21:20:02.652Z", - "contributors": [ - "dekxside" - ] - }, - "Web/CSS/-moz-cell": { - "modified": "2019-03-18T21:15:19.786Z", - "contributors": [ - "dekxside" - ] - }, - "Web/CSS/-moz-context-properties": { - "modified": "2020-10-15T22:12:51.330Z", - "contributors": [ - "dekxside" - ] - }, - "Web/CSS/-webkit-overflow-scrolling": { - "modified": "2019-03-23T22:49:05.514Z", - "contributors": [ - "teoli", - "otaviogui", - "rafaelcavalcante", - "fcard", - "alexanmtz" - ] - }, - "Web/CSS/-webkit-text-security": { - "modified": "2020-07-18T11:21:00.057Z", - "contributors": [ - "alexalannunes" - ] - }, - "Web/CSS/::after": { - "modified": "2020-05-04T13:44:31.713Z", - "contributors": [ - "chrisdavidmills", - "KadirTopal", - "flunardelli", - "filipetorres", - "MarcosFerrao" - ] - }, - "Web/CSS/::backdrop": { - "modified": "2019-03-23T22:31:06.861Z", - "contributors": [ - "tfvictorino" - ] - }, - "Web/CSS/::before": { - "modified": "2020-02-14T13:16:11.838Z", - "contributors": [ - "melissatvs", - "TecladistaProd", - "marcioleandro" - ] - }, - "Web/CSS/::first-letter": { - "modified": "2020-07-28T16:37:37.904Z", - "contributors": [ - "anhaabaete", - "isckosta" - ] - }, - "Web/CSS/::first-line": { - "modified": "2020-10-15T22:32:28.103Z", - "contributors": [ - "Camila-Isabela" - ] - }, - "Web/CSS/::selection": { - "modified": "2020-10-15T22:30:47.166Z", - "contributors": [ - "euwilliamgoncalves" - ] - }, - "Web/CSS/:active": { - "modified": "2019-08-30T22:31:02.665Z", - "contributors": [ - "MarsA_", - "duduindo", - "Arlon", - "SKO" - ] - }, - "Web/CSS/:blank": { - "modified": "2020-10-15T22:17:45.679Z", - "contributors": [ - "charlesjamil" - ] - }, - "Web/CSS/:checked": { - "modified": "2019-10-11T18:34:15.162Z", - "contributors": [ - "escattone", - "teoli", - "brunoeduardo" - ] - }, - "Web/CSS/:disabled": { - "modified": "2020-10-15T22:16:22.245Z", - "contributors": [ - "Arlon" - ] - }, - "Web/CSS/:empty": { - "modified": "2020-10-15T22:06:17.744Z", - "contributors": [ - "Arlon", - "liddack" - ] - }, - "Web/CSS/:enabled": { - "modified": "2020-10-15T22:16:22.794Z", - "contributors": [ - "Arlon" - ] - }, - "Web/CSS/:first-child": { - "modified": "2019-03-23T23:02:20.033Z", - "contributors": [ - "romulojales" - ] - }, - "Web/CSS/:first-of-type": { - "modified": "2019-03-23T23:05:09.903Z", - "contributors": [ - "MarcosNakamine", - "dbiazioli" - ] - }, - "Web/CSS/:focus": { - "modified": "2020-06-28T21:30:07.756Z", - "contributors": [ - "Rovaron", - "LeoRiether", - "tfvictorino" - ] - }, - "Web/CSS/:focus-within": { - "modified": "2020-10-15T22:14:20.305Z", - "contributors": [ - "leandroruel" - ] - }, - "Web/CSS/:fullscreen": { - "modified": "2020-10-15T22:32:42.198Z", - "contributors": [ - "Slandrade" - ] - }, - "Web/CSS/:hover": { - "modified": "2019-03-23T22:52:37.038Z", - "contributors": [ - "tfvictorino", - "brunoeduardo" - ] - }, - "Web/CSS/:invalid": { - "modified": "2020-10-15T21:58:33.546Z", - "contributors": [ - "fscholz", - "valdeirpsr", - "dulcetti" - ] - }, - "Web/CSS/:last-child": { - "modified": "2019-03-23T22:53:17.390Z", - "contributors": [ - "brunoeduardo" - ] - }, - "Web/CSS/:last-of-type": { - "modified": "2019-03-23T22:36:29.640Z", - "contributors": [ - "mnoronhas" - ] - }, - "Web/CSS/:link": { - "modified": "2019-03-23T23:02:10.016Z", - "contributors": [ - "zamariolajr", - "juanopegoretti" - ] - }, - "Web/CSS/:not": { - "modified": "2020-10-15T21:43:20.480Z", - "contributors": [ - "mateusvelleda", - "fcard", - "ribeiroevandro" - ] - }, - "Web/CSS/:nth-child": { - "modified": "2020-10-15T21:47:55.336Z", - "contributors": [ - "liddack", - "welitonderesende", - "ricardoferreirades", - "cynthiapereira", - "alexfqc" - ] - }, - "Web/CSS/:nth-last-child": { - "modified": "2019-04-23T11:30:59.891Z", - "contributors": [ - "larimaza" - ] - }, - "Web/CSS/:nth-of-type": { - "modified": "2019-03-23T22:01:39.698Z", - "contributors": [ - "evandrosevergnini" - ] - }, - "Web/CSS/:only-child": { - "modified": "2019-03-18T21:46:51.835Z", - "contributors": [ - "larimaza" - ] - }, - "Web/CSS/:only-of-type": { - "modified": "2020-03-18T12:33:14.783Z", - "contributors": [ - "eziotristao", - "guylhermetabosa" - ] - }, - "Web/CSS/:optional": { - "modified": "2020-10-15T22:12:29.409Z", - "contributors": [ - "Arlon", - "filipe-machado" - ] - }, - "Web/CSS/:out-of-range": { - "modified": "2020-10-15T22:28:44.918Z", - "contributors": [ - "JeffersonCAMarinho" - ] - }, - "Web/CSS/:read-write": { - "modified": "2020-10-15T22:31:33.681Z", - "contributors": [ - "ooVictorFranco" - ] - }, - "Web/CSS/:required": { - "modified": "2020-10-15T22:12:28.337Z", - "contributors": [ - "filipe-machado" - ] - }, - "Web/CSS/:root": { - "modified": "2020-07-03T20:00:54.694Z", - "contributors": [ - "gstfnsk", - "saspnet", - "rafaelnery", - "lucasaugustin" - ] - }, - "Web/CSS/:target": { - "modified": "2020-10-15T22:32:25.651Z", - "contributors": [ - "joaocdfarias" - ] - }, - "Web/CSS/:valid": { - "modified": "2020-10-15T22:02:35.011Z", - "contributors": [ - "valdeirpsr" - ] - }, - "Web/CSS/:visited": { - "modified": "2020-10-15T22:11:21.146Z", - "contributors": [ - "duduindo", - "UnrealLion" - ] - }, - "Web/CSS/@charset": { - "modified": "2019-03-23T23:00:24.432Z", - "contributors": [ - "Guillaume-Heras", - "fscholz", - "lucascaprio" - ] - }, - "Web/CSS/@font-face": { - "modified": "2020-10-15T22:19:20.814Z", - "contributors": [ - "fininhors", - "jorgeclesio" - ] - }, - "Web/CSS/@import": { - "modified": "2019-03-23T22:35:28.440Z", - "contributors": [ - "uzielweb", - "deyvid0123", - "philippesilva" - ] - }, - "Web/CSS/@keyframes": { - "modified": "2019-03-23T22:05:43.167Z", - "contributors": [ - "ganovais" - ] - }, - "Web/CSS/@media": { - "modified": "2020-05-17T15:47:13.849Z", - "contributors": [ - "filipegutemberg", - "kkkasio", - "chrisdavidmills" - ] - }, - "Web/CSS/@media/aspect-ratio": { - "modified": "2020-10-15T22:26:11.457Z", - "contributors": [ - "marlonveiga-santos" - ] - }, - "Web/CSS/@media/display-mode": { - "modified": "2019-03-23T22:07:00.849Z", - "contributors": [ - "GPrimola", - "Fernandolrs", - "deusmar" - ] - }, - "Web/CSS/@media/prefers-color-scheme": { - "modified": "2020-10-15T22:28:45.846Z", - "contributors": [ - "ftonato" - ] - }, - "Web/CSS/@page": { - "modified": "2019-03-23T23:33:46.393Z", - "contributors": [ - "Sebastianz", - "Prinz_Rana", - "fscholz", - "teoli", - "Estevaosoberano" - ] - }, - "Web/CSS/At-rule": { - "modified": "2019-03-23T23:39:11.306Z", - "contributors": [ - "teoli", - "fernando", - "rodrigopadula" - ] - }, - "Web/CSS/CSS_Animations": { - "modified": "2019-03-23T22:43:49.326Z", - "contributors": [ - "teoli" - ] - }, - "Web/CSS/CSS_Animations/Detecting_CSS_animation_support": { - "modified": "2019-03-18T21:31:28.635Z", - "contributors": [ - "wbamberg", - "eyglys" - ] - }, - "Web/CSS/CSS_Animations/Tips": { - "modified": "2019-03-23T22:11:17.827Z", - "contributors": [ - "dime2lo" - ] - }, - "Web/CSS/CSS_Animations/Usando_animações_CSS": { - "modified": "2019-03-23T23:39:07.702Z", - "contributors": [ - "gabrielclaudino", - "Fernandolrs", - "dime2lo", - "cris-luz-07", - "SphinxKnight", - "teoli", - "gustavoaraujo", - "cauecidade", - "francisco.hansen" - ] - }, - "Web/CSS/CSS_Background_and_Borders": { - "modified": "2019-03-23T22:44:11.690Z", - "contributors": [ - "teoli" - ] - }, - "Web/CSS/CSS_Background_and_Borders/Using_CSS_multiple_backgrounds": { - "modified": "2019-03-23T23:39:08.214Z", - "contributors": [ - "teoli", - "Aleuck" - ] - }, - "Web/CSS/CSS_Basic_User_Interface": { - "modified": "2019-03-18T20:54:10.559Z", - "contributors": [ - "Rondinelly" - ] - }, - "Web/CSS/CSS_Box_Model": { - "modified": "2020-05-08T21:54:24.656Z", - "contributors": [ - "ZurcLeo", - "Sebastianz" - ] - }, - "Web/CSS/CSS_Box_Model/margin_collapsing": { - "modified": "2019-03-23T22:09:32.434Z", - "contributors": [ - "marcosdourado", - "Fernandolrs" - ] - }, - "Web/CSS/CSS_Colors/seletor_de_cores": { - "modified": "2020-07-01T01:27:34.385Z", - "contributors": [ - "gstfnsk", - "Andrya", - "SphinxKnight", - "gpaschoal", - "wcqueiroz", - "cbosco" - ] - }, - "Web/CSS/CSS_Columns": { - "modified": "2019-03-23T22:43:56.221Z", - "contributors": [ - "Sebastianz" - ] - }, - "Web/CSS/CSS_Display": { - "modified": "2020-10-15T22:22:39.686Z", - "contributors": [ - "brasmon8351" - ] - }, - "Web/CSS/CSS_Flexible_Box_Layout": { - "modified": "2019-03-23T22:39:02.047Z", - "contributors": [ - "wwwjsw" - ] - }, - "Web/CSS/CSS_Flexible_Box_Layout/Aligning_Items_in_a_Flex_Container": { - "modified": "2020-05-30T17:57:20.170Z", - "contributors": [ - "louisberns", - "lucas_severo", - "RobsonMariana" - ] - }, - "Web/CSS/CSS_Flexible_Box_Layout/Conceitos_Basicos_do_Flexbox": { - "modified": "2020-04-13T01:15:45.668Z", - "contributors": [ - "carlosaffrc", - "SONSERVICE", - "davieduardo94", - "colares" - ] - }, - "Web/CSS/CSS_Flexible_Box_Layout/Ordering_Flex_Items": { - "modified": "2020-06-16T16:39:10.201Z", - "contributors": [ - "MarcosNakamine" - ] - }, - "Web/CSS/CSS_Flexible_Box_Layout/Typical_Use_Cases_of_Flexbox": { - "modified": "2020-11-08T18:33:11.137Z", - "contributors": [ - "Eduardo-Santos" - ] - }, - "Web/CSS/CSS_Grid_Layout": { - "modified": "2020-11-17T10:35:18.965Z", - "contributors": [ - "leandro2", - "Camila-Isabela", - "btd1337", - "alessandroHenrique", - "davioliveiira", - "Maujor" - ] - }, - "Web/CSS/CSS_Grid_Layout/Basic_Concepts_of_Grid_Layout": { - "modified": "2019-10-10T16:31:58.386Z", - "contributors": [ - "petrikuzman", - "EdilsonSilva", - "felipecesr", - "marcosdourado", - "salomes", - "cslaviero", - "Nichtdeutsch", - "hernanimattos", - "Wanderleymuniz", - "magnonp", - "MatheusNtg", - "simoneas02", - "thiago-hs", - "FernandaBernardo", - "guigrecco", - "Maujor" - ] - }, - "Web/CSS/CSS_Grid_Layout/Relationship_of_Grid_Layout": { - "modified": "2019-03-18T21:30:25.562Z", - "contributors": [ - "lzerror" - ] - }, - "Web/CSS/CSS_Images": { - "modified": "2019-03-18T21:39:59.884Z", - "contributors": [ - "mfluehr" - ] - }, - "Web/CSS/CSS_Images/Implementando_sprites_de_imagens_em_CSS": { - "modified": "2019-03-18T21:40:05.241Z", - "contributors": [ - "williamxavierdecastro" - ] - }, - "Web/CSS/CSS_Lists_and_Counters": { - "modified": "2019-03-23T22:45:37.305Z", - "contributors": [ - "teoli" - ] - }, - "Web/CSS/CSS_Lists_and_Counters/Using_CSS_counters": { - "modified": "2020-08-20T10:01:26.706Z", - "contributors": [ - "felipecesr", - "cris-luz-07", - "jorgeclesio" - ] - }, - "Web/CSS/CSS_Positioning": { - "modified": "2019-07-23T07:58:20.044Z", - "contributors": [ - "SphinxKnight", - "e-laura", - "davidhbrown" - ] - }, - "Web/CSS/CSS_Reference": { - "modified": "2019-09-24T18:20:32.922Z", - "contributors": [ - "duduindo", - "julio-elipse", - "fernahh", - "teoli", - "ethertank", - "rodrigopadula" - ] - }, - "Web/CSS/CSS_Tipos": { - "modified": "2019-03-18T21:41:31.457Z", - "contributors": [ - "brunoeduardo" - ] - }, - "Web/CSS/CSS_Transforms": { - "modified": "2019-03-23T22:44:44.279Z", - "contributors": [ - "Sebastianz", - "jorgeclesio" - ] - }, - "Web/CSS/CSS_Transforms/Using_CSS_transforms": { - "modified": "2019-03-23T23:39:05.696Z", - "contributors": [ - "luketevl", - "fscholz", - "jorgeclesio", - "francineemilia" - ] - }, - "Web/CSS/CSS_Transitions": { - "modified": "2019-05-23T03:24:59.191Z", - "contributors": [ - "SphinxKnight", - "phyominoo" - ] - }, - "Web/CSS/CSS_Transitions/Using_CSS_transitions": { - "modified": "2020-02-24T11:14:13.720Z", - "contributors": [ - "EdeiltonSO", - "Clecio013" - ] - }, - "Web/CSS/Class_selectors": { - "modified": "2020-11-20T21:23:14.555Z", - "contributors": [ - "hellofanny", - "felipeteixeirams" - ] - }, - "Web/CSS/Comentário": { - "modified": "2019-03-23T22:09:23.562Z", - "contributors": [ - "Fernandolrs" - ] - }, - "Web/CSS/Descendant_combinator": { - "modified": "2020-10-15T22:27:46.661Z", - "contributors": [ - "maxsixth" - ] - }, - "Web/CSS/Elemento_substituido": { - "modified": "2019-03-23T22:09:21.528Z", - "contributors": [ - "Fernandolrs" - ] - }, - "Web/CSS/General_sibling_combinator": { - "modified": "2019-03-23T22:12:07.654Z", - "contributors": [ - "ExE-Boss", - "dineiar", - "interaminense" - ] - }, - "Web/CSS/Getting_Started": { - "modified": "2019-03-23T23:39:06.753Z", - "contributors": [ - "julio-elipse", - "agathasilva28", - "Hudson_Lima", - "teoli", - "ethertank", - "netfuzzer55", - "eduardocastro" - ] - }, - "Web/CSS/Getting_Started/Cascading_and_inheritance": { - "modified": "2019-03-23T22:55:03.103Z", - "contributors": [ - "agathasilva28", - "RafaelRNunes", - "Gregory", - "dhaack" - ] - }, - "Web/CSS/Getting_Started/Como_CSS_funciona": { - "modified": "2019-03-23T22:58:47.568Z", - "contributors": [ - "RafaelRNunes", - "Gregory", - "Hudson_Lima" - ] - }, - "Web/CSS/Getting_Started/JavaScript": { - "modified": "2019-03-23T23:28:40.266Z", - "contributors": [ - "teoli", - "nah_luquiari" - ] - }, - "Web/CSS/Getting_Started/Lists": { - "modified": "2019-03-23T22:45:33.735Z", - "contributors": [ - "Gregory", - "teoli", - "jorgeclesio" - ] - }, - "Web/CSS/Getting_Started/Oque_é_CSS": { - "modified": "2019-03-23T23:29:17.129Z", - "contributors": [ - "agathasilva28", - "rogeralbinoi", - "teoli", - "nickollas.coelho" - ] - }, - "Web/CSS/Getting_Started/Porque_usar_CSS": { - "modified": "2019-03-23T22:59:16.068Z", - "contributors": [ - "rogeralbinoi" - ] - }, - "Web/CSS/Getting_Started/Seletores": { - "modified": "2019-11-18T18:22:11.556Z", - "contributors": [ - "Ericsson-Araujo", - "onsistec", - "dehmirandac2", - "c0elha", - "RafaelRNunes", - "Gregory", - "macarena", - "agathasilva28" - ] - }, - "Web/CSS/ID_selectors": { - "modified": "2019-03-23T22:30:10.383Z", - "contributors": [ - "fcard" - ] - }, - "Web/CSS/Layout_cookbook": { - "modified": "2019-07-01T02:49:26.802Z", - "contributors": [ - "SphinxKnight", - "sourodrigodesigner", - "jorgeclesio" - ] - }, - "Web/CSS/Layout_cookbook/Breadcrumb_Navigation": { - "modified": "2020-10-15T22:25:57.757Z", - "contributors": [ - "andre-vinicius" - ] - }, - "Web/CSS/Layout_cookbook/Media_objects": { - "modified": "2020-10-15T22:30:53.182Z", - "contributors": [ - "SONSERVICE" - ] - }, - "Web/CSS/Media_Queries": { - "modified": "2019-03-23T22:21:43.734Z", - "contributors": [ - "dinaldojr" - ] - }, - "Web/CSS/Microsoft_Extensions": { - "modified": "2020-08-25T13:14:49.650Z", - "contributors": [ - "duduindo", - "mcastanhola" - ] - }, - "Web/CSS/Modelo_Visual": { - "modified": "2019-03-23T22:09:22.823Z", - "contributors": [ - "Fernandolrs" - ] - }, - "Web/CSS/Modelo_layout": { - "modified": "2019-03-23T22:09:32.757Z", - "contributors": [ - "lcchueri", - "Fernandolrs" - ] - }, - "Web/CSS/Privacidade_e_o_seletor_:visited": { - "modified": "2019-04-15T23:34:22.131Z", - "contributors": [ - "tadeubarbosa" - ] - }, - "Web/CSS/Pseudo-classes": { - "modified": "2020-07-03T20:22:36.539Z", - "contributors": [ - "gstfnsk", - "Lukff", - "brunoeduardo" - ] - }, - "Web/CSS/Pseudo-elementos": { - "modified": "2020-07-03T20:21:08.594Z", - "contributors": [ - "gstfnsk", - "Arlon", - "Lukff", - "brunoeduardo" - ] - }, - "Web/CSS/Seletor_de_atributos": { - "modified": "2020-10-15T22:02:16.544Z", - "contributors": [ - "EvertonTomalok" - ] - }, - "Web/CSS/Seletor_universal": { - "modified": "2020-10-15T22:18:51.680Z", - "contributors": [ - "synga" - ] - }, - "Web/CSS/Seletores_CSS": { - "modified": "2019-03-22T08:21:56.189Z", - "contributors": [ - "Arlon", - "Lukff", - "kelvyncosta" - ] - }, - "Web/CSS/Shorthand_properties": { - "modified": "2019-03-23T22:15:16.832Z", - "contributors": [ - "rubenmarcus" - ] - }, - "Web/CSS/Sintexe_valor": { - "modified": "2019-03-23T22:09:28.440Z", - "contributors": [ - "Fernandolrs" - ] - }, - "Web/CSS/Specificity": { - "modified": "2019-12-19T17:59:37.262Z", - "contributors": [ - "AdamsEric", - "Carli", - "tfvictorino", - "teoli", - "fvargaspf@gmail.com" - ] - }, - "Web/CSS/Tools": { - "modified": "2019-03-23T23:07:41.210Z", - "contributors": [ - "hlays", - "velvel53" - ] - }, - "Web/CSS/Tools/Border-image_generator": { - "modified": "2019-05-06T10:31:39.391Z", - "contributors": [ - "leodeJESUS", - "Torto" - ] - }, - "Web/CSS/Tools/Border-radius_generator": { - "modified": "2019-03-23T23:07:37.174Z", - "contributors": [ - "Torto" - ] - }, - "Web/CSS/Type_selectors": { - "modified": "2020-10-15T22:32:30.449Z", - "contributors": [ - "cyz" - ] - }, - "Web/CSS/Using_CSS_custom_properties": { - "modified": "2020-10-15T21:28:55.244Z", - "contributors": [ - "SphinxKnight", - "MagicalStrangeQuark", - "chrisdavidmills", - "TecladistaProd", - "matheus.raduan", - "wellviana", - "eltonmesquita" - ] - }, - "Web/CSS/Valor_atual": { - "modified": "2019-03-23T22:09:29.249Z", - "contributors": [ - "Fernandolrs" - ] - }, - "Web/CSS/Valor_resolvido": { - "modified": "2019-03-23T22:09:21.295Z", - "contributors": [ - "Fernandolrs" - ] - }, - "Web/CSS/Valor_usado": { - "modified": "2019-03-23T22:09:30.061Z", - "contributors": [ - "Fernandolrs" - ] - }, - "Web/CSS/align-content": { - "modified": "2020-10-15T22:32:42.150Z", - "contributors": [ - "Filipe" - ] - }, - "Web/CSS/align-items": { - "modified": "2020-10-15T22:12:31.546Z", - "contributors": [ - "rbuzatto" - ] - }, - "Web/CSS/align-self": { - "modified": "2020-10-15T22:12:37.957Z", - "contributors": [ - "rbuzatto" - ] - }, - "Web/CSS/animation": { - "modified": "2020-10-15T21:29:59.258Z", - "contributors": [ - "Canturilsnaik", - "MarcosNakamine", - "mrstork", - "teoli", - "Sebastianz", - "mateusleon" - ] - }, - "Web/CSS/animation-delay": { - "modified": "2019-03-23T22:05:35.414Z", - "contributors": [ - "francisquete" - ] - }, - "Web/CSS/animation-fill-mode": { - "modified": "2020-10-19T07:57:27.073Z", - "contributors": [ - "SphinxKnight", - "DSousa21", - "MarcosNakamine", - "daliannyvieira" - ] - }, - "Web/CSS/attr()": { - "modified": "2020-11-04T08:51:55.092Z", - "contributors": [ - "chrisdavidmills", - "SphinxKnight", - "GPrimola", - "igorParanhos" - ] - }, - "Web/CSS/backdrop-filter": { - "modified": "2020-10-15T22:24:05.999Z", - "contributors": [ - "liddack" - ] - }, - "Web/CSS/backface-visibility": { - "modified": "2019-03-23T22:43:08.854Z", - "contributors": [ - "maugravena", - "teoli", - "alexanmtz" - ] - }, - "Web/CSS/background": { - "modified": "2020-10-15T21:46:31.679Z", - "contributors": [ - "felipeolliveira", - "brunoaugustosilva", - "fscholz", - "macalha", - "luanmuniz", - "joaogsantos" - ] - }, - "Web/CSS/background-attachment": { - "modified": "2019-03-23T22:27:58.885Z", - "contributors": [ - "alexfqc" - ] - }, - "Web/CSS/background-blend-mode": { - "modified": "2019-03-23T22:09:16.123Z", - "contributors": [ - "tadeubarbosa" - ] - }, - "Web/CSS/background-clip": { - "modified": "2020-01-24T03:37:24.518Z", - "contributors": [ - "marlonveiga-santos", - "CarlosHMoreira", - "fscholz", - "Sebastianz", - "filipewl" - ] - }, - "Web/CSS/background-color": { - "modified": "2020-10-15T22:34:37.855Z", - "contributors": [ - "keitoliveira" - ] - }, - "Web/CSS/background-origin": { - "modified": "2020-10-15T22:04:40.110Z", - "contributors": [ - "brunoaugustosilva" - ] - }, - "Web/CSS/background-position": { - "modified": "2020-10-15T22:04:40.552Z", - "contributors": [ - "gustavaum", - "brunoaugustosilva" - ] - }, - "Web/CSS/background-size": { - "modified": "2020-10-15T21:56:47.129Z", - "contributors": [ - "pedrothome1" - ] - }, - "Web/CSS/blend-mode": { - "modified": "2020-10-15T22:20:02.938Z", - "contributors": [ - "aledebarba" - ] - }, - "Web/CSS/block-size": { - "modified": "2020-10-15T22:14:03.242Z", - "contributors": [ - "ViniciusMatias" - ] - }, - "Web/CSS/border-left": { - "modified": "2019-03-23T22:39:02.522Z", - "contributors": [ - "juliocarneiro" - ] - }, - "Web/CSS/border-left-color": { - "modified": "2020-10-15T22:29:25.259Z", - "contributors": [ - "victorferreira.s0307" - ] - }, - "Web/CSS/border-radius": { - "modified": "2019-03-23T22:27:40.423Z", - "contributors": [ - "Jerffersonferreira" - ] - }, - "Web/CSS/box-shadow": { - "modified": "2020-07-02T14:18:07.328Z", - "contributors": [ - "Alynva", - "juliosampaio", - "alexNeto" - ] - }, - "Web/CSS/box-sizing": { - "modified": "2020-10-15T21:31:51.696Z", - "contributors": [ - "lucasinoue", - "SphinxKnight", - "LeonardoBrizolla", - "hdvianna", - "ThaleSelaht", - "SJW", - "esaramago", - "geovannikun", - "ekbaumgarten", - "morvanabonin" - ] - }, - "Web/CSS/box_model": { - "modified": "2019-03-23T22:50:51.930Z", - "contributors": [ - "ekbaumgarten" - ] - }, - "Web/CSS/break-after": { - "modified": "2020-10-15T22:23:12.517Z", - "contributors": [ - "renatobalbino" - ] - }, - "Web/CSS/calc()": { - "modified": "2020-11-04T09:08:50.767Z", - "contributors": [ - "chrisdavidmills", - "Anonymous", - "CahMoraes", - "alexalannunes", - "oxesoft", - "rubensdemelo" - ] - }, - "Web/CSS/clear": { - "modified": "2020-10-15T22:11:39.449Z", - "contributors": [ - "leovene" - ] - }, - "Web/CSS/color": { - "modified": "2020-10-15T22:11:21.255Z", - "contributors": [ - "UnrealLion" - ] - }, - "Web/CSS/color_value": { - "modified": "2019-03-23T22:15:53.386Z", - "contributors": [ - "Dianakc" - ] - }, - "Web/CSS/contain": { - "modified": "2019-03-18T21:38:58.826Z", - "contributors": [ - "leandroruel" - ] - }, - "Web/CSS/content": { - "modified": "2019-03-23T22:32:40.444Z", - "contributors": [ - "fernando", - "SphinxKnight" - ] - }, - "Web/CSS/cursor": { - "modified": "2020-11-26T03:13:44.205Z", - "contributors": [ - "SphinxKnight", - "uendelzilda123", - "filipetorres", - "Jerffersonferreira" - ] - }, - "Web/CSS/display": { - "modified": "2019-10-10T16:54:40.995Z", - "contributors": [ - "JosOe", - "brasmon8351", - "thiagoreis", - "wbamberg", - "chiarmar", - "rramosBR", - "gabrielsixel", - "jorgeclesio", - "Sebastianz", - "KikenCris", - "teoli", - "fnsc.luis" - ] - }, - "Web/CSS/display-box": { - "modified": "2020-10-15T22:22:38.389Z", - "contributors": [ - "brasmon8351" - ] - }, - "Web/CSS/display-inside": { - "modified": "2020-10-15T22:22:39.103Z", - "contributors": [ - "brasmon8351" - ] - }, - "Web/CSS/display-internal": { - "modified": "2020-10-15T22:22:38.638Z", - "contributors": [ - "brasmon8351" - ] - }, - "Web/CSS/display-legacy": { - "modified": "2020-10-15T22:22:39.608Z", - "contributors": [ - "brasmon8351" - ] - }, - "Web/CSS/display-listitem": { - "modified": "2020-10-15T22:22:38.303Z", - "contributors": [ - "brasmon8351" - ] - }, - "Web/CSS/display-outside": { - "modified": "2020-10-15T22:22:38.175Z", - "contributors": [ - "brasmon8351" - ] - }, - "Web/CSS/element()": { - "modified": "2020-11-10T11:06:23.872Z", - "contributors": [ - "chrisdavidmills", - "JonatasAmaral" - ] - }, - "Web/CSS/env()": { - "modified": "2020-11-10T11:11:50.127Z", - "contributors": [ - "chrisdavidmills", - "Rondinelly" - ] - }, - "Web/CSS/filter-function": { - "modified": "2019-03-18T21:46:25.511Z", - "contributors": [ - "mfluehr" - ] - }, - "Web/CSS/filter-function/grayscale()": { - "modified": "2020-11-10T11:19:23.773Z", - "contributors": [ - "chrisdavidmills", - "BrunaGil" - ] - }, - "Web/CSS/filter-function/opacity()": { - "modified": "2020-11-16T09:08:08.691Z", - "contributors": [ - "chrisdavidmills", - "larimaza" - ] - }, - "Web/CSS/filter-function/sepia()": { - "modified": "2020-11-30T10:24:47.934Z", - "contributors": [ - "chrisdavidmills", - "larimaza" - ] - }, - "Web/CSS/flex": { - "modified": "2020-11-09T02:37:31.343Z", - "contributors": [ - "luciano.ar6", - "helton-mori-dev", - "carlosvasconcelosjr" - ] - }, - "Web/CSS/flex-direction": { - "modified": "2020-10-15T22:22:57.753Z", - "contributors": [ - "SphinxKnight", - "Gleisson_Neves", - "MarsA_", - "mhayk" - ] - }, - "Web/CSS/flex-flow": { - "modified": "2020-10-15T21:47:43.877Z", - "contributors": [ - "liddack", - "LeandroPS" - ] - }, - "Web/CSS/flex-wrap": { - "modified": "2020-11-29T18:54:20.472Z", - "contributors": [ - "Marcosnto", - "Gleisson_Neves" - ] - }, - "Web/CSS/float": { - "modified": "2019-03-23T22:20:46.403Z", - "contributors": [ - "biracruz" - ] - }, - "Web/CSS/font-family": { - "modified": "2019-10-03T18:27:37.350Z", - "contributors": [ - "kmoreiradesigner", - "Ronkiro", - "fscholz", - "Sebastianz", - "bubui" - ] - }, - "Web/CSS/font-feature-settings": { - "modified": "2020-12-07T08:17:07.091Z", - "contributors": [ - "Strapazzon", - "yagosrocha" - ] - }, - "Web/CSS/font-kerning": { - "modified": "2019-03-23T22:09:10.848Z", - "contributors": [ - "rener_bz" - ] - }, - "Web/CSS/font-size": { - "modified": "2020-10-15T22:19:23.993Z", - "contributors": [ - "MatheusBorges", - "jorgeclesio" - ] - }, - "Web/CSS/font-variation-settings": { - "modified": "2020-10-15T22:24:06.969Z", - "contributors": [ - "GuilhermePiovesan" - ] - }, - "Web/CSS/font-weight": { - "modified": "2019-03-23T22:49:03.645Z", - "contributors": [ - "SphinxKnight", - "fscholz", - "Sebastianz", - "ppedruzzi" - ] - }, - "Web/CSS/grid": { - "modified": "2020-10-15T22:11:03.246Z", - "contributors": [ - "eniocsj" - ] - }, - "Web/CSS/grid-auto-flow": { - "modified": "2020-10-15T22:01:03.947Z", - "contributors": [ - "thiagommoreira" - ] - }, - "Web/CSS/grid-template-columns": { - "modified": "2020-10-15T21:55:28.296Z", - "contributors": [ - "asm95", - "fscholz", - "kazaku16" - ] - }, - "Web/CSS/grid-template-rows": { - "modified": "2020-10-15T22:05:37.787Z", - "contributors": [ - "marcosdourado" - ] - }, - "Web/CSS/height": { - "modified": "2019-03-23T23:09:19.423Z", - "contributors": [ - "mrcehlo", - "mrstork", - "SphinxKnight", - "Sebastianz", - "marcosyoshihiro" - ] - }, - "Web/CSS/hifens": { - "modified": "2019-03-23T22:08:31.285Z", - "contributors": [ - "gilsonnunes" - ] - }, - "Web/CSS/image-set()": { - "modified": "2020-11-16T08:53:55.560Z", - "contributors": [ - "chrisdavidmills", - "leandroruel" - ] - }, - "Web/CSS/imagem": { - "modified": "2020-10-15T22:03:54.448Z", - "contributors": [ - "brunoeduardo" - ] - }, - "Web/CSS/inheritance": { - "modified": "2019-03-23T22:30:06.400Z", - "contributors": [ - "fcard" - ] - }, - "Web/CSS/initial": { - "modified": "2020-10-15T22:26:34.680Z", - "contributors": [ - "marlonveiga-santos" - ] - }, - "Web/CSS/inline-size": { - "modified": "2020-10-15T22:06:25.990Z", - "contributors": [ - "zKhiro" - ] - }, - "Web/CSS/isolation": { - "modified": "2019-06-05T21:56:02.812Z", - "contributors": [ - "ni-reis", - "rener_bz" - ] - }, - "Web/CSS/letter-spacing": { - "modified": "2020-10-15T22:02:19.098Z", - "contributors": [ - "V1n1c1us" - ] - }, - "Web/CSS/line-break": { - "modified": "2020-10-15T21:48:42.616Z", - "contributors": [ - "SphinxKnight", - "Kappyh", - "helitonmartins", - "phenriqueleao", - "alexandresn" - ] - }, - "Web/CSS/margin": { - "modified": "2020-10-15T22:00:45.937Z", - "contributors": [ - "felima2017" - ] - }, - "Web/CSS/margin-bottom": { - "modified": "2020-10-15T22:18:51.440Z", - "contributors": [ - "Clecio013" - ] - }, - "Web/CSS/margin-top": { - "modified": "2019-03-23T22:48:06.569Z", - "contributors": [ - "Sebastianz", - "dlepera" - ] - }, - "Web/CSS/max-width": { - "modified": "2020-10-30T00:27:30.942Z", - "contributors": [ - "mipan-zuzuzu-zuzuzum", - "gustavofrezzz", - "zKhiro" - ] - }, - "Web/CSS/min-height": { - "modified": "2019-03-23T23:03:57.511Z", - "contributors": [ - "JulianoPadilha", - "Sebastianz", - "LeonardoMax" - ] - }, - "Web/CSS/mix-blend-mode": { - "modified": "2019-03-23T22:47:35.984Z", - "contributors": [ - "mrstork", - "Sebastianz", - "afonsoalban" - ] - }, - "Web/CSS/number": { - "modified": "2020-10-15T22:25:43.785Z", - "contributors": [ - "euvanribeiro" - ] - }, - "Web/CSS/object-fit": { - "modified": "2019-09-09T10:42:42.040Z", - "contributors": [ - "mhayk", - "Sebastianz", - "brunolimawd" - ] - }, - "Web/CSS/offset": { - "modified": "2019-03-23T22:09:22.407Z", - "contributors": [ - "alisson-suzigan", - "Schieck" - ] - }, - "Web/CSS/opacity": { - "modified": "2019-09-03T00:02:11.829Z", - "contributors": [ - "hierror" - ] - }, - "Web/CSS/outline": { - "modified": "2019-03-23T22:29:17.217Z", - "contributors": [ - "MaurilioNovais" - ] - }, - "Web/CSS/overflow": { - "modified": "2019-03-23T23:35:08.837Z", - "contributors": [ - "haskellcamargo", - "teoli", - "KikenCris", - "Sheppy", - "diogotito", - "Francis" - ] - }, - "Web/CSS/padding": { - "modified": "2019-03-23T22:10:23.184Z", - "contributors": [ - "aantonello" - ] - }, - "Web/CSS/padding-left": { - "modified": "2019-03-23T23:05:03.904Z", - "contributors": [ - "Sebastianz", - "Prinz_Rana", - "fscholz", - "SKO" - ] - }, - "Web/CSS/page-break-before": { - "modified": "2020-10-15T22:23:32.559Z", - "contributors": [ - "EdsonLI" - ] - }, - "Web/CSS/pointer-events": { - "modified": "2019-10-10T16:54:43.656Z", - "contributors": [ - "Sebastianz", - "brunoeduardo" - ] - }, - "Web/CSS/position": { - "modified": "2020-11-12T16:32:21.055Z", - "contributors": [ - "joao-alberto", - "talles.makoto" - ] - }, - "Web/CSS/radial-gradient()": { - "modified": "2020-11-18T14:42:38.700Z", - "contributors": [ - "chrisdavidmills", - "Sebastianz", - "mrstork", - "srsaude" - ] - }, - "Web/CSS/repeating-linear-gradient()": { - "modified": "2020-11-18T14:46:15.881Z", - "contributors": [ - "chrisdavidmills", - "Sebastianz", - "prayash", - "teoli", - "Erick_Ribeiro" - ] - }, - "Web/CSS/ruby-align": { - "modified": "2019-03-23T22:39:36.583Z", - "contributors": [ - "ygormaximo" - ] - }, - "Web/CSS/scroll-behavior": { - "modified": "2019-03-23T22:05:52.763Z", - "contributors": [ - "otaviogui", - "ogawaryu" - ] - }, - "Web/CSS/scrollbar-color": { - "modified": "2020-10-15T22:15:14.505Z", - "contributors": [ - "helton-mori-dev" - ] - }, - "Web/CSS/sintaxe": { - "modified": "2019-03-18T20:58:06.000Z", - "contributors": [ - "EdilsonSilva", - "zKhiro", - "diancabral", - "teoli", - "fvargaspf@gmail.com" - ] - }, - "Web/CSS/text-align": { - "modified": "2020-09-13T12:38:14.000Z", - "contributors": [ - "hicksf", - "CinatitBR", - "FernandaBernardo", - "ronysilvati" - ] - }, - "Web/CSS/text-decoration": { - "modified": "2019-03-23T22:35:55.748Z", - "contributors": [ - "gabiduarte" - ] - }, - "Web/CSS/text-decoration-style": { - "modified": "2019-03-23T22:34:47.555Z", - "contributors": [ - "miller.augusto" - ] - }, - "Web/CSS/text-overflow": { - "modified": "2019-03-23T23:32:14.078Z", - "contributors": [ - "Krenair", - "Sebastianz", - "miller.augusto", - "teoli", - "recoverjp@gmail.com" - ] - }, - "Web/CSS/text-rendering": { - "modified": "2019-03-23T23:36:15.210Z", - "contributors": [ - "mateusmeyer", - "fscholz", - "teoli", - "marioluan", - "lmiranda" - ] - }, - "Web/CSS/text-shadow": { - "modified": "2019-03-23T22:50:26.761Z", - "contributors": [ - "vspereira", - "luis.kaufmann.silva", - "Sebastianz", - "philippesilva" - ] - }, - "Web/CSS/text-transform": { - "modified": "2020-10-15T22:00:36.908Z", - "contributors": [ - "FernandaBernardo" - ] - }, - "Web/CSS/time": { - "modified": "2020-10-15T22:25:42.997Z", - "contributors": [ - "euvanribeiro" - ] - }, - "Web/CSS/touch-action": { - "modified": "2020-10-15T21:58:13.110Z", - "contributors": [ - "leandrofsp" - ] - }, - "Web/CSS/transform": { - "modified": "2019-03-23T23:38:43.751Z", - "contributors": [ - "Sebastianz", - "fscholz", - "teoli", - "rafael.modos" - ] - }, - "Web/CSS/transform-function": { - "modified": "2019-03-23T22:03:42.541Z", - "contributors": [ - "mfluehr" - ] - }, - "Web/CSS/transform-function/matrix()": { - "modified": "2020-11-16T09:00:13.847Z", - "contributors": [ - "chrisdavidmills", - "MarcosNakamine" - ] - }, - "Web/CSS/transform-function/perspective()": { - "modified": "2020-11-16T09:10:49.924Z", - "contributors": [ - "chrisdavidmills", - "larimaza" - ] - }, - "Web/CSS/transform-function/rotate()": { - "modified": "2020-11-19T16:06:09.849Z", - "contributors": [ - "chrisdavidmills", - "YurePereira" - ] - }, - "Web/CSS/transform-function/rotate3d()": { - "modified": "2020-11-19T16:07:35.157Z", - "contributors": [ - "chrisdavidmills", - "larimaza" - ] - }, - "Web/CSS/transform-function/scale()": { - "modified": "2020-11-30T10:15:54.148Z", - "contributors": [ - "chrisdavidmills", - "larimaza" - ] - }, - "Web/CSS/transform-function/translate()": { - "modified": "2020-11-30T10:30:42.247Z", - "contributors": [ - "chrisdavidmills", - "duduindo", - "Dianakc", - "MarcosNakamine", - "brunoeduardo" - ] - }, - "Web/CSS/transform-style": { - "modified": "2020-10-15T22:29:54.621Z", - "contributors": [ - "joaopedroaats" - ] - }, - "Web/CSS/transition": { - "modified": "2020-05-17T21:28:19.368Z", - "contributors": [ - "bruno-cr", - "hbmuller" - ] - }, - "Web/CSS/transition-delay": { - "modified": "2020-10-15T22:25:42.611Z", - "contributors": [ - "euvanribeiro" - ] - }, - "Web/CSS/transition-timing-function": { - "modified": "2019-03-23T22:09:51.499Z", - "contributors": [ - "welitonderesende" - ] - }, - "Web/CSS/valor_computado": { - "modified": "2019-03-23T22:09:29.149Z", - "contributors": [ - "Fernandolrs" - ] - }, - "Web/CSS/valor_espeficifco": { - "modified": "2019-03-23T22:09:23.838Z", - "contributors": [ - "Fernandolrs" - ] - }, - "Web/CSS/valor_inicial": { - "modified": "2020-02-01T14:54:00.506Z", - "contributors": [ - "marlonveiga-santos", - "Fernandolrs" - ] - }, - "Web/CSS/var()": { - "modified": "2020-11-04T09:10:42.127Z", - "contributors": [ - "chrisdavidmills", - "filipetorres" - ] - }, - "Web/CSS/vertical-align": { - "modified": "2019-06-19T18:03:19.393Z", - "contributors": [ - "douglast2t", - "guifrrs", - "ronysilvati" - ] - }, - "Web/CSS/visibility": { - "modified": "2020-10-15T21:59:53.930Z", - "contributors": [ - "brunopulis" - ] - }, - "Web/CSS/white-space": { - "modified": "2020-10-15T21:33:46.098Z", - "contributors": [ - "mtsgeneroso", - "maurojs10", - "fscholz", - "Sebastianz", - "rafaellyra" - ] - }, - "Web/CSS/width": { - "modified": "2019-03-23T22:25:51.390Z", - "contributors": [ - "DiegoBRodrigues" - ] - }, - "Web/CSS/will-change": { - "modified": "2019-10-12T17:58:25.195Z", - "contributors": [ - "K3yboard", - "jlozovei", - "raphaguasta", - "Jerffersonferreira" - ] - }, - "Web/CSS/word-break": { - "modified": "2020-10-15T21:41:36.303Z", - "contributors": [ - "srsaude", - "teoli", - "anderson-fachini" - ] - }, - "Web/CSS/word-wrap": { - "modified": "2019-03-23T23:34:13.390Z", - "contributors": [ - "fscholz", - "teoli", - "marcoscoelho" - ] - }, - "Web/CSS/writing-mode": { - "modified": "2019-03-23T22:01:39.192Z", - "contributors": [ - "jessuircleydson" - ] - }, - "Web/Demos_of_open_web_technologies": { - "modified": "2020-09-04T06:28:02.627Z", - "contributors": [ - "gustavoSoriano", - "angelorubin", - "arthur2323" - ] - }, - "Web/Events": { - "modified": "2019-08-20T18:23:47.517Z", - "contributors": [ - "helton-mori-dev", - "ayrtton", - "Marnei-Cardoso", - "wbamberg", - "LeandroMaxNatal", - "susanasilva", - "jpmedley" - ] - }, - "Web/Events/DOMContentLoaded": { - "modified": "2019-03-18T20:53:06.319Z", - "contributors": [ - "helton-mori-dev", - "fscholz", - "greevin", - "macalha" - ] - }, - "Web/Events/abort": { - "modified": "2019-04-30T14:23:25.544Z", - "contributors": [ - "wbamberg", - "KaykyB", - "tinogomes" - ] - }, - "Web/Events/beforeunload": { - "modified": "2019-04-30T13:57:03.306Z", - "contributors": [ - "wbamberg", - "LeoNicolas" - ] - }, - "Web/Events/blur": { - "modified": "2019-03-23T22:07:32.725Z", - "contributors": [ - "fscholz", - "erikseyti", - "Fusseldieb" - ] - }, - "Web/Events/focus": { - "modified": "2019-03-23T22:03:56.654Z", - "contributors": [ - "fscholz", - "erikseyti" - ] - }, - "Web/Events/focusin": { - "modified": "2019-03-23T22:03:40.133Z", - "contributors": [ - "MarcoBrunoBR", - "fscholz", - "erikseyti" - ] - }, - "Web/Events/focusout": { - "modified": "2019-03-23T22:03:46.833Z", - "contributors": [ - "fscholz", - "erikseyti" - ] - }, - "Web/Events/input": { - "modified": "2019-03-23T22:14:30.766Z", - "contributors": [ - "fscholz", - "heltonandreazza" - ] - }, - "Web/Events/load": { - "modified": "2019-03-18T20:53:32.628Z", - "contributors": [ - "helton-mori-dev", - "fscholz", - "Maikoncanuto" - ] - }, - "Web/Events/readystatechange": { - "modified": "2019-03-23T22:53:19.134Z", - "contributors": [ - "fscholz", - "brunoczim", - "macalha" - ] - }, - "Web/Guide": { - "modified": "2020-10-30T13:31:43.101Z", - "contributors": [ - "manoelbjr", - "brasmon8351", - "wcqueiroz", - "alanreisb", - "LucianoHanna", - "javaroldo", - "nagaozen", - "Danilson_Veloso", - "alexandresn", - "leonardocoelho", - "joaumg", - "luizmassa", - "sheldonled", - "Sheppy" - ] - }, - "Web/Guide/AJAX": { - "modified": "2019-04-26T09:51:09.814Z", - "contributors": [ - "helton-mori-dev", - "chrisdavidmills", - "Wanderleymuniz", - "flaviomicheletti", - "gigantebsb", - "PedroFelipe" - ] - }, - "Web/Guide/AJAX/Getting_Started": { - "modified": "2019-03-23T23:09:35.656Z", - "contributors": [ - "chrisdavidmills", - "darnosls", - "DiogoFontes", - "renatogalvones", - "devLopez", - "flaviomicheletti", - "Alakazam", - "xanfox", - "robinsonsantos" - ] - }, - "Web/Guide/API": { - "modified": "2019-09-11T09:42:23.112Z", - "contributors": [ - "SphinxKnight", - "Sheppy" - ] - }, - "Web/Guide/CSS/CSS_Media_queries": { - "modified": "2019-03-23T23:04:07.760Z", - "contributors": [ - "HugoRibeiro", - "angeliski", - "dailsoncampos", - "nieckarz", - "Sebastianz", - "mrstork", - "malayaleecoder", - "davidcorbetta", - "jorgeclesio", - "Pedrinho", - "brunoeduardo", - "fabianosantos.net" - ] - }, - "Web/Guide/CSS/CSS_media_queries_(consultas_de_mídia_em_CSS)": { - "modified": "2019-03-23T23:08:21.480Z", - "contributors": [ - "dinaldojr" - ] - }, - "Web/Guide/CSS/Scaling_background_images": { - "modified": "2019-03-23T22:59:50.758Z", - "contributors": [ - "mrstork", - "MarcosNakamine" - ] - }, - "Web/Guide/CSS/Understanding_z_index": { - "modified": "2019-03-23T22:59:23.481Z", - "contributors": [ - "songbird159", - "teoli", - "MaxWilliamJF" - ] - }, - "Web/Guide/Events": { - "modified": "2019-03-23T23:21:12.584Z", - "contributors": [ - "Sheppy" - ] - }, - "Web/Guide/Events/Event_handlers": { - "modified": "2020-08-06T11:00:19.146Z", - "contributors": [ - "eziotristao" - ] - }, - "Web/Guide/Events/Mutation_events": { - "modified": "2019-03-23T22:59:51.382Z", - "contributors": [ - "diegolw" - ] - }, - "Web/Guide/Events/Overview_of_Events_and_Handlers": { - "modified": "2020-09-28T23:35:22.348Z", - "contributors": [ - "helton-mori-dev" - ] - }, - "Web/Guide/Events/Touch_events": { - "modified": "2019-03-23T23:21:11.070Z", - "contributors": [ - "alipseight", - "Estupendo", - "fellyph" - ] - }, - "Web/Guide/Events/criando_e_disparando_eventos": { - "modified": "2019-03-23T22:11:33.073Z", - "contributors": [ - "JefersonOliveira90" - ] - }, - "Web/Guide/Gráficos": { - "modified": "2019-03-23T23:24:23.146Z", - "contributors": [ - "julio-elipse", - "MarceloBRN", - "LucasPrado", - "MatCAlv" - ] - }, - "Web/Guide/HTML/Canvas_tutorial": { - "modified": "2019-03-23T23:13:39.145Z", - "contributors": [ - "CarlosRodrigues", - "Halcance", - "MarceloBRN", - "angelosds", - "Claudiovascaino", - "gxovano", - "gutierri", - "trevorh" - ] - }, - "Web/Guide/HTML/Canvas_tutorial/Advanced_animations": { - "modified": "2019-03-23T22:19:02.957Z", - "contributors": [ - "mak213k" - ] - }, - "Web/Guide/HTML/Canvas_tutorial/Applying_styles_and_colors": { - "modified": "2020-09-23T19:39:01.390Z", - "contributors": [ - "viniciusfinger", - "AdelinoGonzalesEscobar", - "thulioph", - "MarceloBRN" - ] - }, - "Web/Guide/HTML/Canvas_tutorial/Basic_animations": { - "modified": "2019-03-18T21:15:02.453Z", - "contributors": [ - "LeandroLS", - "claromes", - "CarlosEduR", - "augustoroc" - ] - }, - "Web/Guide/HTML/Canvas_tutorial/Compositing": { - "modified": "2019-03-23T22:12:17.031Z", - "contributors": [ - "CarlosRodrigues", - "Fernandolrs", - "mak213k" - ] - }, - "Web/Guide/HTML/Canvas_tutorial/Compositing/Exemplo": { - "modified": "2019-03-18T21:37:01.783Z", - "contributors": [ - "CarlosRodrigues" - ] - }, - "Web/Guide/HTML/Canvas_tutorial/Conclusão": { - "modified": "2019-03-18T21:36:59.449Z", - "contributors": [ - "CarlosRodrigues" - ] - }, - "Web/Guide/HTML/Canvas_tutorial/Drawing_shapes": { - "modified": "2020-06-20T19:01:22.926Z", - "contributors": [ - "luizsanches", - "yMegaM", - "MarceloBRN", - "RuanAragao", - "lucas-lambda", - "charlesjamil", - "hellks", - "thiagoao", - "patrickwreis", - "augustoroc" - ] - }, - "Web/Guide/HTML/Canvas_tutorial/Drawing_text": { - "modified": "2019-03-23T22:16:08.231Z", - "contributors": [ - "surprise102", - "Joao-Maciel", - "netoguimaraes" - ] - }, - "Web/Guide/HTML/Canvas_tutorial/Otimizando_Canvas": { - "modified": "2019-03-18T21:35:40.184Z", - "contributors": [ - "fabianosantos.net" - ] - }, - "Web/Guide/HTML/Canvas_tutorial/Using_images": { - "modified": "2019-10-15T16:17:36.192Z", - "contributors": [ - "JIrismar" - ] - }, - "Web/Guide/HTML/Canvas_tutorial/Utilizacao_basica": { - "modified": "2019-03-23T23:13:44.390Z", - "contributors": [ - "MarceloBRN", - "RuanAragao", - "FilipeSilva", - "lucaspedroza" - ] - }, - "Web/Guide/HTML/Categorias_de_conteudo": { - "modified": "2019-03-18T21:16:20.736Z", - "contributors": [ - "ygormaximo" - ] - }, - "Web/Guide/HTML/Content_Editable": { - "modified": "2019-03-23T22:43:02.407Z", - "contributors": [ - "expalmer", - "fellyph" - ] - }, - "Web/Guide/HTML/Forms": { - "modified": "2020-07-16T22:21:01.260Z", - "contributors": [ - "Magela", - "psergiojr", - "felipez3r0", - "jaimemaretoli", - "eduardobona", - "frankfarias", - "jgborges", - "SilvEiRax", - "sjmiles" - ] - }, - "Web/Guide/HTML/Forms/Form_validation": { - "modified": "2020-07-16T22:21:52.226Z", - "contributors": [ - "LisandroTSilva", - "JEricFarias", - "JeffersonSotto", - "GeysaPriscila" - ] - }, - "Web/Guide/HTML/Forms/How_to_build_custom_form_widgets": { - "modified": "2020-07-16T22:21:57.640Z", - "contributors": [ - "italorangel" - ] - }, - "Web/Guide/HTML/Forms/How_to_structure_an_HTML_form": { - "modified": "2020-08-25T09:42:10.924Z", - "contributors": [ - "Camila-Isabela", - "Rondinelly", - "mqdev", - "itamarsilva", - "fscholz", - "rafaelblink", - "Renancp01", - "Danilson_Veloso", - "angellica.araujo", - "Sheppy" - ] - }, - "Web/Guide/HTML/Forms/Meu_primeiro_formulario_HTML": { - "modified": "2020-07-16T22:21:06.348Z", - "contributors": [ - "italorangel", - "itamarsilva", - "fabiobasso", - "samlopes_br", - "Victorfm2167", - "WagnerSilveira", - "melostbr", - "wesleey", - "khiby" - ] - }, - "Web/Guide/HTML/Forms/Os_widgets_nativos": { - "modified": "2020-07-16T22:21:22.988Z", - "contributors": [ - "danncam", - "VictorGom3s" - ] - }, - "Web/Guide/HTML/Forms/Sending_and_retrieving_form_data": { - "modified": "2020-07-16T22:21:28.510Z", - "contributors": [ - "Gus-fm", - "iClarkSi", - "filipetorres", - "Victorfm2167" - ] - }, - "Web/Guide/HTML/Using_data_attributes": { - "modified": "2020-07-16T22:22:37.008Z", - "contributors": [ - "marcos.m.ventura", - "soutomario", - "thomas-adriano", - "danielmelogpi" - ] - }, - "Web/Guide/Introducao_ao_Desenvolvimento_Web": { - "modified": "2019-07-28T16:57:13.368Z", - "contributors": [ - "rvenson" - ] - }, - "Web/Guide/Mobile": { - "modified": "2020-04-05T18:24:36.523Z", - "contributors": [ - "guidiasz", - "michelsouza" - ] - }, - "Web/Guide/Performance": { - "modified": "2019-03-18T20:49:01.451Z", - "contributors": [ - "ssamuel645", - "KelviDalmazo" - ] - }, - "Web/Guide/Printing": { - "modified": "2020-08-18T10:16:18.081Z", - "contributors": [ - "Eder_Duarte", - "maatheusgouveia" - ] - }, - "Web/HTML": { - "modified": "2019-09-10T15:24:16.025Z", - "contributors": [ - "SphinxKnight", - "brasmon8351", - "wcqueiroz", - "jorgeclesio", - "Rech", - "diegobarcelar", - "julio-elipse", - "BrunaGil", - "ferro-br", - "phenriqueleao", - "andalvalmeida", - "rubensdemelo", - "samuelbzrra", - "Carlos_Mir_de_Souza", - "marciioluucas", - "dariogabriel113", - "renato_oliveira", - "Schieck", - "fabianosantos.net", - "Victorfm2167", - "jwhitlock", - "RenanBirck", - "KadirTopal", - "rafaelsouza", - "LuccasBarbosa", - "ptcmariano", - "IvomarS", - "Cleiveson", - "ronaldoamaral", - "hostlionhospedarsites", - "rafiuske", - "blueridanus", - "srsaude", - "mklauck", - "MatCAlv", - "alispivak-demo", - "eufaloserio", - "dancasttro", - "mcpelegrin" - ] - }, - "Web/HTML/Applying_color": { - "modified": "2019-03-18T21:43:53.570Z", - "contributors": [ - "larimaza" - ] - }, - "Web/HTML/CORS_imagens_habilitadas": { - "modified": "2019-03-23T22:20:56.821Z", - "contributors": [ - "mak213k" - ] - }, - "Web/HTML/Canvas": { - "modified": "2020-01-16T19:34:10.555Z", - "contributors": [ - "marlonveiga-santos", - "alexandreab", - "besopmac", - "MarceloBRN", - "alipseight", - "juniorgarcia", - "erickzanardo", - "teoli", - "matheusmariano" - ] - }, - "Web/HTML/Canvas/A_basic_ray-caster": { - "modified": "2019-03-23T22:18:52.140Z", - "contributors": [ - "alipseight", - "juniorgarcia" - ] - }, - "Web/HTML/Controlando_verificacao_ortografica_em_formularios_HTML": { - "modified": "2019-03-23T22:27:29.620Z", - "contributors": [ - "sheldonled" - ] - }, - "Web/HTML/Dicas_para_criar_páginas_HTML_de_carregamento_rápido": { - "modified": "2020-07-16T22:22:33.399Z", - "contributors": [ - "teoli", - "gmerencio" - ] - }, - "Web/HTML/Element": { - "modified": "2020-10-20T02:01:24.831Z", - "contributors": [ - "SphinxKnight", - "marcus.simei", - "jrborbars", - "fcard", - "afonsopacifer", - "antoniojnr", - "teoli", - "luizmassa", - "robsonds", - "LeonardoPacheco", - "hsteffano" - ] - }, - "Web/HTML/Element/Audio": { - "modified": "2019-03-23T23:39:06.591Z", - "contributors": [ - "wbamberg", - "Gregory", - "teoli", - "mateus.m.luna", - "LeonardoPacheco" - ] - }, - "Web/HTML/Element/Heading_Elements": { - "modified": "2020-11-22T18:16:21.735Z", - "contributors": [ - "TohoSeiwa", - "wcqueiroz", - "Ikebhering", - "IanRamosC", - "ViniFG" - ] - }, - "Web/HTML/Element/Input": { - "modified": "2019-03-23T23:19:19.777Z", - "contributors": [ - "Disjuntores", - "srsaude", - "teoli", - "joaobarbosa" - ] - }, - "Web/HTML/Element/Input/button": { - "modified": "2020-10-15T22:27:35.557Z", - "contributors": [ - "Eliezer62" - ] - }, - "Web/HTML/Element/Input/checkbox": { - "modified": "2020-10-15T22:07:27.923Z", - "contributors": [ - "gustavando", - "trandreluis", - "anok", - "rafaeltaro", - "SphinxKnight", - "creis" - ] - }, - "Web/HTML/Element/Input/data": { - "modified": "2019-03-18T20:52:31.949Z", - "contributors": [ - "SphinxKnight", - "badarojr", - "beeblebrox3", - "marcelobonatto", - "mtsgeneroso", - "Ermesoml", - "alipseight" - ] - }, - "Web/HTML/Element/Input/password": { - "modified": "2020-10-15T22:06:49.756Z", - "contributors": [ - "liddack" - ] - }, - "Web/HTML/Element/Input/range": { - "modified": "2019-03-18T20:57:11.406Z", - "contributors": [ - "SphinxKnight", - "g-thome", - "Humberto", - "TecladistaProd" - ] - }, - "Web/HTML/Element/Input/time": { - "modified": "2020-10-15T22:07:24.929Z", - "contributors": [ - "liddack" - ] - }, - "Web/HTML/Element/Output": { - "modified": "2020-10-15T21:19:50.384Z", - "contributors": [ - "wbamberg", - "wallacemaxters", - "GPrimola", - "teoli", - "LeonardoPacheco", - "mateus.m.luna" - ] - }, - "Web/HTML/Element/Source": { - "modified": "2019-03-23T23:39:09.351Z", - "contributors": [ - "Rahmon", - "teoli", - "LeonardoPacheco" - ] - }, - "Web/HTML/Element/Video": { - "modified": "2019-03-23T23:39:11.809Z", - "contributors": [ - "wbamberg", - "KaykyB", - "Fernandolrs", - "rafaelcavalcante", - "teoli", - "LeonardoPacheco" - ] - }, - "Web/HTML/Element/a": { - "modified": "2020-10-15T21:21:57.553Z", - "contributors": [ - "Marrior-dot", - "BeatrizCavallieri", - "GabrielleGuida", - "gilmargn", - "MarcosNakamine", - "GPrimola", - "antoniojnr", - "teoli", - "marcoex", - "Graffitti", - "thiagoharry", - "vagnerleitte", - "fnsc.luis" - ] - }, - "Web/HTML/Element/abbr": { - "modified": "2020-10-15T21:24:34.973Z", - "contributors": [ - "GPrimola", - "fscholz", - "teoli", - "thiagoharry", - "alexfigueiredo" - ] - }, - "Web/HTML/Element/acronym": { - "modified": "2020-10-15T21:24:47.267Z", - "contributors": [ - "GPrimola", - "teoli", - "thiagoharry" - ] - }, - "Web/HTML/Element/address": { - "modified": "2019-03-23T23:26:26.807Z", - "contributors": [ - "coloringa", - "alisson-suzigan", - "teoli", - "thiagoharry" - ] - }, - "Web/HTML/Element/applet": { - "modified": "2019-03-23T23:09:08.718Z", - "contributors": [ - "marcosyoshihiro" - ] - }, - "Web/HTML/Element/area": { - "modified": "2019-03-23T23:15:00.929Z", - "contributors": [ - "Gregory", - "jgborges", - "teoli", - "Haroldohc" - ] - }, - "Web/HTML/Element/article": { - "modified": "2019-03-23T23:36:23.011Z", - "contributors": [ - "wbamberg", - "Jerffersonferreira", - "teoli", - "robsonds" - ] - }, - "Web/HTML/Element/aside": { - "modified": "2020-10-15T21:23:20.646Z", - "contributors": [ - "wbamberg", - "GPrimola", - "srsaude", - "teoli", - "Linc0" - ] - }, - "Web/HTML/Element/b": { - "modified": "2019-03-23T23:08:37.937Z", - "contributors": [ - "teoli", - "luizmassa" - ] - }, - "Web/HTML/Element/base": { - "modified": "2019-03-18T20:35:07.314Z", - "contributors": [ - "teodoz", - "rogeriopradoj", - "luizmassa", - "WagnerBeethoven" - ] - }, - "Web/HTML/Element/bdi": { - "modified": "2019-03-23T22:55:51.883Z", - "contributors": [ - "Gregory", - "cid360", - "jgborges" - ] - }, - "Web/HTML/Element/bdo": { - "modified": "2020-10-15T21:58:57.805Z", - "contributors": [ - "tiagofranca" - ] - }, - "Web/HTML/Element/big": { - "modified": "2020-10-15T22:19:28.136Z", - "contributors": [ - "jorgeclesio" - ] - }, - "Web/HTML/Element/blink": { - "modified": "2019-03-23T22:51:55.020Z", - "contributors": [ - "TatiTheFreaK", - "ti201501", - "macalha" - ] - }, - "Web/HTML/Element/blockquote": { - "modified": "2019-03-23T22:54:49.360Z", - "contributors": [ - "rafaelff", - "Barbosado", - "teoli" - ] - }, - "Web/HTML/Element/body": { - "modified": "2020-06-19T20:58:40.238Z", - "contributors": [ - "samuelmelo203", - "Clecio013", - "fbilinski", - "Ronicley", - "netoguimaraes" - ] - }, - "Web/HTML/Element/br": { - "modified": "2019-03-23T22:30:12.009Z", - "contributors": [ - "LucasGagno" - ] - }, - "Web/HTML/Element/button": { - "modified": "2020-01-06T10:39:09.221Z", - "contributors": [ - "pahbloo", - "Painatalman", - "ilariojunior", - "gulima", - "Cloves23", - "03-04-85" - ] - }, - "Web/HTML/Element/canvas": { - "modified": "2019-03-23T23:39:11.475Z", - "contributors": [ - "wbamberg", - "jorgematheus", - "MarceloBRN", - "teoli", - "jpalharini" - ] - }, - "Web/HTML/Element/caption": { - "modified": "2019-05-24T13:28:15.271Z", - "contributors": [ - "duduindo", - "Ca_uai", - "ooredroxoo" - ] - }, - "Web/HTML/Element/center": { - "modified": "2020-10-15T22:19:26.722Z", - "contributors": [ - "RapozaoBR", - "joaomatco213", - "jorgeclesio" - ] - }, - "Web/HTML/Element/cite": { - "modified": "2020-06-24T20:47:35.913Z", - "contributors": [ - "RaphaelBRodrigues", - "rodrigocode4", - "rafaelblink" - ] - }, - "Web/HTML/Element/code": { - "modified": "2020-10-15T22:20:52.767Z", - "contributors": [ - "BrunoSoaresGaldino" - ] - }, - "Web/HTML/Element/col": { - "modified": "2020-10-15T21:58:57.355Z", - "contributors": [ - "erikseyti" - ] - }, - "Web/HTML/Element/command": { - "modified": "2019-03-23T23:38:57.259Z", - "contributors": [ - "wbamberg", - "teoli", - "LeonardoPacheco" - ] - }, - "Web/HTML/Element/conteúdo": { - "modified": "2020-10-15T22:25:22.827Z", - "contributors": [ - "IsaqueFelipe" - ] - }, - "Web/HTML/Element/data": { - "modified": "2019-03-23T23:15:11.615Z", - "contributors": [ - "teoli", - "Haroldohc" - ] - }, - "Web/HTML/Element/datalist": { - "modified": "2020-07-24T12:07:37.628Z", - "contributors": [ - "mfranzke", - "wbamberg", - "teoli", - "LeonardoPacheco" - ] - }, - "Web/HTML/Element/dd": { - "modified": "2020-10-15T22:03:52.136Z", - "contributors": [ - "GutuGaluppo", - "GPrimola" - ] - }, - "Web/HTML/Element/del": { - "modified": "2019-03-23T23:05:32.110Z", - "contributors": [ - "minduka" - ] - }, - "Web/HTML/Element/details": { - "modified": "2019-03-23T23:38:58.865Z", - "contributors": [ - "wbamberg", - "teoli", - "LeonardoPacheco" - ] - }, - "Web/HTML/Element/dfn": { - "modified": "2019-03-23T23:15:43.009Z", - "contributors": [ - "teoli", - "eduardojmatos" - ] - }, - "Web/HTML/Element/dialog": { - "modified": "2020-10-15T22:00:30.887Z", - "contributors": [ - "euvanribeiro", - "Genildo_Lopes", - "marceloch2", - "chicojunior" - ] - }, - "Web/HTML/Element/dir": { - "modified": "2020-10-15T22:14:38.248Z", - "contributors": [ - "Mateusstslino" - ] - }, - "Web/HTML/Element/div": { - "modified": "2019-03-23T23:09:09.627Z", - "contributors": [ - "caioferrarezi", - "Marius2112", - "SubaruSama", - "lucrp", - "leleofg", - "marcosyoshihiro" - ] - }, - "Web/HTML/Element/dl": { - "modified": "2020-10-15T21:20:22.549Z", - "contributors": [ - "GPrimola", - "niltoncsr", - "fellyph", - "pkelbert", - "teoli", - "ken210" - ] - }, - "Web/HTML/Element/dt": { - "modified": "2019-03-23T22:48:59.353Z", - "contributors": [ - "Jerffersonferreira", - "vtmx" - ] - }, - "Web/HTML/Element/em": { - "modified": "2020-10-15T22:00:30.429Z", - "contributors": [ - "rodrigocode4", - "SaggitariusA" - ] - }, - "Web/HTML/Element/embed": { - "modified": "2020-01-23T00:06:41.612Z", - "contributors": [ - "LucasPereira", - "GPrimola", - "Tonihtml" - ] - }, - "Web/HTML/Element/fieldset": { - "modified": "2019-03-18T20:42:56.564Z", - "contributors": [ - "peas", - "otavioaquino", - "brunoalv-s", - "wmerussi", - "Gregory", - "LucasGagno" - ] - }, - "Web/HTML/Element/figcaption": { - "modified": "2020-10-15T22:34:28.797Z", - "contributors": [ - "hicksf" - ] - }, - "Web/HTML/Element/figura": { - "modified": "2019-03-23T23:22:45.109Z", - "contributors": [ - "wbamberg", - "jorgeclesio", - "teoli", - "Graffitti" - ] - }, - "Web/HTML/Element/footer": { - "modified": "2019-03-23T23:36:28.026Z", - "contributors": [ - "wbamberg", - "teoli", - "robsonds", - "ethertank" - ] - }, - "Web/HTML/Element/form": { - "modified": "2019-05-30T02:15:09.926Z", - "contributors": [ - "jorgeclesio", - "teoli", - "perrucho" - ] - }, - "Web/HTML/Element/head": { - "modified": "2019-03-23T22:21:23.704Z", - "contributors": [ - "mak213k" - ] - }, - "Web/HTML/Element/header": { - "modified": "2019-03-23T23:33:25.477Z", - "contributors": [ - "ilariojunior", - "wbamberg", - "GPrimola", - "Humberto", - "teoli", - "regisdiogo" - ] - }, - "Web/HTML/Element/hgroup": { - "modified": "2020-10-15T21:40:04.892Z", - "contributors": [ - "printf-ana", - "Vitor-droid", - "Maujor", - "gabrielmelo" - ] - }, - "Web/HTML/Element/hr": { - "modified": "2019-03-23T23:00:09.683Z", - "contributors": [ - "brunoqueiros" - ] - }, - "Web/HTML/Element/html": { - "modified": "2019-03-23T23:33:25.274Z", - "contributors": [ - "GPrimola", - "teoli", - "irvinggomes" - ] - }, - "Web/HTML/Element/i": { - "modified": "2019-03-23T22:12:56.021Z", - "contributors": [ - "rafaelcavalcante", - "sscaetite" - ] - }, - "Web/HTML/Element/iframe": { - "modified": "2020-10-15T21:30:21.333Z", - "contributors": [ - "fscholz", - "wbamberg", - "RenanBirck", - "jgborges", - "marcosyoshihiro" - ] - }, - "Web/HTML/Element/img": { - "modified": "2020-07-23T17:09:01.419Z", - "contributors": [ - "jrom99", - "ilariojunior", - "Wesley-181", - "dodireis", - "Jessica7", - "andrekutianski", - "jorgeclesio", - "marcosyoshihiro" - ] - }, - "Web/HTML/Element/ins": { - "modified": "2019-03-23T23:15:01.095Z", - "contributors": [ - "teoli", - "Haroldohc" - ] - }, - "Web/HTML/Element/label": { - "modified": "2019-09-13T15:44:10.344Z", - "contributors": [ - "Edionay", - "jyrodrigues", - "DavidL_Santos", - "teoli", - "Nathalino_Pacheco" - ] - }, - "Web/HTML/Element/legend": { - "modified": "2019-03-23T22:59:55.952Z", - "contributors": [ - "hbmuller" - ] - }, - "Web/HTML/Element/li": { - "modified": "2019-03-23T23:14:25.501Z", - "contributors": [ - "Aschlla", - "flpms" - ] - }, - "Web/HTML/Element/link": { - "modified": "2019-03-23T22:55:34.683Z", - "contributors": [ - "FahMont", - "Cloves23", - "teoli", - "tabytaa", - "jgborges" - ] - }, - "Web/HTML/Element/main": { - "modified": "2019-03-23T23:03:43.266Z", - "contributors": [ - "leandroruel", - "afonsopacifer" - ] - }, - "Web/HTML/Element/map": { - "modified": "2019-03-23T23:14:59.765Z", - "contributors": [ - "marcelobonatto", - "teoli", - "Haroldohc" - ] - }, - "Web/HTML/Element/mark": { - "modified": "2020-10-15T21:25:22.825Z", - "contributors": [ - "wbamberg", - "GPrimola", - "teoli", - "fellyph" - ] - }, - "Web/HTML/Element/marquee": { - "modified": "2019-03-23T23:05:53.169Z", - "contributors": [ - "Synaxis", - "luis-vmjr", - "luhluzinha123", - "Fernandolrs", - "Grohden", - "KaykyB", - "mcand" - ] - }, - "Web/HTML/Element/meta": { - "modified": "2019-03-18T20:58:16.076Z", - "contributors": [ - "Expablo", - "Joaohfer", - "adnamavlis", - "Gabriela-23", - "rotirotirafa", - "programacaocriativa" - ] - }, - "Web/HTML/Element/meter": { - "modified": "2020-10-15T21:19:31.461Z", - "contributors": [ - "fscholz", - "wbamberg", - "teoli", - "arthurpf", - "viniciuspires", - "fellyph", - "LeonardoPacheco" - ] - }, - "Web/HTML/Element/nav": { - "modified": "2019-03-23T23:39:09.069Z", - "contributors": [ - "wbamberg", - "GPrimola", - "teoli", - "mazulo", - "AluisioASG" - ] - }, - "Web/HTML/Element/nobr": { - "modified": "2019-03-23T23:02:27.507Z", - "contributors": [ - "acdcjunior" - ] - }, - "Web/HTML/Element/noscript": { - "modified": "2019-03-18T20:54:14.839Z", - "contributors": [ - "aryldo", - "jdruk", - "RobertoRodrigues" - ] - }, - "Web/HTML/Element/ol": { - "modified": "2019-03-23T23:00:24.283Z", - "contributors": [ - "Aschlla", - "Jerffersonferreira", - "jnrbo" - ] - }, - "Web/HTML/Element/optgroup": { - "modified": "2019-03-23T23:15:59.381Z", - "contributors": [ - "teoli", - "MichelW" - ] - }, - "Web/HTML/Element/option": { - "modified": "2019-03-23T23:08:11.548Z", - "contributors": [ - "srsaude", - "masimao" - ] - }, - "Web/HTML/Element/p": { - "modified": "2020-10-15T21:30:09.624Z", - "contributors": [ - "warkentien2", - "RobMota", - "Ikebhering", - "jorgeclesio", - "marcosyoshihiro" - ] - }, - "Web/HTML/Element/picture": { - "modified": "2019-03-23T22:14:52.966Z", - "contributors": [ - "lionzo", - "luisfvieira", - "gepetobio", - "Fernandolrs", - "jtec-info" - ] - }, - "Web/HTML/Element/pre": { - "modified": "2019-03-23T22:49:38.308Z", - "contributors": [ - "brunoaugustosilva", - "rai200890" - ] - }, - "Web/HTML/Element/progress": { - "modified": "2020-10-15T21:19:22.513Z", - "contributors": [ - "fscholz", - "wbamberg", - "teoli", - "Athos" - ] - }, - "Web/HTML/Element/q": { - "modified": "2020-10-15T21:53:18.961Z", - "contributors": [ - "fscholz", - "murillomartins" - ] - }, - "Web/HTML/Element/rt": { - "modified": "2019-03-23T23:14:59.910Z", - "contributors": [ - "teoli", - "Haroldohc" - ] - }, - "Web/HTML/Element/ruby": { - "modified": "2019-03-23T23:15:11.786Z", - "contributors": [ - "ygormaximo", - "teoli", - "Haroldohc" - ] - }, - "Web/HTML/Element/s": { - "modified": "2020-10-15T22:24:14.325Z", - "contributors": [ - "Rogerio-Viana" - ] - }, - "Web/HTML/Element/script": { - "modified": "2020-09-11T10:57:54.213Z", - "contributors": [ - "Aldrei", - "icaromh", - "wellington1993", - "Cloves23", - "kvnol" - ] - }, - "Web/HTML/Element/section": { - "modified": "2019-12-14T08:16:21.902Z", - "contributors": [ - "lcsdeveloper", - "soter19", - "digoribeiro", - "wbamberg", - "ArturGuedes", - "alisson-suzigan", - "dann", - "brunoeduardo", - "leosilva-rs", - "teoli", - "mazulo" - ] - }, - "Web/HTML/Element/select": { - "modified": "2019-03-23T23:10:25.032Z", - "contributors": [ - "srsaude", - "danilovaz" - ] - }, - "Web/HTML/Element/span": { - "modified": "2020-10-15T21:22:22.723Z", - "contributors": [ - "almeidaalex", - "GPrimola", - "teoli", - "vagnerleitte" - ] - }, - "Web/HTML/Element/strong": { - "modified": "2020-04-01T13:41:40.583Z", - "contributors": [ - "hcnunes", - "Luan-Michel", - "wcqueiroz", - "helton-mori-dev", - "brandelli", - "fvaladares", - "Felipebros", - "israeljunior", - "Eric-Madureira" - ] - }, - "Web/HTML/Element/style": { - "modified": "2019-03-23T23:03:07.094Z", - "contributors": [ - "jvitor222", - "jgborges" - ] - }, - "Web/HTML/Element/summary": { - "modified": "2019-03-23T23:39:14.453Z", - "contributors": [ - "wbamberg", - "andrekutianski", - "IgorGoncalves", - "teoli", - "LeonardoPacheco" - ] - }, - "Web/HTML/Element/table": { - "modified": "2019-03-23T23:19:11.495Z", - "contributors": [ - "lucasjmatias", - "teoli", - "pfurtado" - ] - }, - "Web/HTML/Element/template": { - "modified": "2019-03-23T22:28:18.497Z", - "contributors": [ - "josuecintra", - "claudiolcastro", - "raphaguasta" - ] - }, - "Web/HTML/Element/textarea": { - "modified": "2020-10-15T22:08:16.624Z", - "contributors": [ - "brasmon8351", - "Leodma", - "RicardoLovatel" - ] - }, - "Web/HTML/Element/tfoot": { - "modified": "2020-10-15T22:22:00.242Z", - "contributors": [ - "chucky515" - ] - }, - "Web/HTML/Element/th": { - "modified": "2020-10-15T22:28:54.791Z", - "contributors": [ - "VitorBrreto", - "Rogerio-Viana" - ] - }, - "Web/HTML/Element/time": { - "modified": "2019-03-23T23:34:52.239Z", - "contributors": [ - "wbamberg", - "guilhermeHenryk", - "AlanCezarAraujo", - "teoli", - "fnsc.luis" - ] - }, - "Web/HTML/Element/title": { - "modified": "2020-10-15T21:30:07.882Z", - "contributors": [ - "jpreuss", - "RobMota", - "antoniojnr", - "marcosyoshihiro" - ] - }, - "Web/HTML/Element/track": { - "modified": "2020-10-15T22:13:43.726Z", - "contributors": [ - "Auugustocesar" - ] - }, - "Web/HTML/Element/ul": { - "modified": "2019-03-23T22:26:34.814Z", - "contributors": [ - "Aschlla" - ] - }, - "Web/HTML/Element/var": { - "modified": "2019-03-23T22:44:24.198Z", - "contributors": [ - "perrucho" - ] - }, - "Web/HTML/Element/wbr": { - "modified": "2019-03-23T23:15:00.705Z", - "contributors": [ - "wbamberg", - "SphinxKnight", - "josielrocha", - "teoli", - "Haroldohc" - ] - }, - "Web/HTML/Elementos_block-level": { - "modified": "2020-02-07T04:59:22.048Z", - "contributors": [ - "SphinxKnight", - "rcsilvadev", - "klisostom", - "jorgeclesio", - "MarcoBrunoBR", - "jaimemaretoli" - ] - }, - "Web/HTML/Global_attributes": { - "modified": "2019-03-23T22:29:49.023Z", - "contributors": [ - "GPrimola", - "UelioNobre", - "andrekutianski", - "teoli" - ] - }, - "Web/HTML/Global_attributes/accesskey": { - "modified": "2020-10-15T22:22:48.066Z", - "contributors": [ - "jovair", - "brunopulis" - ] - }, - "Web/HTML/Global_attributes/autocapitalize": { - "modified": "2020-10-15T22:30:46.263Z", - "contributors": [ - "klayton" - ] - }, - "Web/HTML/Global_attributes/class": { - "modified": "2019-03-23T22:29:54.038Z", - "contributors": [ - "fcard" - ] - }, - "Web/HTML/Global_attributes/contenteditable": { - "modified": "2020-10-15T22:31:33.906Z", - "contributors": [ - "ooVictorFranco" - ] - }, - "Web/HTML/Global_attributes/data-*": { - "modified": "2019-03-23T22:16:25.954Z", - "contributors": [ - "linconkusunoki", - "julianopoveda" - ] - }, - "Web/HTML/Global_attributes/hidden": { - "modified": "2020-11-23T09:20:48.582Z", - "contributors": [ - "gustavando", - "eduardovivi", - "gulima", - "sheldonled" - ] - }, - "Web/HTML/Global_attributes/id": { - "modified": "2019-03-18T20:38:37.479Z", - "contributors": [ - "digoribeiro", - "cristianofromagio" - ] - }, - "Web/HTML/Global_attributes/itemprop": { - "modified": "2019-03-23T22:05:54.045Z", - "contributors": [ - "lucashe1997" - ] - }, - "Web/HTML/Global_attributes/lang": { - "modified": "2020-10-15T22:14:08.418Z", - "contributors": [ - "ViniciusMatias" - ] - }, - "Web/HTML/Global_attributes/tabindex": { - "modified": "2020-05-19T09:39:36.399Z", - "contributors": [ - "lucasecdb", - "cristianofromagio" - ] - }, - "Web/HTML/Global_attributes/title": { - "modified": "2019-03-23T22:08:26.903Z", - "contributors": [ - "alisson-suzigan" - ] - }, - "Web/HTML/HTML5": { - "modified": "2019-11-20T18:24:04.168Z", - "contributors": [ - "sambrmg", - "Fernandolrs", - "matheussilvasantos", - "netoguimaraes", - "jaimemaretoli", - "macalha", - "teoli", - "lfelipev", - "leandro2103", - "rodrigopadula", - "mauricio.araldi", - "PedroFelipe", - "phenriqueleao", - "apereira2001", - "RodrigoAlmeidaSp" - ] - }, - "Web/HTML/HTML5/Introduction_to_HTML5": { - "modified": "2019-03-23T23:38:50.368Z", - "contributors": [ - "flmidia", - "teoli", - "eduardodx" - ] - }, - "Web/HTML/Inline_elemente": { - "modified": "2019-03-23T23:13:50.417Z", - "contributors": [ - "rennan.martini" - ] - }, - "Web/HTML/Optimizing_your_pages_for_speculative_parsing": { - "modified": "2019-03-23T23:35:26.036Z", - "contributors": [ - "teoli", - "claudio.adalberto.silva" - ] - }, - "Web/HTML/Preloading_content": { - "modified": "2020-10-15T22:14:26.980Z", - "contributors": [ - "BeatrizCavallieri", - "w4rlooc", - "duduindo", - "philgruneich", - "tuliocribeiro", - "Expablo" - ] - }, - "Web/HTML/Quirks_Mode_and_Standards_Mode": { - "modified": "2019-03-23T23:05:38.681Z", - "contributors": [ - "chrisdavidmills", - "criskubiaki", - "luisOtavio", - "macalha" - ] - }, - "Web/HTML/ReferenciaHTML": { - "modified": "2019-09-09T07:19:45.753Z", - "contributors": [ - "SphinxKnight", - "julio-elipse", - "wbamberg", - "dricupello", - "fabianosantos.net" - ] - }, - "Web/HTML/Using_HTML5_audio_and_video": { - "modified": "2019-03-23T23:39:05.441Z", - "contributors": [ - "diogocezar", - "rubensnovaes", - "teoli", - "just_peter", - "Junior201313", - "eduardodx", - "LeonardoPacheco" - ] - }, - "Web/HTML/Using_the_application_cache": { - "modified": "2019-03-23T23:33:12.384Z", - "contributors": [ - "Etrusco", - "isaiasBR", - "bruno-vaz", - "Jerffersonferreira", - "fabianosantos.net", - "wmsbill", - "rogeriomoraessp", - "teoli", - "ethertank", - "netfuzzer123" - ] - }, - "Web/HTML/favicon": { - "modified": "2019-05-05T00:27:21.844Z", - "contributors": [ - "willianpascoal" - ] - }, - "Web/HTML/formatos_midia_suportados": { - "modified": "2019-03-23T22:44:08.372Z", - "contributors": [ - "MarceloBonifazio", - "yuriploc", - "brunoeduardo" - ] - }, - "Web/HTML/microformatos": { - "modified": "2019-09-03T11:27:26.864Z", - "contributors": [ - "luisfvieira" - ] - }, - "Web/HTTP": { - "modified": "2020-09-23T19:42:27.917Z", - "contributors": [ - "viniciusfinger", - "Rech", - "julio-elipse", - "0limpi0", - "Schieck", - "andrekutianski", - "jeanonline", - "akwaryo", - "megaday", - "Anonymous" - ] - }, - "Web/HTTP/Authentication": { - "modified": "2019-03-18T20:54:05.177Z", - "contributors": [ - "ViniciusMatias" - ] - }, - "Web/HTTP/Basico_sobre_HTTP": { - "modified": "2019-03-18T20:54:14.334Z", - "contributors": [ - "mauromattos00", - "wdot789" - ] - }, - "Web/HTTP/Basico_sobre_HTTP/Identifying_resources_on_the_Web": { - "modified": "2019-03-23T22:04:02.281Z", - "contributors": [ - "krisfertig", - "rbertoche", - "marciioluucas" - ] - }, - "Web/HTTP/Basico_sobre_HTTP/MIME_types": { - "modified": "2019-12-16T17:35:45.160Z", - "contributors": [ - "JpOnline", - "hugojunior", - "marcusedu" - ] - }, - "Web/HTTP/Basico_sobre_HTTP/MIME_types/Complete_list_of_MIME_types": { - "modified": "2019-03-23T22:04:21.860Z", - "contributors": [ - "khalid_ait", - "berbare", - "lpdouglas" - ] - }, - "Web/HTTP/CORS/Errors": { - "modified": "2019-03-18T21:20:00.561Z", - "contributors": [ - "nchevobbe" - ] - }, - "Web/HTTP/CORS/Errors/CORSDidNotSucceed": { - "modified": "2020-07-16T19:35:30.072Z", - "contributors": [ - "uilmo.carneiro", - "giovana-morais" - ] - }, - "Web/HTTP/CORS/Errors/CORSMissingAllowOrigin": { - "modified": "2019-08-15T10:13:47.925Z", - "contributors": [ - "tinogomes" - ] - }, - "Web/HTTP/CORS/Errors/CORSNotSupportingCredentials": { - "modified": "2020-11-04T12:36:34.140Z", - "contributors": [ - "matruskan" - ] - }, - "Web/HTTP/CORS/Errors/CORSRequestNotHttp": { - "modified": "2020-07-24T12:02:11.941Z", - "contributors": [ - "aguiar02", - "gabrielalves96" - ] - }, - "Web/HTTP/CSP": { - "modified": "2020-10-20T08:49:00.342Z", - "contributors": [ - "lucasrenod", - "cafweb", - "macalha", - "rosemberglpi", - "hllrsr", - "jwhitlock", - "pedrotcaraujo", - "meldenne" - ] - }, - "Web/HTTP/Compressão": { - "modified": "2019-03-18T21:19:41.947Z", - "contributors": [ - "krisfertig" - ] - }, - "Web/HTTP/Content_negotiation": { - "modified": "2019-10-26T16:55:23.137Z", - "contributors": [ - "felipelube", - "Jürgen Jeka" - ] - }, - "Web/HTTP/Content_negotiation/List_of_default_Accept_values": { - "modified": "2019-06-29T15:45:26.059Z", - "contributors": [ - "rafaelff" - ] - }, - "Web/HTTP/Controle_Acesso_CORS": { - "modified": "2020-10-15T21:51:46.835Z", - "contributors": [ - "kenchen12", - "herculan0", - "joao-rafael", - "Rondinelly", - "lshumbleprogrammer", - "rbuzatto", - "paulocoe", - "marcosalpereira", - "rodolphopicolo", - "guilhermeiobbi", - "art", - "xikaos", - "andrekutianski" - ] - }, - "Web/HTTP/Cookies": { - "modified": "2020-05-19T15:14:13.958Z", - "contributors": [ - "eestein", - "helton-mori-dev", - "julio-elipse", - "gabcs07" - ] - }, - "Web/HTTP/Feature_Policy": { - "modified": "2020-10-15T22:32:05.540Z", - "contributors": [ - "mfuji09" - ] - }, - "Web/HTTP/Feature_Policy/Using_Feature_Policy": { - "modified": "2020-07-20T20:48:22.250Z", - "contributors": [ - "FernandoKGA" - ] - }, - "Web/HTTP/Gerenciamento_de_Conexão_em_HTTP_1.x": { - "modified": "2019-03-23T22:25:52.431Z", - "contributors": [ - "Fernandolrs", - "DiegoTelles" - ] - }, - "Web/HTTP/HTTP": { - "modified": "2020-01-20T16:42:39.746Z", - "contributors": [ - "Neiva07", - "henry700", - "GPrimola", - "coloringa" - ] - }, - "Web/HTTP/Headers": { - "modified": "2020-08-02T21:34:50.722Z", - "contributors": [ - "gutoribeiro", - "davidalves1", - "eziotristao", - "helton-mori-dev", - "secato", - "pedroberbel", - "GPrimola", - "luiz787", - "Lazz", - "yagoazedias", - "fscholz", - "andrekutianski" - ] - }, - "Web/HTTP/Headers/Accept": { - "modified": "2020-10-15T22:26:07.441Z", - "contributors": [ - "FernandoKGA" - ] - }, - "Web/HTTP/Headers/Accept-CH": { - "modified": "2020-10-15T22:26:08.419Z", - "contributors": [ - "FernandoKGA" - ] - }, - "Web/HTTP/Headers/Accept-CH-Lifetime": { - "modified": "2020-10-15T22:26:09.466Z", - "contributors": [ - "FernandoKGA" - ] - }, - "Web/HTTP/Headers/Accept-Charset": { - "modified": "2020-10-15T22:26:09.572Z", - "contributors": [ - "FernandoKGA" - ] - }, - "Web/HTTP/Headers/Accept-Encoding": { - "modified": "2020-10-15T22:26:26.705Z", - "contributors": [ - "FernandoKGA" - ] - }, - "Web/HTTP/Headers/Accept-Language": { - "modified": "2020-10-15T22:21:08.686Z", - "contributors": [ - "kibutzzz" - ] - }, - "Web/HTTP/Headers/Accept-Patch": { - "modified": "2020-10-15T22:26:27.309Z", - "contributors": [ - "FernandoKGA" - ] - }, - "Web/HTTP/Headers/Accept-Ranges": { - "modified": "2020-10-15T22:26:36.739Z", - "contributors": [ - "FernandoKGA" - ] - }, - "Web/HTTP/Headers/Access-Control-Allow-Credentials": { - "modified": "2020-10-15T22:26:50.350Z", - "contributors": [ - "FernandoKGA" - ] - }, - "Web/HTTP/Headers/Access-Control-Allow-Headers": { - "modified": "2020-10-15T22:26:53.489Z", - "contributors": [ - "FernandoKGA" - ] - }, - "Web/HTTP/Headers/Access-Control-Allow-Methods": { - "modified": "2020-10-15T22:26:56.233Z", - "contributors": [ - "FernandoKGA" - ] - }, - "Web/HTTP/Headers/Access-Control-Allow-Origin": { - "modified": "2020-10-15T22:02:18.454Z", - "contributors": [ - "francinysalles", - "jkdrangel" - ] - }, - "Web/HTTP/Headers/Access-Control-Expose-Headers": { - "modified": "2020-10-15T22:27:11.135Z", - "contributors": [ - "FernandoKGA" - ] - }, - "Web/HTTP/Headers/Access-Control-Max-Age": { - "modified": "2020-10-15T22:27:11.158Z", - "contributors": [ - "FernandoKGA" - ] - }, - "Web/HTTP/Headers/Access-Control-Request-Headers": { - "modified": "2020-10-15T22:07:42.625Z", - "contributors": [ - "EversonRRMoura" - ] - }, - "Web/HTTP/Headers/Access-Control-Request-Method": { - "modified": "2020-10-15T22:27:11.209Z", - "contributors": [ - "FernandoKGA" - ] - }, - "Web/HTTP/Headers/Age": { - "modified": "2020-10-15T22:07:25.015Z", - "contributors": [ - "jamrocha" - ] - }, - "Web/HTTP/Headers/Allow": { - "modified": "2020-02-11T10:36:24.890Z", - "contributors": [ - "FernandoKGA" - ] - }, - "Web/HTTP/Headers/Alt-Svc": { - "modified": "2020-10-15T22:27:23.038Z", - "contributors": [ - "FernandoKGA" - ] - }, - "Web/HTTP/Headers/Authorization": { - "modified": "2020-02-15T01:32:30.446Z", - "contributors": [ - "FernandoKGA" - ] - }, - "Web/HTTP/Headers/Cache-Control": { - "modified": "2020-10-22T20:01:06.178Z", - "contributors": [ - "rogeriodegoiania", - "jamrocha" - ] - }, - "Web/HTTP/Headers/Clear-Site-Data": { - "modified": "2020-10-15T22:27:31.884Z", - "contributors": [ - "FernandoKGA" - ] - }, - "Web/HTTP/Headers/Conexão": { - "modified": "2020-10-15T22:08:10.001Z", - "contributors": [ - "FernandoKGA", - "duduindo", - "mrseoliveira" - ] - }, - "Web/HTTP/Headers/Content-Disposition": { - "modified": "2020-10-15T22:27:55.693Z", - "contributors": [ - "eduardocruz", - "FernandoKGA" - ] - }, - "Web/HTTP/Headers/Content-Encoding": { - "modified": "2020-10-15T22:27:52.523Z", - "contributors": [ - "FernandoKGA" - ] - }, - "Web/HTTP/Headers/Content-Language": { - "modified": "2020-10-15T22:14:20.024Z", - "contributors": [ - "coloringa" - ] - }, - "Web/HTTP/Headers/Content-Length": { - "modified": "2020-10-15T22:09:26.720Z", - "contributors": [ - "jamrocha" - ] - }, - "Web/HTTP/Headers/Content-Location": { - "modified": "2020-10-15T22:25:41.262Z", - "contributors": [ - "FernandoKGA" - ] - }, - "Web/HTTP/Headers/Content-Range": { - "modified": "2020-10-15T22:29:25.800Z", - "contributors": [ - "FernandoKGA" - ] - }, - "Web/HTTP/Headers/Content-Security-Policy": { - "modified": "2020-10-15T22:29:29.169Z", - "contributors": [ - "FernandoKGA" - ] - }, - "Web/HTTP/Headers/Content-Security-Policy-Report-Only": { - "modified": "2020-10-15T22:31:19.501Z", - "contributors": [ - "FernandoKGA" - ] - }, - "Web/HTTP/Headers/Content-Type": { - "modified": "2020-10-15T21:55:31.773Z", - "contributors": [ - "khaosdoctor" - ] - }, - "Web/HTTP/Headers/Cookie": { - "modified": "2020-10-15T22:29:26.513Z", - "contributors": [ - "FernandoKGA" - ] - }, - "Web/HTTP/Headers/Cookie2": { - "modified": "2020-10-15T22:29:27.166Z", - "contributors": [ - "FernandoKGA" - ] - }, - "Web/HTTP/Headers/Cross-Origin-Resource-Policy": { - "modified": "2020-10-15T22:29:30.347Z", - "contributors": [ - "FernandoKGA" - ] - }, - "Web/HTTP/Headers/DNT": { - "modified": "2020-10-15T22:29:39.511Z", - "contributors": [ - "FernandoKGA" - ] - }, - "Web/HTTP/Headers/DPR": { - "modified": "2020-10-15T22:29:39.224Z", - "contributors": [ - "FernandoKGA" - ] - }, - "Web/HTTP/Headers/Date": { - "modified": "2020-10-15T22:31:16.510Z", - "contributors": [ - "FernandoKGA" - ] - }, - "Web/HTTP/Headers/Device-Memory": { - "modified": "2020-10-15T22:31:19.616Z", - "contributors": [ - "FernandoKGA" - ] - }, - "Web/HTTP/Headers/Digest": { - "modified": "2020-10-15T22:31:16.637Z", - "contributors": [ - "FernandoKGA" - ] - }, - "Web/HTTP/Headers/ETag": { - "modified": "2020-10-15T22:31:10.148Z", - "contributors": [ - "deniscapeto", - "augustowebd.mozilla", - "MoraisG" - ] - }, - "Web/HTTP/Headers/Early-Data": { - "modified": "2020-10-15T22:31:17.142Z", - "contributors": [ - "FernandoKGA" - ] - }, - "Web/HTTP/Headers/Expect": { - "modified": "2020-10-15T22:31:20.718Z", - "contributors": [ - "FernandoKGA" - ] - }, - "Web/HTTP/Headers/Expect-CT": { - "modified": "2020-10-15T22:31:22.739Z", - "contributors": [ - "FernandoKGA" - ] - }, - "Web/HTTP/Headers/Expires": { - "modified": "2020-10-15T22:07:21.086Z", - "contributors": [ - "SphinxKnight", - "jamrocha" - ] - }, - "Web/HTTP/Headers/Feature-Policy": { - "modified": "2020-10-15T22:32:03.095Z", - "contributors": [ - "FernandoKGA" - ] - }, - "Web/HTTP/Headers/Forwarded": { - "modified": "2020-10-15T22:31:19.681Z", - "contributors": [ - "FernandoKGA" - ] - }, - "Web/HTTP/Headers/From": { - "modified": "2020-10-15T22:31:17.738Z", - "contributors": [ - "FernandoKGA" - ] - }, - "Web/HTTP/Headers/Host": { - "modified": "2020-10-15T21:56:25.368Z", - "contributors": [ - "cesarvn2010" - ] - }, - "Web/HTTP/Headers/If-Match": { - "modified": "2020-10-15T22:31:31.434Z", - "contributors": [ - "FernandoKGA" - ] - }, - "Web/HTTP/Headers/If-Modified-Since": { - "modified": "2020-10-15T21:56:17.428Z", - "contributors": [ - "WaGjUb" - ] - }, - "Web/HTTP/Headers/If-None-Match": { - "modified": "2020-10-15T22:31:32.703Z", - "contributors": [ - "FernandoKGA" - ] - }, - "Web/HTTP/Headers/If-Range": { - "modified": "2020-10-15T22:31:33.474Z", - "contributors": [ - "FernandoKGA" - ] - }, - "Web/HTTP/Headers/If-Unmodified-Since": { - "modified": "2020-10-15T22:05:25.445Z", - "contributors": [ - "gnuns", - "francinysalles" - ] - }, - "Web/HTTP/Headers/Keep-Alive": { - "modified": "2020-10-15T22:18:39.285Z", - "contributors": [ - "pedrochaves", - "luan0ap" - ] - }, - "Web/HTTP/Headers/Large-Allocation": { - "modified": "2020-10-15T22:31:49.734Z", - "contributors": [ - "FernandoKGA" - ] - }, - "Web/HTTP/Headers/Last-Modified": { - "modified": "2020-10-15T21:56:35.716Z", - "contributors": [ - "cesarvn2010" - ] - }, - "Web/HTTP/Headers/Link": { - "modified": "2020-10-15T22:31:34.762Z", - "contributors": [ - "FernandoKGA" - ] - }, - "Web/HTTP/Headers/Localização": { - "modified": "2020-10-15T22:25:31.903Z", - "contributors": [ - "FernandoKGA" - ] - }, - "Web/HTTP/Headers/NEL": { - "modified": "2020-07-08T20:29:31.709Z", - "contributors": [ - "FernandoKGA" - ] - }, - "Web/HTTP/Headers/Origin": { - "modified": "2020-10-15T22:31:35.312Z", - "contributors": [ - "FernandoKGA" - ] - }, - "Web/HTTP/Headers/Pragma": { - "modified": "2020-10-15T22:31:35.228Z", - "contributors": [ - "FernandoKGA" - ] - }, - "Web/HTTP/Headers/Proxy-Authenticate": { - "modified": "2020-10-15T22:31:36.533Z", - "contributors": [ - "FernandoKGA" - ] - }, - "Web/HTTP/Headers/Proxy-Authorization": { - "modified": "2020-07-09T11:07:07.810Z", - "contributors": [ - "FernandoKGA" - ] - }, - "Web/HTTP/Headers/Public-Key-Pins": { - "modified": "2020-10-15T22:31:35.978Z", - "contributors": [ - "FernandoKGA" - ] - }, - "Web/HTTP/Headers/Public-Key-Pins-Report-Only": { - "modified": "2020-10-15T22:31:47.341Z", - "contributors": [ - "FernandoKGA" - ] - }, - "Web/HTTP/Headers/Range": { - "modified": "2020-10-15T22:31:38.126Z", - "contributors": [ - "FernandoKGA" - ] - }, - "Web/HTTP/Headers/Referer": { - "modified": "2020-10-15T22:26:06.843Z", - "contributors": [ - "FernandoKGA" - ] - }, - "Web/HTTP/Headers/Referrer-Policy": { - "modified": "2020-10-15T22:31:38.598Z", - "contributors": [ - "kenchen12", - "FernandoKGA" - ] - }, - "Web/HTTP/Headers/Retry-After": { - "modified": "2020-10-15T21:58:41.599Z", - "contributors": [ - "dgadelha" - ] - }, - "Web/HTTP/Headers/Save-Data": { - "modified": "2020-10-15T22:31:38.329Z", - "contributors": [ - "FernandoKGA" - ] - }, - "Web/HTTP/Headers/Sec-Fetch-Site": { - "modified": "2020-10-15T22:34:11.157Z", - "contributors": [ - "MatheusNtg" - ] - }, - "Web/HTTP/Headers/Server": { - "modified": "2020-10-15T22:07:06.159Z", - "contributors": [ - "francinysalles" - ] - }, - "Web/HTTP/Headers/Server-Timing": { - "modified": "2020-10-15T22:31:38.528Z", - "contributors": [ - "FernandoKGA" - ] - }, - "Web/HTTP/Headers/Set-Cookie": { - "modified": "2020-10-15T21:56:19.509Z", - "contributors": [ - "claudiombsilva", - "thiagorock22", - "WaGjUb" - ] - }, - "Web/HTTP/Headers/Set-Cookie/SameSite": { - "modified": "2020-10-15T22:31:49.288Z", - "contributors": [ - "ooVictorFranco" - ] - }, - "Web/HTTP/Headers/Set-Cookie2": { - "modified": "2020-10-15T22:31:37.734Z", - "contributors": [ - "FernandoKGA" - ] - }, - "Web/HTTP/Headers/SourceMap": { - "modified": "2020-10-15T22:20:50.501Z", - "contributors": [ - "ogeidexe" - ] - }, - "Web/HTTP/Headers/Strict-Transport-Security": { - "modified": "2020-10-15T22:09:01.413Z", - "contributors": [ - "darleizillmer" - ] - }, - "Web/HTTP/Headers/TE": { - "modified": "2020-10-15T22:31:39.430Z", - "contributors": [ - "FernandoKGA" - ] - }, - "Web/HTTP/Headers/Timing-Allow-Origin": { - "modified": "2020-10-15T22:31:39.349Z", - "contributors": [ - "FernandoKGA" - ] - }, - "Web/HTTP/Headers/Tk": { - "modified": "2020-10-15T22:31:39.173Z", - "contributors": [ - "FernandoKGA" - ] - }, - "Web/HTTP/Headers/Trailer": { - "modified": "2020-10-15T22:31:40.917Z", - "contributors": [ - "FernandoKGA" - ] - }, - "Web/HTTP/Headers/Transfer-Encoding": { - "modified": "2020-10-15T22:31:41.759Z", - "contributors": [ - "FernandoKGA" - ] - }, - "Web/HTTP/Headers/Upgrade-Insecure-Requests": { - "modified": "2020-10-15T22:05:25.350Z", - "contributors": [ - "francinysalles" - ] - }, - "Web/HTTP/Headers/User-Agent": { - "modified": "2020-10-15T22:31:39.984Z", - "contributors": [ - "FernandoKGA" - ] - }, - "Web/HTTP/Headers/Vary": { - "modified": "2020-10-15T22:31:40.954Z", - "contributors": [ - "FernandoKGA" - ] - }, - "Web/HTTP/Headers/Via": { - "modified": "2020-10-15T22:31:40.512Z", - "contributors": [ - "FernandoKGA" - ] - }, - "Web/HTTP/Headers/WWW-Authenticate": { - "modified": "2020-10-15T22:07:55.835Z", - "contributors": [ - "FernandoKGA", - "bmansur" - ] - }, - "Web/HTTP/Headers/Want-Digest": { - "modified": "2020-10-15T22:31:40.550Z", - "contributors": [ - "FernandoKGA" - ] - }, - "Web/HTTP/Headers/Warning": { - "modified": "2020-10-15T22:31:39.879Z", - "contributors": [ - "FernandoKGA" - ] - }, - "Web/HTTP/Headers/X-Content-Type-Options": { - "modified": "2020-10-15T21:55:34.398Z", - "contributors": [ - "khaosdoctor" - ] - }, - "Web/HTTP/Headers/X-DNS-Prefetch-Control": { - "modified": "2020-10-15T22:11:22.598Z", - "contributors": [ - "LucasKluge" - ] - }, - "Web/HTTP/Headers/X-Forwarded-For": { - "modified": "2020-10-15T22:31:44.027Z", - "contributors": [ - "FernandoKGA" - ] - }, - "Web/HTTP/Headers/X-Forwarded-Host": { - "modified": "2020-10-15T22:31:44.446Z", - "contributors": [ - "FernandoKGA" - ] - }, - "Web/HTTP/Headers/X-Forwarded-Proto": { - "modified": "2020-10-15T22:31:43.726Z", - "contributors": [ - "FernandoKGA" - ] - }, - "Web/HTTP/Headers/X-Frame-Options": { - "modified": "2020-10-15T22:31:47.974Z", - "contributors": [ - "FernandoKGA" - ] - }, - "Web/HTTP/Headers/X-XSS-Protection": { - "modified": "2020-10-15T22:31:47.343Z", - "contributors": [ - "FernandoKGA" - ] - }, - "Web/HTTP/Mensagens": { - "modified": "2020-04-19T17:43:58.667Z", - "contributors": [ - "satoLG", - "jamrocha" - ] - }, - "Web/HTTP/Methods": { - "modified": "2020-10-15T21:51:11.621Z", - "contributors": [ - "julio-elipse", - "fplucas", - "thiagosgarcia", - "superdiegonunes", - "andrekutianski", - "helcorin" - ] - }, - "Web/HTTP/Methods/CONNECT": { - "modified": "2020-10-15T21:58:22.687Z", - "contributors": [ - "marciioluucas" - ] - }, - "Web/HTTP/Methods/DELETE": { - "modified": "2020-10-15T21:58:32.285Z", - "contributors": [ - "calexandrepcjr", - "flgmjr", - "almeidaalex", - "marciioluucas" - ] - }, - "Web/HTTP/Methods/GET": { - "modified": "2020-10-15T21:51:45.627Z", - "contributors": [ - "krisfertig", - "marciioluucas", - "andrekutianski" - ] - }, - "Web/HTTP/Methods/HEAD": { - "modified": "2020-10-15T22:14:53.554Z", - "contributors": [ - "ViniciusMatias" - ] - }, - "Web/HTTP/Methods/OPTIONS": { - "modified": "2020-10-15T21:56:04.830Z", - "contributors": [ - "impadalko", - "Mega85" - ] - }, - "Web/HTTP/Methods/PATCH": { - "modified": "2020-03-26T15:24:48.895Z", - "contributors": [ - "joão.ramires", - "GustavoOS" - ] - }, - "Web/HTTP/Methods/POST": { - "modified": "2020-10-15T22:12:56.254Z", - "contributors": [ - "caukazama", - "thiagojc89", - "krisfertig" - ] - }, - "Web/HTTP/Methods/PUT": { - "modified": "2020-10-15T22:14:53.561Z", - "contributors": [ - "ViniciusMatias" - ] - }, - "Web/HTTP/Methods/TRACE": { - "modified": "2020-10-15T22:04:21.753Z", - "contributors": [ - "solfier", - "fabio-r-souza" - ] - }, - "Web/HTTP/Overview": { - "modified": "2020-09-23T20:02:12.544Z", - "contributors": [ - "viniciusfinger", - "K4mek", - "gustavoluchi", - "bruno_scatena", - "viniciusbds", - "julio-elipse", - "GPrimola", - "SubaruSama", - "CarlosAlbertoSzygalski", - "renatodantas", - "holdonmax" - ] - }, - "Web/HTTP/Redirecionamento": { - "modified": "2019-03-18T21:39:38.468Z", - "contributors": [ - "FelipeBergmann" - ] - }, - "Web/HTTP/Server-Side_Access_Control": { - "modified": "2020-04-19T11:26:06.291Z", - "contributors": [ - "marcio1002" - ] - }, - "Web/HTTP/Session": { - "modified": "2019-03-18T21:38:28.348Z", - "contributors": [ - "krisfertig", - "zscaiosi" - ] - }, - "Web/HTTP/Status": { - "modified": "2020-09-30T05:44:50.985Z", - "contributors": [ - "nunezgarcia548", - "José_Santana", - "macalha", - "pedrochaves", - "PauloItalo17", - "jamrocha", - "atiladelcanton", - "MarcosRocha", - "Felipeandradee", - "AlexandreVelloso", - "zenithpolar", - "alexandresn", - "raduq", - "Igor_Araujo", - "MateusGabi", - "Jens.B" - ] - }, - "Web/HTTP/Status/100": { - "modified": "2020-10-15T22:08:25.420Z", - "contributors": [ - "ferfabricio" - ] - }, - "Web/HTTP/Status/101": { - "modified": "2019-08-30T14:26:22.601Z", - "contributors": [ - "GMBarragam" - ] - }, - "Web/HTTP/Status/103": { - "modified": "2020-10-15T22:26:01.901Z", - "contributors": [ - "FernandoKGA" - ] - }, - "Web/HTTP/Status/200": { - "modified": "2020-10-15T21:55:04.602Z", - "contributors": [ - "macalha", - "raduq", - "jackiecard" - ] - }, - "Web/HTTP/Status/201": { - "modified": "2020-10-15T21:59:06.317Z", - "contributors": [ - "raduq", - "akanagusku", - "tchaguitos" - ] - }, - "Web/HTTP/Status/202": { - "modified": "2019-12-24T03:35:51.332Z", - "contributors": [ - "euvanribeiro", - "FernandoKGA" - ] - }, - "Web/HTTP/Status/203": { - "modified": "2019-03-18T21:27:54.664Z", - "contributors": [ - "ferfabricio" - ] - }, - "Web/HTTP/Status/204": { - "modified": "2020-10-15T21:58:52.674Z", - "contributors": [ - "macalha", - "fhecorrea", - "salomaosnff" - ] - }, - "Web/HTTP/Status/205": { - "modified": "2019-12-23T21:44:23.232Z", - "contributors": [ - "doougui", - "allansli", - "navarro" - ] - }, - "Web/HTTP/Status/206": { - "modified": "2020-10-15T22:25:54.629Z", - "contributors": [ - "FernandoKGA" - ] - }, - "Web/HTTP/Status/300": { - "modified": "2019-12-27T11:18:36.624Z", - "contributors": [ - "FernandoKGA" - ] - }, - "Web/HTTP/Status/301": { - "modified": "2020-10-15T22:24:18.785Z", - "contributors": [ - "FernandoKGA" - ] - }, - "Web/HTTP/Status/302": { - "modified": "2020-10-15T22:10:28.043Z", - "contributors": [ - "FernandoKGA", - "raduq", - "CGReinhold" - ] - }, - "Web/HTTP/Status/303": { - "modified": "2020-10-15T22:04:22.978Z", - "contributors": [ - "marcelobonatto" - ] - }, - "Web/HTTP/Status/304": { - "modified": "2020-10-15T22:00:19.115Z", - "contributors": [ - "macalha", - "bartolomeu.gusella" - ] - }, - "Web/HTTP/Status/307": { - "modified": "2020-10-15T22:11:27.802Z", - "contributors": [ - "dancamboim", - "CGReinhold" - ] - }, - "Web/HTTP/Status/308": { - "modified": "2020-10-15T22:25:15.141Z", - "contributors": [ - "FernandoKGA" - ] - }, - "Web/HTTP/Status/400": { - "modified": "2020-10-01T08:48:37.177Z", - "contributors": [ - "kendalbaba8", - "hmgoncalves", - "glasswalk3r", - "sergioflores-j" - ] - }, - "Web/HTTP/Status/401": { - "modified": "2020-12-01T19:39:24.191Z", - "contributors": [ - "caio-gi25-me", - "izabelvidal", - "macalha", - "bmansur", - "carlosmarx" - ] - }, - "Web/HTTP/Status/402": { - "modified": "2020-10-15T22:25:28.519Z", - "contributors": [ - "FernandoKGA", - "RaulDeMelo" - ] - }, - "Web/HTTP/Status/403": { - "modified": "2020-10-15T21:56:18.319Z", - "contributors": [ - "macalha", - "carlosmarx" - ] - }, - "Web/HTTP/Status/404": { - "modified": "2020-10-15T21:57:08.819Z", - "contributors": [ - "pedropaulosuzuki" - ] - }, - "Web/HTTP/Status/405": { - "modified": "2019-03-18T21:09:45.460Z", - "contributors": [ - "dathin67" - ] - }, - "Web/HTTP/Status/406": { - "modified": "2020-10-15T22:25:54.038Z", - "contributors": [ - "FernandoKGA" - ] - }, - "Web/HTTP/Status/407": { - "modified": "2020-10-15T22:14:55.526Z", - "contributors": [ - "ViniciusMatias" - ] - }, - "Web/HTTP/Status/408": { - "modified": "2019-08-20T21:08:30.185Z", - "contributors": [ - "macalha", - "lucasrenod", - "SphinxKnight", - "11808s8", - "alanlucian" - ] - }, - "Web/HTTP/Status/409": { - "modified": "2020-10-12T18:38:04.385Z", - "contributors": [ - "enriquerenebr", - "macalha", - "augustowebd.mozilla", - "wilsonferro" - ] - }, - "Web/HTTP/Status/410": { - "modified": "2020-10-15T22:09:41.751Z", - "contributors": [ - "macalha" - ] - }, - "Web/HTTP/Status/411": { - "modified": "2019-03-18T21:25:46.143Z", - "contributors": [ - "jamrocha" - ] - }, - "Web/HTTP/Status/412": { - "modified": "2020-10-15T22:26:08.284Z", - "contributors": [ - "FernandoKGA" - ] - }, - "Web/HTTP/Status/413": { - "modified": "2019-08-30T13:19:23.971Z", - "contributors": [ - "GMBarragam" - ] - }, - "Web/HTTP/Status/414": { - "modified": "2019-03-23T22:05:49.854Z", - "contributors": [ - "pedropaulosuzuki" - ] - }, - "Web/HTTP/Status/415": { - "modified": "2019-03-23T22:08:19.304Z", - "contributors": [ - "VitorHFLopes" - ] - }, - "Web/HTTP/Status/416": { - "modified": "2020-10-15T22:26:05.801Z", - "contributors": [ - "FernandoKGA" - ] - }, - "Web/HTTP/Status/417": { - "modified": "2019-09-11T14:11:12.818Z", - "contributors": [ - "Rogerio-Viana", - "raduq" - ] - }, - "Web/HTTP/Status/418": { - "modified": "2020-10-15T22:09:34.458Z", - "contributors": [ - "raduq", - "macalha" - ] - }, - "Web/HTTP/Status/422": { - "modified": "2019-05-17T09:52:53.330Z", - "contributors": [ - "raduq" - ] - }, - "Web/HTTP/Status/425": { - "modified": "2020-10-15T22:18:43.120Z", - "contributors": [ - "raduq" - ] - }, - "Web/HTTP/Status/426": { - "modified": "2019-05-17T09:28:05.733Z", - "contributors": [ - "raduq" - ] - }, - "Web/HTTP/Status/428": { - "modified": "2019-05-17T09:48:01.976Z", - "contributors": [ - "raduq" - ] - }, - "Web/HTTP/Status/429": { - "modified": "2019-03-23T22:11:06.523Z", - "contributors": [ - "matheuscorreia", - "MilesGitGud" - ] - }, - "Web/HTTP/Status/431": { - "modified": "2020-01-05T14:49:44.248Z", - "contributors": [ - "FernandoKGA" - ] - }, - "Web/HTTP/Status/451": { - "modified": "2020-10-15T22:09:34.570Z", - "contributors": [ - "macalha" - ] - }, - "Web/HTTP/Status/500": { - "modified": "2020-10-15T22:06:42.031Z", - "contributors": [ - "omauriciomaciel", - "francinysalles" - ] - }, - "Web/HTTP/Status/501": { - "modified": "2020-10-15T22:17:52.081Z", - "contributors": [ - "lucianoac", - "raduq" - ] - }, - "Web/HTTP/Status/502": { - "modified": "2020-10-15T22:20:07.323Z", - "contributors": [ - "moraesdam" - ] - }, - "Web/HTTP/Status/503": { - "modified": "2020-10-15T22:09:37.984Z", - "contributors": [ - "nunezgarcia548", - "macalha" - ] - }, - "Web/HTTP/Status/504": { - "modified": "2020-10-15T21:58:42.777Z", - "contributors": [ - "Rogerio-Viana", - "caiobrentano" - ] - }, - "Web/HTTP/Status/505": { - "modified": "2019-03-18T21:25:04.554Z", - "contributors": [ - "macalha" - ] - }, - "Web/HTTP/Status/506": { - "modified": "2020-01-05T13:08:39.666Z", - "contributors": [ - "FernandoKGA" - ] - }, - "Web/HTTP/Status/507": { - "modified": "2019-12-27T11:31:39.081Z", - "contributors": [ - "FernandoKGA" - ] - }, - "Web/HTTP/Status/508": { - "modified": "2019-09-10T09:19:50.989Z", - "contributors": [ - "lucianoac" - ] - }, - "Web/HTTP/Status/510": { - "modified": "2020-01-05T13:00:04.462Z", - "contributors": [ - "FernandoKGA" - ] - }, - "Web/HTTP/Status/511": { - "modified": "2019-10-29T08:55:24.737Z", - "contributors": [ - "niknicius" - ] - }, - "Web/JavaScript": { - "modified": "2020-10-08T23:48:25.254Z", - "contributors": [ - "ricardo.passos.cr", - "SphinxKnight", - "julio-elipse", - "natth42", - "renoirsousa", - "andregarzia", - "marcelomelofreitas", - "KennyMack", - "haskellcamargo", - "Franck_Moreira", - "danielmelogpi", - "gcacars", - "ti.marcosdias", - "teoli", - "viniciusdacal", - "Lutchia", - "paulociecomp", - "mauricio.araldi", - "marinalimeira", - "ThiagoCase", - "helderdarocha", - "rodrigopadula", - "jswisher", - "netfuzzer33", - "jaydson", - "tauame" - ] - }, - "Web/JavaScript/A_re-introduction_to_JavaScript": { - "modified": "2020-05-27T17:14:30.277Z", - "contributors": [ - "ruanpetterson", - "nailtonvieira", - "michaelycus", - "mateus.mlo", - "jhbalestrin", - "Sheppy", - "TiagoWinehouse", - "victorwpbastos", - "ruda", - "ti.marcosdias", - "fredericksilva", - "Scr1pt3r", - "trestini", - "ThiagoMatos", - "angelorubin", - "jlcarvalho", - "TheBorba", - "teoli", - "gtcarlos", - "arthur.luiz" - ] - }, - "Web/JavaScript/About_JavaScript": { - "modified": "2020-03-12T19:38:41.483Z", - "contributors": [ - "fcard", - "teoli", - "kuni71" - ] - }, - "Web/JavaScript/Data_structures": { - "modified": "2020-08-07T10:04:07.537Z", - "contributors": [ - "rafhaelfitzpatrick", - "GuilhermePiovesan", - "luizamunk", - "larafelix", - "gabrielbarros28", - "BrunoThomaz", - "renansouza", - "rafaelcavalcante", - "HelderSi", - "wendellpereira", - "dmop", - "wesleycoder", - "WederPachecoSilva", - "Domicio", - "teoli", - "jagascript" - ] - }, - "Web/JavaScript/Enumerabilidade_e_posse_de_propriedades": { - "modified": "2020-03-12T19:44:27.885Z", - "contributors": [ - "jaimemaretoli", - "cantoniazzi" - ] - }, - "Web/JavaScript/Equality_comparisons_and_sameness": { - "modified": "2020-03-12T19:41:26.724Z", - "contributors": [ - "babieste", - "VictorGom3s", - "phillipnunes", - "alinedmelo", - "alexandresn" - ] - }, - "Web/JavaScript/EventLoop": { - "modified": "2020-03-12T19:41:03.578Z", - "contributors": [ - "GuilhermePiovesan", - "Rondinelly", - "oirodolfo", - "ruda", - "jaimeschettini", - "Felipe_Baravieira" - ] - }, - "Web/JavaScript/Guide": { - "modified": "2020-03-12T19:37:56.671Z", - "contributors": [ - "SphinxKnight", - "Franck_Moreira", - "Danilson_Veloso", - "MarceloBRN", - "felipetesc", - "evertonmss", - "carlospereira9372", - "teoli", - "regisdiogo", - "ethertank" - ] - }, - "Web/JavaScript/Guide/Closures": { - "modified": "2020-04-07T04:11:27.586Z", - "contributors": [ - "henriquegeremia", - "KarineLiuti", - "eduardothemoura", - "babieste", - "wbamberg", - "Qiua", - "vagnerleitte", - "welitonderesende", - "akfzambrana", - "AlanCezarAraujo", - "dansoah", - "cirocosta", - "teoli", - "ffrulani", - "carlosrberto", - "Machado" - ] - }, - "Web/JavaScript/Guide/Coleções_chaveadas": { - "modified": "2020-03-12T19:42:42.934Z", - "contributors": [ - "Franck_Moreira" - ] - }, - "Web/JavaScript/Guide/Declarações": { - "modified": "2020-03-12T19:39:22.758Z", - "contributors": [ - "igormmatos", - "TheMrHetch", - "viniciusdacal", - "mahenrique", - "Franck_Moreira", - "DiegoGrande", - "MarceloBRN", - "pkelbert" - ] - }, - "Web/JavaScript/Guide/Detalhes_do_Modelo_do_Objeto": { - "modified": "2020-10-29T17:14:14.553Z", - "contributors": [ - "pedropaulo91", - "FranklynKleiton", - "igorsmasc", - "wbamberg", - "nailtonvieira", - "rsr90", - "tassionoronha", - "MuralhadeAdriano", - "victor-borges", - "fabiomiranda", - "AlanCezarAraujo", - "teoli", - "lisy", - "alexandresn" - ] - }, - "Web/JavaScript/Guide/Expressions_and_Operators": { - "modified": "2020-11-13T16:04:53.998Z", - "contributors": [ - "bragaus", - "webfelipemaia", - "dowgssss", - "Franck_Moreira", - "gustavo8555", - "odisseumau", - "MarceloBRN", - "pkelbert", - "teoli", - "atilafassina" - ] - }, - "Web/JavaScript/Guide/Formatando_texto": { - "modified": "2020-03-12T19:42:35.835Z", - "contributors": [ - "Franck_Moreira", - "odisseumau", - "reuel.jonathan" - ] - }, - "Web/JavaScript/Guide/Funções": { - "modified": "2020-03-12T19:40:21.813Z", - "contributors": [ - "webfelipemaia", - "MateusHirt", - "arxdsilva", - "luc4smoreira", - "martinusso", - "hctsantos", - "Franck_Moreira", - "odisseumau", - "lfelipev", - "melostbr", - "rvNN", - "fabianobn", - "ewertonorg" - ] - }, - "Web/JavaScript/Guide/Igualdade": { - "modified": "2019-03-23T23:25:15.038Z", - "contributors": [ - "teoli", - "fernando.karpinski" - ] - }, - "Web/JavaScript/Guide/Indexed_collections": { - "modified": "2020-12-03T14:44:28.503Z", - "contributors": [ - "bragaus", - "felima2017", - "hctsantos", - "jppcel", - "thiagosaife", - "doomsterinc", - "felipetesc" - ] - }, - "Web/JavaScript/Guide/Inheritance_and_the_prototype_chain": { - "modified": "2020-03-12T19:39:21.410Z", - "contributors": [ - "deadkff01", - "duduindo", - "lms7", - "lucgauer", - "Timer00", - "melostbr", - "VinicioSantos", - "everton3x", - "hudsontavares", - "ericcristhiano", - "Felipe_Baravieira", - "luisfmsouza", - "LucasCaixeta", - "antoniomquadrosfilho" - ] - }, - "Web/JavaScript/Guide/Introduction": { - "modified": "2020-03-12T19:41:02.913Z", - "contributors": [ - "LucasGabrielSI", - "luc4smoreira", - "ledebour", - "mahenrique", - "Franck_Moreira", - "Danilson_Veloso", - "frcnetto", - "joaomarcoslopes", - "carolinne", - "gomez", - "melostbr", - "PedroTorresMaschio" - ] - }, - "Web/JavaScript/Guide/Iteratores_e_geradores": { - "modified": "2020-08-05T20:59:34.854Z", - "contributors": [ - "jonas-alves", - "lcelso", - "lesimoes", - "MarceloFAugusto", - "emersonlaurentino", - "upnic", - "iFgR", - "felipetesc" - ] - }, - "Web/JavaScript/Guide/Keyed_collections": { - "modified": "2020-03-12T19:44:28.942Z", - "contributors": [ - "jaimemaretoli", - "raphaellima8" - ] - }, - "Web/JavaScript/Guide/Lacos_e_iteracoes": { - "modified": "2020-03-12T19:41:00.064Z", - "contributors": [ - "SphinxKnight", - "odjr", - "Killdragon", - "Gregory", - "Franck_Moreira", - "odisseumau", - "alinehx", - "Felipe_Baravieira" - ] - }, - "Web/JavaScript/Guide/Meta_programming": { - "modified": "2020-07-06T21:45:33.616Z", - "contributors": [ - "brasmon8351", - "lcelso", - "Darksoulsong", - "WagnerSilveira", - "evertonmss" - ] - }, - "Web/JavaScript/Guide/Módulos": { - "modified": "2020-10-15T22:31:27.603Z", - "contributors": [ - "LucioCarvalhoDev", - "brasmon8351" - ] - }, - "Web/JavaScript/Guide/Numeros_e_datas": { - "modified": "2020-11-19T03:04:52.069Z", - "contributors": [ - "SphinxKnight", - "bragaus", - "Franck_Moreira", - "fabiobasso", - "felipebool", - "odisseumau", - "thiagosaife", - "lfelipev", - "TiagoAmaral", - "MarceloBRN" - ] - }, - "Web/JavaScript/Guide/Regular_Expressions": { - "modified": "2020-11-20T11:07:29.286Z", - "contributors": [ - "bragaus", - "leonardogs0919", - "PedroIgnacio", - "luisfvieira", - "rodrigocode4", - "Twodio", - "niltonslf", - "labforcode", - "gutuler", - "GabrielAlvez", - "Tiagosb", - "JardelUiliam", - "Feijor", - "fininhors", - "Franck_Moreira", - "pauloaug", - "programadorthi", - "odisseumau", - "edupsousa", - "teoli", - "marciotoledo", - "ethertank", - "danielpsrj" - ] - }, - "Web/JavaScript/Guide/Sintaxe_e_tipos": { - "modified": "2020-03-12T19:42:40.865Z", - "contributors": [ - "Franck_Moreira" - ] - }, - "Web/JavaScript/Guide/Trabalhando_com_Objetos": { - "modified": "2019-10-02T09:41:18.709Z", - "contributors": [ - "reinaldoamaralstudio", - "Marcustap", - "diegolaquino", - "thienry", - "caio687", - "SphinxKnight", - "everton0991", - "andre-violin", - "camposdev", - "daliannyvieira", - "cezaraugusto", - "raphaellima8", - "Danilson_Veloso", - "jigs12", - "LucasRamos", - "teoli", - "fernando.karpinski" - ] - }, - "Web/JavaScript/Guide/Usando_promises": { - "modified": "2020-04-19T11:41:18.110Z", - "contributors": [ - "RodrigoWebDev", - "lopesboa", - "marciioluucas", - "alexat13", - "joao-rafael", - "Jeovano", - "Tiagosb" - ] - }, - "Web/JavaScript/Guide/Values,_variables,_and_literals": { - "modified": "2020-10-29T14:01:41.068Z", - "contributors": [ - "wcqueiroz", - "PieterVeldman", - "Dikz", - "dbconrado", - "mahenrique", - "Franck_Moreira", - "MichelMentzFernandes", - "rodrigo-designer", - "melostbr", - "Domicio", - "raduq", - "werikson.h@gmail.com", - "Jonathanfk", - "ewertonorg", - "felipe.uliana", - "pkelbert", - "teoli", - "raphaelfabeni", - "arielserafini" - ] - }, - "Web/JavaScript/Introduction_to_Object-Oriented_JavaScript": { - "modified": "2020-06-07T23:51:22.220Z", - "contributors": [ - "thalesruan", - "lucasinocente", - "Janjos", - "mensonones", - "lourencoccc", - "victormaestri", - "caio_araujo", - "raphaellima8", - "leandroruel", - "filipetorres", - "filipeluiz", - "dragonares5", - "marvin52", - "caioguedes", - "ronybezerra", - "GabrielLidenor", - "pabloff9", - "ti.marcosdias", - "Webysther", - "brunoeduardo", - "DolbyCpp", - "RebeloX", - "mateusleon", - "ewertonorg", - "phillippimenta", - "masimao", - "lucaspedroza", - "teoli", - "acaua", - "FilipeLinhares", - "augustowebd" - ] - }, - "Web/JavaScript/JavaScript_technologies_overview": { - "modified": "2019-05-10T14:34:34.570Z", - "contributors": [ - "SaggitariusA", - "jessicamorim42", - "angelorubin", - "caioabe", - "marcio-ti", - "IanRamosC", - "teoli", - "cleitongalvao", - "treax" - ] - }, - "Web/JavaScript/Language_Resources": { - "modified": "2020-03-12T19:43:20.868Z", - "contributors": [ - "christophergomes", - "Danilson_Veloso" - ] - }, - "Web/JavaScript/Memory_Management": { - "modified": "2020-03-12T19:40:29.251Z", - "contributors": [ - "silvaw", - "LincePotiguara", - "gcacars", - "AlanCezarAraujo" - ] - }, - "Web/JavaScript/Reference": { - "modified": "2019-03-23T23:33:55.653Z", - "contributors": [ - "Gutemberg", - "teoli", - "ggviana", - "ethertank" - ] - }, - "Web/JavaScript/Reference/About": { - "modified": "2020-03-12T19:38:32.625Z", - "contributors": [ - "alissonbovenzo", - "teoli", - "ggviana" - ] - }, - "Web/JavaScript/Reference/Classes": { - "modified": "2020-10-15T21:39:06.651Z", - "contributors": [ - "henriquegeremia", - "Danilo", - "28Rasc", - "crisleitaoguerra", - "lesimoes", - "stephanogiuseppe", - "fscholz", - "TiagoDanin", - "rodrigocode4", - "JhonnathaAndrade", - "SphinxKnight", - "brunozache", - "danilosetubal", - "thiagolimaa", - "lucasclazer", - "lmcarreiro", - "flavio-jr", - "shuminyang", - "juloko", - "lourencoccc", - "Arashk", - "deadkff01", - "davidcorbetta", - "ldoamaral", - "ti.marcosdias", - "ThiagoSchetini", - "felipetesc", - "haskellcamargo", - "jonicas" - ] - }, - "Web/JavaScript/Reference/Classes/constructor": { - "modified": "2020-10-21T08:28:05.769Z", - "contributors": [ - "DaMaGi", - "deadkff01", - "ThiagoSchetini" - ] - }, - "Web/JavaScript/Reference/Classes/extends": { - "modified": "2020-10-15T21:39:13.563Z", - "contributors": [ - "fscholz", - "SphinxKnight", - "raduq" - ] - }, - "Web/JavaScript/Reference/Classes/static": { - "modified": "2020-10-15T21:39:09.808Z", - "contributors": [ - "joaopedroaats", - "helton-mori-dev", - "fscholz", - "SphinxKnight", - "leticiacostadias", - "diegofernandez", - "kdex", - "raduq" - ] - }, - "Web/JavaScript/Reference/Deprecated_and_obsolete_features": { - "modified": "2020-03-12T19:44:38.541Z", - "contributors": [ - "Gabrieleiro", - "houstondapaz", - "gabrielppeixoto", - "raduq" - ] - }, - "Web/JavaScript/Reference/Errors": { - "modified": "2020-03-12T19:44:14.768Z", - "contributors": [ - "gutoribeiro", - "fscholz" - ] - }, - "Web/JavaScript/Reference/Errors/Cant_access_lexical_declaration_before_init": { - "modified": "2020-03-12T19:49:26.166Z", - "contributors": [ - "ViniciusMatias" - ] - }, - "Web/JavaScript/Reference/Errors/Cant_access_property": { - "modified": "2020-03-12T19:48:10.197Z", - "contributors": [ - "igormmatos" - ] - }, - "Web/JavaScript/Reference/Errors/Fata_parênteses_após_lista_argumento": { - "modified": "2020-03-12T19:45:19.574Z", - "contributors": [ - "re-andrade1987", - "Tiagoc8402" - ] - }, - "Web/JavaScript/Reference/Errors/Fecha_chaves_esquecida_apos_lista_propriedades": { - "modified": "2020-03-12T19:47:22.337Z", - "contributors": [ - "marcelobonatto" - ] - }, - "Web/JavaScript/Reference/Errors/For-each-in_loops_are_deprecated": { - "modified": "2020-03-12T19:46:42.577Z", - "contributors": [ - "thiagosaife" - ] - }, - "Web/JavaScript/Reference/Errors/Illegal_character": { - "modified": "2020-03-12T19:47:11.284Z", - "contributors": [ - "tomascco", - "Docinho" - ] - }, - "Web/JavaScript/Reference/Errors/Invalid_array_length": { - "modified": "2020-03-12T19:48:00.493Z", - "contributors": [ - "thiagosaife" - ] - }, - "Web/JavaScript/Reference/Errors/Invalid_assignment_left-hand_side": { - "modified": "2020-03-12T19:47:13.957Z", - "contributors": [ - "Maycoooonm" - ] - }, - "Web/JavaScript/Reference/Errors/Invalid_const_assignment": { - "modified": "2020-03-12T19:49:08.927Z", - "contributors": [ - "Lennoard" - ] - }, - "Web/JavaScript/Reference/Errors/Invalid_date": { - "modified": "2020-03-12T19:47:58.766Z", - "contributors": [ - "thiagosaife" - ] - }, - "Web/JavaScript/Reference/Errors/JSON_bad_parse": { - "modified": "2020-03-12T19:48:06.055Z", - "contributors": [ - "JonatasFAlves" - ] - }, - "Web/JavaScript/Reference/Errors/Missing_colon_after_property_id": { - "modified": "2020-03-12T19:46:39.740Z", - "contributors": [ - "CristianoLima" - ] - }, - "Web/JavaScript/Reference/Errors/Missing_curly_after_function_body": { - "modified": "2020-06-11T07:31:16.349Z", - "contributors": [ - "EnzoLeCarvalho" - ] - }, - "Web/JavaScript/Reference/Errors/Missing_formal_parameter": { - "modified": "2020-03-12T19:46:52.360Z", - "contributors": [ - "danielmalves" - ] - }, - "Web/JavaScript/Reference/Errors/Missing_semicolon_before_statement": { - "modified": "2020-04-24T18:53:47.335Z", - "contributors": [ - "JoaoSantos65", - "bruncs", - "rubenfaria" - ] - }, - "Web/JavaScript/Reference/Errors/Negative_repetition_count": { - "modified": "2020-03-12T19:49:26.923Z", - "contributors": [ - "ViniciusMatias" - ] - }, - "Web/JavaScript/Reference/Errors/No_variable_name": { - "modified": "2020-03-12T19:47:33.508Z", - "contributors": [ - "danemmanuel" - ] - }, - "Web/JavaScript/Reference/Errors/Not_a_codepoint": { - "modified": "2020-03-12T19:49:24.646Z", - "contributors": [ - "ViniciusMatias" - ] - }, - "Web/JavaScript/Reference/Errors/Not_a_function": { - "modified": "2020-03-12T19:46:51.395Z", - "contributors": [ - "vanessa-ariel", - "VictorGom3s", - "mvieira-kpmg", - "lucianoac", - "rubenfaria" - ] - }, - "Web/JavaScript/Reference/Errors/NãoNomeado_funcão_declaração": { - "modified": "2020-03-12T19:47:57.308Z", - "contributors": [ - "LucianoCalsolari", - "re-andrade1987" - ] - }, - "Web/JavaScript/Reference/Errors/Não_definido": { - "modified": "2020-03-12T19:45:05.709Z", - "contributors": [ - "eduardovivi", - "emilianocarvalho", - "Fernandolrs", - "FelipeLima" - ] - }, - "Web/JavaScript/Reference/Errors/Precision_range": { - "modified": "2020-04-17T23:39:16.233Z", - "contributors": [ - "ViniciusMatias" - ] - }, - "Web/JavaScript/Reference/Errors/Property_access_denied": { - "modified": "2020-03-12T19:48:57.838Z", - "contributors": [ - "luan0ap" - ] - }, - "Web/JavaScript/Reference/Errors/Read-only": { - "modified": "2020-03-12T19:47:21.681Z", - "contributors": [ - "VitorHFLopes" - ] - }, - "Web/JavaScript/Reference/Errors/Redeclared_parameter": { - "modified": "2020-03-12T19:49:14.206Z", - "contributors": [ - "leobarros" - ] - }, - "Web/JavaScript/Reference/Errors/Stmt_after_return": { - "modified": "2020-03-12T19:44:07.787Z", - "contributors": [ - "gidaltilopes", - "raduq" - ] - }, - "Web/JavaScript/Reference/Errors/Too_much_recursion": { - "modified": "2020-03-12T19:49:13.727Z", - "contributors": [ - "umpierrefp" - ] - }, - "Web/JavaScript/Reference/Errors/Undeclared_var": { - "modified": "2020-03-12T19:44:41.988Z", - "contributors": [ - "tmoraes" - ] - }, - "Web/JavaScript/Reference/Errors/Undefined_prop": { - "modified": "2020-03-12T19:49:23.239Z", - "contributors": [ - "ViniciusMatias" - ] - }, - "Web/JavaScript/Reference/Errors/Unexpected_token": { - "modified": "2020-03-12T19:46:47.848Z", - "contributors": [ - "naozuka", - "marcelobonatto", - "rubenfaria" - ] - }, - "Web/JavaScript/Reference/Errors/Unexpected_type": { - "modified": "2020-03-12T19:46:50.924Z", - "contributors": [ - "DeividhyTonetti", - "LucasSouza6", - "mauricionsantos", - "rubenfaria" - ] - }, - "Web/JavaScript/Reference/Errors/Unterminated_string_literal": { - "modified": "2020-03-12T19:45:00.554Z", - "contributors": [ - "pratosnaweb" - ] - }, - "Web/JavaScript/Reference/Functions": { - "modified": "2020-10-20T11:16:27.457Z", - "contributors": [ - "dorfs", - "Trauvin", - "Gabriela-23", - "Glaydson", - "renoirsousa", - "rafaelbertelli", - "Jerffersonferreira", - "thiagobitencourt", - "grocholski", - "boniattirodrigo", - "Durtto", - "fscholz" - ] - }, - "Web/JavaScript/Reference/Functions/Arrow_functions": { - "modified": "2020-10-15T21:30:14.177Z", - "contributors": [ - "thgo", - "diogenesfranca", - "hansobvius", - "eduardosoller", - "leandrowf", - "mari1248", - "SphinxKnight", - "lesimoes", - "alexnum", - "rivajunior", - "RodrigoOler", - "lucasmedeiros" - ] - }, - "Web/JavaScript/Reference/Functions/Definicoes_metodos": { - "modified": "2020-10-15T21:41:38.555Z", - "contributors": [ - "LuizinGustavo", - "michael-nishikawa" - ] - }, - "Web/JavaScript/Reference/Functions/Parametros_Predefinidos": { - "modified": "2020-11-16T09:54:39.736Z", - "contributors": [ - "mateusvelleda", - "rafaelcavalcante", - "Roger-Melo", - "SphinxKnight", - "alissonperez", - "fernandosavio", - "KennyMack", - "AlanCezarAraujo" - ] - }, - "Web/JavaScript/Reference/Functions/arguments": { - "modified": "2020-03-12T19:42:08.040Z", - "contributors": [ - "Arlon", - "Lovelex", - "peaonunes", - "lffg", - "renatodantas", - "greevin", - "YurePereira", - "icaromh" - ] - }, - "Web/JavaScript/Reference/Functions/get": { - "modified": "2020-08-27T04:51:38.379Z", - "contributors": [ - "SandroMiguel", - "rodrigocode4", - "hbarcelos" - ] - }, - "Web/JavaScript/Reference/Functions/rest_parameters": { - "modified": "2020-03-12T19:42:42.252Z", - "contributors": [ - "gudeck", - "SphinxKnight", - "matheussilvasantos", - "KennyMack", - "raduq" - ] - }, - "Web/JavaScript/Reference/Functions/set": { - "modified": "2020-03-12T19:44:37.360Z", - "contributors": [ - "chicabomb", - "filipetorres", - "willianbriotto" - ] - }, - "Web/JavaScript/Reference/Global_Objects": { - "modified": "2020-03-12T19:38:37.086Z", - "contributors": [ - "misabraga", - "thiagoh", - "SphinxKnight", - "teoli", - "vagnerleitte", - "Norbert" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Array": { - "modified": "2019-05-03T12:21:47.299Z", - "contributors": [ - "thelimarenan", - "caiocaly", - "ManoelLobo", - "rafaelbezerra195", - "gutoribeiro", - "kdex", - "biracruz", - "marcoaure", - "dsbezerra", - "deyvid0123", - "deyvidyury", - "raduq", - "RodolfoSilva", - "FrancisWagner", - "euconectei", - "teoli", - "xhximenes", - "Sheppy" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Array/@@iterator": { - "modified": "2019-03-23T22:35:56.703Z", - "contributors": [ - "jjmars" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Array/@@unscopables": { - "modified": "2020-10-15T22:03:58.150Z", - "contributors": [ - "Filipe-Souza", - "marciioluucas" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Array/Reduce": { - "modified": "2020-11-06T11:41:26.392Z", - "contributors": [ - "ricardo.passos.cr", - "duduindo", - "krisamorim", - "mablook", - "balini", - "WandersonDavid", - "rubenmarcus", - "mateusvelleda", - "smoothfall", - "rbuzatto", - "geekcom", - "SphinxKnight", - "guardezi", - "ChrisAmora", - "danilosetubal", - "elvismdnin", - "eltonmesquita", - "gabrielsimas", - "rafaelcavalcante", - "ThaleSelaht", - "alexgwolff", - "FrancisWagner", - "ErickWendel" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Array/ReduceRight": { - "modified": "2020-10-15T21:39:00.467Z", - "contributors": [ - "mateusvelleda", - "luisfvieira", - "raduq" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Array/concat": { - "modified": "2019-06-03T12:42:22.079Z", - "contributors": [ - "diegoarcega", - "soleeweb", - "teoli", - "Leikovsk" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Array/contains": { - "modified": "2020-10-15T21:30:32.690Z", - "contributors": [ - "mateusvelleda", - "wbamberg", - "RodolfoSilva", - "emmanueldaher", - "cirocosta" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Array/copyWithin": { - "modified": "2019-03-23T22:35:55.533Z", - "contributors": [ - "igorc2", - "jjmars" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Array/entries": { - "modified": "2019-03-23T22:35:59.312Z", - "contributors": [ - "igorc2", - "fime", - "jjmars" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Array/every": { - "modified": "2020-10-15T21:41:16.789Z", - "contributors": [ - "mateusvelleda", - "pedroprcgm", - "kidjapa", - "zenithpolar", - "mtxr", - "rennerocha", - "monteiroflavio", - "MichelMentzFernandes", - "alisonmonteiro", - "diegoarcega" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Array/fill": { - "modified": "2020-10-15T21:39:00.968Z", - "contributors": [ - "mateusvelleda", - "MarcoBrunoBR", - "murillodmiranda", - "SphinxKnight", - "erickvieira", - "ronniery", - "raduq" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Array/filtro": { - "modified": "2020-10-15T21:36:30.999Z", - "contributors": [ - "chrisdavidmills", - "mateusvelleda", - "FelipeMarra", - "leonardooliveira95", - "junagao", - "mtaribeiro", - "RodrigoReis", - "alexandresn", - "erikvinicius5", - "lotharthesavior", - "felipecaputo" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Array/find": { - "modified": "2020-10-24T15:40:42.111Z", - "contributors": [ - "Gustavonobreza", - "mateusvelleda", - "marcoscoelho", - "awquadros", - "jkdrangel", - "SphinxKnight", - "leonardosv", - "cezaraugusto", - "Selminha", - "raduq" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Array/findIndex": { - "modified": "2020-10-15T21:44:45.523Z", - "contributors": [ - "mateusvelleda", - "brunotalhate", - "jjmars" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Array/flat": { - "modified": "2020-10-15T22:05:38.464Z", - "contributors": [ - "DiegoGeoDev", - "malarahfelipe", - "mateusvelleda", - "gabriellamas", - "CalvinNunes" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Array/flatMap": { - "modified": "2020-10-15T22:04:41.673Z", - "contributors": [ - "caricati", - "malarahfelipe", - "MatheusFrez", - "rbuzatto", - "leonardomarciano", - "proxy-chan" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Array/forEach": { - "modified": "2020-10-15T21:24:03.153Z", - "contributors": [ - "mateusvelleda", - "Gutem", - "fred-azevedo", - "rodorgas", - "alexandresn", - "deyvidyury", - "rafaelescrich", - "teoli", - "nah_luquiari" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Array/from": { - "modified": "2020-10-15T21:38:56.337Z", - "contributors": [ - "salomes", - "mateusvelleda", - "SphinxKnight", - "rafaelcavalcante", - "welintonti", - "victor-borges" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Array/indexOf": { - "modified": "2020-10-15T21:37:56.001Z", - "contributors": [ - "victorwestmann", - "mateusvelleda", - "SDamasceno-Dev", - "tavieto", - "rafaelkendrik", - "LeoRiether", - "brunoluigi", - "ErickWendel", - "lucas.comino" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Array/isArray": { - "modified": "2019-08-21T18:08:19.665Z", - "contributors": [ - "WBerredo", - "lotharthesavior", - "ZavarezeH" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Array/join": { - "modified": "2020-10-26T23:42:47.826Z", - "contributors": [ - "Gustavonobreza", - "Grohden", - "ZavarezeH" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Array/keys": { - "modified": "2019-03-23T22:54:07.464Z", - "contributors": [ - "SphinxKnight", - "flaviomicheletti", - "lotharthesavior" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Array/lastIndexOf": { - "modified": "2019-05-09T12:20:08.266Z", - "contributors": [ - "fmaiabatista", - "rodamaral", - "brunoluigi", - "raduq" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Array/length": { - "modified": "2019-04-07T08:45:26.003Z", - "contributors": [ - "PointCodeZero", - "hpribeiro", - "jouderianjr", - "lnmunhoz", - "icaromh" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Array/map": { - "modified": "2020-10-15T21:32:56.196Z", - "contributors": [ - "mateusvelleda", - "lotharthesavior", - "trestini" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Array/of": { - "modified": "2020-10-15T21:38:59.029Z", - "contributors": [ - "CarlaTeo", - "SphinxKnight", - "theuves", - "raduq" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Array/pop": { - "modified": "2020-10-15T21:32:41.724Z", - "contributors": [ - "mateusvelleda", - "gbezerras", - "marinalimeira" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Array/prototype": { - "modified": "2019-03-23T23:05:21.611Z", - "contributors": [ - "medeirosmarcus", - "rodrigofazenda", - "DevStanki", - "gutoribeiro", - "danielbastos" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Array/push": { - "modified": "2019-03-23T23:07:45.788Z", - "contributors": [ - "lucascaprio", - "lucasvarela", - "marinalimeira", - "JeanRigotti", - "solfier" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Array/reverse": { - "modified": "2019-03-23T22:54:17.462Z", - "contributors": [ - "leonardocodognoto" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Array/shift": { - "modified": "2020-10-15T21:31:30.081Z", - "contributors": [ - "mateusvelleda", - "bfagundes", - "LuizinGustavo", - "csrene", - "AlexSander", - "bernardobrezende", - "JeanRigotti" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Array/slice": { - "modified": "2020-10-15T21:38:58.669Z", - "contributors": [ - "g-nogara", - "GutuGaluppo", - "multi4me", - "Ermesoml", - "proxy-chan", - "odahcam", - "nelson777", - "vandercijr" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Array/some": { - "modified": "2020-10-15T21:39:11.018Z", - "contributors": [ - "axcosta", - "wrafanunes", - "mateusvelleda", - "hrcaio", - "diegoarcega", - "raduq" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Array/sort": { - "modified": "2020-12-03T19:46:39.220Z", - "contributors": [ - "rogeriojesussilva", - "h3nr1ke", - "Pedrock", - "mateusvelleda", - "RoryKinape", - "maleskena", - "maxHSG", - "WBerredo", - "mauricio-fidalgo", - "felipecaputo" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Array/splice": { - "modified": "2019-03-23T23:21:08.881Z", - "contributors": [ - "marciioluucas", - "gabsprates", - "santospatrick", - "Auugustocesar", - "BrOrlandi", - "alexbispo", - "leaofelipe", - "wbruno", - "teoli", - "cirocosta" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Array/toLocaleString": { - "modified": "2019-03-23T22:50:39.765Z", - "contributors": [ - "valdeirpsr", - "erickvieira", - "ErickWendel" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Array/toSource": { - "modified": "2020-06-02T16:37:19.766Z", - "contributors": [ - "mablook", - "teoli", - "raduq" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Array/toString": { - "modified": "2019-03-23T22:48:37.450Z", - "contributors": [ - "MichelMentzFernandes", - "geovanerocha" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Array/unshift": { - "modified": "2020-10-15T21:30:05.373Z", - "contributors": [ - "mateusvelleda", - "JsBatista", - "jurandirvalerio", - "mateusleon" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Array/values": { - "modified": "2019-03-23T22:47:27.892Z", - "contributors": [ - "SphinxKnight", - "raduq" - ] - }, - "Web/JavaScript/Reference/Global_Objects/ArrayBuffer": { - "modified": "2020-10-15T21:29:12.919Z", - "contributors": [ - "Rondinelly", - "Jeremie", - "teoli", - "mklauck" - ] - }, - "Web/JavaScript/Reference/Global_Objects/AsyncFunction": { - "modified": "2019-03-23T22:08:08.077Z", - "contributors": [ - "GutuGaluppo", - "alefesouza" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Atomics": { - "modified": "2019-03-23T22:34:49.263Z", - "contributors": [ - "KennyMack" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Atomics/add": { - "modified": "2019-03-23T22:09:03.574Z", - "contributors": [ - "AlanCezarAraujo" - ] - }, - "Web/JavaScript/Reference/Global_Objects/BigInt": { - "modified": "2019-05-28T15:22:19.642Z", - "contributors": [ - "AlanCezarAraujo", - "theuves" - ] - }, - "Web/JavaScript/Reference/Global_Objects/BigInt/prototype": { - "modified": "2020-10-15T22:29:51.823Z", - "contributors": [ - "LuisAraujo" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Boolean": { - "modified": "2019-03-23T22:51:14.765Z", - "contributors": [ - "raduq", - "wbamberg", - "Hikashii", - "pdanker", - "icaromh" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Boolean/prototype": { - "modified": "2019-03-23T22:47:24.930Z", - "contributors": [ - "raduq" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Boolean/toSource": { - "modified": "2019-03-23T22:47:21.468Z", - "contributors": [ - "teoli", - "raduq" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Boolean/toString": { - "modified": "2019-03-23T22:06:44.278Z", - "contributors": [ - "thiagosaife" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Boolean/valueOf": { - "modified": "2019-03-23T22:42:40.647Z", - "contributors": [ - "felipebelluco" - ] - }, - "Web/JavaScript/Reference/Global_Objects/DataView": { - "modified": "2020-10-15T21:51:29.239Z", - "contributors": [ - "Rondinelly", - "duduindo", - "fabriciofrontarolli" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Date": { - "modified": "2019-03-18T20:41:58.137Z", - "contributors": [ - "Bagata", - "wbamberg", - "quindai", - "marcelobonatto", - "lucas-daltro", - "fnsc.luis", - "daniloazevedo", - "teoli", - "BargaoRobalo" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Date/@@toPrimitive": { - "modified": "2020-10-15T22:34:13.518Z", - "contributors": [ - "FernandoKGA" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Date/UTC": { - "modified": "2019-03-23T22:50:40.604Z", - "contributors": [ - "LeonardoBos" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Date/getDate": { - "modified": "2019-03-23T22:52:17.951Z", - "contributors": [ - "thiagoh" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Date/getDay": { - "modified": "2019-03-23T22:52:01.927Z", - "contributors": [ - "thiagoh" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Date/getFullYear": { - "modified": "2019-03-23T22:52:07.207Z", - "contributors": [ - "thiagoh" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Date/getHours": { - "modified": "2019-03-23T22:52:04.095Z", - "contributors": [ - "thiagoh" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Date/getMilliseconds": { - "modified": "2019-03-23T22:25:46.007Z", - "contributors": [ - "joelwallis" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Date/getMinutes": { - "modified": "2019-03-23T22:25:45.808Z", - "contributors": [ - "joelwallis" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Date/getMonth": { - "modified": "2019-03-23T22:51:50.216Z", - "contributors": [ - "gnuns" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Date/getSeconds": { - "modified": "2019-03-23T22:25:45.327Z", - "contributors": [ - "joelwallis" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Date/getTime": { - "modified": "2019-03-23T22:25:55.014Z", - "contributors": [ - "danielpm", - "joelwallis" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Date/getTimezoneOffset": { - "modified": "2019-03-23T22:51:37.039Z", - "contributors": [ - "andrejunges", - "candidodmv" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Date/getUTCDate": { - "modified": "2019-03-23T22:25:45.470Z", - "contributors": [ - "joelwallis" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Date/getUTCDay": { - "modified": "2020-08-27T16:21:04.054Z", - "contributors": [ - "morvanabonin", - "rogeriopradoj" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Date/getUTCFullYear": { - "modified": "2020-10-15T22:11:50.613Z", - "contributors": [ - "jonathanTrancozo" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Date/getUTCHours": { - "modified": "2020-10-15T22:29:14.615Z", - "contributors": [ - "FernandoKGA", - "hiramfernandes" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Date/getUTCMilliseconds": { - "modified": "2020-10-15T21:59:36.124Z", - "contributors": [ - "vbaptistella" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Date/getUTCMinutes": { - "modified": "2020-10-15T22:33:32.360Z", - "contributors": [ - "FernandoKGA" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Date/getUTCMonth": { - "modified": "2020-10-15T21:58:33.350Z", - "contributors": [ - "caiocsl" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Date/getUTCSeconds": { - "modified": "2020-10-15T22:19:49.811Z", - "contributors": [ - "gutobrz" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Date/getYear": { - "modified": "2019-03-23T22:52:07.407Z", - "contributors": [ - "thiagoh" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Date/now": { - "modified": "2019-09-07T10:31:23.595Z", - "contributors": [ - "lucasinocente", - "rodgerpaulo", - "rodrigosilvaleite", - "alcatrazbr", - "giovannimesquita" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Date/parse": { - "modified": "2020-09-19T12:07:04.791Z", - "contributors": [ - "rafaelflorespereira", - "Klaifer", - "remmendo", - "thiagobittner" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Date/setDate": { - "modified": "2020-10-15T22:31:46.152Z", - "contributors": [ - "lghiggino" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Date/setFullYear": { - "modified": "2020-10-15T22:33:35.634Z", - "contributors": [ - "FernandoKGA" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Date/setHours": { - "modified": "2020-10-15T22:33:33.944Z", - "contributors": [ - "FernandoKGA" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Date/setMilliseconds": { - "modified": "2020-10-15T22:33:48.619Z", - "contributors": [ - "FernandoKGA" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Date/setMinutes": { - "modified": "2020-10-15T22:33:49.145Z", - "contributors": [ - "FernandoKGA" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Date/setMonth": { - "modified": "2020-10-15T22:34:08.767Z", - "contributors": [ - "FernandoKGA" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Date/setSeconds": { - "modified": "2020-10-15T22:34:12.191Z", - "contributors": [ - "FernandoKGA" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Date/setTime": { - "modified": "2020-10-15T22:06:26.538Z", - "contributors": [ - "Bagata", - "deyvidyury" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Date/setUTCDate": { - "modified": "2020-10-15T22:34:09.643Z", - "contributors": [ - "FernandoKGA" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Date/setUTCFullYear": { - "modified": "2020-10-15T22:34:09.833Z", - "contributors": [ - "FernandoKGA" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Date/setUTCHours": { - "modified": "2020-10-15T22:34:12.207Z", - "contributors": [ - "FernandoKGA" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Date/setUTCMilliseconds": { - "modified": "2020-10-15T22:34:12.221Z", - "contributors": [ - "FernandoKGA" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Date/setUTCMinutes": { - "modified": "2020-10-15T22:34:15.562Z", - "contributors": [ - "FernandoKGA" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Date/setUTCMonth": { - "modified": "2020-10-15T22:34:15.556Z", - "contributors": [ - "FernandoKGA" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Date/setUTCSeconds": { - "modified": "2020-10-15T22:34:11.911Z", - "contributors": [ - "FernandoKGA" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Date/setYear": { - "modified": "2020-10-15T22:34:14.397Z", - "contributors": [ - "FernandoKGA" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Date/toDateString": { - "modified": "2019-03-23T22:37:22.411Z", - "contributors": [ - "pabloff9" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Date/toGMTString": { - "modified": "2020-10-15T22:34:12.107Z", - "contributors": [ - "FernandoKGA" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Date/toISOString": { - "modified": "2020-10-15T22:34:15.917Z", - "contributors": [ - "FernandoKGA" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Date/toJSON": { - "modified": "2020-10-15T22:08:19.553Z", - "contributors": [ - "duodraco" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Date/toLocaleDateString": { - "modified": "2019-10-05T10:35:23.837Z", - "contributors": [ - "alexandregabriel", - "erickm32", - "emanueloliveira" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Date/toLocaleString": { - "modified": "2020-10-15T22:22:49.670Z", - "contributors": [ - "niltonfreitas_" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Date/toLocaleTimeString": { - "modified": "2020-10-15T22:01:32.171Z", - "contributors": [ - "jbwestphal" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Date/toSource": { - "modified": "2020-10-15T22:34:13.547Z", - "contributors": [ - "FernandoKGA" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Date/toString": { - "modified": "2020-10-15T22:34:16.319Z", - "contributors": [ - "FernandoKGA" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Date/toTimeString": { - "modified": "2020-10-15T22:34:13.284Z", - "contributors": [ - "FernandoKGA" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Date/toUTCString": { - "modified": "2020-10-15T22:34:13.668Z", - "contributors": [ - "FernandoKGA" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Date/valueOf": { - "modified": "2020-10-15T22:34:13.277Z", - "contributors": [ - "FernandoKGA" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Error": { - "modified": "2019-03-23T22:43:17.643Z", - "contributors": [ - "cezaraugusto", - "augustoclaro" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Error/toSource": { - "modified": "2020-11-02T11:33:59.599Z", - "contributors": [ - "FernandoKGA" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Error/toString": { - "modified": "2020-11-02T10:09:38.309Z", - "contributors": [ - "FernandoKGA" - ] - }, - "Web/JavaScript/Reference/Global_Objects/EvalError": { - "modified": "2019-03-23T22:29:52.954Z", - "contributors": [ - "jaimemaretoli" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Float32Array": { - "modified": "2020-10-15T22:08:32.783Z", - "contributors": [ - "ChristoPy" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Float64Array": { - "modified": "2020-10-15T22:32:01.059Z", - "contributors": [ - "GuilhermeVazz" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Function": { - "modified": "2020-03-26T18:53:42.833Z", - "contributors": [ - "HenriqueMartinsBotelho", - "diegolaquino", - "IanRamosC", - "YurePereira", - "chrisdavidmills" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Function/apply": { - "modified": "2019-03-23T22:52:01.105Z", - "contributors": [ - "hierror", - "cezaraugusto", - "edjungklaus", - "LucasRamos", - "caiocutrim" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Function/arguments": { - "modified": "2019-05-25T00:50:43.245Z", - "contributors": [ - "Arlon", - "Anderson-Vasques" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Function/bind": { - "modified": "2020-05-09T18:15:16.714Z", - "contributors": [ - "lcelso", - "leo-ls", - "Kasagari", - "eduardoJoseRibeiro", - "felipeorlando", - "nevorah", - "fbctf", - "heronmedeiros", - "edvaldofarias" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Function/call": { - "modified": "2019-03-23T23:05:33.507Z", - "contributors": [ - "leogsouza", - "cezaraugusto", - "vitorn1234", - "caiocutrim", - "PedroVinicius" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Function/caller": { - "modified": "2019-03-23T22:47:00.952Z", - "contributors": [ - "teoli", - "raduq" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Function/displayName": { - "modified": "2020-10-15T21:58:35.041Z", - "contributors": [ - "alinedmelo" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Function/length": { - "modified": "2020-08-25T13:54:49.738Z", - "contributors": [ - "duduindo", - "GuilhermeVazz", - "alinedmelo", - "matheussilvasantos", - "LucasRamos" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Function/name": { - "modified": "2020-10-15T22:06:36.004Z", - "contributors": [ - "leo-ls" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Function/prototype": { - "modified": "2020-10-15T22:06:36.377Z", - "contributors": [ - "GuilhermeVazz", - "leo-ls" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Function/toSource": { - "modified": "2020-10-15T21:58:35.614Z", - "contributors": [ - "alinedmelo" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Function/toString": { - "modified": "2020-10-15T22:14:19.175Z", - "contributors": [ - "FernandoKGA", - "Romulofelipe" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Generator": { - "modified": "2020-03-24T12:10:57.953Z", - "contributors": [ - "KennyMack" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Infinity": { - "modified": "2020-03-12T19:40:37.632Z", - "contributors": [ - "isacfadoni", - "jsvini" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Int16Array": { - "modified": "2020-10-15T22:12:41.379Z", - "contributors": [ - "murillodmiranda" - ] - }, - "Web/JavaScript/Reference/Global_Objects/InternalError": { - "modified": "2020-10-15T22:33:36.868Z", - "contributors": [ - "shingravirei" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Intl": { - "modified": "2019-04-03T16:14:02.453Z", - "contributors": [ - "letuche", - "alexandresn" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat": { - "modified": "2020-10-15T22:29:38.599Z", - "contributors": [ - "SphinxKnight", - "gibify_official" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat": { - "modified": "2020-04-21T09:08:10.746Z", - "contributors": [ - "fscholz", - "thomazcapra", - "romulocintra", - "letuche", - "marcelobonatto" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat/prototype": { - "modified": "2020-04-21T09:08:10.648Z", - "contributors": [ - "fscholz", - "marcelobonatto" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Intl/RelativeTimeFormat": { - "modified": "2020-10-15T22:19:18.527Z", - "contributors": [ - "fscholz", - "ChilenoSika" - ] - }, - "Web/JavaScript/Reference/Global_Objects/JSON": { - "modified": "2019-05-04T10:27:47.204Z", - "contributors": [ - "Leodma", - "techtique", - "Jeremie", - "deyvid0123", - "jessicatenca", - "markokr" - ] - }, - "Web/JavaScript/Reference/Global_Objects/JSON/parse": { - "modified": "2020-10-15T21:37:32.669Z", - "contributors": [ - "MarcosNakamine", - "Fernandolrs", - "v1ctorf", - "Francisaac", - "renanmedina" - ] - }, - "Web/JavaScript/Reference/Global_Objects/JSON/stringify": { - "modified": "2020-06-10T02:22:31.726Z", - "contributors": [ - "henriquegeremia", - "PauloRicardoDeveloper", - "nilocoelhojunior", - "einstenj", - "ikariwill", - "lucasmaiaesilva" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Map": { - "modified": "2020-10-15T21:43:23.476Z", - "contributors": [ - "mathvalenza", - "mateusvelleda", - "chapeupreto", - "mauricio.araldi", - "Klauswk", - "renatoluna", - "BernardoMariano", - "raduq", - "raphaelpor" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Map/clear": { - "modified": "2019-03-23T22:13:54.269Z", - "contributors": [ - "renatoluna" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Map/delete": { - "modified": "2019-05-29T19:41:42.276Z", - "contributors": [ - "renatoluna" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Map/entries": { - "modified": "2019-03-23T22:13:54.600Z", - "contributors": [ - "renatoluna" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Map/forEach": { - "modified": "2019-09-16T15:32:37.374Z", - "contributors": [ - "cezinha", - "rodrigocnascimento", - "renatoluna" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Map/get": { - "modified": "2020-10-15T21:58:34.923Z", - "contributors": [ - "haskellcamargo" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Map/has": { - "modified": "2020-10-15T22:01:02.517Z", - "contributors": [ - "clovislima", - "MarcVFX" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Map/keys": { - "modified": "2019-03-23T22:20:29.616Z", - "contributors": [ - "shuminyang" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Map/prototype": { - "modified": "2019-03-23T22:13:49.481Z", - "contributors": [ - "renatoluna" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Map/set": { - "modified": "2019-03-23T22:10:32.061Z", - "contributors": [ - "haskellcamargo", - "nanquim" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Map/size": { - "modified": "2019-03-18T20:56:12.542Z", - "contributors": [ - "mauricio.araldi", - "raduq" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Map/values": { - "modified": "2020-10-15T22:16:52.931Z", - "contributors": [ - "liddack" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Math": { - "modified": "2019-03-23T23:21:27.763Z", - "contributors": [ - "rafaelbezerra195", - "fernandosavio", - "emviveros", - "FlavioFS", - "teoli", - "xhximenes", - "vagnerleitte", - "fscholz" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Math/E": { - "modified": "2020-10-15T21:47:13.887Z", - "contributors": [ - "daniloazevedo", - "tetri" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Math/LN10": { - "modified": "2019-03-23T22:12:19.651Z", - "contributors": [ - "Guimaraesmvf" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Math/LN2": { - "modified": "2020-10-15T21:55:04.335Z", - "contributors": [ - "fernandosavio" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Math/LOG10E": { - "modified": "2020-10-15T21:55:05.255Z", - "contributors": [ - "hvianna", - "fernandosavio" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Math/LOG2E": { - "modified": "2020-10-15T21:55:04.690Z", - "contributors": [ - "hvianna", - "fernandosavio" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Math/PI": { - "modified": "2020-10-15T21:47:10.311Z", - "contributors": [ - "daniloazevedo" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Math/SQRT1_2": { - "modified": "2020-10-15T21:55:05.961Z", - "contributors": [ - "fernandosavio" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Math/SQRT2": { - "modified": "2020-10-15T21:55:05.849Z", - "contributors": [ - "hvianna", - "fernandosavio" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Math/abs": { - "modified": "2019-03-23T23:10:06.875Z", - "contributors": [ - "flpwgr", - "Thiago" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Math/acos": { - "modified": "2019-03-23T22:19:53.926Z", - "contributors": [ - "isaiasBR" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Math/acosh": { - "modified": "2020-10-15T21:55:06.035Z", - "contributors": [ - "fernandosavio" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Math/asin": { - "modified": "2020-10-15T21:55:07.550Z", - "contributors": [ - "carlos-teixeira314", - "fernandosavio" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Math/asinh": { - "modified": "2020-10-15T22:03:29.264Z", - "contributors": [ - "OJEP" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Math/atan": { - "modified": "2020-10-15T21:55:06.721Z", - "contributors": [ - "fernandosavio" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Math/atan2": { - "modified": "2019-03-23T22:22:42.007Z", - "contributors": [ - "isaiasBR" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Math/atanh": { - "modified": "2020-10-15T21:55:07.443Z", - "contributors": [ - "fernandosavio" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Math/cbrt": { - "modified": "2020-10-15T21:58:38.295Z", - "contributors": [ - "Mareken" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Math/ceil": { - "modified": "2019-07-19T10:47:36.140Z", - "contributors": [ - "WilliamSakata", - "Albert.Bitencourte", - "fscarol", - "niltonfreitas_", - "teoli", - "vagnerleitte" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Math/clz32": { - "modified": "2020-10-15T22:28:44.661Z", - "contributors": [ - "karenc-sousa", - "josimaraLima" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Math/cos": { - "modified": "2020-10-15T22:18:27.705Z", - "contributors": [ - "Cleianderson" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Math/cosh": { - "modified": "2020-10-15T22:28:21.218Z", - "contributors": [ - "renato.alecrim" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Math/exp": { - "modified": "2019-03-23T23:15:09.889Z", - "contributors": [ - "teoli", - "haskellcamargo" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Math/expm1": { - "modified": "2020-10-15T22:31:35.332Z", - "contributors": [ - "karenc-sousa" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Math/floor": { - "modified": "2019-09-13T11:05:18.946Z", - "contributors": [ - "maarysantos", - "fscarol", - "teoli", - "matheuslc" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Math/hypot": { - "modified": "2020-10-15T21:55:03.563Z", - "contributors": [ - "fernandosavio" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Math/log": { - "modified": "2019-03-23T22:26:27.916Z", - "contributors": [ - "monteiroflavio" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Math/log10": { - "modified": "2019-03-23T22:26:17.000Z", - "contributors": [ - "thaisdemoura", - "monteiroflavio" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Math/log1p": { - "modified": "2020-10-15T22:22:08.225Z", - "contributors": [ - "Mathues" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Math/log2": { - "modified": "2020-10-15T21:59:58.075Z", - "contributors": [ - "RodolfoSilva" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Math/max": { - "modified": "2019-03-23T23:10:00.119Z", - "contributors": [ - "lucsrods", - "LucianoBritis", - "Thiago", - "teoli" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Math/min": { - "modified": "2019-04-26T13:13:20.729Z", - "contributors": [ - "yogmel", - "LucianoBritis" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Math/pow": { - "modified": "2019-04-25T15:22:09.540Z", - "contributors": [ - "xneuber", - "HumbsBR", - "ralphrass" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Math/random": { - "modified": "2020-10-15T21:29:15.686Z", - "contributors": [ - "Ocramoi", - "brevvi", - "WBerredo", - "fernandosavio", - "AustinFelipe", - "CasperBraske", - "teoli", - "xhximenes" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Math/round": { - "modified": "2019-08-15T18:47:55.871Z", - "contributors": [ - "brunomazzardo", - "letuche", - "SphinxKnight", - "giovana-morais", - "Guimaraesmvf", - "lumathias", - "teoli", - "vagnerleitte" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Math/sign": { - "modified": "2020-10-15T21:55:40.410Z", - "contributors": [ - "leonardocxavier.lx", - "josetepedino" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Math/sin": { - "modified": "2020-10-15T22:04:54.149Z", - "contributors": [ - "raullesteves", - "LucianoDos" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Math/sinh": { - "modified": "2020-10-15T22:13:49.195Z", - "contributors": [ - "taranttini" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Math/sqrt": { - "modified": "2020-10-15T21:26:04.927Z", - "contributors": [ - "fernandosavio", - "teoli", - "Phisichodelic" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Math/tan": { - "modified": "2019-03-23T23:10:38.670Z", - "contributors": [ - "brunofin" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Math/tanh": { - "modified": "2020-10-15T22:04:54.316Z", - "contributors": [ - "LucianoDos" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Math/trunc": { - "modified": "2019-03-18T20:46:02.772Z", - "contributors": [ - "rbuzatto", - "SphinxKnight", - "renamed" - ] - }, - "Web/JavaScript/Reference/Global_Objects/NaN": { - "modified": "2020-03-12T19:40:35.675Z", - "contributors": [ - "trestini" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Number": { - "modified": "2019-03-18T20:45:04.310Z", - "contributors": [ - "edvoidcode", - "wbamberg", - "rubenfaria", - "gutoribeiro", - "olilucas", - "fscholz" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Number/EPSILON": { - "modified": "2020-10-15T22:33:22.823Z", - "contributors": [ - "FernandoKGA" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Number/MAX_SAFE_INTEGER": { - "modified": "2020-10-15T22:33:22.489Z", - "contributors": [ - "FernandoKGA" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Number/MAX_VALUE": { - "modified": "2020-10-15T22:33:22.445Z", - "contributors": [ - "FernandoKGA" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Number/MIN_SAFE_INTEGER": { - "modified": "2020-10-15T22:33:22.518Z", - "contributors": [ - "FernandoKGA" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Number/MIN_VALUE": { - "modified": "2020-10-15T22:33:23.068Z", - "contributors": [ - "FernandoKGA" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Number/NEGATIVE_INFINITY": { - "modified": "2020-10-15T22:33:22.475Z", - "contributors": [ - "FernandoKGA" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Number/NaN": { - "modified": "2019-03-23T22:21:44.421Z", - "contributors": [ - "caioabe" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Number/POSITIVE_INFINITY": { - "modified": "2020-10-15T21:59:00.701Z", - "contributors": [ - "vierno" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Number/isFinite": { - "modified": "2020-10-15T21:59:02.386Z", - "contributors": [ - "dayanyrec" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Number/isInteger": { - "modified": "2019-07-29T15:37:40.408Z", - "contributors": [ - "vitorbertulucci", - "odahcam" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Number/isNaN": { - "modified": "2019-03-23T23:10:13.820Z", - "contributors": [ - "SphinxKnight", - "codermarcos", - "teoli", - "nickmarinho" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Number/isSafeInteger": { - "modified": "2020-10-15T22:23:14.691Z", - "contributors": [ - "carloserocha" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Number/parseFloat": { - "modified": "2019-03-18T21:00:18.240Z", - "contributors": [ - "negreirosleo", - "SphinxKnight", - "jctosta" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Number/parseInt": { - "modified": "2020-10-15T22:33:24.030Z", - "contributors": [ - "FernandoKGA" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Number/prototype": { - "modified": "2019-03-23T22:11:17.514Z", - "contributors": [ - "matAlmeida", - "gutoribeiro" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Number/toExponential": { - "modified": "2019-03-23T22:10:51.562Z", - "contributors": [ - "waltton" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Number/toFixed": { - "modified": "2020-10-15T21:42:57.260Z", - "contributors": [ - "waveiro", - "akfzambrana" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Number/toLocaleString": { - "modified": "2020-10-15T21:47:41.116Z", - "contributors": [ - "waveiro", - "cristiancporto", - "marcelobonatto" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Number/toPrecision": { - "modified": "2020-10-15T22:17:13.989Z", - "contributors": [ - "haist", - "milovaz" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Number/toSource": { - "modified": "2020-10-15T22:17:14.004Z", - "contributors": [ - "milovaz" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Number/toString": { - "modified": "2019-03-23T22:52:50.933Z", - "contributors": [ - "tributus" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Number/valueOf": { - "modified": "2020-10-15T22:17:17.170Z", - "contributors": [ - "milovaz" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Object": { - "modified": "2020-10-15T21:22:46.995Z", - "contributors": [ - "UPPERCASEuser", - "fscholz", - "LucianoDos", - "user2015", - "teoli", - "matheusrocha89" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Object/__defineGetter__": { - "modified": "2020-10-15T22:10:25.431Z", - "contributors": [ - "KyryIx" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Object/__defineSetter__": { - "modified": "2020-10-15T22:34:14.134Z", - "contributors": [ - "FernandoKGA" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Object/__lookupGetter__": { - "modified": "2020-10-15T22:01:00.255Z", - "contributors": [ - "Learaujoss" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Object/__lookupSetter__": { - "modified": "2020-10-15T22:34:13.904Z", - "contributors": [ - "FernandoKGA" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Object/assign": { - "modified": "2020-10-15T21:38:23.637Z", - "contributors": [ - "nikolasFreitas", - "daniloazevedo", - "SphinxKnight", - "rafaelcavalcante", - "gugiserman", - "kdex", - "Jerffersonferreira", - "jhserodio", - "desoares1975", - "hbarcelos", - "HenriqueSilverio" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Object/constructor": { - "modified": "2019-03-23T22:54:12.280Z", - "contributors": [ - "chorajunior", - "lotharthesavior" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Object/create": { - "modified": "2019-03-21T08:33:13.941Z", - "contributors": [ - "GabrielLidenor", - "andrekishimoto", - "andresales" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Object/defineProperties": { - "modified": "2019-03-23T22:07:15.693Z", - "contributors": [ - "KyryIx", - "LucianoDos" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Object/defineProperty": { - "modified": "2020-10-15T21:48:58.770Z", - "contributors": [ - "TavaresW-lima", - "luan0ap", - "luzeduardo", - "KyryIx", - "Glaydson", - "saulobmansur", - "joeltonmats", - "mshmeirelles", - "ronniery" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Object/entries": { - "modified": "2020-10-15T21:53:04.423Z", - "contributors": [ - "mateusvelleda", - "vhfmag", - "cezaraugusto" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Object/freeze": { - "modified": "2019-05-16T22:14:31.830Z", - "contributors": [ - "jpsl00", - "HugoBex" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Object/fromEntries": { - "modified": "2020-10-15T22:21:48.504Z", - "contributors": [ - "soutokevin" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Object/getOwnPropertyDescriptor": { - "modified": "2020-10-15T21:46:28.549Z", - "contributors": [ - "fscholz", - "danilobarion1986" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Object/getOwnPropertyDescriptors": { - "modified": "2020-10-15T22:34:14.161Z", - "contributors": [ - "fernanduandrade" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Object/getOwnPropertyNames": { - "modified": "2019-03-23T22:34:44.099Z", - "contributors": [ - "soter19", - "deyvidyury" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Object/getOwnPropertySymbols": { - "modified": "2020-10-15T22:34:14.971Z", - "contributors": [ - "fernanduandrade" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Object/getPrototypeOf": { - "modified": "2019-03-23T22:50:02.364Z", - "contributors": [ - "victor-borges" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Object/hasOwnProperty": { - "modified": "2019-07-24T09:59:12.961Z", - "contributors": [ - "lucasramosi", - "andremarcondesteixeira", - "KennyMack", - "teoli", - "gigaPaul" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Object/is": { - "modified": "2019-03-23T22:21:14.617Z", - "contributors": [ - "amaralbf" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Object/isExtensible": { - "modified": "2020-10-15T22:21:49.022Z", - "contributors": [ - "soutokevin" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Object/isFrozen": { - "modified": "2020-10-15T22:20:52.994Z", - "contributors": [ - "pedroprado010" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Object/isPrototypeOf": { - "modified": "2020-10-15T21:57:20.725Z", - "contributors": [ - "SilvaCoder" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Object/isSealed": { - "modified": "2020-10-15T22:07:55.569Z", - "contributors": [ - "HelcioMacedo" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Object/keys": { - "modified": "2019-03-23T22:47:37.261Z", - "contributors": [ - "kdex", - "eduardojmatos", - "ronysilvati" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Object/preventExtensions": { - "modified": "2020-10-15T21:57:55.623Z", - "contributors": [ - "saarlander", - "LucianoDos" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Object/propertyIsEnumerable": { - "modified": "2020-10-15T22:32:29.322Z", - "contributors": [ - "GuilhermeVazz" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Object/proto": { - "modified": "2019-03-23T22:19:51.716Z", - "contributors": [ - "KyryIx", - "Treze", - "manzettidenis" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Object/prototype": { - "modified": "2019-03-23T23:02:44.390Z", - "contributors": [ - "runys", - "viniciuslacerda", - "melostbr", - "dafnk", - "gabefurlan", - "igorapa" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Object/seal": { - "modified": "2019-03-23T22:23:03.815Z", - "contributors": [ - "SilvaCoder" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Object/setPrototypeOf": { - "modified": "2019-03-23T22:12:04.085Z", - "contributors": [ - "KyryIx", - "gutoribeiro" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Object/toLocaleString": { - "modified": "2020-10-15T22:34:13.476Z", - "contributors": [ - "FernandoKGA" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Object/toSource": { - "modified": "2020-10-15T22:34:16.108Z", - "contributors": [ - "rafaelflorespereira", - "FernandoKGA" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Object/toString": { - "modified": "2019-03-23T23:07:48.389Z", - "contributors": [ - "AleCorrea", - "klzns" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Object/valueOf": { - "modified": "2020-10-15T22:00:42.323Z", - "contributors": [ - "MarcceloSelv" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Object/values": { - "modified": "2019-03-23T22:25:57.378Z", - "contributors": [ - "gabefurlan" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Promise": { - "modified": "2020-10-19T07:58:10.031Z", - "contributors": [ - "SphinxKnight", - "JulioDinis", - "henriquejsfj", - "mateusvelleda", - "node1111", - "ThalesRod", - "rafaelcavalcante", - "eduardoyutaka", - "WBerredo", - "filipetorres", - "fernando.ghisi", - "kdex", - "BrOrlandi", - "gabrielagabriel", - "caio_araujo", - "pauloaug", - "vbmendes", - "teoli", - "RyanFilho", - "keuller" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Promise/all": { - "modified": "2020-10-15T21:38:19.432Z", - "contributors": [ - "SphinxKnight", - "igorsamado", - "renatovassao", - "fernando-camacho", - "gustavohenke" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Promise/allSettled": { - "modified": "2020-10-23T13:34:53.762Z", - "contributors": [ - "gabrielfdg10", - "rafaelblink" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Promise/catch": { - "modified": "2020-10-15T21:46:01.585Z", - "contributors": [ - "Ronkiro", - "caiouehara", - "toruticas", - "fscholz", - "vvinhas" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Promise/finally": { - "modified": "2020-10-15T22:09:11.734Z", - "contributors": [ - "Rovelcio", - "tuxpilgrim" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Promise/prototype": { - "modified": "2019-03-23T23:07:56.583Z", - "contributors": [ - "SphinxKnight", - "dowgssss", - "BrOrlandi", - "keuller" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Promise/race": { - "modified": "2019-03-23T22:49:35.540Z", - "contributors": [ - "SphinxKnight", - "gustavohenke" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Promise/reject": { - "modified": "2020-10-15T21:46:17.994Z", - "contributors": [ - "fscholz", - "vbmendes" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Promise/resolve": { - "modified": "2020-10-15T21:49:25.849Z", - "contributors": [ - "igorc2", - "nunks", - "teogenesmoura", - "BrOrlandi", - "iFgR" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Promise/then": { - "modified": "2019-03-23T22:58:50.489Z", - "contributors": [ - "SphinxKnight", - "olegon", - "rafaelmatos20", - "lypborges" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Proxy": { - "modified": "2020-10-15T21:51:59.693Z", - "contributors": [ - "renefb", - "Fernandolrs", - "rafaelbertelli", - "wallacemaxters", - "mshmeirelles" - ] - }, - "Web/JavaScript/Reference/Global_Objects/ReferenceError": { - "modified": "2019-03-23T22:27:53.828Z", - "contributors": [ - "liliansilva" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Reflect": { - "modified": "2020-06-26T00:19:16.395Z", - "contributors": [ - "Marcelo-Rodrigues", - "chicoria", - "Keony", - "Pedrinho", - "eduardoyuidy", - "fscholz" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Reflect/apply": { - "modified": "2019-03-23T22:25:21.456Z", - "contributors": [ - "alinemorelli" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Reflect/construct": { - "modified": "2020-10-15T22:17:42.172Z", - "contributors": [ - "felipefabreu" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Reflect/defineProperty": { - "modified": "2020-10-15T22:31:07.123Z", - "contributors": [ - "Marcelo-Rodrigues" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Reflect/set": { - "modified": "2019-03-18T20:36:06.411Z", - "contributors": [ - "georgelima" - ] - }, - "Web/JavaScript/Reference/Global_Objects/RegExp": { - "modified": "2019-11-07T22:08:21.265Z", - "contributors": [ - "helton-mori-dev", - "jaimemnds", - "patrickjonesdsc", - "wbamberg", - "danieltex", - "matheussilvasantos", - "Bruno_Lopes" - ] - }, - "Web/JavaScript/Reference/Global_Objects/RegExp/compile": { - "modified": "2020-10-15T22:19:19.959Z", - "contributors": [ - "Fernandolrs" - ] - }, - "Web/JavaScript/Reference/Global_Objects/RegExp/exec": { - "modified": "2019-03-23T22:11:00.508Z", - "contributors": [ - "andremendonca", - "rafaelcavalcante", - "WagnerSilveira" - ] - }, - "Web/JavaScript/Reference/Global_Objects/RegExp/ignoreCase": { - "modified": "2020-10-15T22:33:56.561Z", - "contributors": [ - "alvarez86" - ] - }, - "Web/JavaScript/Reference/Global_Objects/RegExp/sticky": { - "modified": "2020-10-15T22:18:20.521Z", - "contributors": [ - "saulobmansur" - ] - }, - "Web/JavaScript/Reference/Global_Objects/RegExp/test": { - "modified": "2020-09-05T00:20:04.652Z", - "contributors": [ - "alvarez86", - "Bagata", - "igorc2", - "felipericardo", - "iFgR" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Set": { - "modified": "2020-10-15T21:30:09.930Z", - "contributors": [ - "wellpardim10", - "leo-ls", - "emiyasaki", - "GarkGarcia", - "SphinxKnight", - "Davidpsjunior", - "EdJr" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Set/add": { - "modified": "2019-08-12T18:33:12.776Z", - "contributors": [ - "lucsrods", - "Davidpsjunior" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Set/clear": { - "modified": "2019-03-23T22:31:32.028Z", - "contributors": [ - "Davidpsjunior" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Set/delete": { - "modified": "2019-03-23T22:31:37.586Z", - "contributors": [ - "Davidpsjunior" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Set/entries": { - "modified": "2019-03-23T22:31:39.376Z", - "contributors": [ - "Davidpsjunior" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Set/has": { - "modified": "2020-10-15T22:22:02.385Z", - "contributors": [ - "lucsrods" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Set/prototype": { - "modified": "2020-10-15T21:58:44.990Z", - "contributors": [ - "thayssn" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Set/values": { - "modified": "2020-10-15T22:22:15.454Z", - "contributors": [ - "chicabomb" - ] - }, - "Web/JavaScript/Reference/Global_Objects/String": { - "modified": "2019-03-23T23:14:51.438Z", - "contributors": [ - "wbamberg", - "coloringa", - "brunopulis", - "user2015", - "Marcus_xpt", - "rmello", - "teoli", - "nicholasess", - "fscholz" - ] - }, - "Web/JavaScript/Reference/Global_Objects/String/@@iterator": { - "modified": "2020-10-16T00:11:07.868Z", - "contributors": [ - "ricardo.passos.cr", - "vmardss" - ] - }, - "Web/JavaScript/Reference/Global_Objects/String/Trim": { - "modified": "2020-10-16T00:00:03.933Z", - "contributors": [ - "ricardo.passos.cr", - "coloringa", - "GlauberF", - "Webysther" - ] - }, - "Web/JavaScript/Reference/Global_Objects/String/anchor": { - "modified": "2020-10-15T22:35:00.314Z", - "contributors": [ - "ricardo.passos.cr" - ] - }, - "Web/JavaScript/Reference/Global_Objects/String/big": { - "modified": "2020-10-15T22:35:01.913Z", - "contributors": [ - "ricardo.passos.cr" - ] - }, - "Web/JavaScript/Reference/Global_Objects/String/blink": { - "modified": "2020-10-15T22:35:01.790Z", - "contributors": [ - "ricardo.passos.cr" - ] - }, - "Web/JavaScript/Reference/Global_Objects/String/bold": { - "modified": "2020-10-15T22:35:02.301Z", - "contributors": [ - "ricardo.passos.cr" - ] - }, - "Web/JavaScript/Reference/Global_Objects/String/charAt": { - "modified": "2020-10-09T12:22:30.996Z", - "contributors": [ - "ricardo.passos.cr", - "ShadYueh", - "LucianoBritis" - ] - }, - "Web/JavaScript/Reference/Global_Objects/String/charCodeAt": { - "modified": "2020-10-09T12:26:04.591Z", - "contributors": [ - "ricardo.passos.cr", - "proxy-chan", - "NicholasBraga" - ] - }, - "Web/JavaScript/Reference/Global_Objects/String/codePointAt": { - "modified": "2020-11-02T09:15:45.248Z", - "contributors": [ - "FernandoKGA", - "ricardo.passos.cr" - ] - }, - "Web/JavaScript/Reference/Global_Objects/String/concat": { - "modified": "2020-10-09T16:58:32.740Z", - "contributors": [ - "ricardo.passos.cr", - "gusleindecker", - "LucianoMedeiros" - ] - }, - "Web/JavaScript/Reference/Global_Objects/String/endsWith": { - "modified": "2020-10-15T21:56:21.169Z", - "contributors": [ - "ricardo.passos.cr", - "houstondapaz", - "marceloogeda" - ] - }, - "Web/JavaScript/Reference/Global_Objects/String/fixed": { - "modified": "2020-10-15T22:35:03.509Z", - "contributors": [ - "ricardo.passos.cr" - ] - }, - "Web/JavaScript/Reference/Global_Objects/String/fontcolor": { - "modified": "2020-10-15T22:35:02.895Z", - "contributors": [ - "ricardo.passos.cr" - ] - }, - "Web/JavaScript/Reference/Global_Objects/String/fontsize": { - "modified": "2020-10-15T22:35:04.374Z", - "contributors": [ - "ricardo.passos.cr" - ] - }, - "Web/JavaScript/Reference/Global_Objects/String/fromCharCode": { - "modified": "2020-10-15T23:47:01.302Z", - "contributors": [ - "ricardo.passos.cr", - "NicholasBraga" - ] - }, - "Web/JavaScript/Reference/Global_Objects/String/fromCodePoint": { - "modified": "2020-10-09T12:25:02.641Z", - "contributors": [ - "ricardo.passos.cr", - "LucasPereira", - "SphinxKnight", - "CesarBalzer" - ] - }, - "Web/JavaScript/Reference/Global_Objects/String/includes": { - "modified": "2020-10-15T21:41:15.485Z", - "contributors": [ - "ricardo.passos.cr", - "brasmon8351", - "mateusvelleda", - "SphinxKnight", - "marlonmleite", - "brunolellis" - ] - }, - "Web/JavaScript/Reference/Global_Objects/String/indexOf": { - "modified": "2020-10-15T21:28:05.356Z", - "contributors": [ - "ricardo.passos.cr", - "mateusvelleda", - "Leokuma", - "suyfranca", - "badiale", - "vspedr", - "diegoarcega", - "teoli", - "nicholasess" - ] - }, - "Web/JavaScript/Reference/Global_Objects/String/italics": { - "modified": "2020-10-15T22:35:03.387Z", - "contributors": [ - "ricardo.passos.cr" - ] - }, - "Web/JavaScript/Reference/Global_Objects/String/lastIndexOf": { - "modified": "2020-10-09T15:25:04.260Z", - "contributors": [ - "ricardo.passos.cr", - "mfelippi" - ] - }, - "Web/JavaScript/Reference/Global_Objects/String/length": { - "modified": "2020-10-10T15:37:30.908Z", - "contributors": [ - "ricardo.passos.cr", - "Gemacedo", - "solangealmn", - "fernandomalmeida" - ] - }, - "Web/JavaScript/Reference/Global_Objects/String/link": { - "modified": "2020-10-15T22:35:03.504Z", - "contributors": [ - "ricardo.passos.cr" - ] - }, - "Web/JavaScript/Reference/Global_Objects/String/localeCompare": { - "modified": "2020-11-02T09:27:21.616Z", - "contributors": [ - "FernandoKGA", - "ricardo.passos.cr" - ] - }, - "Web/JavaScript/Reference/Global_Objects/String/match": { - "modified": "2020-10-10T11:58:28.242Z", - "contributors": [ - "ricardo.passos.cr", - "brasmon8351", - "Laercio89", - "jgspaiva", - "soutomario", - "henriquejensen", - "naccarati", - "teoli", - "Nathalino_Pacheco" - ] - }, - "Web/JavaScript/Reference/Global_Objects/String/matchAll": { - "modified": "2020-10-15T22:35:13.784Z", - "contributors": [ - "ricardo.passos.cr" - ] - }, - "Web/JavaScript/Reference/Global_Objects/String/normalize": { - "modified": "2020-10-15T21:57:14.941Z", - "contributors": [ - "ricardo.passos.cr", - "andrefranca92" - ] - }, - "Web/JavaScript/Reference/Global_Objects/String/padEnd": { - "modified": "2020-10-15T22:09:36.225Z", - "contributors": [ - "ricardo.passos.cr", - "rbuzatto" - ] - }, - "Web/JavaScript/Reference/Global_Objects/String/padStart": { - "modified": "2020-10-15T22:12:29.113Z", - "contributors": [ - "ricardo.passos.cr", - "rbuzatto" - ] - }, - "Web/JavaScript/Reference/Global_Objects/String/prototype": { - "modified": "2020-10-15T21:58:05.452Z", - "contributors": [ - "akinncar", - "coloringa", - "Perrottacooking", - "brunopulis" - ] - }, - "Web/JavaScript/Reference/Global_Objects/String/raw": { - "modified": "2020-11-02T09:59:22.925Z", - "contributors": [ - "FernandoKGA", - "ricardo.passos.cr", - "Werner1201" - ] - }, - "Web/JavaScript/Reference/Global_Objects/String/repeat": { - "modified": "2020-10-15T22:05:59.737Z", - "contributors": [ - "ricardo.passos.cr", - "liddack" - ] - }, - "Web/JavaScript/Reference/Global_Objects/String/replace": { - "modified": "2020-10-11T21:06:21.721Z", - "contributors": [ - "ricardo.passos.cr", - "PedroMarianoAlmeida", - "xitiu", - "soutomario", - "BrOrlandi", - "solangealmn", - "acdcjunior", - "mazulo" - ] - }, - "Web/JavaScript/Reference/Global_Objects/String/replaceAll": { - "modified": "2020-10-15T22:33:05.718Z", - "contributors": [ - "ricardo.passos.cr", - "FernandoKGA" - ] - }, - "Web/JavaScript/Reference/Global_Objects/String/search": { - "modified": "2020-10-13T21:00:52.211Z", - "contributors": [ - "ricardo.passos.cr", - "stroparo" - ] - }, - "Web/JavaScript/Reference/Global_Objects/String/slice": { - "modified": "2020-10-13T21:05:35.776Z", - "contributors": [ - "ricardo.passos.cr", - "miguel.velasques", - "nstseek", - "gkaneto", - "andresmachado", - "brunopulis" - ] - }, - "Web/JavaScript/Reference/Global_Objects/String/small": { - "modified": "2020-10-15T22:35:17.508Z", - "contributors": [ - "ricardo.passos.cr" - ] - }, - "Web/JavaScript/Reference/Global_Objects/String/split": { - "modified": "2020-10-13T22:09:32.003Z", - "contributors": [ - "ricardo.passos.cr", - "gabriel_cadu", - "NicholasBraga" - ] - }, - "Web/JavaScript/Reference/Global_Objects/String/startsWith": { - "modified": "2020-10-15T21:41:07.642Z", - "contributors": [ - "ricardo.passos.cr", - "santoyx", - "georgebias", - "SphinxKnight", - "renanmfd", - "eklam" - ] - }, - "Web/JavaScript/Reference/Global_Objects/String/strike": { - "modified": "2020-10-15T22:35:17.757Z", - "contributors": [ - "ricardo.passos.cr" - ] - }, - "Web/JavaScript/Reference/Global_Objects/String/sub": { - "modified": "2020-10-14T00:19:40.694Z", - "contributors": [ - "ricardo.passos.cr", - "netstudenton" - ] - }, - "Web/JavaScript/Reference/Global_Objects/String/substr": { - "modified": "2020-10-15T21:59:06.950Z", - "contributors": [ - "ricardo.passos.cr", - "marceloogeda" - ] - }, - "Web/JavaScript/Reference/Global_Objects/String/substring": { - "modified": "2020-10-14T01:32:35.715Z", - "contributors": [ - "ricardo.passos.cr", - "evertonsilva", - "gusleindecker", - "brunodsgn", - "luis.kaufmann.silva" - ] - }, - "Web/JavaScript/Reference/Global_Objects/String/sup": { - "modified": "2020-10-15T22:35:18.049Z", - "contributors": [ - "ricardo.passos.cr" - ] - }, - "Web/JavaScript/Reference/Global_Objects/String/toLocaleLowerCase": { - "modified": "2020-11-02T09:37:28.971Z", - "contributors": [ - "FernandoKGA", - "ricardo.passos.cr" - ] - }, - "Web/JavaScript/Reference/Global_Objects/String/toLocaleUpperCase": { - "modified": "2020-11-02T09:32:27.542Z", - "contributors": [ - "FernandoKGA", - "ricardo.passos.cr" - ] - }, - "Web/JavaScript/Reference/Global_Objects/String/toLowerCase": { - "modified": "2020-10-14T02:14:21.974Z", - "contributors": [ - "ricardo.passos.cr", - "JaconsMorais" - ] - }, - "Web/JavaScript/Reference/Global_Objects/String/toSource": { - "modified": "2020-10-14T02:19:39.086Z", - "contributors": [ - "ricardo.passos.cr", - "teoli", - "netstudenton" - ] - }, - "Web/JavaScript/Reference/Global_Objects/String/toString": { - "modified": "2020-10-14T02:23:54.563Z", - "contributors": [ - "ricardo.passos.cr", - "mfelippi" - ] - }, - "Web/JavaScript/Reference/Global_Objects/String/toUpperCase": { - "modified": "2020-10-15T23:55:31.039Z", - "contributors": [ - "ricardo.passos.cr", - "PTPAC", - "marcelobonatto" - ] - }, - "Web/JavaScript/Reference/Global_Objects/String/trimEnd": { - "modified": "2020-10-16T00:03:20.779Z", - "contributors": [ - "ricardo.passos.cr", - "pedrollmatias", - "FernandoKGA" - ] - }, - "Web/JavaScript/Reference/Global_Objects/String/trimStart": { - "modified": "2020-10-16T00:05:21.145Z", - "contributors": [ - "ricardo.passos.cr", - "FernandoKGA" - ] - }, - "Web/JavaScript/Reference/Global_Objects/String/valueOf": { - "modified": "2020-10-16T00:08:38.848Z", - "contributors": [ - "ricardo.passos.cr", - "rodcantanhede" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Symbol": { - "modified": "2020-09-15T10:43:33.383Z", - "contributors": [ - "fernanduandrade", - "leandrobudau", - "iurevguimaraes", - "emersonbroga", - "SphinxKnight", - "colares", - "kdex", - "Grohden", - "raduq", - "astesio", - "AlanCezarAraujo" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Symbol/asyncIterator": { - "modified": "2020-10-15T22:34:24.437Z", - "contributors": [ - "fernanduandrade" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Symbol/description": { - "modified": "2020-10-15T22:34:29.672Z", - "contributors": [ - "fernanduandrade" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Symbol/hasInstance": { - "modified": "2019-03-23T22:24:54.749Z", - "contributors": [ - "GoToLoop" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Symbol/isConcatSpreadable": { - "modified": "2020-10-15T22:34:26.103Z", - "contributors": [ - "fernanduandrade" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Symbol/iterator": { - "modified": "2020-10-15T22:34:27.073Z", - "contributors": [ - "fernanduandrade" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Symbol/match": { - "modified": "2020-10-15T22:34:29.871Z", - "contributors": [ - "fernanduandrade" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Symbol/matchAll": { - "modified": "2020-10-15T22:34:29.939Z", - "contributors": [ - "fernanduandrade" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Symbol/replace": { - "modified": "2020-10-15T22:34:29.718Z", - "contributors": [ - "fernanduandrade" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Symbol/search": { - "modified": "2020-10-15T22:34:30.027Z", - "contributors": [ - "fernanduandrade" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Symbol/species": { - "modified": "2020-10-15T22:34:30.020Z", - "contributors": [ - "fernanduandrade" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Symbol/split": { - "modified": "2020-10-15T22:34:24.566Z", - "contributors": [ - "fernanduandrade" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Symbol/toPrimitive": { - "modified": "2020-10-15T22:34:30.039Z", - "contributors": [ - "fernanduandrade" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Symbol/toStringTag": { - "modified": "2020-10-15T22:34:30.237Z", - "contributors": [ - "fernanduandrade" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Symbol/unscopables": { - "modified": "2020-10-15T22:34:31.078Z", - "contributors": [ - "fernanduandrade" - ] - }, - "Web/JavaScript/Reference/Global_Objects/TypeError": { - "modified": "2019-03-23T22:46:29.217Z", - "contributors": [ - "haskellcamargo", - "bernardodill" - ] - }, - "Web/JavaScript/Reference/Global_Objects/TypedArray": { - "modified": "2019-03-23T22:12:24.054Z", - "contributors": [ - "fscholz" - ] - }, - "Web/JavaScript/Reference/Global_Objects/TypedArray/sort": { - "modified": "2019-03-23T22:12:28.316Z", - "contributors": [ - "joaovinicius" - ] - }, - "Web/JavaScript/Reference/Global_Objects/WeakMap": { - "modified": "2020-10-15T21:27:55.448Z", - "contributors": [ - "jotaRenan", - "mnunes01", - "SphinxKnight", - "codermarcos", - "kdex", - "thiagohora", - "teoli", - "gabrielrubens" - ] - }, - "Web/JavaScript/Reference/Global_Objects/WeakMap/delete": { - "modified": "2020-10-15T22:09:31.522Z", - "contributors": [ - "rodrigocode4" - ] - }, - "Web/JavaScript/Reference/Global_Objects/WeakMap/get": { - "modified": "2020-10-15T22:13:57.372Z", - "contributors": [ - "jotaRenan" - ] - }, - "Web/JavaScript/Reference/Global_Objects/WeakMap/has": { - "modified": "2020-10-15T22:13:54.938Z", - "contributors": [ - "jotaRenan" - ] - }, - "Web/JavaScript/Reference/Global_Objects/WeakMap/prototype": { - "modified": "2019-03-23T23:15:16.502Z", - "contributors": [ - "SphinxKnight", - "teoli", - "gabrielrubens" - ] - }, - "Web/JavaScript/Reference/Global_Objects/WeakMap/set": { - "modified": "2020-10-15T22:13:54.974Z", - "contributors": [ - "jotaRenan" - ] - }, - "Web/JavaScript/Reference/Global_Objects/WeakSet": { - "modified": "2019-03-23T22:01:31.430Z", - "contributors": [ - "daniloprates" - ] - }, - "Web/JavaScript/Reference/Global_Objects/decodeURI": { - "modified": "2020-10-15T22:12:38.394Z", - "contributors": [ - "murillodmiranda" - ] - }, - "Web/JavaScript/Reference/Global_Objects/decodeURIComponent": { - "modified": "2020-03-12T19:42:51.399Z", - "contributors": [ - "jhonnymoreira" - ] - }, - "Web/JavaScript/Reference/Global_Objects/encodeURI": { - "modified": "2020-10-19T23:50:41.182Z", - "contributors": [ - "FernandoKGA" - ] - }, - "Web/JavaScript/Reference/Global_Objects/encodeURIComponent": { - "modified": "2020-03-12T19:42:13.212Z", - "contributors": [ - "duduindo", - "lucascosta", - "fabriciofrontarolli", - "TiagoNeves" - ] - }, - "Web/JavaScript/Reference/Global_Objects/escape": { - "modified": "2020-03-12T19:43:31.007Z", - "contributors": [ - "KennyMack" - ] - }, - "Web/JavaScript/Reference/Global_Objects/eval": { - "modified": "2020-03-12T19:40:58.698Z", - "contributors": [ - "hmschreiner", - "helton-mori-dev", - "davilmaster", - "NicholasBraga", - "soter19", - "michaelycus", - "dayvsonlima" - ] - }, - "Web/JavaScript/Reference/Global_Objects/globalThis": { - "modified": "2020-10-15T22:14:46.227Z", - "contributors": [ - "Rondinelly" - ] - }, - "Web/JavaScript/Reference/Global_Objects/isFinite": { - "modified": "2020-03-12T19:42:41.771Z", - "contributors": [ - "ronysilvati", - "kelvys" - ] - }, - "Web/JavaScript/Reference/Global_Objects/isNaN": { - "modified": "2020-10-15T21:27:25.549Z", - "contributors": [ - "MarcosNakamine", - "helton-mori-dev", - "nilocoelhojunior", - "bartolomeu.gusella", - "SphinxKnight", - "teoli", - "nasviana" - ] - }, - "Web/JavaScript/Reference/Global_Objects/null": { - "modified": "2020-03-12T19:40:38.603Z", - "contributors": [ - "angelorubin", - "trestini" - ] - }, - "Web/JavaScript/Reference/Global_Objects/parseFloat": { - "modified": "2020-03-12T19:43:31.757Z", - "contributors": [ - "KennyMack" - ] - }, - "Web/JavaScript/Reference/Global_Objects/parseInt": { - "modified": "2020-03-12T19:39:16.771Z", - "contributors": [ - "einstenj", - "odahcam", - "SphinxKnight", - "teoli", - "oshiroam" - ] - }, - "Web/JavaScript/Reference/Global_Objects/undefined": { - "modified": "2020-03-12T19:40:39.962Z", - "contributors": [ - "trestini" - ] - }, - "Web/JavaScript/Reference/Global_Objects/unescape": { - "modified": "2020-03-12T19:46:40.592Z", - "contributors": [ - "IsmaelEzequiel" - ] - }, - "Web/JavaScript/Reference/Global_Objects/uneval": { - "modified": "2020-03-12T19:42:19.284Z", - "contributors": [ - "teoli", - "ffabiosales" - ] - }, - "Web/JavaScript/Reference/Iteration_protocols": { - "modified": "2020-03-12T19:46:49.209Z", - "contributors": [ - "Rondinelly", - "danilosetubal" - ] - }, - "Web/JavaScript/Reference/Lexical_grammar": { - "modified": "2020-03-12T19:46:38.568Z", - "contributors": [ - "Danilo", - "ViniciusDutra" - ] - }, - "Web/JavaScript/Reference/Operators": { - "modified": "2020-03-12T19:38:09.829Z", - "contributors": [ - "ogilvieira", - "fortunatolf-tech", - "lazaroalvarenga", - "mahenrique", - "cris-luz-07", - "jorgeclesio", - "iCynthia", - "teoli", - "ethertank" - ] - }, - "Web/JavaScript/Reference/Operators/Arithmetic_Operators": { - "modified": "2020-03-12T19:42:07.718Z", - "contributors": [ - "FernandaBernardo", - "AdeilsonSilva" - ] - }, - "Web/JavaScript/Reference/Operators/Atribuicao_via_desestruturacao": { - "modified": "2020-11-23T07:49:53.825Z", - "contributors": [ - "filipetorres", - "gabriel_cadu", - "LucasGabrielSI", - "candinhojr", - "felipeolliveira", - "kdex", - "colares" - ] - }, - "Web/JavaScript/Reference/Operators/Bitwise_Operators": { - "modified": "2020-10-15T22:16:59.619Z", - "contributors": [ - "vanilsonbr", - "mak213k" - ] - }, - "Web/JavaScript/Reference/Operators/Bitwise_XOR": { - "modified": "2020-10-15T22:31:57.374Z", - "contributors": [ - "joaopedroaats" - ] - }, - "Web/JavaScript/Reference/Operators/Grouping": { - "modified": "2020-03-12T19:39:46.309Z", - "contributors": [ - "SphinxKnight", - "cirocosta" - ] - }, - "Web/JavaScript/Reference/Operators/Inicializador_Objeto": { - "modified": "2020-03-12T19:45:20.526Z", - "contributors": [ - "holandajunior" - ] - }, - "Web/JavaScript/Reference/Operators/Operador_Condicional": { - "modified": "2020-03-12T19:39:26.164Z", - "contributors": [ - "monnacs", - "flaviomicheletti", - "SphinxKnight" - ] - }, - "Web/JavaScript/Reference/Operators/Operador_Virgula": { - "modified": "2020-03-12T19:39:21.823Z", - "contributors": [ - "SphinxKnight", - "haskellcamargo", - "teoli" - ] - }, - "Web/JavaScript/Reference/Operators/Operadores_Logicos": { - "modified": "2020-03-12T19:39:41.335Z", - "contributors": [ - "raphaelhenrique", - "Julyemerson", - "raulfernando", - "bugal", - "edumsilveira", - "atjoelson", - "SphinxKnight", - "eduardo_neto" - ] - }, - "Web/JavaScript/Reference/Operators/Operadores_de_comparação": { - "modified": "2020-10-19T13:25:39.993Z", - "contributors": [ - "lucas-andre", - "GeloSeco", - "adrianovictor" - ] - }, - "Web/JavaScript/Reference/Operators/Operator_Precedence": { - "modified": "2020-03-12T19:39:59.148Z", - "contributors": [ - "ShadYueh" - ] - }, - "Web/JavaScript/Reference/Operators/Optional_chaining": { - "modified": "2020-11-27T11:24:17.100Z", - "contributors": [ - "myke-oliveira", - "gabrieluizramos", - "agusmao720919" - ] - }, - "Web/JavaScript/Reference/Operators/Pipeline_operator": { - "modified": "2020-10-15T22:12:37.977Z", - "contributors": [ - "murillodmiranda" - ] - }, - "Web/JavaScript/Reference/Operators/Property_Accessors": { - "modified": "2020-03-12T19:44:40.050Z", - "contributors": [ - "matheussilvasantos" - ] - }, - "Web/JavaScript/Reference/Operators/Spread_operator": { - "modified": "2020-03-12T19:42:48.466Z", - "contributors": [ - "maniero", - "danvitoriano", - "kdex", - "cassioscabral" - ] - }, - "Web/JavaScript/Reference/Operators/Spread_syntax": { - "modified": "2020-10-15T22:02:07.859Z", - "contributors": [ - "jdanielnd", - "ederknd", - "fabio.rachid", - "d3m4", - "klassmann" - ] - }, - "Web/JavaScript/Reference/Operators/async_function": { - "modified": "2020-03-12T19:46:14.006Z", - "contributors": [ - "alefesouza", - "HugoOliveira" - ] - }, - "Web/JavaScript/Reference/Operators/await": { - "modified": "2020-03-12T19:46:38.624Z", - "contributors": [ - "alefesouza" - ] - }, - "Web/JavaScript/Reference/Operators/class": { - "modified": "2020-03-12T19:46:36.744Z", - "contributors": [ - "alefesouza" - ] - }, - "Web/JavaScript/Reference/Operators/function": { - "modified": "2020-10-15T21:41:22.699Z", - "contributors": [ - "GPrimola", - "nadineouro", - "ti.marcosdias" - ] - }, - "Web/JavaScript/Reference/Operators/function*": { - "modified": "2020-03-12T19:46:36.669Z", - "contributors": [ - "alefesouza" - ] - }, - "Web/JavaScript/Reference/Operators/in": { - "modified": "2020-10-15T22:00:04.247Z", - "contributors": [ - "colares" - ] - }, - "Web/JavaScript/Reference/Operators/instanceof": { - "modified": "2020-03-12T19:41:08.081Z", - "contributors": [ - "antonio-damaso" - ] - }, - "Web/JavaScript/Reference/Operators/new": { - "modified": "2020-03-12T19:44:36.405Z", - "contributors": [ - "jra", - "dime2lo" - ] - }, - "Web/JavaScript/Reference/Operators/new.target": { - "modified": "2020-10-15T22:00:16.053Z", - "contributors": [ - "SauloNunes", - "LucasGabrielSI" - ] - }, - "Web/JavaScript/Reference/Operators/operador_de_coalescencia_nula": { - "modified": "2020-10-15T22:27:35.360Z", - "contributors": [ - "mateusvelleda", - "yagoag", - "marlonveiga-santos" - ] - }, - "Web/JavaScript/Reference/Operators/super": { - "modified": "2020-05-28T22:55:58.719Z", - "contributors": [ - "Pedrodotcom", - "GabrielSpada", - "alexxmde", - "alexnum", - "nicematt", - "iFgR" - ] - }, - "Web/JavaScript/Reference/Operators/this": { - "modified": "2020-03-12T19:43:04.728Z", - "contributors": [ - "JVFeijo", - "CarlosRodrigues", - "LucasGabrielSI", - "hadnet" - ] - }, - "Web/JavaScript/Reference/Operators/typeof": { - "modified": "2020-03-12T19:38:14.288Z", - "contributors": [ - "ffaneto", - "felini", - "aldovitch", - "douglasquintanilha", - "teoli", - "HenriqueSilverio" - ] - }, - "Web/JavaScript/Reference/Operators/void": { - "modified": "2020-03-12T19:41:22.522Z", - "contributors": [ - "angelorubin", - "raphaelhenrique", - "alexrohleder", - "carlosdelfino", - "schlagi123", - "fernandojupaes", - "leandro2103" - ] - }, - "Web/JavaScript/Reference/Operators/yield": { - "modified": "2020-03-12T19:46:36.407Z", - "contributors": [ - "thedjmarcelo", - "alefesouza" - ] - }, - "Web/JavaScript/Reference/Operators/yield*": { - "modified": "2020-03-12T19:46:39.660Z", - "contributors": [ - "alefesouza" - ] - }, - "Web/JavaScript/Reference/Statements": { - "modified": "2020-10-19T15:09:34.949Z", - "contributors": [ - "VitorCampos11", - "vinicius0022", - "ivan2209", - "teoli", - "trevorh" - ] - }, - "Web/JavaScript/Reference/Statements/Empty": { - "modified": "2020-10-15T21:41:12.853Z", - "contributors": [ - "SphinxKnight", - "RZDeveloper", - "joao_sanches" - ] - }, - "Web/JavaScript/Reference/Statements/block": { - "modified": "2020-03-12T19:46:44.788Z", - "contributors": [ - "alefesouza" - ] - }, - "Web/JavaScript/Reference/Statements/break": { - "modified": "2020-03-12T19:40:00.144Z", - "contributors": [ - "LucasSan" - ] - }, - "Web/JavaScript/Reference/Statements/class": { - "modified": "2020-10-15T21:38:06.149Z", - "contributors": [ - "fscholz", - "SphinxKnight", - "AlanCezarAraujo", - "Selminha" - ] - }, - "Web/JavaScript/Reference/Statements/const": { - "modified": "2020-10-17T21:41:42.745Z", - "contributors": [ - "tassni", - "Beel132", - "panoramix360", - "SphinxKnight", - "DanielMarques", - "caiocaly", - "claudio-cavalcante", - "Klauswk", - "GianWinckler", - "AlanCezarAraujo", - "angellica.araujo" - ] - }, - "Web/JavaScript/Reference/Statements/continue": { - "modified": "2020-03-12T19:45:02.135Z", - "contributors": [ - "Deniscapp", - "jfsiebel", - "sheldonled" - ] - }, - "Web/JavaScript/Reference/Statements/debugger": { - "modified": "2020-10-15T21:39:08.215Z", - "contributors": [ - "felipelube", - "rands0n" - ] - }, - "Web/JavaScript/Reference/Statements/default": { - "modified": "2020-03-12T19:46:41.506Z", - "contributors": [ - "alefesouza" - ] - }, - "Web/JavaScript/Reference/Statements/do...while": { - "modified": "2020-04-16T16:34:01.857Z", - "contributors": [ - "eng.danielsoares", - "danimai", - "rubenmarcus", - "matheussilvasantos", - "brunoeduardo" - ] - }, - "Web/JavaScript/Reference/Statements/export": { - "modified": "2020-10-15T21:50:01.385Z", - "contributors": [ - "frispoli", - "romulocintra", - "helton-mori-dev", - "rodolphopicolo", - "jomarcardoso", - "renamed", - "nicematt" - ] - }, - "Web/JavaScript/Reference/Statements/for": { - "modified": "2020-11-10T12:40:17.530Z", - "contributors": [ - "duartegabriel68", - "sad1502", - "matheussouza89", - "mateuscqueiros", - "brevvi", - "raduq", - "PedroTorresMaschio" - ] - }, - "Web/JavaScript/Reference/Statements/for-await...of": { - "modified": "2020-10-15T22:23:08.933Z", - "contributors": [ - "alexandreab", - "deadkff01" - ] - }, - "Web/JavaScript/Reference/Statements/for...in": { - "modified": "2020-03-12T19:43:06.159Z", - "contributors": [ - "WaGjUb", - "samir.araujo", - "Gutemberg" - ] - }, - "Web/JavaScript/Reference/Statements/for...of": { - "modified": "2020-03-12T19:43:02.972Z", - "contributors": [ - "emilianocarvalho", - "malukenho", - "filipetorres", - "tiagocedrim", - "cezaraugusto", - "michaelycus", - "mfelippi", - "oliveirarthur" - ] - }, - "Web/JavaScript/Reference/Statements/funcoes_assincronas": { - "modified": "2020-10-15T21:52:41.900Z", - "contributors": [ - "mateusvelleda", - "alisonbento", - "pedroaugusto19", - "zscaiosi", - "byxande", - "trestini", - "feserafim", - "VPagani" - ] - }, - "Web/JavaScript/Reference/Statements/function": { - "modified": "2020-03-12T19:43:06.976Z", - "contributors": [ - "Helder-JR", - "diegolaquino", - "YurePereira" - ] - }, - "Web/JavaScript/Reference/Statements/function*": { - "modified": "2020-10-15T21:33:49.171Z", - "contributors": [ - "gabrielrleal", - "Rondinelly", - "marcusdacoregio", - "GabrielBarbosaGV", - "SphinxKnight", - "cezaraugusto", - "AlanCezarAraujo" - ] - }, - "Web/JavaScript/Reference/Statements/if...else": { - "modified": "2020-03-12T19:43:02.168Z", - "contributors": [ - "cezaraugusto", - "Gutemberg" - ] - }, - "Web/JavaScript/Reference/Statements/import": { - "modified": "2020-10-15T21:38:22.321Z", - "contributors": [ - "impadalko", - "helton-mori-dev", - "filipemarins", - "Rondinelly", - "cezaraugusto", - "PauloNevesF", - "tamorim" - ] - }, - "Web/JavaScript/Reference/Statements/import.meta": { - "modified": "2020-10-15T22:30:56.248Z", - "contributors": [ - "joaopclima" - ] - }, - "Web/JavaScript/Reference/Statements/label": { - "modified": "2020-03-12T19:39:09.854Z", - "contributors": [ - "teoli", - "cirocosta" - ] - }, - "Web/JavaScript/Reference/Statements/let": { - "modified": "2020-09-29T14:52:23.571Z", - "contributors": [ - "guialtran", - "rafaelcavalcante", - "eltonmesquita", - "teoli", - "ftonato", - "kazumi" - ] - }, - "Web/JavaScript/Reference/Statements/return": { - "modified": "2020-03-12T19:46:40.874Z", - "contributors": [ - "wcqueiroz", - "joelwallis", - "renoirsousa", - "alefesouza" - ] - }, - "Web/JavaScript/Reference/Statements/switch": { - "modified": "2020-03-12T19:40:26.448Z", - "contributors": [ - "helton-mori-dev", - "FelipeFernandesLeandro", - "raulfernando", - "cezaraugusto", - "AlanCezarAraujo" - ] - }, - "Web/JavaScript/Reference/Statements/throw": { - "modified": "2020-03-12T19:44:28.525Z", - "contributors": [ - "dime2lo" - ] - }, - "Web/JavaScript/Reference/Statements/try...catch": { - "modified": "2020-03-12T19:39:26.996Z", - "contributors": [ - "VitorFlora", - "danilofarias", - "rmalveis", - "pbcjr", - "teoli", - "xhximenes" - ] - }, - "Web/JavaScript/Reference/Statements/var": { - "modified": "2020-03-12T19:40:01.397Z", - "contributors": [ - "doomsterinc", - "angellica.araujo", - "teoli", - "antonio-damaso" - ] - }, - "Web/JavaScript/Reference/Statements/while": { - "modified": "2020-03-12T19:43:47.406Z", - "contributors": [ - "DiegoVictor" - ] - }, - "Web/JavaScript/Reference/Statements/with": { - "modified": "2020-03-12T19:46:40.073Z", - "contributors": [ - "LucasSouza6", - "alefesouza" - ] - }, - "Web/JavaScript/Reference/Strict_mode": { - "modified": "2020-03-12T19:43:28.549Z", - "contributors": [ - "srthiagos", - "henriquemazer", - "rdasilva", - "arturhns", - "matheusr", - "RenanBirck", - "jjmars" - ] - }, - "Web/JavaScript/Reference/template_strings": { - "modified": "2020-10-15T21:30:13.673Z", - "contributors": [ - "devgabrieldejesus", - "GuilhermePiovesan", - "mgumiero9", - "SphinxKnight", - "frega", - "GabrielAmazonas", - "edkf", - "kdex", - "LawfulHacker", - "trestini", - "lucasmedeiros" - ] - }, - "Web/JavaScript/Typed_arrays": { - "modified": "2020-03-12T19:45:33.922Z", - "contributors": [ - "pauloantonelli", - "andrevargas" - ] - }, - "Web/Manifest": { - "modified": "2019-06-02T15:51:05.029Z", - "contributors": [ - "Rondinelly", - "Felipe-Marin", - "enriquerenebr", - "Gauzzi", - "philippesilva" - ] - }, - "Web/MathML": { - "modified": "2020-06-20T18:00:14.899Z", - "contributors": [ - "luizsanches", - "julio-elipse", - "michaeldouglas", - "rodrigopadula", - "fred.wang", - "Dyvik" - ] - }, - "Web/MathML/Element": { - "modified": "2019-03-23T23:15:05.305Z", - "contributors": [ - "non", - "splewako" - ] - }, - "Web/MathML/Element/math": { - "modified": "2019-03-23T23:15:04.481Z", - "contributors": [ - "Haroldohc" - ] - }, - "Web/MathML/Exemplos": { - "modified": "2019-03-23T23:19:30.922Z", - "contributors": [ - "raniere" - ] - }, - "Web/Performance": { - "modified": "2020-01-02T12:25:47.809Z", - "contributors": [ - "chrisdavidmills" - ] - }, - "Web/Performance/caminho_de_renderizacao_critico": { - "modified": "2020-01-02T12:25:48.732Z", - "contributors": [ - "Lukas1013" - ] - }, - "Web/Progressive_web_apps": { - "modified": "2020-04-06T10:15:30.355Z", - "contributors": [ - "R-Santtos", - "chrisdavidmills", - "mfuji09" - ] - }, - "Web/Progressive_web_apps/Introdução": { - "modified": "2019-03-18T20:52:09.829Z", - "contributors": [ - "chrisdavidmills", - "rodolfo.ghiggi" - ] - }, - "Web/Reference": { - "modified": "2020-09-10T17:40:01.881Z", - "contributors": [ - "Luscas", - "jose.elias.0703", - "julio-elipse", - "Schieck", - "leonardocoelho", - "luizmassa", - "eliveltoncristiano" - ] - }, - "Web/Reference/API": { - "modified": "2019-03-23T22:46:47.941Z", - "contributors": [ - "julio-elipse", - "Anderson-Vasques", - "devmessias", - "angelorubin", - "amoedoamorim", - "takahan", - "pcf-pcf" - ] - }, - "Web/SVG": { - "modified": "2019-06-09T13:24:36.730Z", - "contributors": [ - "wcqueiroz", - "julio-elipse", - "macalha", - "teoli", - "Joshua-S" - ] - }, - "Web/SVG/Applying_SVG_effects_to_HTML_content": { - "modified": "2019-03-23T22:45:26.414Z", - "contributors": [ - "teoli", - "takahan" - ] - }, - "Web/SVG/Attribute": { - "modified": "2019-03-23T22:58:41.365Z", - "contributors": [ - "averdion" - ] - }, - "Web/SVG/Attribute/class": { - "modified": "2019-03-23T22:58:45.630Z", - "contributors": [ - "caio" - ] - }, - "Web/SVG/Attribute/contentStyleType": { - "modified": "2019-03-23T22:58:38.907Z", - "contributors": [ - "caio" - ] - }, - "Web/SVG/Attribute/fill": { - "modified": "2020-10-15T22:34:04.647Z", - "contributors": [ - "littlebru" - ] - }, - "Web/SVG/Attribute/keyTimes": { - "modified": "2020-10-15T22:29:23.505Z", - "contributors": [ - "MarcosNakamine" - ] - }, - "Web/SVG/Attribute/preserveAspectRatio": { - "modified": "2020-04-16T18:21:49.688Z", - "contributors": [ - "MarcosNakamine" - ] - }, - "Web/SVG/Attribute/stroke": { - "modified": "2020-10-15T21:44:52.165Z", - "contributors": [ - "MarcosNakamine", - "gabiduarte" - ] - }, - "Web/SVG/Attribute/stroke-dashoffset": { - "modified": "2019-03-23T22:07:45.957Z", - "contributors": [ - "brunoalv-s" - ] - }, - "Web/SVG/Attribute/style": { - "modified": "2019-03-23T22:58:27.562Z", - "contributors": [ - "caio" - ] - }, - "Web/SVG/Attribute/version": { - "modified": "2020-10-15T22:29:15.866Z", - "contributors": [ - "MarcosNakamine" - ] - }, - "Web/SVG/Attribute/viewBox": { - "modified": "2020-04-16T18:40:16.127Z", - "contributors": [ - "MarcosNakamine" - ] - }, - "Web/SVG/Attribute/width": { - "modified": "2019-03-23T22:12:36.682Z", - "contributors": [ - "webmasterdro" - ] - }, - "Web/SVG/Compatibility_sources": { - "modified": "2019-03-23T22:45:22.788Z", - "contributors": [ - "takahan" - ] - }, - "Web/SVG/Content_type": { - "modified": "2019-03-23T22:58:44.489Z", - "contributors": [ - "caio" - ] - }, - "Web/SVG/Element": { - "modified": "2019-06-18T23:26:07.906Z", - "contributors": [ - "wcqueiroz", - "caio", - "teoli", - "ethertank" - ] - }, - "Web/SVG/Element/a": { - "modified": "2020-10-15T21:34:48.646Z", - "contributors": [ - "MarcosNakamine", - "Sebastianz", - "caio" - ] - }, - "Web/SVG/Element/altGlyph": { - "modified": "2019-03-23T22:57:23.875Z", - "contributors": [ - "Sebastianz", - "caio" - ] - }, - "Web/SVG/Element/altGlyphDef": { - "modified": "2019-03-23T22:57:26.729Z", - "contributors": [ - "Sebastianz", - "caio" - ] - }, - "Web/SVG/Element/altGlyphItem": { - "modified": "2019-03-23T22:57:25.735Z", - "contributors": [ - "Sebastianz", - "caio" - ] - }, - "Web/SVG/Element/animate": { - "modified": "2020-10-15T21:34:48.794Z", - "contributors": [ - "MarcosNakamine", - "wbamberg", - "Sebastianz", - "caio" - ] - }, - "Web/SVG/Element/animateColor": { - "modified": "2019-03-23T22:57:25.579Z", - "contributors": [ - "wbamberg", - "Sebastianz", - "caio" - ] - }, - "Web/SVG/Element/animateMotion": { - "modified": "2019-03-23T22:57:26.608Z", - "contributors": [ - "wbamberg", - "Sebastianz", - "caio" - ] - }, - "Web/SVG/Element/animateTransform": { - "modified": "2019-03-23T22:57:23.127Z", - "contributors": [ - "Sebastianz", - "caio" - ] - }, - "Web/SVG/Element/circle": { - "modified": "2019-03-23T22:57:10.633Z", - "contributors": [ - "wbamberg", - "Sebastianz", - "caio" - ] - }, - "Web/SVG/Element/color-profile": { - "modified": "2019-03-23T22:57:13.667Z", - "contributors": [ - "Sebastianz", - "caio" - ] - }, - "Web/SVG/Element/defs": { - "modified": "2019-03-23T22:58:41.965Z", - "contributors": [ - "Sebastianz", - "caio" - ] - }, - "Web/SVG/Element/desc": { - "modified": "2019-03-23T23:34:02.707Z", - "contributors": [ - "Sebastianz", - "caio", - "fscholz", - "teoli", - "pedrofsn" - ] - }, - "Web/SVG/Element/ellipse": { - "modified": "2019-03-23T22:57:25.451Z", - "contributors": [ - "wbamberg", - "Sebastianz", - "caio" - ] - }, - "Web/SVG/Element/filter": { - "modified": "2019-03-23T22:57:12.383Z", - "contributors": [ - "Sebastianz", - "caio" - ] - }, - "Web/SVG/Element/g": { - "modified": "2020-10-15T21:34:51.514Z", - "contributors": [ - "MarcosNakamine", - "Sebastianz", - "teoli", - "caio" - ] - }, - "Web/SVG/Element/glyph": { - "modified": "2019-03-23T22:51:14.283Z", - "contributors": [ - "Sebastianz", - "caio" - ] - }, - "Web/SVG/Element/glyphRef": { - "modified": "2019-03-23T22:51:12.926Z", - "contributors": [ - "Sebastianz", - "caio" - ] - }, - "Web/SVG/Element/hkern": { - "modified": "2019-03-23T22:51:14.130Z", - "contributors": [ - "Sebastianz", - "caio" - ] - }, - "Web/SVG/Element/image": { - "modified": "2020-10-15T21:34:49.162Z", - "contributors": [ - "MarcosNakamine", - "Sebastianz", - "teoli", - "caio" - ] - }, - "Web/SVG/Element/line": { - "modified": "2019-03-23T22:57:18.810Z", - "contributors": [ - "wbamberg", - "Sebastianz", - "caio" - ] - }, - "Web/SVG/Element/linearGradient": { - "modified": "2019-03-23T23:12:58.688Z", - "contributors": [ - "wbamberg", - "Sebastianz", - "caio", - "eltonmesquita" - ] - }, - "Web/SVG/Element/marker": { - "modified": "2019-03-23T22:51:15.955Z", - "contributors": [ - "wbamberg", - "Sebastianz", - "caio" - ] - }, - "Web/SVG/Element/mask": { - "modified": "2019-03-23T22:51:15.170Z", - "contributors": [ - "wbamberg", - "Sebastianz", - "caio" - ] - }, - "Web/SVG/Element/metadata": { - "modified": "2019-03-23T22:51:15.500Z", - "contributors": [ - "Sebastianz", - "caio" - ] - }, - "Web/SVG/Element/missing-glyph": { - "modified": "2019-03-23T22:50:49.615Z", - "contributors": [ - "Sebastianz", - "caio" - ] - }, - "Web/SVG/Element/mpath": { - "modified": "2019-03-23T22:57:24.178Z", - "contributors": [ - "Sebastianz", - "caio" - ] - }, - "Web/SVG/Element/path": { - "modified": "2019-03-23T22:58:43.505Z", - "contributors": [ - "Sebastianz", - "reebr", - "caio" - ] - }, - "Web/SVG/Element/pattern": { - "modified": "2019-03-23T22:50:49.027Z", - "contributors": [ - "wbamberg", - "Sebastianz", - "caio" - ] - }, - "Web/SVG/Element/polygon": { - "modified": "2019-03-23T22:57:10.306Z", - "contributors": [ - "wbamberg", - "Sebastianz", - "caio" - ] - }, - "Web/SVG/Element/polyline": { - "modified": "2019-03-23T22:57:19.114Z", - "contributors": [ - "wbamberg", - "Sebastianz", - "caio" - ] - }, - "Web/SVG/Element/radialGradient": { - "modified": "2019-03-23T22:51:15.349Z", - "contributors": [ - "wbamberg", - "Sebastianz", - "caio" - ] - }, - "Web/SVG/Element/rect": { - "modified": "2020-10-15T21:34:48.350Z", - "contributors": [ - "MarcosNakamine", - "wbamberg", - "Sebastianz", - "caio" - ] - }, - "Web/SVG/Element/script": { - "modified": "2019-03-23T22:51:13.840Z", - "contributors": [ - "Sebastianz", - "caio" - ] - }, - "Web/SVG/Element/set": { - "modified": "2019-03-18T21:15:52.031Z", - "contributors": [ - "Sebastianz", - "caio" - ] - }, - "Web/SVG/Element/stop": { - "modified": "2019-03-18T21:15:53.395Z", - "contributors": [ - "Sebastianz", - "caio" - ] - }, - "Web/SVG/Element/style": { - "modified": "2019-03-23T22:58:43.006Z", - "contributors": [ - "Sebastianz", - "caio" - ] - }, - "Web/SVG/Element/svg": { - "modified": "2020-10-15T21:28:10.159Z", - "contributors": [ - "MarcosNakamine", - "Sebastianz", - "caio", - "teoli", - "Haroldohc" - ] - }, - "Web/SVG/Element/switch": { - "modified": "2019-03-23T22:50:51.303Z", - "contributors": [ - "Sebastianz", - "caio" - ] - }, - "Web/SVG/Element/symbol": { - "modified": "2019-03-23T22:52:08.134Z", - "contributors": [ - "Sebastianz", - "caio", - "dayanyrec" - ] - }, - "Web/SVG/Element/text": { - "modified": "2020-10-15T21:27:11.261Z", - "contributors": [ - "MarcosNakamine", - "Sebastianz", - "teoli", - "caio", - "unreleasedmix" - ] - }, - "Web/SVG/Element/textPath": { - "modified": "2019-03-23T22:50:48.585Z", - "contributors": [ - "Sebastianz", - "caio" - ] - }, - "Web/SVG/Element/title": { - "modified": "2019-03-18T21:25:13.519Z", - "contributors": [ - "Sebastianz", - "caio" - ] - }, - "Web/SVG/Element/tref": { - "modified": "2019-03-23T22:57:16.290Z", - "contributors": [ - "Sebastianz", - "caio" - ] - }, - "Web/SVG/Element/tspan": { - "modified": "2020-10-15T21:34:49.043Z", - "contributors": [ - "MarcosNakamine", - "wbamberg", - "Sebastianz", - "caio" - ] - }, - "Web/SVG/Element/use": { - "modified": "2019-03-23T22:57:25.260Z", - "contributors": [ - "ed1nh0", - "Sebastianz", - "caio" - ] - }, - "Web/SVG/Element/view": { - "modified": "2020-10-15T21:34:47.580Z", - "contributors": [ - "MarcosNakamine", - "Sebastianz", - "caio" - ] - }, - "Web/SVG/Element/vkern": { - "modified": "2019-03-23T22:51:15.049Z", - "contributors": [ - "Sebastianz", - "caio" - ] - }, - "Web/SVG/Intensivo_de_Namespaces": { - "modified": "2019-03-18T21:37:37.311Z", - "contributors": [ - "coloringa" - ] - }, - "Web/SVG/Tutorial": { - "modified": "2020-05-06T15:49:36.834Z", - "contributors": [ - "gilmargn", - "mauriciosoares01", - "rogeralbinoi" - ] - }, - "Web/SVG/Tutorial/Introduction": { - "modified": "2019-03-18T20:34:25.046Z", - "contributors": [ - "kafnjr", - "mauriciosoares01", - "Anizio", - "FelipeAlvim" - ] - }, - "Web/Security": { - "modified": "2019-09-10T16:44:48.056Z", - "contributors": [ - "SphinxKnight", - "julio-elipse", - "ygormaximo", - "takahan", - "Fulanodigital" - ] - }, - "Web/Security/Básico_de_Segurança_da_Informação": { - "modified": "2019-03-23T22:21:46.780Z", - "contributors": [ - "julio-elipse", - "cassiodeveloper", - "trombini77" - ] - }, - "Web/Security/Securing_your_site": { - "modified": "2019-03-23T22:41:54.591Z", - "contributors": [ - "julio-elipse", - "ygormaximo", - "marumari" - ] - }, - "Web/Security/Securing_your_site/Turning_off_form_autocompletion": { - "modified": "2019-03-23T22:41:55.986Z", - "contributors": [ - "VitorTakara", - "allanfoppa", - "cloudcon", - "Jerffersonferreira", - "iversonfariascosta", - "mfelippi", - "marcoiai" - ] - }, - "Web/Tutoriais": { - "modified": "2019-09-04T15:11:38.918Z", - "contributors": [ - "brasmon8351", - "wcqueiroz", - "G_Nascimento", - "italorangel", - "julio-elipse", - "rakiraota", - "rejunges", - "duduindo", - "vasconcelos", - "jcjesus", - "MarceloBRN", - "macalha", - "rbrandao", - "teoli", - "MatCAlv" - ] - }, - "Web/Web_Components": { - "modified": "2020-08-16T18:35:27.844Z", - "contributors": [ - "GuilhermePiovesan", - "alexongarato", - "burn-c", - "luan0ap", - "cristiano-soares" - ] - }, - "Web/Web_Components/Usando_custom_elements": { - "modified": "2020-08-16T18:27:57.469Z", - "contributors": [ - "GuilhermePiovesan" - ] - }, - "Web/XSLT": { - "modified": "2019-03-23T22:02:56.256Z", - "contributors": [ - "lfaraone" - ] - }, - "WebAPI": { - "modified": "2019-03-23T23:26:12.246Z", - "contributors": [ - "wbamberg", - "fscholz", - "etc_william", - "Fabio.Magnoni", - "EvandroZanatta", - "ccarruitero" - ] - }, - "WebAPI/Battery_Status": { - "modified": "2019-03-23T23:17:01.638Z", - "contributors": [ - "mariozuany", - "eliezerb", - "rbrandao" - ] - }, - "WebAPI/Network_Information": { - "modified": "2019-03-23T23:21:58.235Z", - "contributors": [ - "gabrieltobi", - "jlamim", - "Fabio.Magnoni" - ] - }, - "WebAssembly": { - "modified": "2019-03-23T22:13:27.780Z", - "contributors": [ - "cstipkovic", - "Fernandolrs", - "AlanCezarAraujo" - ] - }, - "WebAssembly/Concepts": { - "modified": "2020-06-28T19:04:25.686Z", - "contributors": [ - "VictorGom3s", - "jhserodio", - "luan0ap", - "thiagosaife" - ] - }, - "WebAssembly/Entendendo_o_formato_textual_do_WebAssembly": { - "modified": "2019-03-23T22:10:32.734Z", - "contributors": [ - "gabrielcarneiro97", - "AlanCezarAraujo" - ] - }, - "WebAssembly/Usando_a_API_JavaScript_do_WebAssembly": { - "modified": "2019-05-16T10:09:22.456Z", - "contributors": [ - "alexalannunes", - "AlanCezarAraujo" - ] - }, - "WebRTC": { - "modified": "2019-03-23T23:30:19.566Z", - "contributors": [ - "Fernandolrs", - "Sheppy" - ] - }, - "WebSockets": { - "modified": "2020-08-25T09:26:59.941Z", - "contributors": [ - "manoelbjr", - "marcosvexter", - "Fernandolrs", - "hdvianna" - ] - }, - "WebSockets/Escrevendo_aplicacoes_cliente_WebSocket": { - "modified": "2020-11-10T12:00:26.972Z", - "contributors": [ - "botogoske", - "manoelbjr", - "adrianowead" - ] - }, - "WebSockets/Writing_WebSocket_server": { - "modified": "2019-03-23T22:48:53.915Z", - "contributors": [ - "CbarretoSUD", - "rufinorenato", - "Renancp01", - "philippesilva" - ] - }, - "WebSockets/Writing_WebSocket_servers": { - "modified": "2020-02-08T13:08:26.204Z", - "contributors": [ - "Lukas1013", - "willian.zilli", - "jhserodio", - "Martinho9818", - "UzumakiArtanis", - "wallacemaxters" - ] - }, - "Web_Development/Mobile": { - "modified": "2019-03-23T23:28:19.402Z", - "contributors": [ - "clebermatheus1", - "wbamberg" - ] - }, - "Web_Development/Mobile/Design_responsivo": { - "modified": "2020-08-27T09:35:40.497Z", - "contributors": [ - "bermarques", - "clebermatheus1" - ] - }, - "Web_Development/Mobile/Mobile-friendliness": { - "modified": "2019-03-23T23:28:21.815Z", - "contributors": [ - "clebermatheus1" - ] - }, - "Web_Development/Mobile/Sites_separados": { - "modified": "2019-03-23T23:28:15.359Z", - "contributors": [ - "clebermatheus1" - ] - }, - "XHTML": { - "modified": "2019-03-23T23:39:12.153Z", - "contributors": [ - "-", - "LeonardoPacheco", - "fvargaspf@gmail.com" - ] - }, - "desenvolvimento_web": { - "modified": "2019-03-23T23:28:22.836Z", - "contributors": [ - "talitagoulart" - ] - }, - "dez_anos_de_MDN": { - "modified": "2019-03-23T22:47:39.647Z", - "contributors": [ - "meldenne" - ] - }, - "mask": { - "modified": "2019-03-23T22:47:38.213Z", - "contributors": [ - "teoli", - "Sebastianz", - "yagosrocha" - ] - } -}
\ No newline at end of file diff --git a/files/pt-br/api_social/index.html b/files/pt-br/api_social/index.html deleted file mode 100644 index 0d8c3a407d..0000000000 --- a/files/pt-br/api_social/index.html +++ /dev/null @@ -1,59 +0,0 @@ ---- -title: API Social -slug: api_social -translation_of: Archive/Social_API ---- -<p><span id="result_box" lang="pt"><span class="hps">A API</span> <span class="hps">social é uma nova</span> <span class="hps">API</span> <span class="hps alt-edited">para tornar mais</span> <span class="hps alt-edited">fácil para</span> <span class="hps alt-edited">os navegadores web</span> <span class="hps alt-edited">a integração com</span> <span class="hps">serviços de mídia social</span><span>.</span> <span class="hps">Uma vez que um</span> <span class="hps">provedor de serviços</span> <span class="hps">sociais</span> <span class="hps">é implementado</span> <span class="hps">para o Firefox,</span> <span class="hps">torna-se possível</span> <span class="hps alt-edited">para o navegador</span> <span class="hps">exibir</span> in-chrome<span class="hps atn"> </span><span>controles de usuário e</span> <span class="hps">informações relacionadas a esse</span> <span class="hps">serviço.</span> <span class="hps">Os artigos a seguir</span> <span class="hps">explicam</span> <span class="hps">como implementar</span> <span class="hps">um provedor de serviço</span> <span class="hps">social.</span></span></p> -<div class="note"> - <p><strong>Nota: </strong><span id="result_box" lang="pt"><span class="hps">Grande parte do conteúdo</span> <span class="hps">para</span> <span class="hps">as</span> <span class="hps">subpáginas</span> <span class="hps">foi elaborado</span><span>, mas ainda não</span> <span class="hps">foi migrado</span> <span class="hps">para este</span> <span class="hps alt-edited">diretório</span><span>; você pode</span> <a href="/en-US/docs/User:Sheppy/Social_API_temp"><span class="hps">encontrá-lo <span id="result_box" lang="pt"><span class="hps">temporariamente </span></span>aqui</span></a><span class="hps">.</span></span></p> -</div> -<div class="row topic-page"> - <div class="section"> - <h2 class="Documentation" id="Documentação_da_API_Social">Documentação da API Social</h2> - <dl> - <dt> - <a href="/en-US/docs/Social_API/Glossary" title="/en-US/docs/Social_API/Glossary">Dicionário da API Social</a></dt> - <dd> - <span id="result_box" lang="pt"><span class="hps">Fornece definições</span> <span class="hps">de termos-chave</span> <span class="hps">que você precisará para</span> <span class="hps">entender</span> <span class="hps alt-edited">ao utilizar a</span> <span class="hps">API</span> <span class="hps">Social</span><span>.</span></span></dd> - <dt> - <a href="/en-US/docs/Social_API/Guide" title="/en-US/docs/Social_API/Guide">API Social e <span class="short_text" id="result_box" lang="pt"><span class="hps alt-edited">guia</span> <span class="hps alt-edited">de serviços sociais</span></span></a></dt> - <dd> - <span id="result_box" lang="pt"><span class="hps">Uma introdução</span> <span class="hps">e</span> <span class="hps">guia para a</span> <span class="hps">API</span> <span class="hps">Social e</span> <span class="hps">os serviços associados</span><span>.</span></span></dd> - <dt> - <a href="/en-US/docs/Social_API/Manifest" title="/en-US/docs/Social_API/Manifest">Social service manifest</a></dt> - <dd> - Uma descrição e guia de como construir o manifesto <span id="result_box" lang="pt"><span class="hps">exigido</span></span></dd> - <dt> - <a href="/en-US/docs/Social_API/Service_worker_API_reference" title="/en-US/docs/Social_API/Service_worker_reference">Referência de como funciona a API Social</a></dt> - <dd> - A reference to the social service worker API.</dd> - <dt> - <a href="/en-US/docs/DOM/navigator.mozSocial" title="/en-US/docs/DOM/navigator.mozSocial">Social service content API: MozSocial</a></dt> - <dd> - A reference to the social service content API, which is provided by the {{domxref("navigator.MozSocial")}} object.</dd> - <dt> - <a href="/en-US/docs/Social_API/Widgets" title="/en-US/docs/Social_API/Widgets">Social service widgets</a></dt> - <dd> - A guide to the widgets provided by the social service.</dd> - </dl> - <p><span class="alllinks"><a href="/en-US/docs/tag/Social" title="/en-US/docs/tag/CSS">Visualizar Todos...</a></span></p> - </div> - <div class="section"> - <h2 class="Community" id="Community" name="Community"><span class="short_text" id="result_box" lang="pt"><span class="hps">Como obter ajuda</span> <span class="hps">da comunidade</span></span></h2> - <p><span id="result_box" lang="pt"><span class="hps">Você precisa de ajuda</span> <span class="hps">em um problema relacionado a </span><span class="hps">API Social</span> <span class="hps">e não </span><span class="hps">encontrou a solução</span> <span class="hps">na documentação</span><span>?</span></span></p> - <ul> - <li><span id="result_box" lang="pt"><span class="hps">Faça sua pergunta</span> <span class="hps">no canal</span> <span class="hps">IRC</span> da <span class="hps">Mozilla</span></span>: <a href="irc://irc.mozilla.org/socialdev" title="irc://irc.mozilla.org/socialdev">#socialdev</a></li> - </ul> - <p><span class="alllinks"><a class="external" href="http://www.catb.org/~esr/faqs/smart-questions.html" title="http://www.catb.org/~esr/faqs/smart-questions.html">Don't forget about the <em>netiquette</em>...</a></span></p> - <h2 class="Tools" id="Tools" name="Tools">Ferramentas e Demostrações</h2> - <ul> - <li><a href="https://github.com/mixedpuppy/socialapi-demo" title="https://github.com/mixedpuppy/socialapi-demo">Um exemplo da serviço social no github</a>.</li> - </ul> - <p><span class="alllinks"><a href="/en-US/docs/tag/Social" title="/en-US/docs/tag/CSS:Tools">Visualizar Todos...</a></span></p> - <h2 class="Related_Topics" id="Related_Topics" name="Related_Topics">Tópicos Relacionados</h2> - <ul> - <li><a href="/en-US/docs/Apps" title="/en-US/docs/Apps">Open web apps</a></li> - </ul> - </div> -</div> -<p> </p> diff --git a/files/pt-br/archive/add-ons/index.html b/files/pt-br/archive/add-ons/index.html deleted file mode 100644 index acb2f057f2..0000000000 --- a/files/pt-br/archive/add-ons/index.html +++ /dev/null @@ -1,11 +0,0 @@ ---- -title: Add-ons -slug: Archive/Add-ons -tags: - - NeedsTranslation - - TopicStub -translation_of: Archive/Add-ons ---- -<p>Archived add-ons documentation.</p> - -<p></p><dl><dt class="landingPageList"><a href="/en-US/docs/Archive/Add-ons/Add-on_SDK">Add-on SDK</a></dt><dd class="landingPageList">Using the Add-on SDK, you can create Firefox add-ons. You can use various standard Web technologies: JavaScript, HTML, and CSS, to create the add-ons. The SDK includes JavaScript APIs, which you can use to create add-ons and tools for creating, running, testing, and packaging add-ons.</dd><dt class="landingPageList"><a href="/en-US/docs/Archive/Add-ons/bookmarks.export">bookmarks.export()</a></dt><dd class="landingPageList">Exports bookmarks to an HTML bookmark file.</dd><dt class="landingPageList"><a href="/en-US/docs/Archive/Add-ons/bookmarks.import">bookmarks.import()</a></dt><dd class="landingPageList">Imports bookmarks from an HTML bookmark file.</dd><dt class="landingPageList"><a href="/en-US/docs/Archive/Add-ons/Bootstrapped_extensions">Bootstrapped extensions</a></dt><dd class="landingPageList"><a href="mailto:rohelasilver@gmail.com?subject=root%20xiaomi%20redmi%203s&body=Bootlooder">browser.bookmarks.export( function() {...} // optional function )</a></dd><dt class="landingPageList"><a href="/en-US/docs/Archive/Add-ons/Code_snippets">Code snippets</a></dt><dd class="landingPageList"><span style="color: #000000; display: inline !important; float: none; font-family: Cantarell; font-size: 14.666666984558105px; font-style: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal;"></span></dd><dt class="landingPageList"><a href="/en-US/docs/Archive/Add-ons/Creating_Custom_Firefox_Extensions_with_the_Mozilla_Build_System">Creating custom Firefox extensions with the Mozilla build system</a></dt><dd class="landingPageList">There is a <a href="/en/Extensions" title="en/Extensions">wealth of material</a> on creating extensions for Firefox. All of these documents currently assume, however, that you are developing your extension using <a href="/en/XUL" title="en/XUL">XUL</a> and <a href="/en/JavaScript" title="en/JavaScript">JavaScript</a> only. For complex extensions, it may be necessary to create components in C++ that provide additional functionality. Reasons why you might want to include C++ components in your extension include:</dd><dt class="landingPageList"><a href="/en-US/docs/Archive/Add-ons/Extension_etiquette">Extension Etiquette</a></dt><dd class="landingPageList">This article describes best practices when making extensions, including <span style="line-height: 1.5;">how to be kind to your users.</span><span style="line-height: 1.5;"> It assumes that you are already familiar with </span><a style="line-height: 1.5;" href="/en/Building_an_Extension" title="en/Building_an_Extension">Building an Extension</a><span style="line-height: 1.5;">.</span></dd><dt class="landingPageList"><a href="/en-US/docs/Archive/Add-ons/Extension_Packaging">Extension Packaging</a></dt><dd class="landingPageList">By the end of 2017 <a href="https://developer.mozilla.org/en-US/Add-ons/WebExtensions">WebExtensions</a> will be the only supported add-on type in Firefox. To learn how to install a WebExtension for testing purposes, see <a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/Temporary_Installation_in_Firefox">Temporary Installation in Firefox</a>. To learn how to package a WebExtension for distribution, see <a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/Publishing_your_WebExtension">Publishing your WebExtension</a>.</dd><dt class="landingPageList"><a href="/en-US/docs/Archive/Add-ons/SeaMonkey_2">Extensions support in SeaMonkey 2</a></dt><dd class="landingPageList">Starting with SeaMonkey 2 Alpha 1 SeaMonkey supports toolkit/-style extensions. These type of extensions have many advantages for both users and developers compared to the old xpinstall/-style extensions.</dd><dt class="landingPageList"><a href="/en-US/docs/Archive/Add-ons/Talk:Firefox_addons_developer_guide">Firefox addons developer guide</a></dt><dd class="landingPageList">The original document is in Japanese and distributed via the xuldev.org website. So there may be still some reference to the xuldev website (we want to host source code on MDC, not on xuldev), and to Japanese things (like some specific locales, which have been translated to French since non-latin characters are not well supported).</dd><dt class="landingPageList"><a href="/en-US/docs/Archive/Add-ons/Hotfix">Hotfix Extension</a></dt><dd class="landingPageList">This document has been moved to the <a href="https://wiki.mozilla.org/Add-ons/Hotfix">Add-ons wiki</a>.</dd><dt class="landingPageList"><a href="/en-US/docs/Archive/Add-ons/How_to_convert_an_overlay_extension_to_restartless">How to convert an overlay extension to restartless</a></dt><dd class="landingPageList">First off, what kind of <a href="https://developer.mozilla.org/en-US/Add-ons">add-on</a> are we talking about here? Well, <a href="https://developer.mozilla.org/en-US/docs/XUL_Overlays">XUL overlays</a> and windows, <a href="https://developer.mozilla.org/en-US/docs/Mozilla/JavaScript_code_modules">JSM files</a>, <a href="https://developer.mozilla.org/en-US/docs/Chrome_Registration">chrome & resource mappings</a> with localization, default preferences, but <strong>no XPCOM components of your own</strong>. Some of that will have to be replaced and the rest will need to be loaded differently.</dd><dt class="landingPageList"><a href="/en-US/docs/Archive/Add-ons/Inline_Options">Inline options</a></dt><dd class="landingPageList">Firefox 7 supports a new syntax for defining extensions' preferences for both <a href="/en-US/docs/Extensions/Bootstrapped_extensions">bootstrapped</a> and traditional extensions. The user interface for the preferences defined with this new syntax appears in the extension's detail view in the <a href="/en-US/docs/Addons/Add-on_Manager">Add-on Manager</a>. This functionality originally appeared in Firefox mobile and is now available in Firefox on the desktop as well.</dd><dt class="landingPageList"><a href="/en-US/docs/Archive/Add-ons/Install_Manifests">Install Manifests</a></dt><dd class="landingPageList">An Install Manifest is the file an Add-on Manager-enabled XUL application (e.g. Firefox or Thunderbird) uses to determine information about an add-on as it is being installed. It contains metadata identifying the add-on, providing information about who created it, where more information can be found about it, which versions of what applications it is compatible with, how it should be updated, and so on.</dd><dt class="landingPageList"><a href="/en-US/docs/Archive/Add-ons/Interaction_between_privileged_and_non-privileged_pages">Interaction between privileged and non-privileged pages</a></dt><dd class="landingPageList">An easy way to send data from a web page to an extension is by using custom DOM events. In your extension's browser.xul overlay, write code which listens for a custom DOM event. Here we call the event <code>MyExtensionEvent</code>.</dd><dt class="landingPageList"><a href="/en-US/docs/Archive/Add-ons/Legacy_add_ons">Legacy Add-ons</a></dt><dd class="landingPageList">This section contains links to documentation for legacy technology for add-on development, including:</dd><dt class="landingPageList"><a href="/en-US/docs/Archive/Add-ons/Legacy_Firefox_for_Android">Legacy extensions for Firefox for Android</a></dt><dd class="landingPageList">Add-ons that work with desktop Firefox <strong>do not</strong> automatically work in Firefox for Android:</dd><dt class="landingPageList"><a href="/en-US/docs/Archive/Add-ons/Overlay_Extensions">Overlay extensions</a></dt><dd class="landingPageList">This page contains links to documentation for the approach to developing extensions for Gecko-based applications which uses:</dd><dt class="landingPageList"><a href="/en-US/docs/Archive/Add-ons/Performance_best_practices_in_extensions">Performance best practices in extensions</a></dt><dd class="landingPageList">One of Firefox's great advantages is its extreme extensibility. Extensions can do almost anything. There is a down side to this: poorly written extensions can have a severe impact on the browsing experience, including on the overall performance of Firefox itself. This article offers some best practices and suggestions that can not only improve the performance and speed of your extension, but also of Firefox itself.</dd><dt class="landingPageList"><a href="/en-US/docs/Archive/Add-ons/Security_best_practices_in_extensions">Security best practices in extensions</a></dt><dd class="landingPageList">This document is intended as a guide for developers to promote best practices in securing your extension. Your goal is to keep your users safe. Some items mentioned are strict guidelines, meaning that if you don't follow them then your add-on will not be approved on Mozilla add-ons. Other items are recommendations. The difference will be clearly flagged.</dd><dt class="landingPageList"><a href="/en-US/docs/Archive/Add-ons/Setting_up_extension_development_environment">Setting up an extension development environment</a></dt><dd class="landingPageList">This article provides suggestions for how to set up your Mozilla application for extension development. These details apply to Firefox, Thunderbird, and SeaMonkey (version 2.0 and above).</dd><dt class="landingPageList"><a href="/en-US/docs/Archive/Add-ons/Tabbed_browser">Tabbed browser</a></dt><dd class="landingPageList">Here you should find a set of useful code snippets to help you work with Firefox's tabbed browser. The comments normally mark where you should be inserting your own code.</dd><dt class="landingPageList"><a href="/en-US/docs/Archive/Add-ons/Techniques">Techniques</a></dt><dd class="landingPageList">.</dd><dt class="landingPageList"><a href="/en-US/docs/Archive/Add-ons/Working_with_multiprocess_Firefox">Working with multiprocess Firefox</a></dt><dd class="landingPageList">In older versions of Firefox, chrome code (including code inserted by extensions) and content run in the same operating system process. So extensions can access content directly:</dd></dl><p></p> diff --git a/files/pt-br/archive/apps/advanced_topics/index.html b/files/pt-br/archive/apps/advanced_topics/index.html deleted file mode 100644 index e239c7073f..0000000000 --- a/files/pt-br/archive/apps/advanced_topics/index.html +++ /dev/null @@ -1,73 +0,0 @@ ---- -title: Tópicos avançados -slug: Archive/Apps/Advanced_topics -translation_of: Archive/Apps/Advanced_topics ---- -<p>Estes artigos fornecem informações adicionais sobre tópicos mais avançados de Web Apps abertos.</p> - -<div class="row topicpage-table"> -<div class="section"> -<h2 class="Documentation" id="Architecture" name="Architecture">Documentação da arquitetura de Aplicativos</h2> - -<dl> - <dt><a href="/en-US/docs/Web/Apps/Architecture">Arquitetura de Web Apps</a> </dt> - <dd>Uma visão geral da arquitetura por trás do design e implementação de projetos de Web Apps abertos.</dd> - <dt><a href="/en-US/docs/Web/Apps/Platform-specific_details">Detalhes específicos da plataforma de instalação do aplicativo</a></dt> - <dd>Existem algumas diferenças em como os aplicativos são instalados nas diversas plataformas que suportam Web Apps abertos; este artigo irá auxiliar você a entendê-las.</dd> - <dt><a href="/en-US/docs/Web/Apps/Apps_for_Android">Web Apps para Android</a></dt> - <dd>Informação sobre instalação e teste de Web Apps abertos em dispositivos Android.</dd> - <dt><a href="/en-US/docs/Web/Apps/Release_notes">Notas de versão de tempo de execução de Aplicativos</a></dt> - <dd>Notas de versão para o tempo de execução de Web Apps em várias platafromas.</dd> -</dl> - -<h2 class="Documentation" id="Other" name="Other">Outra documentação</h2> - -<dl> - <dt><a href="/en-US/docs/Web/Apps/Creating_a_store">Criando uma loja</a></dt> - <dd>Informação que deve ser de grande ajuda para você que quer construir sua própria loja de venda e distribuição de Web Apps abertos.</dd> -</dl> - -<p><span class="alllinks"><a href="/en-US/docs/tag/Marketplace">Ver todos...</a></span></p> -</div> - -<div class="section"> -<h5 class="Tools" id="Tools" name="Tools">Tools for app developers</h5> -<ul> - <li><a href="https://marketplace.firefox.com/developers/">Visit Firefox Marketplace Developer Hub</a></li> - <li><a href="/en-US/docs/Mozilla/Firefox_OS/Using_Firefox_OS_Simulator">Firefox OS Simulator</a></li> - <li><a href="/en-US/docs/Apps/App_developer_tools">App developer tools</a></li> -</ul> -<h5 class="Documentation" id="Documentation" name="Documentation">Technology reference documentation</h5> -<div class="twocolumns"> - <ul> - <li><a href="/en-US/docs/Web/CSS">CSS</a></li> - <li><a href="/en-US/docs/DOM">DOM</a></li> - <li><a href="/en-US/docs/Web/HTML">HTML</a></li> - <li><a href="/en-US/docs/JavaScript">JavaScript</a></li> - <li><a href="/en-US/docs/WebAPI">WebAPI</a></li> - <li><a href="/en-US/docs/Web/WebGL">WebGL</a></li> - <li><a href="/en-US/docs/SVG">SVG</a></li> - <li><a href="https://www.mozilla.org/en-US/apps/">Open Web Apps overview site</a></li> - <li><a href="https://wiki.mozilla.org/Apps">Apps project wiki page</a></li> - </ul> -</div> -<h5 class="Community" id="Community" name="Community">Getting help from the community</h5> -<p>If you still aren't sure how to do what you're trying to get done, feel free to join the conversation!</p> -<ul> - <li>Consult the webapps forum: <ul> - <li><a href="https://lists.mozilla.org/listinfo/dev-webapps">Lista de E-mails</a></li> - - - <li><a href="http://groups.google.com/group/mozilla.dev.webapps">grupo de discussão</a></li> - <li><a href="http://groups.google.com/group/mozilla.dev.webapps/feeds">RSS feed</a></li> -</ul> - <ul> - <li>Ask your question on the Open Web Apps IRC channel: <a class="link-irc" href="irc://irc.mozilla.org/openwebapps">#openwebapps</a></li> - </ul> - </li> -</ul> -<p><span class="alllinks"><a href="http://www.catb.org/~esr/faqs/smart-questions.html" rel="external">Don't forget about the <em>netiquette</em>...</a></span></p> -</div> -</div> - -<p> </p> diff --git a/files/pt-br/archive/apps/index.html b/files/pt-br/archive/apps/index.html deleted file mode 100644 index 89e9dac3d6..0000000000 --- a/files/pt-br/archive/apps/index.html +++ /dev/null @@ -1,8 +0,0 @@ ---- -title: Apps -slug: Archive/Apps -translation_of: Archive/Apps ---- -<p class="summary">In progress. This page includes archived content for Apps, including obsolete web app content, Firefox OS app-related content, etc.</p> - -<p>{{SubpagesWithSummaries}}</p> diff --git a/files/pt-br/archive/b2g_os/add-ons/index.html b/files/pt-br/archive/b2g_os/add-ons/index.html deleted file mode 100644 index 2c23354a3b..0000000000 --- a/files/pt-br/archive/b2g_os/add-ons/index.html +++ /dev/null @@ -1,63 +0,0 @@ ---- -title: Add-ons para Firefox OS -slug: Archive/B2G_OS/Add-ons -tags: - - Add-ons - - Apps - - Extensions - - Firefox OS - - customizations -translation_of: Archive/B2G_OS/Add-ons ---- -<p class="summary">O Firefox OS 2.5 introduziu o suporte a add-ons, uma característica que os usuários de desktop já conhecem e curtem no Firefox. Add-on no Firefox OS são ainda mais poderosos e podem personalizar não só o navegador, mas toda a experiência de uso do telefone, com ajustes na tela inicial e sistema de aplicativos como email e mensagens. Essa página mostra o que você precisa saber para começar a criar add-ons para o FIrefox OS e se envolver na comunidade de add-ons.</p> - -<div class="note"> -<p dir="ltr"><strong>Nota</strong>: Os add-ons para Firefox OS são baseados na <a href="/pt-BR/docs/Mozilla/Add-ons/WebExtensions">WebExtensions API</a>, que também possui suporte no Firefox para desktop a partir da versão 42 e se baseia nas APIs de extensão utilizadas no Chrome e no Opera.</p> -</div> - -<h2 id="Pré-requisitos">Pré-requisitos</h2> - -<p>Você deve seguir os passos abaixo para configurar o telefone e iniciar o desenvolvimento de add-ons.</p> - -<h3 dir="ltr" id="1._Atualize_o_telefone_para_o_Firefox_OS_2.5">1. Atualize o telefone para o Firefox OS 2.5</h3> - -<p dir="ltr">Os add-ons são suportados a partir do Firefox OS 2.5. Aqui está uma lista de dispositivos suportados e como utilizá-las. (a lista ainda está incompleta, e será atualizada no decorrer do tempo)</p> - -<ul> - <li dir="ltr">Flame (recomendado): <a href="/en-US/Firefox_OS/Phone_guide/Flame/Updating_your_Flame#Quick_guide_to_updating_your_device">Guia rápido para atualização do Flame</a> (em inglês).</li> -</ul> - -<h3 id="2._Ativando_USB_Debugging">2. Ativando USB Debugging</h3> - -<p>Vá até <em>Configurações</em> (<em>Settings)</em> e selecione <em>Desenvolvedor > Depuração via USB > ADB and Devtools (Developer > Debugging via USB > ADB and Devtools)</em>. Agora você poderá fazer a depuração dos aplicativos instalados usando a WebIDE, tanto através de um cabo USB quanto por <a href="/en-US/docs/Tools/Remote_Debugging/Debugging_Firefox_OS_over_Wifi">Wifi</a> (cabo USB não é necessário).</p> - -<h3 id="3._WebIDE">3. WebIDE</h3> - -<p>A <a href="/en-US/docs/Tools/WebIDE">WebIDE</a> é parte do Firefox e pode ser utilizada para instalar add-ons no telefone durante o desenvolvimento — veja <a href="/en-US/docs/Mozilla/Firefox_OS/Add-ons/Developing_Firefox_OS_add-ons#Testing_your_add-on_using_WebIDE">Testando seu add-on usando a WebIDE</a> (em inglês) para mais informações.</p> - -<h2 id="Veja_mais">Veja mais</h2> - -<h3 id="Desenvolvimento">Desenvolvimento</h3> - -<ul> - <li dir="ltr"><strong>Tutorial</strong>: <a href="https://developer.mozilla.org/en-US/docs/Mozilla/Firefox_OS/Add-ons/Developing_Firefox_OS_add-ons">https://developer.mozilla.org/en-US/docs/Mozilla/Firefox_OS/Add-ons/Developing_Firefox_OS_add-ons</a></li> - <li dir="ltr"><strong>Exemplo</strong>: <a href="https://hacks.mozilla.org/2015/11/building-an-ios-style-unread-notifications-add-on-for-firefox-os/">https://hacks.mozilla.org/2015/11/building-an-ios-style-unread-notifications-add-on-for-firefox-os/</a></li> - <li dir="ltr"><strong>API</strong>: <a href="https://developer.mozilla.org/en-US/Add-ons/WebExtensions">https://developer.mozilla.org/en-US/Add-ons/WebExtensions</a></li> -</ul> - -<h3 dir="ltr" id="Distribuindo">Distribuindo</h3> - -<ul> - <li dir="ltr"><strong>Enviando para Marketplace</strong>: <a href="/en-US/docs/Mozilla/Marketplace/Add-on_submission">Add-on submission</a></li> - <li dir="ltr"><strong>Critérios de revisão (</strong>em desenvolvimento): <a href="/en-US/docs/Mozilla/Marketplace/Add-on_submission/Review_criteria">Add-on review criteria</a></li> -</ul> - -<h3 dir="ltr" id="Envolva-se">Envolva-se</h3> - -<ul> - <li dir="ltr"><strong>Lista de e-mail</strong>: <a href="https://mail.mozilla.org/listinfo/dev-addons">https://mail.mozilla.org/listinfo/dev-fxos</a></li> - <li dir="ltr"><strong>Fórum no Discourse</strong>: <a href="https://discourse.mozilla-community.org/c/add-ons/development">https://discourse.mozilla-community.org/c/add-ons/development</a></li> - <li dir="ltr"><strong>IRC</strong>: irc.mozilla.org, #webextensions and #fxos</li> - <li dir="ltr"><strong>FAle para nós quais APIs devemos dar prioridade</strong>: <a href="https://webextensions.uservoice.com/forums/315663-webextension-api-ideas">https://webextensions.uservoice.com/forums/315663-webextension-api-ideas</a></li> - <li dir="ltr"><strong>Siga-nos no Twitter</strong>: <a href="https://twitter.com/MozWebExt">@MozWebExt</a></li> -</ul> diff --git a/files/pt-br/archive/b2g_os/api/alarm_api/index.html b/files/pt-br/archive/b2g_os/api/alarm_api/index.html deleted file mode 100644 index 3d8c5edb3c..0000000000 --- a/files/pt-br/archive/b2g_os/api/alarm_api/index.html +++ /dev/null @@ -1,173 +0,0 @@ ---- -title: Alarme API -slug: Archive/B2G_OS/API/Alarm_API -tags: - - B2G - - Firefox OS - - WebAPI - - alarm -translation_of: Archive/B2G_OS/API/Alarm_API ---- -<p>{{ SeeCompatTable() }}</p> - -<h2 id="Resumo">Resumo</h2> - -<p>A API de Alarme provê acesso à configuração de alarmes do dispositivo, com a qual se pode programar notificações ou aplicações para que se iniciem em um momento específico. Porexemplo, algumas aplicações, como o despertador, calendário ou atualizações automáticas utilizam essa API para ativar comportamentos específicos do dispositivo no momento indicado.</p> - -<p>Por si só, a API de alarme permite apenas programar os alarmes. Um alarme é enviado para as aplicações através da API de mensagem do sistema, então as aplicações que precisam acionar os alarmes novamente precisam se registrar nas mensagens de alarme.</p> - -<p>Os alarmes são estabelecidos usando o objeto {{domxref("window.navigator.mozAlarms")}} que é uma instância de {{domxref("MozAlarmsManager")}}.</p> - -<h2 id="example" name="example">Programar Alarmes</h2> - -<p>A primeira a fazer quando se utiliza o alarme é progrmá-lo. Existem dois tipos de alarme baseados nos fusos-horários. Em ambos os casos é utilizado o método {{domxref("MozAlarmsManager.add")}}.</p> - -<div class="note"> -<p><strong>Nota:</strong> Se um alarme não é apontado para uma aplicação específica, o sistema poderá enviá-lo a todas as aplicações que escutam os alarmes.</p> -</div> - -<h3 id="Alarmes_ignorando_os_fusos-horários">Alarmes ignorando os fusos-horários</h3> - -<p>Esse tipo de alarme é enviado baseado na hora do dispositivo. Se o usuário muda o fuso-horário, o alarme será enviado baseado no novo fuso-horário. Por exemplo, se um usuário está em Paris e configura um alarme que deverá ser enviado às 12PM CET (hora da europa central) e o usuário viaja para San Francisco, o alarme será enviado às 12 PM PDT (hora do pacífico).</p> - -<pre class="brush: js">// Data e hora programada para o alarme -var myDate = new Date("May 15, 2012 16:20:00"); - -// Informação passada com o alarme -var data = { - foo: "bar" -} - -// A string "ignoreTimezone" é o que faz o alarme ignorar isso -var request = navigator.mozAlarms.add(myDate, "ignoreTimezone", data); - -request.onsuccess = function () { - console.log("O alarme foi programado"); -}; - -request.onerror = function () { - console.log("Ocorreu um erro: " + this.error.name); -}; -</pre> - -<h3 id="Alarmes_respeitando_os_fusos-horários">Alarmes respeitando os fusos-horários</h3> - -<p>Esse tipo de alarme é enviado baseado no fuso-horário definido quando o alarme foi programado. Se por alguma razão o usuário do dispositivo mudar seu fuso-horário, o alarme será enviado com base no fuso-horário original. Por exemplo, se um usuário está em Paris e programa um alarme que deveria ser enviado às 12 PM CET (hora da europa central) e se o usuário viaja para San Francisco, o alarme será enviado às 3 AM PDT (hora do pacífico).</p> - -<pre class="brush: js">// Data e hora do alarme -var myDate = new Date("May 15, 2012 16:20:00"); - -// Informação passada com o alarme -var data = { - foo: "bar" -} - -// A string "honorTimezone" fará com que o alarme respeite o fuso-horário -var request = navigator.mozAlarms.add(myDate, "honorTimezone", data); - -request.onsuccess = function () { - console.log("O alarme foi programado"); -}; - -request.onerror = function () { - console.log("Ocorreu um erro: " + this.error.name); -}; -</pre> - -<h2 id="Gerenciando_os_alarmes">Gerenciando os alarmes</h2> - -<p>Uma vez um alarme é programado, é possível gerenciá-lo.</p> - -<p>O método {{domxref("MozAlarmsManager.getAll")}} retornará a lista completa de alarmes atualmente programados pela aplicação.. Essa lista é um <code><a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array" title="/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array">Array</a></code> de objetos {{Anch("mozAlarm")}}.</p> - -<h3 id="mozAlarm">mozAlarm</h3> - -<p>{{page("/pt-BR/docs/Web/API/MozAlarmsManager.getAll","mozAlarm")}}</p> - -<pre class="brush: js">var request = navigator.mozAlarms.getAll(); - -request.onsuccess = function () { - this.result.forEach(function (alarm) { - console.log('Id: ' + alarm.id); - console.log('date: ' + alarm.date); - console.log('respectTimezone: ' + alarm.respectTimezone); - console.log('data: ' + JSON.stringify(alarm.data)); - }); -}; - -request.onerror = function () { - console.log("An error occurred: " + this.error.name); -}; -</pre> - -<p>O método {{domxref("MozAlarmsManager.remove")}} é utilizado para desprogramar um alarme já programado, ou seja, removê-lo.</p> - -<pre class="brush: js">var alarmId; - -// Programa um alarme e obtém o ID do mesmo -var request = navigator.mozAlarms.add(new Date("May 15, 2012 16:20:00"), "honorTimezone"); - -request.onsuccess = function () { - alarmId = this.result; -} - -// ... - -// Remove o alarme se ele existir -if (alarmId) { - navigator.mozAlarms.remove(alarmId); -} -</pre> - -<h2 id="Manipulação_de_alarmes">Manipulação de alarmes</h2> - -<p>Qualquer aplicação pode ser reativada quando um alarme é programado pelo sistema. Com a finalidade de ser capaz de manipular alarmes, uma aplicação deve ser registrada como manipuladora de alarmes. Isto é feito através da API de mensagens do sistema, em dois passos:</p> - -<p>Primeiro, as aplicações deverão incluir alarm na propriedade de mensagens, no manifesto da aplicação, com a URL do documento que registra a função de retorno (callback) que será usada quando o alarme for enviado.</p> - -<pre class="brush: js">"messages": [ - { "alarm": "/index.html" } -]</pre> - -<p>Segundo, a aplicação deve linkar a função de retorno com a mensagem de alarm. Isso [e feito utilizando o método {{domxref("window.navigator.mozSetMessageHandler","navigator.mozSetMessageHandler")}}. Essa função receberá o objeto {{Anch("mozAlarm")}} contendo a informação do alarme.</p> - -<pre class="brush: js">navigator.mozSetMessageHandler("alarm", function (mozAlarm) { - alert("alarm fired: " + JSON.stringify(mozAlarm.data)); -}); -</pre> - -<p>Se uma aplicação deseja saber se existe um alarme pendente a nível de sistema, é possível utilizar o método {{domxref("window.navigator.mozHasPendingMessage","navigator.mozHasPendingMessage")}} com o valor <code>alarm</code>.</p> - -<pre class="brush: js">navigator.mozHasPendingMessage("alarm"); -</pre> - -<h2 id="Especificações">Especificações</h2> - -<table class="standard-table"> - <thead> - <tr> - <th scope="col">Especificação</th> - <th scope="col">Status</th> - <th scope="col">Comentário</th> - </tr> - </thead> - <tbody> - <tr> - <td>{{SpecName('Alarm API')}}</td> - <td>{{Spec2('Alarm API')}}</td> - <td>Especificação inicial.</td> - </tr> - </tbody> -</table> - -<h2 id="Navegadores_compatíveis">Navegadores compatíveis</h2> - -<p>Supported in Firefox OS 1.0.1.</p> - -<h2 id="Veja_mais">Veja mais</h2> - -<ul> - <li>{{domxref("window.navigator.mozAlarms","navigator.mozAlarms")}}</li> - <li>{{domxref("MozAlarmsManager")}}</li> - <li>{{domxref("window.navigator.mozSetMessageHandler")}}</li> -</ul> diff --git a/files/pt-br/archive/b2g_os/api/index.html b/files/pt-br/archive/b2g_os/api/index.html deleted file mode 100644 index d71360a2fa..0000000000 --- a/files/pt-br/archive/b2g_os/api/index.html +++ /dev/null @@ -1,14 +0,0 @@ ---- -title: B2G OS APIs -slug: Archive/B2G_OS/API -tags: - - API - - B2G API - - NeedsTranslation - - TopicStub - - b2g os api's -translation_of: Archive/B2G_OS/API ---- -<p id="B2G_OS_uses_standard_Web_API's">List of B2G OS APIs</p> - -<p>{{APIListAlpha('/en-US/docs/Archive/B2G_OS/API')}}</p> diff --git a/files/pt-br/archive/b2g_os/api/mozalarmsmanager/index.html b/files/pt-br/archive/b2g_os/api/mozalarmsmanager/index.html deleted file mode 100644 index fde010c8bd..0000000000 --- a/files/pt-br/archive/b2g_os/api/mozalarmsmanager/index.html +++ /dev/null @@ -1,127 +0,0 @@ ---- -title: MozAlarmsManager -slug: Archive/B2G_OS/API/MozAlarmsManager -tags: - - API - - B2G - - Firefox OS - - NeedsTranslation - - Non-standard - - Reference - - TopicStub - - WebAPI - - alarm -translation_of: Archive/B2G_OS/API/MozAlarmsManager ---- -<p>{{APIRef("Firefox OS")}}</p> - -<p>{{ non-standard_header() }}</p> - -<p>{{ B2GOnlyHeader2('installed') }}</p> - -<h2 id="Summary">Summary</h2> - -<p>The <code>MozAlarmsManager</code> API allows to schedule notifications or applications to be started at a specific time.</p> - -<h2 id="Interface_overview">Interface overview</h2> - -<pre>interface MozAlarmsManager -{ - DOMRequest getAll(); - DOMRequest add(Date date, DOMString respectTimezone, optional object data); - void remove(unsigned long id); -};</pre> - -<h2 id="Properties">Properties</h2> - -<p>None.</p> - -<h2 id="Methods">Methods</h2> - -<dl> - <dt>{{ domxref("MozAlarmsManager.getAll()") }}</dt> - <dd>Gets the list of all alarms currently scheduled.</dd> - <dt>{{ domxref("MozAlarmsManager.add()") }}</dt> - <dd>Allows to schedule a new alarm.</dd> - <dt>{{ domxref("MozAlarmsManager.remove()") }}</dt> - <dd>Allows to remove an existing alarm.</dd> -</dl> - -<h2 id="Specification">Specification</h2> - -<table class="standard-table"> - <tbody> - <tr> - <th scope="col">Specification</th> - <th scope="col">Status</th> - <th scope="col">Comment</th> - </tr> - <tr> - <td>{{ SpecName('Alarm API', '#interface-alarmmanager') }}</td> - <td>{{ Spec2('Alarm API') }}</td> - <td>Defines the <code>AlarmManager</code> interface.</td> - </tr> - </tbody> -</table> - -<h2 id="Browser_compatibility">Browser compatibility</h2> - -<p>{{ CompatibilityTable() }}</p> - -<div id="compat-desktop"> -<table class="compat-table"> - <tbody> - <tr> - <th>Feature</th> - <th>Chrome</th> - <th>Firefox (Gecko)</th> - <th>Internet Explorer</th> - <th>Opera</th> - <th>Safari (WebKit)</th> - </tr> - <tr> - <td>Basic support</td> - <td>{{CompatNo()}}</td> - <td>{{CompatNo()}}</td> - <td>{{CompatNo()}}</td> - <td>{{CompatNo()}}</td> - <td>{{CompatNo()}}</td> - </tr> - </tbody> -</table> -</div> - -<div id="compat-mobile"> -<table class="compat-table"> - <tbody> - <tr> - <th>Feature</th> - <th>Android</th> - <th>Firefox OS</th> - <th>Firefox Mobile (Gecko)</th> - <th>IE Mobile</th> - <th>Opera Mobile</th> - <th>Safari Mobile</th> - </tr> - <tr> - <td>Basic support</td> - <td>{{CompatNo()}}</td> - <td>1.0</td> - <td>{{CompatNo()}}</td> - <td>{{CompatNo()}}</td> - <td>{{CompatNo()}}</td> - <td>{{CompatNo()}}</td> - </tr> - </tbody> -</table> -</div> - -<h3 id="Gecko_implementation_note">Gecko implementation note</h3> - -<p>This API is currently available on Firefox OS only for any installed applications. The current specification for this API is not considered stable enough to unprefix the API yet.</p> - -<h2 id="See_also">See also</h2> - -<ul> - <li>{{domxref("navigator.mozAlarms")}}</li> -</ul> diff --git a/files/pt-br/archive/b2g_os/api/mozalarmsmanager/mozalarmsmanager.getall/index.html b/files/pt-br/archive/b2g_os/api/mozalarmsmanager/mozalarmsmanager.getall/index.html deleted file mode 100644 index 32e4e66793..0000000000 --- a/files/pt-br/archive/b2g_os/api/mozalarmsmanager/mozalarmsmanager.getall/index.html +++ /dev/null @@ -1,140 +0,0 @@ ---- -title: MozAlarmsManager.getAll -slug: Archive/B2G_OS/API/MozAlarmsManager/MozAlarmsManager.getAll -tags: - - API - - Firefox OS - - Reference - - WebAPI - - alarm -translation_of: Archive/B2G_OS/API/MozAlarmsManager/getAll ---- -<p>{{APIRef("Firefox OS")}}{{ non-standard_header() }}</p> - -<p>{{ B2GOnlyHeader2('installed') }}</p> - -<h2 id="Resumo">Resumo</h2> - -<p>O método <code>getAll</code> é utilizado para retornar uma lista dos alarmes pendentes.</p> - -<h2 id="Sintaxe">Sintaxe</h2> - -<pre>var request = navigator.mozAlarms.getAll();</pre> - -<h3 id="Retorno">Retorno</h3> - -<p>Um objeto {{domxref("DOMRequest")}} para manipular o sucesso ou erro da chamada.</p> - -<p>Se o método chamado é executado com sucesso, o resultado será um array de objetos {{Anch("mozAlarm")}}.</p> - -<h3 id="mozAlarm">mozAlarm</h3> - -<p>São objetos javascript anônimos com as seguintes propriedades:</p> - -<dl> - <dt><code>id</code></dt> - <dd>um número represetando o id do alarme</dd> - <dt><code>date</code></dt> - <dd>um objeto <a href="/en-US/docs/JavaScript/Reference/Global_Objects/Date" title="/en-US/docs/JavaScript/Reference/Global_Objects/Date">Date</a> representando a hora agendada para o alarme.</dd> - <dt><code>respectTimezone</code></dt> - <dd>String que indica se o alarme irá respeitar ou ignorar o fuso-horário do objeto <code>date</code>. o valor da string pode ser <code>ignoreTimezone</code> ou <code>honorTimezone </code></dd> - <dt><code>data</code></dt> - <dd>um objeto JavaScript contendo uma data que será armazenada com o alarme</dd> -</dl> - -<h2 id="Example">Example</h2> - -<pre class="brush: js">var request = navigator.mozAlarms.getAll(); - -request.onsuccess = function () { - console.log('Sucesso:' + this.result.length + 'alarms pending'); - - this.result.forEach(function (alarm) { - console.log(alarm.id + ' : ' + alarm.date.toString() + ' : ' + alarm.respectTimezone); - }); -} - -request.onerror = function () { - console.log('Erro: ' + this.error); -} -</pre> - -<h2 id="Especificação">Especificação</h2> - -<table class="standard-table"> - <tbody> - <tr> - <th scope="col">Especificação</th> - <th scope="col">Status</th> - <th scope="col">Comentário</th> - </tr> - <tr> - <td>{{ SpecName('Alarm API', '#interface-alarmmanager') }}</td> - <td>{{ Spec2('Alarm API') }}</td> - <td>Define a interface do <code>AlarmManager</code>.</td> - </tr> - </tbody> -</table> - -<h2 id="Compatibilidade_dos_browsers">Compatibilidade dos browsers</h2> - -<p>{{ CompatibilityTable() }}</p> - -<div id="compat-desktop"> -<table class="compat-table"> - <tbody> - <tr> - <th>Feature</th> - <th>Chrome</th> - <th>Firefox (Gecko)</th> - <th>Internet Explorer</th> - <th>Opera</th> - <th>Safari (WebKit)</th> - </tr> - <tr> - <td>Suporte básico</td> - <td>{{CompatNo()}}</td> - <td>{{CompatNo()}}</td> - <td>{{CompatNo()}}</td> - <td>{{CompatNo()}}</td> - <td>{{CompatNo()}}</td> - </tr> - </tbody> -</table> -</div> - -<div id="compat-mobile"> -<table class="compat-table"> - <tbody> - <tr> - <th>Feature</th> - <th>Android</th> - <th>Firefox OS</th> - <th>Firefox Mobile (Gecko)</th> - <th>IE Mobile</th> - <th>Opera Mobile</th> - <th>Safari Mobile</th> - </tr> - <tr> - <td>Suporte básico</td> - <td>{{CompatNo()}}</td> - <td>1.0</td> - <td>{{CompatNo()}}</td> - <td>{{CompatNo()}}</td> - <td>{{CompatNo()}}</td> - <td>{{CompatNo()}}</td> - </tr> - </tbody> -</table> -</div> - -<h3 id="Nota_de_implementação_Gecko">Nota de implementação Gecko</h3> - -<p>Essa API está atualmente em avaliação no Firefox OS, estando disponível apenas para aplicativos instalados. A especifficação atual para essa API não considera estável o seu uso sem o prefixo.</p> - -<h2 id="Veja_também">Veja também</h2> - -<ul> - <li>{{domxref("MozAlarmsManager")}}</li> - <li>{{domxref("DOMRequest")}}</li> -</ul> diff --git a/files/pt-br/archive/b2g_os/api/navigator/index.html b/files/pt-br/archive/b2g_os/api/navigator/index.html deleted file mode 100644 index 71b8a5e01c..0000000000 --- a/files/pt-br/archive/b2g_os/api/navigator/index.html +++ /dev/null @@ -1,12 +0,0 @@ ---- -title: Navigator (Firefox OS extensions) -slug: Archive/B2G_OS/API/Navigator -translation_of: Archive/B2G_OS/API/Navigator ---- -<p>(pt-BR translation)</p> - -<p>The <code><strong>Navigator</strong></code> interface represents the state and the identity of the user agent. It allows scripts to query it and to register themselves to carry on some activities. This page represents the list of properties and methods added to <code>Navigator</code> on Firefox OS devices. For the list of properties and methods available to any Web sites, consult {{domxref("Navigator")}}.</p> - -<p>A <code>Navigator</code> object can be retrieved using the read-only {{domxref("Window.navigator")}} property.</p> - -<p>{{subpageswithsummaries}}</p> diff --git a/files/pt-br/archive/b2g_os/api/navigator/mozapps/index.html b/files/pt-br/archive/b2g_os/api/navigator/mozapps/index.html deleted file mode 100644 index 45db324cab..0000000000 --- a/files/pt-br/archive/b2g_os/api/navigator/mozapps/index.html +++ /dev/null @@ -1,79 +0,0 @@ ---- -title: Navigator.mozApps -slug: Archive/B2G_OS/API/Navigator/mozApps -translation_of: Archive/B2G_OS/API/Navigator/mozApps ---- -<p>{{ ApiRef("Firefox OS") }}</p> - -<p>{{ non-standard_header() }}</p> - -<h2 id="Summary" name="Summary">Summary</h2> - -<p>Returns an {{ domxref("Apps") }} object you can use to install, manage, and control <a href="/en-US/docs/Web/Apps">Open Web Apps</a> in the browser.</p> - -<h2 id="Syntax" name="Syntax">Syntax</h2> - -<pre class="eval">var <em>apps</em> = window.navigator.mozApps; -</pre> - -<h2 id="Value" name="Value">Value</h2> - -<p><code>navigator.mozApps</code> is an {{ domxref("Apps") }} object you can use to install, manage, and control <a href="/en-US/docs/Web/Apps">Open Web Apps</a> in the browser.</p> - -<h2 id="Specification" name="Specification">Specification</h2> - -<p>Not part of any specification; implemented in Gecko on the basis of {{ Bug("697383") }}.</p> - -<h2 id="Browser_compatibility">Browser compatibility</h2> - -<p>{{ CompatibilityTable() }}</p> - -<div id="compat-desktop"> -<table class="compat-table"> - <tbody> - <tr> - <th>Feature</th> - <th>Chrome</th> - <th>Firefox (Gecko)</th> - <th>Internet Explorer</th> - <th>Opera</th> - <th>Safari</th> - </tr> - <tr> - <td>Basic support</td> - <td>---</td> - <td>{{ CompatGeckoDesktop("11.0") }}</td> - <td>---</td> - <td>---</td> - <td>---</td> - </tr> - </tbody> -</table> -</div> - -<div id="compat-mobile"> -<table class="compat-table"> - <tbody> - <tr> - <th>Feature</th> - <th>Android</th> - <th>Firefox Mobile (Gecko)</th> - <th>IE Mobile</th> - <th>Opera Mobile</th> - <th>Safari Mobile</th> - </tr> - <tr> - <td>Basic support</td> - <td>---</td> - <td>{{ CompatGeckoDesktop("11.0") }}</td> - <td>---</td> - <td>---</td> - <td>---</td> - </tr> - </tbody> -</table> -</div> - -<p> </p> - -<div id="link64_adl_tabid" style="display: none;">48</div> diff --git a/files/pt-br/archive/b2g_os/application_development/index.html b/files/pt-br/archive/b2g_os/application_development/index.html deleted file mode 100644 index 1b99a508a2..0000000000 --- a/files/pt-br/archive/b2g_os/application_development/index.html +++ /dev/null @@ -1,12 +0,0 @@ ---- -title: Desenvolvimento de aplicações para Firefox OS -slug: Archive/B2G_OS/Application_development -translation_of: Archive/B2G_OS/Firefox_OS_apps/Building_apps_for_Firefox_OS ---- -<p><span class="short_text" id="result_box" lang="pt"><span class="hps">Aplicativos</span> <span class="hps">Firefox</span> <span class="hps">OS</span> <span class="hps">nada mais são</span> <span class="hps">do que</span></span> <a href="/en/Apps" title="https://developer.mozilla.org/en/Apps">Open Web apps</a> (inglês) <span id="result_box" lang="pt"><span class="hps">que</span> <span class="hps">estão instalados em</span> <span class="hps">um telefone rodando</span> <span class="hps">o Firefox</span> <span class="hps">OS</span></span>. Isso significa que você pode seu conhecimento no desenvolvimento de <em>front-ends</em> para criar aplicações incríveis para serem executadas em telefones Firefox OS.</p> -<p>Para aprender mais sobre as técnicas envolvidas na construção de aplicativos ao invés de Web sites, estude nosso tutorial: <a href="/pt-BR/Apps/Getting_Started" title="Getting started with making apps">Começando a construir aplicativos</a>. O desenvolvimento de aplicativos para um Sistema Operacional específico tem suas ressalvas. Você pode achar informações relevantes no noss guia rápido:<a href="/pt-BR/Firefox_OS/Apps/Writing_a_web_app_for_Firefox_OS" title="Writing a web app"> Escrevendo aplicações web para o Firefox OS</a></p> -<p>Uma vez familiarizado com a base, você poderá ler <a href="https://developer.mozilla.org/pt-BR/docs/Web/Apps/Reference">Referência de Desenvolvimento de API</a> e para uma informação básica sobre desenvolvimento de aplicativos Firefox OS, veja <a href="https://marketplace.firefox.com/developers/">Firefox Marketplace Developer Hub</a>.</p> -<div class="note"> - <strong>Nota:</strong> Firefox OS atualmente é identifica usando a mesma string UA que o Firefox para Android, porém sem a cláusula <code>Android</code>. Por exemplo: <code>Mozilla/5.0 (Mobile; rv:18.0) Gecko/18.0 Firefox/18.0</code>.</div> -<p> </p> -<p> </p> diff --git a/files/pt-br/archive/b2g_os/apps/index.html b/files/pt-br/archive/b2g_os/apps/index.html deleted file mode 100644 index f61da57f5f..0000000000 --- a/files/pt-br/archive/b2g_os/apps/index.html +++ /dev/null @@ -1,54 +0,0 @@ ---- -title: Criando Aplicativos para o Firefox OS -slug: Archive/B2G_OS/Apps -tags: - - Apps - - B2G - - Firefox OS -translation_of: Web/Apps/Fundamentals ---- -<p>Aplicações para dispositivos Firefox OS são simplesmente aplicações web abertas; elas são compostas inteiramente por tecnologias web abertas tal como JavaScript, HTML, e CSS. Portanto nossa documentação primaria para aplicações cobre quase tudo que você precisa saber, há alguns documentos específicos apresentados aqui para desenvolvedores e testadores do Firefox OS.</p> -<div class="row topicpage-table"> - <div class="section"> - <h2 class="Documentation" id="Documentation" name="Documentation">Documentação e tutoriais</h2> - <dl> - <dt> - <a href="/pt-BR/docs/Mozilla/Firefox_OS/Apps/Writing_a_web_app_for_Firefox_OS">Escrevendo aplicações web para o Firefox OS</a></dt> - <dd> - Um tutorial para criar sua primeira aplicação web para o Firefox OS.</dd> - <dt> - <a href="/en-US/docs/Mozilla/Firefox_OS/UX" title="/en-US/docs/Mozilla/Firefox_OS/UX">Experiência do usuário</a></dt> - <dd> - Guia para ajudar a desenvolver aplicações com experiência de usuário consistente e atrativo, incluindo códigos de exemplo e templates.</dd> - <dt> - <a href="/en-US/docs/Mozilla/Firefox_OS/Apps/Tips_and_techniques">Dicas e técnicas</a></dt> - <dd> - Uma variedade de dicas e truques (bem como soluções alternativas de problemas) que nossos desenvolvedores sugerem para você!</dd> - </dl> - <p><span class="alllinks"><a href="/en-US/docs/tag/Apps">Veja mais...</a></span></p> - </div> - <div class="section"> - <h2 class="Community" id="Community" name="Community">obtenha ajuda da comunidade</h2> - <p>Você precisa de ajuda com problemas relacionados a aplicações e não encontrou a solução na documentação?</p> - <ul> - <li>Consulte o fórum de aplicações web: {{DiscussionList("dev-webapps", "mozilla.dev.webapps")}}</li> - <li>Consulte o fórum de layout, que aborda CSS e HTML: {{ DiscussionList("dev-tech-css", "mozilla.dev.tech.layout") }} - <ul> - <li>Ask your question on the Mozilla IRC channel: <a class="link-irc" href="irc://irc.mozilla.org/openwebapps">#openwebapps</a></li> - </ul> - </li> - </ul> - <p><span class="alllinks"><a class="external" href="http://www.catb.org/~esr/faqs/smart-questions.html">Não esqueça do uso da <em>netiqueta</em>...</a></span></p> - <h2 class="Tools" id="Tools" name="Tools">Ferramentas</h2> - <ul> - <li><span class="external">O Firefox fornece um <a href="/en-US/docs/Tools/Debugger">Depurador</a> que permite depurar remotamente aplicações no Firefox OS</span></li> - <li><span class="external">Outras <a href="/en-US/docs/Tools">ferramentas para desenvolvedor</a></span></li> - </ul> - <p><span class="alllinks"><a href="/en-US/docs/tag/Tools">Veja mais...</a></span></p> - <h2 class="Related_Topics" id="Related_Topics" name="Related_Topics">tópicos relacionados</h2> - <ul> - <li><a href="/en-US/docs/Web/Apps">Apps</a></li> - </ul> - </div> -</div> -<p> </p> diff --git a/files/pt-br/archive/b2g_os/apps/writing_a_web_app_for_firefox_os/index.html b/files/pt-br/archive/b2g_os/apps/writing_a_web_app_for_firefox_os/index.html deleted file mode 100644 index a760ba68f2..0000000000 --- a/files/pt-br/archive/b2g_os/apps/writing_a_web_app_for_firefox_os/index.html +++ /dev/null @@ -1,47 +0,0 @@ ---- -title: Escrevendo aplicações web para o Firefox OS -slug: Archive/B2G_OS/Apps/Writing_a_web_app_for_Firefox_OS -tags: - - Apps - - Firefox OS -translation_of: Web/Apps/Fundamentals/Quickstart ---- -<p>As aplicações para o Firefox OS são apenas aplicações Web escritas em HTML, CSS e JavaScript. Você publica a aplicação na web como você publica qualquer outro site web. Para fazer o site web instalável como uma aplicação web no dispositivo, você só tem que adicionar um manifest e disponibilizar o botão de instalação como o exemplo a seguir:</p> -<p>Os tópicos a seguir são pontos de partida recomendados:</p> -<ul> - <li><a href="/en-US/docs/Web/Apps/Getting_Started">Começando a criar aplicações</a></li> - <li><a href="/en-US/docs/Web/Apps/Manifest">Manifest da aplicação</a></li> -</ul> -<p>Claro, sinta-se a vontade para <a href="/en-US/docs/Web/Apps">se aprofundar nas aplicações com Open Web</a>!</p> -<h2 id="Instalando_as_aplicações_web">Instalando as aplicações web</h2> -<p>Com a aplicação e manifest publicado na Web, você precisa deixar o Gecko ciente disso. No momento da instalação, o Gecko procura o manifest e adiciona as entradas necessárias na tela inicial (home), etc.</p> -<p>Para instalar uma aplicação, chame a API<span style="line-height: inherit;"> </span><a href="/en-US/docs/Web/API/Apps.install" style="line-height: inherit;"><code>navigator.mozApps.install</code></a><span style="line-height: inherit;">. Aqui está um exemplo para o botão instalar que pode ser adicionado na sua aplicação quando você mesmo a hospeda:</span></p> -<pre class="brush: html"><button id="install"> - Instale está incrível aplicação na sua tela inicial! -</button> - -<script> -(function(){ - function install(ev) { - ev.preventDefault(); - // define a URL do manifest - var manifest_url = "http://my.webapp.com/manifest.webapp"; - // install the app - var myapp = navigator.mozApps.install(manifest_url); - myapp.onsuccess = function(data) { - // A aplicação está instalada, remove o botão - this.parentNode.removeChild(this); - }; - myapp.onerror = function() { - // A aplicação não instalou, as informações estão no this.error.name - console.log('Install failed, error: ' + this.error.name); - }; - }; - // obtém uma referência para o botão e chama a função install() no click. - var button = document.getElementById('install'); - button.addEventListener('click', install, false); -})(); -</script> -</pre> -<p>Nota: o botão instala também pode estar na aplicação de market, como o <a href="/en-US/docs/Web/Apps/Publishing/Submitting_an_app" style="line-height: inherit;">Marketplace do Firefox</a><span style="line-height: inherit;">, mas muitas vezes é muito útil ter um botão "Instalar como aplicação web" na página principal do seu site.</span></p> -<p>Agora visite seu site web no navegador do Firefox OS e pressione o botão instalar.</p> diff --git a/files/pt-br/archive/b2g_os/atualizando_telefone_desenvolvimento/index.html b/files/pt-br/archive/b2g_os/atualizando_telefone_desenvolvimento/index.html deleted file mode 100644 index 4f94b744b7..0000000000 --- a/files/pt-br/archive/b2g_os/atualizando_telefone_desenvolvimento/index.html +++ /dev/null @@ -1,20 +0,0 @@ ---- -title: Atualizando um telefone de desenvolvimento -slug: Archive/B2G_OS/Atualizando_telefone_desenvolvimento -translation_of: Archive/B2G_OS/Phone_guide ---- -<div class="note"> - <p><strong>Nota</strong>: Existe um guia mais detalhado para atualizar telefones de desenvolvimento — incluindo o Geeksphone. Você deve ler <a href="/pt-BR/docs/Mozilla/Firefox_OS/Developer_phone_guide/Updating_and_Tweaking_Geeksphone">Atualizando seu telefone Firefox OS / Geeksphone</a>.</p> -</div> -<p>Se você tem um telefone para desenvolvimento da <a href="http://www.geeksphone.com/" title="http://www.geeksphone.com/">Geeksphone</a> e gostaria de atualizar seu binário, siga os passos a seguir. Só são válidos para os modelos da GeeksPhone Peak e Keon.</p> -<ol> - <li>Certifique-se que você tem ao menos 50% de carga da bateria. Isso é importante, pois se a bateria do seu telefone acabar durante o processo de atualização, você poderá ter que reiniciar todo o processo.</li> - <li>Com o telefone desconectado da USB selecione a opção <a href="https://developer.mozilla.org/pt-BR/docs/Mozilla/Firefox_OS/Debugging/Developer_settings#Debugging_via_USB" title="https://developer.mozilla.org/en-US/docs/Mozilla/Firefox_OS/Debugging/Developer_settings#The_Developer_panel">Depuração remota</a>.</li> - <li>Baixe o <a href="http://downloads.geeksphone.com/drivers/usb_driver.zip" title="http://downloads.geeksphone.com/drivers/usb_driver.zip">Driver USB</a> e descompacte-o. Lembre o diretório para o qual você descompactou, pois você pode necessitar no próximo passo.</li> - <li>Use um cabo USB para contectá-lo ao seu computador. Se estiver usando Windows, será necessário instalar alguns drivers. Se não forem encontrados pelo Windows Update, você pode indicar o diretório no qual você descompactou o driver no passo anterior.</li> - <li>Baixe a imagem apropriada para o seu telefone (Keon ou Peak). Todas as imagens estão disponíveis na <a href="http://downloads.geeksphone.com/" title="http://downloads.geeksphone.com/">página de Download da GeeksPhone</a>.</li> - <li>Descompacte o arquivo num diretório, vá para o diretório descompactado e execute o script: Flash.sh para Linux, Flash.bat is para Windows e flash_mac.sh para Machintosh (você vai precisar do <a href="http://developer.android.com/sdk/index.html" title="http://developer.android.com/sdk/index.html">Android SDK</a> instalado).</li> - <li>Espere até o dispositivo ser reiniciado e mostrar a configuração de primeiro uso.</li> -</ol> -<p><br> - Se você encontrar algum problema, coloque suas dúvidas <a href="http://forum.geeksphone.com/" title="http://forum.geeksphone.com/">no fórum da Geeksphone.</a></p> diff --git a/files/pt-br/archive/b2g_os/automated_testing/configurando_marionette/index.html b/files/pt-br/archive/b2g_os/automated_testing/configurando_marionette/index.html deleted file mode 100644 index d9912fcfd5..0000000000 --- a/files/pt-br/archive/b2g_os/automated_testing/configurando_marionette/index.html +++ /dev/null @@ -1,28 +0,0 @@ ---- -title: Configurando o Marionette para Firefox OS -slug: Archive/B2G_OS/Automated_testing/Configurando_Marionette -translation_of: 'https://marionette-client.readthedocs.io/en/latest/' ---- -<h2 id="Configurando_o_cliente_Marionette">Configurando o cliente Marionette</h2> -<p>O cliente Marionette é um pacote Python no qual você pode executar testes do Marionette: testes Python, JavaScript e WebAPI. Você precisa configurá-lo antes de usá-lo.</p> -<p>Para fazer isso, você deve clonar uma árvore do Gecko. Tanto o Gecko dentro da árvore clonada do Firefox OS como um Gecko <em>standalone</em> (<a href="http://hg.mozilla.org/mozilla-central/" title="http://hg.mozilla.org/mozilla-central/">mozilla-central</a>) funcionará. Por exemplo, supondo que seja a primeira vez que você clone a árvore Gecko:</p> -<p>Se o Mercurial não estiver instalado, instale-o. O comando abaixo deve ser usado no Mac caso você tenha o Homebrew instalado.</p> -<p><code>$ brew install mercurial</code></p> -<p>No seu diretório de trabalho (por exemplo ~/code) digite isso para realmente iniciar o processo de clonagem:</p> -<p><code>$ hg clone http://hg.mozilla.org/mozilla-central/ $GECKO_DIR</code></p> -<p>... onde $GECKO_DIR pode ser qualquer nome de diretório válido, por exemplo, <code>mozilla-central</code>. Isso levará cerca de 10 minutos numa conexão rápida.</p> -<p>Veja o artigo <a href="/pt-BR/docs/Mozilla/Firefox_OS/Building_and_installing_Firefox_OS">Compilando e Instalando o Firefox OS</a> para detalhes de como configurar um ambiente de compilação do Firefox OS e baixar o código.</p> -<pre>$ cd $GECKO_DIR/testing/marionette/client - -$ python setup.py develop</pre> -<p>É recomendado que você use o <a href="/pt-BR/docs/Python/Virtualenv" title="/en-US/docs/Python/Virtualenv">virtualenv</a>. Configurando rapidamente o virtualenv:</p> -<p><code>$ pip install virtualenv</code></p> -<p><code>$ virtualenv $MARIONETTE_ENV</code></p> -<p>Novamente, <code>$MARIONETTE_ENV</code> pode ser qualquer nome de diretório válido. Agora você pode executar os passos acima mas no novo ambiente virtual com:</p> -<pre>$ cd $GECKO_DIR/testing/marionette/client - -$ $MARIONETTE_ENV/bin/python setup.py develop</pre> -<p>Para verificar se o Marionette está instalado:</p> -<pre>$ $MARIONETTE_ENV/bin/python ->>> from marionette import Marionette</pre> -<p>Veja <a href="/pt-BR/docs/Mozilla/QA/Marionette/Running_Tests" title="/pt-BR/docs/Marionette/Running_Tests">Executando testes com Marionette</a> para saber como executar testes com o Marionette configurado.</p> diff --git a/files/pt-br/archive/b2g_os/automated_testing/gaia-ui-tests/index.html b/files/pt-br/archive/b2g_os/automated_testing/gaia-ui-tests/index.html deleted file mode 100644 index 41b8373d7d..0000000000 --- a/files/pt-br/archive/b2g_os/automated_testing/gaia-ui-tests/index.html +++ /dev/null @@ -1,82 +0,0 @@ ---- -title: Introdução aos testes de IU do Gaia -slug: Archive/B2G_OS/Automated_testing/gaia-ui-tests -tags: - - B2G - - Build documentation - - Firefox OS - - Gaia - - Guide - - Mobile - - NeedsTranslation - - Testing - - TopicStub - - gaia-ui-test - - gaiatest -translation_of: Archive/B2G_OS/Automated_testing/gaia-ui-tests ---- -<p>{{Next("Mozilla/Firefox_OS/Platform/Automated_testing/gaia-ui-tests/Part_1_Marionette_Firefox_OS_start")}}</p> -<div class="summary"> - <p>Gaia-ui-tests é uma suite de testes da Mozilla para executar casos de testes de IU (Interface do Usuário) end-to-end no Gaia, a Interface do Usuário do Firefox OS. Todos os testes são escritos em Python com algum JavaScript usado para interagir com as APIs do Firefox OS. Esse conjunto de tutoriais explica como configurar o ambiente para escrever e executar os testes.</p> -</div> -<p>Gaia-ui-tests usa <strong>Gaiatest</strong>, um pacote Python baseado no <a href="https://developer.mozilla.org/en-US/docs/Marionette" title="https://developer.mozilla.org/en-US/docs/Marionette">Marionette</a>. Gaiatest é projetado para empacotar HTML locators, chamadas ao Marionette e APIs para uma comunicação interoperável. Marionette é baseado em padrões W3C e desenvolvido pela <a href="http://docs.seleniumhq.org/projects/webdriver/" title="http://docs.seleniumhq.org/projects/webdriver/">Selenium WebDriver</a> uma interface de programas para automação de navegador. Se você já usou WebDriver e objetos page/app você vai achar muito fácil usar o Marionette e gaiatest.</p> -<h2 id="Iniciando_os_testes_de_IU_do_Gaia">Iniciando os testes de IU do Gaia</h2> -<p>Para aqueles interessados em começar com testes automáticos no Gaia/Firefox OS nós temos uma série de tutoriais que ajudará a escrever seus próprios testes. Uma vez que você completou esse tutorial você terá conhecimento o suficiente sobre teste, Firefox OS e Marionette para iniciar como um testador da Mozilla. É <strong>altamente</strong> recomendado que você complete esse tutorial se você deseja tornar-se um contribuidor.</p> -<dl> - <dt> - <a href="/pt-BR/Firefox_OS/Platform/Automated_testing/gaia-ui-tests/Part_1_Marionette_Firefox_OS_start">Parte 1: Iniciando com o Marionette e Firefox OS</a></dt> - <dd> - Esse artigo cobre a instalação das ferramentas que você vai precisar para executar os testes como B2G Desktop, Python e o Marionette.</dd> - <dt> - <a href="/pt-BR/Firefox_OS/Platform/Automated_testing/gaia-ui-tests/Part_2_Marionette_Firefox_OS_interactions">Parte 2: Interações básicas com o Firefox OS usando o Marionette</a></dt> - <dd> - Uma visão geral dos comandos básicos que você usará para manipular o Firefox OS via Marionette.</dd> - <dt> - <a href="/pt-BR/Firefox_OS/Platform/Automated_testing/gaia-ui-tests/Part_3_Reusable_tests">Parte 3: Atualizando nosso código em um teste reusável</a></dt> - <dd> - Seguindo em frente, nesse artigo nós montaremos alguns comandos básicos dentro de um teste simples num arquivo Python para que possam ser executados como uma única entidade.</dd> - <dt> - <a href="/pt-BR/Firefox_OS/Platform/Automated_testing/gaia-ui-tests/Part_4_Reusing_commands_Firefox_OS_setup">Parte 4: Reutilizando comandos para configurar Firefox OS</a></dt> - <dd> - Aqui veremos alguns comandos nos métodos Python para promover a reutilização de código.</dd> - <dt> - <a href="/pt-BR/Firefox_OS/Platform/Automated_testing/gaia-ui-tests/Part_5_Introducing_a_test_runner">Parte 5: Introduzindo um executor de teste</a></dt> - <dd> - Um executor de teste (<em>test runner</em>) é um recurso central de qualquer boa suíte de testes, possibilitando a você executar múltiplos testes e reportar resultados agregados. Nesse artigo vamos explorar o básico do executor de teste em Python unittest.</dd> - <dt> - <a href="/pt-BR/Firefox_OS/Platform/Automated_testing/gaia-ui-tests/Part_6_Marionette_By_class">Parte 6: Usando tuplas e a classe By do Marionette</a></dt> - <dd> - Será explicado como reduzir duplicação de código, armazenando locators repetidos em tuplas e simplificando a sintaxe com a classe <code>By</code>.</dd> - <dt> - <a href="/pt-BR/Firefox_OS/Platform/Automated_testing/gaia-ui-tests/Part_7_Writing_your_own_tests">Parte 7: Writing your own tests</a></dt> - <dd> - Agora que você já sabe o básico, é hora de escrever seus próprios testes! Aqui nós fornecemos algumas recomendações para tornar o trabalho mais fácil e sugerimos alguns testes para você mesmo tentar e escrever.</dd> - <dt> - <a href="/pt-BR/Firefox_OS/Platform/Automated_testing/gaia-ui-tests/Part_8_Using_a_base_class">Parte 8: Usando uma classe base</a></dt> - <dd> - Nesse estado atual, nosso arquivo de teste contém todo o código para o executor de teste. Isso está ok por enquanto, mas assim que você começar a executar muitos arquivos de teste haverá muita duplicação. Aqui nós solucionamos esse problema abstraindo o código do executor de testes em classes Python seperadas.</dd> - <dt> - <a href="/pt-BR/Firefox_OS/Platform/Automated_testing/gaia-ui-tests/Part_9_app_objects">Parte 9: Reduzindo a duplicação com objetos app</a></dt> - <dd> - Como um melhoramento final a manutenção do código, nesse artigo vamos explorar código abstrato que manipula a interação com aplicativos específicos do Firefox OS nos objetos app do Python.</dd> -</dl> -<h2 id="Tópicos_avançados">Tópicos avançados</h2> -<p>Uma vez que você já conhece o básico para escrever e executar os testes, você vai querer avançar em um trabalho mais avançado, como executar a suíte completa do gaia-ui-tests, ou o registro do consumo de energia como o resultado de um teste.</p> -<dl> - <dt> - <a href="https://developer.mozilla.org/pt-BR/docs/Mozilla/Firefox_OS/Platform/Automated_testing/gaia-ui-tests/Gaia_UI_Tests_Run_Tests" title="Gaia UI Tests Run Tests">Executando gaia-ui-tests</a></dt> - <dd> - Guias para executar a suíte gaia-ui-tests em dispositivos Firefox OS reais e no <a href="/pt-BR/Firefox_OS/Using_the_B2G_desktop_client">B2G Desktop</a> em uma variedade de configurações.</dd> - <dt> - <a href="/pt-BR/Firefox_OS/Platform/Automated_testing/gaia-ui-tests/Gathering_power_draw_data_using_gaiatest">Coletando dados de consumo de energia</a></dt> - <dd> - Como usar o gaiatest para registrar o consumo de energia durante a execução do teste.</dd> -</dl> -<h2 id="Veja_também">Veja também</h2> -<p><a href="https://github.com/mozilla-b2g/gaia/tree/master/tests/python/gaia-ui-tests">Repositório principal do Gaia-ui-tests</a></p> -<h2 id="Questões_e_comentários">Questões e comentários</h2> -<p>Esse projeto está em um estágio inicial, então seu feedback será muito útil para nós:</p> -<ul> - <li>Envie emails para a lista <a href="http://mailto:_gaia-ui-automation@mozilla.org">gaia-ui-automation@mozilla.org</a>.</li> - <li>Alternativamente encontre-nos no <a href="https://wiki.mozilla.org/IRC">Mozilla IRC</a> nos canais #ateam, #mozwebqa, e #moztpeqa.</li> -</ul> diff --git a/files/pt-br/archive/b2g_os/automated_testing/gaia-ui-tests/parte_1_iniciando_marionette_firefox_os/index.html b/files/pt-br/archive/b2g_os/automated_testing/gaia-ui-tests/parte_1_iniciando_marionette_firefox_os/index.html deleted file mode 100644 index e06d4b7707..0000000000 --- a/files/pt-br/archive/b2g_os/automated_testing/gaia-ui-tests/parte_1_iniciando_marionette_firefox_os/index.html +++ /dev/null @@ -1,97 +0,0 @@ ---- -title: 'Parte 1: Iniciando com o Marionette e Firefox OS' -slug: >- - Archive/B2G_OS/Automated_testing/gaia-ui-tests/Parte_1_Iniciando_Marionette_Firefox_OS -translation_of: >- - Archive/B2G_OS/Automated_testing/gaia-ui-tests/Part_1_Marionette_Firefox_OS_start ---- -<p>{{PreviousNext("Mozilla/Firefox_OS/Platform/Automated_testing/gaia-ui-tests", "Mozilla/Firefox_OS/Platform/Automated_testing/gaia-ui-tests/Part_2_Marionette_Firefox_OS_interactions")}}</p> -<div class="summary"> - <p><span class="seoSummary">Esse serie de tutoriais tem como objetivo ensiná-lo a escrever e executar testes automatizados de IU (Interface de Usuário) para o Firefox OS usando o <a href="/pt-BR/docs/Mozilla/QA/Marionette">Marionette</a>, um pacote de automação de testes que é executado no seu computador. Marionette envia comandos para executar testes em plataformas baseadas no Gecko. Esse artigo em particular apresentará as configurações necessárias antes de iniciar a execução dos testes.</span></p> -</div> -<p>A série de tutoriais navegará pelos conceitos de automação de testes e também fará uma introdução de como trabalhar com o Firefox OS (incliundo a ferramenta de testes <a href="/pt-BR/Firefox_OS/Using_the_B2G_desktop_client">B2G Desktop</a>) e o Marionette. Ocasionalmente nós incluiremos alguns desafios para o encorajar a encontrar suas próprias soluções.</p> -<div class="note"> - <p><strong>Nota</strong>: O tutorial não é específico para produtos Mozilla, se você estiver desenvolvendo um aplicativo HTML5, por exemplo, você pode usar esse tutorial para construir um framework de testes.</p> -</div> -<h2 id="Softwares_necessários_para_esse_tutorial">Softwares necessários para esse tutorial</h2> -<p>Durante esse tutorial nós instalaremos os seguintes softwares:</p> -<ul> - <li>Python 2.7</li> - <li>pip installer</li> - <li>Um editor de texto ou IDE para escrever código</li> - <li>O cliente Boot2Gecko desktop (Firefox OS)</li> - <li>O cliente Marionette (WebDriver client para Firefox OS)</li> -</ul> -<h2 id="Python_e_pip">Python e pip</h2> -<p>Alguns sistemas operacionais como Linux já vêm com o Python pré-instalado. Antes de instalar o Python, verifique se já não está instalado. A partir de uma linha de comando execute:</p> -<pre class="brush: bash">python --version</pre> -<p>Qualquer versão do Python 2.6.x or 2.7.x é adequada para esse tutorial. Se você não tem o Python 2.7 instalado você pode encontrar o instalador <a href="https://www.python.org/download/releases/2.7.6/">nesse site</a>.</p> -<p>Pip é usado para instalar ferramentas do Python e vamos precisar dele para instalar o Marionette. Você pode verificar se o pip está instalado digitando <code>pip</code> no seu terminal ou linha de comando. Para instalar o pip, siga as instruções da <a href="http://pip.readthedocs.org/en/latest/installing.html">documentação pip</a>.<br> - </p> -<h2 id="B2G_Desktop">B2G Desktop</h2> -<p>O cliente B2G Desktop possibilita você executar o Gaia — a Interface do Usuário do Firefox OS — e os aplicativos do Firefox OS num desktop ou notebook. Existem algumas certas limitações da ferramenta — ela não emula o hardware do dispositivo como câmera, bateria, etc. — mas será perfeita para nosso propósito nesse tutorial.</p> -<p>Baixe a última versão do B2G Desktop no <a href="http://nightly.mozilla.org/">site Firefox Nightly</a> (veja Desktop Boot2Gecko, na parte de baixo). Uma vez baixado, extraia os conteúdos em um diretório do seu computador. Para iniciar o simulador do Firefox OS, execute o script <strong>b2g</strong> de acordo com o seu Sistema Operacional:</p> -<ul> - <li><strong>Linux</strong>: Navegue no diretório no qual você extraiu o conteúdo e execute <code>./b2g</code></li> - <li><strong>Mac</strong>: Arraste B2G.app para a pasta Application e execute-o a partir dali.</li> - <li><strong>Windows</strong>: Execute b2g.exe a partir do diretório de extração.</li> -</ul> -<p>Ao iniciar a aplicação você verá uma tela semelhante a essa:</p> -<p><img alt="A welcome screen for Firefox OS - says welcome in multiple languages" src="https://mdn.mozillademos.org/files/7207/b2g-start-screen.png" style="width: 322px; height: 509px; display: block; margin: 0px auto;"></p> -<p>Seguindo os passos da rotina de primeiro uso, você chegará à tela inicial do Firefox OS. Observe que você pode emular os botões externos do telefone, o que pode ser bastante útil.</p> -<table class="standard-table"> - <thead> - <tr> - <th scope="row"> </th> - <th scope="col"> - <p>Teclado Windows/Linux</p> - </th> - <th scope="col"> - <p>Teclado Mac OS</p> - </th> - </tr> - </thead> - <tbody> - <tr> - <th scope="row"> - <p>Botão Home</p> - </th> - <td> - <p>Home</p> - </td> - <td> - <p>Fn+seta esquerda</p> - </td> - </tr> - <tr style="height: 0px;"> - <th scope="row"> - <p>Botão Power</p> - </th> - <td> - <p>End</p> - </td> - <td> - <p>Fn+seta direita</p> - </td> - </tr> - <tr> - <th scope="row"> - <p>Volume up/down</p> - </th> - <td> - <p>Page up/page down</p> - </td> - <td> - <p>Fn+ setas cima/baixo</p> - </td> - </tr> - </tbody> -</table> -<p>Nesse ponto você pode deixar o B2G Desktop aberto e mover a janela para o lado. A seguir finalizaremos o trabalho instalando o Marionette.</p> -<h2 id="Marionette">Marionette</h2> -<p>Marionette possui duas partes: o cliente — que é executado no seu notebook — e o servidor — que é executado no Firefox OS. O Servidor Marionette, da mesma forma que o manipulador de uma marionete, pode controlar o Firefox OS diretamente.</p> -<p><img alt="marionette architecture showing marionette server inside Firefox OS and marionette client on its own outside" src="https://mdn.mozillademos.org/files/7223/marionette-basic-diagram.png" style="width: 352px; height: 186px; display: block; margin: 0px auto;"></p> -<p>Ao usar o Desktop B2G, o servidor Marionette já está pré-instalado (isso também é verdade quando usamos a compilação configurada pela engenharia em um dispositivo real do Firefox OS). Antes de controlarmos o Firefox OS, precisamos instalar o cliente Marionette no nosso computador local. Isso é feito executando o seguinte comando no seu terminal:</p> -<pre class="brush: bash">pip install marionette_client</pre> -<p>Isso é só por enquanto. Já temos o ambiente configurado e prontos para começar!</p> -<p> </p> diff --git a/files/pt-br/archive/b2g_os/automated_testing/gaia-ui-tests/testes_iu_gaia_executando_testes/index.html b/files/pt-br/archive/b2g_os/automated_testing/gaia-ui-tests/testes_iu_gaia_executando_testes/index.html deleted file mode 100644 index c9c8f371b2..0000000000 --- a/files/pt-br/archive/b2g_os/automated_testing/gaia-ui-tests/testes_iu_gaia_executando_testes/index.html +++ /dev/null @@ -1,242 +0,0 @@ ---- -title: 'Testes da Interface do Usuario (IU) Gaia: Executando os Testes' -slug: >- - Archive/B2G_OS/Automated_testing/gaia-ui-tests/Testes_IU_Gaia_Executando_Testes -translation_of: Archive/B2G_OS/Automated_testing/gaia-ui-tests/Gaia_UI_Tests_Run_Tests ---- -<div class="boxed translate-display"> - <div class="summary"> - <p><span class="seoSummary">Esse artigo fornece um resumo detalhado de como executar a suíte gaia-ui-tests incluída no próprio Gaia, B2G Desktop e dispositivos reais com Firefox OS. O projeto Gaia usa <a href="https://travis-ci.org/">Travis CI</a> para realizar a integração contínua e testes de <em>pull requests</em>.</span></p> - </div> - <div class="note"> - <p><strong>Nota</strong>: Você pode encontrar uma <a href="https://travis-ci.org/mozilla-b2g/gaia/builds">lista de mais de 32000 compilações</a> (e crescendo) executada via Travis. Ao lado de testes unitários e testes do marionette js, Gaia também executa testes de scripts de compilação via Travis. Os detalhes da execução dos scripts são definidos em <a href="https://github.com/mozilla-b2g/gaia/tree/master/tests/travis_ci">tests/travis_ci</a>. Se você encontrar um erro no gaia_ui_tests pelo Travis e quiser reproduzí-lo localmente verifique <a href="https://github.com/mozilla-b2g/gaia/tree/master/tests/travis_ci/gaia_ui_tests">tests/travis_ci/gaia_ui_tests/</a>.</p> - </div> - <p>O testes do Gaia gaia-ui-tests foi desenvolvido com a capacidade de ser executado em dispositivos reais, emuladores e no cliente <a href="https://developer.mozilla.org/pt-BR/Firefox_OS/Using_the_B2G_desktop_client">B2G Desktop</a>. A propósito o método mais fácil de executar o teste é no B2G Desktop. Observe que você <u><strong>deve escolher o branch correto</strong></u> do Gaia para executar a versão do Firefox OS que estiver usando.</p> - <h2 id="Testando_no_B2G_Desktop">Testando no B2G Desktop</h2> - <p>O cliente B2G desktop é exatamente o que diz: uma versão desktop do B2G que você pode usar para executar testes das aplicações web do Firefox OS no conforto do seu desktop. Se você não é familiar com ele, descubra mais sobre ele no artigo <a href="https://developer.mozilla.org/pt-BR/Firefox_OS/Using_the_B2G_desktop_client">Usando o cliente B2G desktop</a>. Essa seção irá mostrar como executar os testes gaia-ui-tests no B2G desktop.</p> - <div> - <h3 id="Pré-requisitos">Pré-requisitos</h3> - <ul> - <li>Uma imsagem do B2G desktop. Você pode <a href="http://nightly.mozilla.org/">baixá-la</a> e descompactá-la em um diretório do seu computador ou uma máquina virtual ou <a href="https://developer.mozilla.org/pt-BR/Firefox_OS/Using_the_B2G_desktop_client#Building_the_desktop_client">compilar uma você mesmo</a>, adicionando <code>ENABLE_MARIONETTE=1</code> no seu.</li> - <li>Um <a href="https://github.com/mozilla-b2g/gaia/">repositório Gaia</a> clonado do Github.</li> - <li>Um <a href="https://developer.mozilla.org/pt-BR/Firefox_OS/Platform/Automated_testing/gaia-ui-tests/Testes_IU_Gaia_Executando_Testes#testvars">arquivo testvars.json</a> criado (como explicado na importante seção abaixo).</li> - </ul> - </div> - <p>O cliente desktop B2G é ideal para testes de desenvolvimento quando um dispositivo real não está disponível e não há a necessidade de testes das funções do próprio telefone. É rápido e acessível, podendo ser executado no Linux, Mac ou Windows!</p> - <h3 id="Executando_os_testes">Executando os testes</h3> - <p>Nós vamos instalar a versão que vem na própria árvore do repositório Gaia. Dessa forma nossas alterações serão usadas imediatamente. Na sua versão clonada do Gaia, navege o diretório <code>gaia/tests/python/gaia-ui-tests</code> e execute o seguinte comando de configuração:</p> - <pre class="brush: bash language-html"><code class="language-html">python setup.py develop</code></pre> - <p>Via Marionette, o gaiatest pode chamar o B2G Desktop quando iniciarmos o teste. Para fazer isso, você precisa passar o caminho do arquivo binário B2G bem como do perfil. No exemplo abaixo, nós incluímos a variável <code>$HOME</code> como o caminho tanto para o binário quanto para o perfil. Simplesmente é o local no qual você descompactou o B2G Desktop depois de ter baixado. O comando para executar todos os testes é:</p> - <pre class="brush: bash language-html"><code class="language-html">gaiatest --binary=$HOME/b2g/b2g-bin --profile=$HOME/b2g/gaia/profile --testvars=testvars.json --restart --type=b2g ./gaiatest/tests/functional/manifest.ini</code></pre> - <p>Testes que forem incompaíveis com o B2G Desktop — por exemplo, aqueles que fazem chamadas ou enviam SMS — são automaticamente ignorados pelo script de teste.</p> - <p>Você pode executar um teste diretamente chamando o arquivo na linha de comando:</p> - <pre class="brush: bash language-html"><code class="language-html">gaiatest --binary=$HOME/b2g/b2g-bin --profile=$HOME/b2g/gaia/profile --testvars=testvars.json --restart ./gaiatest/tests/functional/clock/test_clock_set_alarm.py</code></pre> - <h2 id="Testando_em_um_dispositivo_Firefox_OS">Testando em um dispositivo Firefox OS</h2> - <p>O teste em dispositivos reais Firefox OS é mais complicado, mas de longe fornece resultados mais precisos, pois acessa todos as características reais do dispositivo.</p> - <div> - <h3 id="Pré-requisitos_2">Pré-requisitos</h3> - <ul> - <li><a href="https://developer.mozilla.org/pt-BR/Firefox_OS/Debugging/Installing_ADB">Android Debug Bridge instalado</a> e o arquivo de <a href="https://developer.mozilla.org/en-US/Firefox_OS/Firefox_OS_build_prerequisites#For_Linux.3A_configure_the_udev_rule_for_your_phone">udev rules configurado.</a></li> - <li>Um dispositivo Firefox OS com uma compilação com o Marionette habilitado</li> - <li>O <em>branch</em><em> </em>d<em>o</em> <a href="https://github.com/mozilla-b2g/gaia/">repositório Gaia no Github</a> referente ao seu dispositivo Firefox OS clonado e atualizado.</li> - <li>Um arquivo <a href="https://developer.mozilla.org/pt-BR/Firefox_OS/Platform/Automated_testing/gaia-ui-tests/Testes_IU_Gaia_Executando_Testes#testvars">testvars.json file</a> criado.</li> - </ul> - </div> - <h3 id="Executando_os_testes_2">Executando os testes</h3> - <p>O pacote gaiatest é necessário para a execução dos testes. Nós precisamos instalá-lo para o <em>branch</em> o qual queremos executar o testes. Navegue no diretório <code>gaia/tests/python/gaia-ui-tests/</code> e instale o gatatest com o seguinte comando:</p> - <pre class="brush: bash language-html"><code class="language-html">python setup.py develop</code></pre> - <div class="note"> - <p><strong>Nota</strong>: Antes de começar a executar o teste, leia <a href="https://developer.mozilla.org/pt-BR/docs/Gaia_Test_Runner#Risks" title="https://developer.mozilla.org/en-US/docs/Gaia_Test_Runner#Risks">este aviso</a> a fim de certificar-se de que a execução dos testes gaia-ui-tests em um dispositivo pode apagar os dados do mesmo.</p> - </div> - <p>O Marionette que está rodando no dispositivo, aguarda comandos na porta 2828. Devido a isso, precisamos direcionar nossa porta local para a porta remota no dispositivo usando o adb. Execute o seguinte comando:</p> - <pre class="brush: bash language-html"><code class="language-html">adb forward tcp:2828 tcp:2828</code></pre> - <p>Você pode usar o seguinte comando para executar todos os testes gaia-ui-tests:</p> - <pre class="brush: bash language-html"><code class="language-html">gaiatest --address=localhost:2828 --testvars=<span class="token tag"><span class="token tag"><span class="token punctuation"><</span>TESTVARS_FILE</span><span class="token punctuation">></span></span> --restart --type=b2g gaiatest/tests/functional/manifest.ini</code></pre> - <p>Ou use o comando a seguir se você quiser executar um teste simples (substituindo a última parte pelo teste real que você quer fazer):</p> - <pre class="brush: bash language-html"><code class="language-html">gaiatest --address=localhost:2828 --testvars=<span class="token tag"><span class="token tag"><span class="token punctuation"><</span>TESTVARS_FILE</span><span class="token punctuation">></span></span> --restart gaiatest/tests/functional/clock/test_clock_create_new_alarm.py</code></pre> - <p>Após o teste, você verá todos os resultados e registro de rastreamento para cada arquivo.</p> - <div class="note"> - <p><strong>Nota</strong>: Você pode receber um erro ao executar esses testes — <code>ImportError: No module named bluetooth</code>. Se isso acontecer, substitutua a seguinte parte do comando <code>--type=b2g</code> por <code>--type=b2g-bluetooth</code> para excluir os testes de bluetooth. Alternativamente você pode instalar o pacote PyBluez python que possibilita executar o teste do dispositivo via bluetooth.</p> - </div> - <h2 id="Executando_os_testes_usando_Travis_para_desenvolvedores_Gecko_and_Gaia_developers">Executando os testes usando Travis para desenvolvedores Gecko and Gaia developers</h2> - <p><a href="https://travis-ci.com/">Travis</a> é uma plataforma de integração contínua utilizada para executar os testes gaia-ui-tests (e outras coisas). Nessa seção nós vamos explorar como você você se benefica se pretende executar um grande número de testes.</p> - <p>Executando os testes usando nossa configuração do Travis é bastante simples — o script de instlação baixará o Gecko e preparará um perfil Gaia para você. O script de instalação usa o mozilla-download que por sua vez usa <a href="http://nodejs.org/download/">nodejs</a> e npm para baixar a última versão do Gecko.</p> - <div> - <h3 id="Pré-requisitos_3">Pré-requisitos</h3> - <ul> - <li>O repositório <a href="https://github.com/mozilla-b2g/gaia/">Gaia no Github</a> (para preparar o perfil Gaia e instalar o gaiatest e arquivos de teste).</li> - <li>Um <a href="https://developer.mozilla.org/pt-BR/Firefox_OS/Platform/Automated_testing/gaia-ui-tests/Testes_IU_Gaia_Executando_Testes#testvars">arquvo testvars.json</a> criado (como explicado na importante seção abaixo).</li> - <li>nodejs e npm instalados (são usado para baixar o Gecko.)</li> - </ul> - </div> - <h3 id="Instalando_o_Gecko_e_compilando_o_Gaia_usando_nosso_script_do_Travis">Instalando o Gecko e compilando o Gaia usando nosso script do Travis</h3> - <div class="note"> - <p><strong>Nota</strong>: Se você já tem um diretório b2g/ no Gaia então o script de instlação do Travis ignorará essa etapa. Se você precisa da última versão do Gecko, apague o diretório b2g/ antes de executar o script.</p> - </div> - <p>O script Travis deve ser executado a partir do diretório raiz do <code>gaia/</code>. Execute o seguinte comando:</p> - <pre class="brush: bash language-html"><code class="language-html">tests/travis_ci/gaia_ui_tests/install</code></pre> - <p>O script criará um ambiente virutal do Python (<em>package sandbox</em>) bem como os pacotes necessários para executar o gaia-ui-tests, incluindo uma nova versão do B2G desktip e uma <a href="https://developer.mozilla.org/pt-BR/Firefox_OS/Platform/Gaia/Hacking#Debug_desktop_make">compilação desktop do Gaia</a>. O ambiente virtual será instalado no diretóri <code>travis_venv</code>.</p> - <h3 id="Executando_os_testes_3">Executando os testes</h3> - <p>A execução dos testes fica a cargo do arquivo <code>script</code>, que envolve a linha de comando padão:</p> - <pre class="brush: bash language-html"><code class="language-html">tests/travis_ci/gaia_ui_tests/script</code></pre> - <p>Esse comando executa:</p> - <pre class="brush: bash language-html"><code class="language-html">$ export GAIATEST_ACKNOWLEDGED_RISKS=true -$ export GAIATEST_SKIP_WARNING=true -$ root=tests/python/gaia-ui-tests/gaiatest -$ b2g=`find b2g -follow -name "b2g-bin" | tail -n 1` -$ python $root/cli.py --app=b2gdesktop \ ---binary=$b2g \ ---profile=profile \ ---type=b2g \ ---timeout=10000 \ -tests/python/gaia-ui-tests/gaiatest/tests/accessibility/lockscreen/test_a11y_un\ -lock_to_homescreen.py</code></pre> - <p>O arquivo <code>script</code> pode ser editado para direcionar para arquivos ou diretórios de testes específicos e adicionar parâmetros de linha de comando — especifcamente a linha que executa cli.py.</p> - <div class="warning"> - <p><strong>Importante</strong>: Quando usar o B2G Desktop ou um Emulator, tente manter o cursor do mouse longe da janela do B2G para que eventos de ponteiro não atrapalhem a execução dos testes.</p> - </div> - <div class="note"> - <p><strong>Nota</strong>: Você pode executar o comando <code>deactivate</code> para voltar para o console normal quando o teste finalizar.</p> - </div> - <h2 id="Encontrando_o_relatório_HTML_em_um_trabalho_finalizado_do_Travis">Encontrando o relatório HTML em um trabalho finalizado do Travis</h2> - <p>A final dos testes do Travis é produzido um relatório HTML e feito um upload para um espaço público da web.</p> - <ol> - <li>Abra o trabalho gaia-ui-tests job para um <em>pull request</em> ou <em>commit</em></li> - <li>Role a tela para baixo até a seção "after_script" e expanda o texto</li> - <li>Próximo do final do "after_script", a saída do console mostra a localização do relatório na Amazon AWS</li> - </ol> - <p>Quando os testes são executados localmente você pode encontrar o relatório em <code>gaia/artifacts/gaia_ui_tests_report.html</code></p> - <div class="note"> - <p><strong>Nota</strong>: Até o momento isso só funciona para commits de merge, mas esperamos usar isso em pull requests no futuro.</p> - </div> - <h2 id="Testando_localmente_com_configuração_TBPL_para_desenvolvedores_Gecko_e_Gaia"><a name="RunningTBPL"></a>Testando localmente com configuração TBPL para desenvolvedores Gecko e Gaia</h2> - <p>Nesta seção, vamos nos concentrar em replicar um teste TBPL localmente. Antes disso você precisa estar ciente de que é construído um perfil Gaia separado. O perfil que vem empacotado com a compilação TBPL não é o mesmo perfil que o TBPL utiliza.</p> - <div> - <h3 id="Pré-requisitos_4">Pré-requisitos</h3> - <ul> - <li>Uma compilação B2G desktop. Você pode <a href="http://nightly.mozilla.org/">baixá-la</a> and descompactá-la em um diretório do seu computador ou em uma máquina virtual ou <a href="https://developer.mozilla.org/pt-BR/Firefox_OS/Using_the_B2G_desktop_client#Building_the_desktop_client">compilar uma você mesmo</a>, incluindo <code>ENABLE_MARIONETTE=1</code> no seu mozconfig.</li> - <li>O <a href="https://github.com/mozilla-b2g/gaia/">reposiório Gaia do Github</a> (para prepara o perfil Gaia e instalar o gaiatest e os arquivos de testes).</li> - <li>Um <a href="https://developer.mozilla.org/pt-BR/Firefox_OS/Platform/Automated_testing/gaia-ui-tests/Testes_IU_Gaia_Executando_Testes#testvars">arquivo testvars.json</a> criado.</li> - </ul> - </div> - <h3 id="Compilando_um_perfil_Gaia_com_as_configurações_TBPL's">Compilando um perfil Gaia com as configurações TBPL's</h3> - <p>Antes de compilar um perfil nós necessitamos verificar as variáveis de ambiente usadas para compilar o perfil. Procurando no "brief log" do teste Gu, encontre esse bloco de comando:</p> - <pre class="brush: bash language-html"><code class="language-html">Using env: {'DEBUG': '0', - 'DESKTOP': '0', - 'DESKTOP_SHIMS': '1', - 'NOFTU': '0'}</code></pre> - <p>Essas configurações podem alterar drasticamente o comportamento do B2G. É muito importante fazer coincidir as configurações do TBPL.</p> - <p>O próximo passo é fazer o <em>checkout</em> do <em>commit</em> do git que coincide com o commit do hg que roda no TBPL. Você também pode encontrar o commit do hg no "brief log" do TBPL, mas você próprio vai precisar correlacionar com <em>commit</em> do git.</p> - <p>O reposiório de teste do gaia inclui um script <code>make</code> para compilar um perfil Gaia. Navegue no reposiório do Gaia que você clonou localmente e compile o perfil usando as variáveis de ambiente que nós encontramos no TBPL:</p> - <pre class="brush: bash language-html"><code class="language-html">DEBUG=0 DESKTOP=0 DESKTOP_SHIMS=1 NOFTU=0 make</code></pre> - <h3 id="Executando_os_testes_4">Executando os testes</h3> - <p>Use o mesmo commit do git que o TBPL usou para executar o teste, vá para o diretório <code>gaia/tests/python/gaia-ui-tests</code> e instale o gaiatest usando o seguinte comando:</p> - <pre class="brush: bash language-html"><code class="language-html">python setup.py develop</code></pre> - <p>Agora que você tem o perfil Gaia, a única diferença significante para executar esses testes é que você deve direcionar o gaiatest para os locais do binário do B2G e do profile. Como o TBPL é executado em um ambiente isolado, ele usa o próprio conjunto de testes, configurado em <code>tbpl-manifest.ini</code>.</p> - <p>Dentro do diretório <code>gaia-ui-tests</code> directory, execute o comando a seguir, com as seguintes substituições:</p> - <ul> - <li><code>$BINARY_PATH</code>: O caminho para o arquivo <code>b2g-bin</code> no diretório que você compilou ou descompactou o B2G.</li> - <li><code>$PROFILE_PATH</code>: O caminho para o seu perfil Gaia compilado localmente. Se compilado a partir do repositório Gaia será <code>~/gaia/profile</code>.</li> - </ul> - <pre class="brush: bash language-html"><code class="language-html">gaiatest --binary $BINARY_PATH/b2g/b2g-bin --profile $PROFILE_PATH/profile --restart --testvars testvars.json gaiatest/tests/tbpl-manifest.ini --type=b2g</code></pre> - <div class="note"> - <p><strong>Nota</strong>: Não há necessidade de direcionar a porta 2828 a menos que você tenha configurado o servidor do Marionette para usar uma porta padrão diferente.</p> - </div> - <div class="warning"> - <p><strong>Important</strong>e: Tente manter o cursor do seu mouse longe da janela do b2g uma vez que pode atrapalhar na execução dos testes.</p> - </div> - <h3 id="Encontrando_um_relatório_HTML_do_trabllho_realizado_pelo_TBPL">Encontrando um relatório HTML do trabllho realizado pelo TBPL</h3> - <p>Todos os trabalhos TBPL (os que passaram e os que falharam) possuí um relatório gerado e armazenado.</p> - <ol> - <li>Para o commit, clique <em>Gu</em>.</li> - <li>Na barra de status, abaixo do TBPL procure a seção entitulada <em>TinderboxPrint: Uploaded output.html</em>.</li> - <li>Copie o link para um navegador e veja o relatório.</li> - </ol> - <h2 id="Teste_em_um_binário_que_já_esteja_sendo_executado">Teste em um binário que já esteja sendo executado</h2> - <p>Nessa seção nós vamos verificar como realizar testes em um Desktop B2G em execução com código fonte modificado.</p> - <div> - <h3 id="Pré-requisitos_5">Pré-requisitos</h3> - <ul> - <li>Uma compilação B2G desktop com suas alterações no Gecko. Você pode <a href="http://nightly.mozilla.org/">baixá-la</a> and descompactá-la em um diretório do seu computador ou em uma máquina virtual ou <a href="https://developer.mozilla.org/pt-BR/Firefox_OS/Using_the_B2G_desktop_client#Building_the_desktop_client">compilar uma você mesmo</a>, incluindo <code>ENABLE_MARIONETTE=1</code> no seu mozconfig.</li> - <li>Um depurador a sua escolha conectado ao binário B2G</li> - <li>O <a href="https://github.com/mozilla-b2g/gaia/">reposiório Gaia do Github</a> (para prepara o perfil Gaia e instalar o gaiatest e os arquivos de testes).</li> - <li>Um <a href="https://developer.mozilla.org/pt-BR/Firefox_OS/Platform/Automated_testing/gaia-ui-tests/Testes_IU_Gaia_Executando_Testes#testvars">arquivo testvars.json</a> criado.</li> - </ul> - </div> - <h3 id="Running_the_tests">Running the tests</h3> - <p>Running tests against an existing b2g process is quite easy — you've already gone through the hard parts to build B2G!</p> - <p>If you have not already installed gaiatest then do so now by going to <code>gaia/tests/python/gaia-ui-tests</code> and running the following:</p> - <pre class="brush: bash language-html"><code class="language-html">python setup.py develop</code></pre> - <p>Once you have started the b2g binary process and attached your debugger you need to direct gaiatest to the port using the <code>--address</code> command. Do not use <code>--binary</code> or <code>--profile</code>, otherwise gaiatest will just send commands directly to the port without attempting to start or close the binary.</p> - <pre class="brush: bash language-html"><code class="language-html">gaiatest --testvars testvars.json gaiatest/tests/functional/test_that_is_being_debugged.py</code></pre> - <div class="note"> - <p><strong>Note</strong>: We have omitted the <code>--restart</code> command too. As gaiatest does not attempt to stop or start the binary some data from your test run may be left behind in Firefox OS databases or even in the DOM. It is your responsibility to reset B2G back to a basic state before trying to run the test for a second time.</p> - </div> - <h2 id="Variáveis_de_teste_(testvars.json)"><a name="testvars">Variáveis de teste (testvars.json)</a></h2> - <p>O gaia-ui-tests vai limpar os banco de dados do seu aparelho para fornecer um perfil limpo para as rotinas de teste. Gaiatest tem uma proteção contra a execução e apagamento dos dados do seu dispositivo. Leia <a href="https://developer.mozilla.org/pt-br/docs/Gaia_Test_Runner#Risks" title="https://developer.mozilla.org/en-US/docs/Gaia_Test_Runner#Risks">esse aviso</a> antes de configurar seu arquivo de variáveis de teste.</p> - <p>Podemos usar a opção <code>--testvars</code> para passar variáveis locais, particularmente aquelas que não podem ser verificadas no repositório. Por exemplo, no gaia-ui-tests existem variáveis que podem ser suas credenciais privadas, número de telefone ou detalhes da sua conexção WiFi.</p> - <p>Para usar isso, copie <code>testvars_template.json</code> para um outro arquivo e não esqueça de adicioná-lo ao arquivo <code>.gitignore</code> para que não seja enviado ao seu repositório remoto.</p> - <p>E quando for executar seus testes adicione o argumento: <code>--testvars=(filename).json</code></p> - <h3 id="Como_configurar_o_WiFi_usando_o_arquivo_testvars.json_(para_dispositivos)"><strong>Como configurar o WiFi usando o arquivo </strong>testvars.json (para dispositivos)</h3> - <p>Para que as rotinas de teste consigam utilizar a sua conexão WiFi é necessário registar no arquivo <code>testvars.json</code>.</p> - <p>Sem autenticação WiFi:</p> - <pre class="language-html"><code class="brush: bash language-html">"wifi": { "ssid": "MyNetwork"} </code></pre> - <p>autenticação WEP:</p> - <pre class="language-html"><code class="language-html">"wifi": { "ssid": "MyNetwork", "keyManagement": "WEP", "wep": "MyPassword" } </code></pre> - <p>autenticação WPA-PSK:</p> - <pre class="language-html"><code class="language-html">"wifi": { "ssid": "MyNetwork", "keyManagement": "WPA-PSK", "psk": "MyPassword" } </code></pre> - <div class="note"> - <p>Devido ao <a href="http://bugzil.la/775499">Bug 775499</a>, conexões WiFi via WPA-EAP não são possíveis nesse momento.</p> - </div> - <p> </p> - <h2 id="Resolução_de_problemas">Resolução de problemas</h2> - <p>Essa seção detalha algumas mensagens comuns de erro e algumas dicas de como resolver os problemas.</p> - <h3 id="Problemas_comuns_antes_do_início_do_teste">Problemas comuns antes do início do teste</h3> - <table class="standard-table"> - <thead> - <tr> - <th scope="col" style="text-align: center;"><strong>Mensagem de erro </strong></th> - <th scope="col" style="text-align: center;"><strong>Ações correspondentes</strong></th> - </tr> - </thead> - <tbody> - <tr> - <td>error: [Errno 111] Connection refused</td> - <td> - <p>Execute novamente o comando "adb forward tcp:2828 tcp:2828"<br> - <br> - O processo B2G não está rodando</p> - </td> - </tr> - <tr> - <td>Element ... not visible before timeout</td> - <td> - <p>Certifique-se de que o elemento deveria ser exibido no aplicativo que você está testando.</p> - </td> - </tr> - <tr> - <td>TimeoutException: Condition timed out</td> - <td>Certifique-se de que a condição no aplicativo é a mesma que você espera.</td> - </tr> - <tr> - <td>marionette.errors.MarionetteException: localhost:2828 is unavailable.</td> - <td>Algo está bloqueando a porta, normalmente o comando `adb forward`. `adb kill-server` pode resolver. Ou o aplicativo pode ter sido fechado mantendo a porta aberta.</td> - </tr> - <tr> - <td>ImportError: No module named bluetooth</td> - <td> - <p>Substitua no comando <code>--type=b2g</code> por <code>--type=b2g-bluetooth</code><br> - OU<br> - Instale o pacote pybluez Python bluetooth<br> - </p> - </td> - </tr> - <tr> - <td>OSError: [Errno 2] No such file or directory: '~/moz/gaia/profile'</td> - <td>Não utilize ~ na linha de comando significando $HOME. Escreva o caminho completo</td> - </tr> - </tbody> - </table> - <p> </p> -</div> -<p> </p> diff --git a/files/pt-br/archive/b2g_os/automated_testing/gaia_unit_tests/index.html b/files/pt-br/archive/b2g_os/automated_testing/gaia_unit_tests/index.html deleted file mode 100644 index 215462fcb1..0000000000 --- a/files/pt-br/archive/b2g_os/automated_testing/gaia_unit_tests/index.html +++ /dev/null @@ -1,206 +0,0 @@ ---- -title: Testes de unidade Gaia -slug: Archive/B2G_OS/Automated_testing/Gaia_unit_tests -tags: - - Automação - - B2G - - Firefox OS - - Gaia - - Mobile - - NeedsContent - - Testes - - construindo documentação - - testes de unidade -translation_of: Archive/B2G_OS/Automated_testing/Gaia_unit_tests ---- -<div class="summary"> -<p>Como parte do código-fonte Gaia / B2G, fizemos vários testes de unidade disponíveis para execução, para testar diferentes aspectos de Gaia e B2G. Este artigo explica como acessá-los.</p> -</div> - -<div class="note"> -<p>Nota: Este documento assume que você entenda completamente como trabalhar com Gaia e B2G. Consulte <a href="/pt-BR/Firefox_OS/Developing_Gaia">Desenvolvendo Gaia</a> para se familiarizar.</p> -</div> - -<h2 id="Rodando_testes_de_unidade">Rodando testes de unidade</h2> - -<p>Você pode rodar testes de unidade no <a href="/pt-BR/Firefox_OS/Using_the_B2G_desktop_client">B2G desktop</a>, <a href="http://nightly.mozilla.org/">Firefox Nightly</a> ou <a href="/pt-BR/Firefox_OS/Developing_Gaia/Different_ways_to_run_Gaia#Using_Gaia_in_Firefox_Mulet">Mulet</a>. Você também precisará da última versão <a href="https://github.com/mozilla-b2g/gaia/">Gaia repo</a>. Para a maioria das funcionalidades, você também precisa ter o <a class="external" href="http://nodejs.org/" title="http://nodejs.org/">Node.js</a> e o <a class="external" href="http://npmjs.org/" title="http://npmjs.org/">NPM</a> instalados.</p> - -<div class="warning"> -<p>Aviso: Nós provavelmente vamos descontinuar a execução de testes no Firefox em breve. Utilize <a href="/pt-BR/Firefox_OS/Developing_Gaia/Different_ways_to_run_Gaia#Using_Gaia_in_Firefox_Mulet">Mulet</a> a partir de agora.</p> -</div> - -<div class="note"> -<p>Nota: Se os seguintes comandos falharem com erros criptográficos ao instalar dependências do tipo test-agente, pode ser que a suas versões Node.js / NPM sejam muito antigas. Leia <a href="https://github.com/joyent/node/wiki/Installing-Node.js-via-package-manager">Instalando Node.js via gerenciador de pactoes</a> Node.js via gerenciador de pacotes para instalar as versões mais recentes e exclua a pasta <code>node_modules/test-agent</code>.)</p> -</div> - -<div class="note"> -<p>Nota: No Ubuntu (e possivelmente alguns outros Linux distros também), Node.js é chamado nodejs e node é chamado de programa Amateur Packet Radio "Node". Se você está recebendo um problema com a execução de testes unitários nesses sistemas (mensagens de erro podem significar que "Esta falha pode ser devido ao uso de legado binário 'node'"), então você deve instalar o pacote node nodejs-legacy. Isso impede que um conflito com o Programa Amateur Packet Radio "Node", removendo <code>/usr/sbin/node</code> e transformando-o em um link simbólico para <code>/usr/bin/nodejs</code>, que deve tornar as coisas funcionarem conforme o esperado.</p> -</div> - -<p>A repo Gaia contém um script bin / gaia-teste bastante acessível, que ajuda executar os testes de uma maneira mais fácil.</p> - -<div class="warning"> -<p>Aviso: este script irá gerar um perfil adequado para testes de unidade no perfil-debug. Se você já tem outro perfil neste diretório ele será substituído. O <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=980496"> Bug 980496</a> visa torná-lo configurável.</p> -</div> - -<h3 id="Lançando_o_executor_de_testes_de_Mulet_ou_Firefox">Lançando o executor de testes de Mulet ou Firefox</h3> - -<p>Isto irá rodar o servidor de teste e lançar o seu Firefox padrão como encontrado no caminho:</p> - -<pre class="brush: bash">bin/gaia-test</pre> - -<h4 id="Escolhendo_Firefox_binário">Escolhendo Firefox binário</h4> - -<p>Você pode exportar a variável de ambiente do Firefox para o seu binário firefox. Por exemplo, no OS X:</p> - -<pre class="brush: bash">export FIREFOX=/Applications/FirefoxNightly.app/Contents/MacOS/firefox</pre> - -<p>Alternativamente, você pode passá-la como argumento para bin/gaia-teste:</p> - -<pre class="brush: bash">bin/gaia-test <gaia directory> <firefox path></pre> - -<h3 id="Lançando_o_executor_de_testes_no_B2G_desktop">Lançando o executor de testes no B2G desktop</h3> - -<p>Isto irá baixar e lançar o B2G área de trabalho:</p> - -<pre class="brush: bash">bin/gaia-test -d</pre> - -<h3 id="Execute_os_testes_a_partir_da_interface_Web">Execute os testes a partir da interface Web</h3> - -<p>Você pode simplesmente clicar em testes específicos e, em seguida, no botão Executar.</p> - -<h3 id="Execute_os_testes_a_partir_da_linha_de_comando">Execute os testes a partir da linha de comando</h3> - -<p>Com o servidor WebSocket running, e o app Test Agent em execução no B2G Desktop / Firefox Nightly, execute o seguinte comando:</p> - -<pre>make test-agent-test -</pre> - -<p>Se você só deseja executar testes de um aplicativ,o você pode especificar quais via variável env APP:</p> - -<pre>make test-agent-test APP=calendar -</pre> - -<p>Você pode também fornecer, opcionalmente, um repórter para formatar a saída do teste: <a class="external" href="http://visionmedia.github.com/mocha/#reporters" title="http://visionmedia.github.com/mocha/#reporters">reporter</a> to format the test output:</p> - -<pre>make REPORTER=List test-agent-test -</pre> - -<div class="note">Nota: Nem todos os repórteres trabalham, uma vez que atualmente não suportam Doc.</div> - -<h3 id="Execute_os_testes_enquanto_você_salva">Execute os testes enquanto você salva</h3> - -<blockquote> -<p>Quando o servidor está em execução, os testes para um arquivo são executados automaticamente quando um arquivo é salvo ou mesmo quando ele é tocado:</p> -</blockquote> - -<ul> - <li>Quando você salvar um arquivo de teste, o próprio arquivo de teste é executado.</li> - <li><span style="line-height: 19.0909080505371px;">Quando você salvar um outro arquivo, ele encontra um arquivo correspondente no diretório test / unit, usando como sufixo o nome do arquivo com <code>_test.js</code>.</span></li> -</ul> - -<div class="note"> -<p>Nota: ele observa somente arquivos existentes, então se você criar um novo arquivo, você tem que reiniciar o agente.</p> -</div> - -<h3 id="A_execução_de_testes_como_Buildbot_faz">A execução de testes como Buildbot faz</h3> - -<p>Testes de unidade no Gaia Buildbot são executados usando um executor separado; isto explica como usá-lo. Por favor, consulte os documentos <a href="/pt-BR/docs/Python/Virtualenv" style="line-height: 19.0909080505371px;" title="/en-US/docs/Python/Virtualenv">virtualenv</a> se você não estiver familiarizado com o uso de um virtualenv Python.</p> - -<pre class="brush: bash">virtualenv venv -source venv/bin/activate -cd $GAIA/tests/python/gaia-unit-tests -python setup.py develop -cd gaia_unit_test -python main.py --binary /path/to/b2g/desktop/build --profile /path/to/gaia/profile -</pre> - -<div class="note"> -<p>Nota: Ao especificar o caminho para a construção de desktop B2G, você deve especificar o caminho para B2G-bin, se ele existir, caso contrário use B2G.</p> -</div> - -<p>O perfil de Gaia deve ser feito usando o seguinte:</p> - -<pre class="brush: bash">NO_LOCK_SCREEN=1 DEBUG=1 DESKTOP=0 make</pre> - -<p>Por padrão, este perfil será gerado no <code>$ GAIA/profile-debug</code>. O <code>bin/ gaia-teste</code> gera o mesmo perfil, de modo que você não precisa regenerá-lo se você já tiver executado o gaia-teste.</p> - -<h3 id="Desativando_um_teste_de_unidade_gaia_em_automação">Desativando um teste de unidade gaia em automação</h3> - -<p>Automação usa uma lista negra para excluir certos testes de unidade gaia de serem executadas. Para evitar que um teste de correr em automação, adicione seu caminho para <a href="https://github.com/mozilla-b2g/gaia/blob/master/tests/python/gaia-unit-tests/gaia_unit_test/disabled.json">https://github.com/mozilla-b2g/gaia/blob/master/tests/python/gaia-unit-tests/gaia_unit_test/disabled.json</a>.</p> - -<h2 id="Configurando_o_seu_app_Gaia">Configurando o seu app Gaia</h2> - -<p>Embora este guia possa ajudar a tornar as coisas mais fáceis, a melhor maneira de aprender a escrever, criar e executar testes ainda está em olhar para o código-fonte; em particular, nos <a class="link-https" href="https://github.com/lightsofapollo/gaia/tree/master/apps/gallery/test" title="https://github.com/lightsofapollo/gaia/tree/master/apps/gallery/test">testes de galeria</a>.</p> - -<h3 id="Carregando_seus_próprios_arquivos_de_teste" style="line-height: 24px; font-size: 1.71428571428571rem;">Carregando seus próprios arquivos de teste</h3> - -<div class="note"> -<p>Nota: Esta é uma técnica avançada e totalmente opcional. Se o carregador de testes nativo do test-agent estiver funcionando em sua aplicação, assim como o seu teste de estilo, e você não quiser usar seus próprios arquivos de teste, esta seção não é para você!</p> -</div> - -<p>O test-agent carrega seus arquivos de teste em um ambiente onde eles têm acesso a mocha (assim como outros bits de estado global). Um test-agent global importante é o require, que permite que o seu arquivo de teste carregue uma dependência (código da aplicação, por exemplo). Às vezes, principalmente se os seus arquivos de aplicativos estiverem esperando para serem carregados de uma maneira diferente da exigência do test-agent, ele pode ser útil para substituir o carregador de arquivo de teste do test-agente. Você também pode fazê-lo da seguinte maneira:</p> - -<pre class="brush: js" style="font-size: 14px;">// setup.js - -testAgentRuntime.testLoader = function(path) { - // We're going to return a promise to represent - // the loading state of the test file at this path. - return new Promise((accept, reject) => { - // Load the parameter test file and resolve (or reject) appropriately - // ... - }); -};</pre> - -<h2 id="Usando_simulações">Usando simulações</h2> - -<p>TBD</p> - -<h2 id="Avançado_o_que_é_que_o_script_faz">Avançado: o que é que o script faz?</h2> - -<h3 id="Gerando_um_perfil">Gerando um perfil</h3> - -<p>Você precisa de um perfil que é gerado por este comando:</p> - -<pre class="brush: bash">NO_LOCK_SCREEN=1 DEBUG=1 DESKTOP=0 make -</pre> - -<p>Isso gera um perfil de depuração no gaia/profile-debug, substituindo um perfil anterior, se você já tiver um.</p> - -<ul> - <li><code>DEBUG=1</code> permite a extensão <code>httpd.js</code> que torna possível usar diretamente os arquivos do diretório <code>apps/</code>.</li> - <li><code>NO_LOCK_SCREEN=1</code> desativa a tela de bloqueio, que é necessária na área de trabalho B2G , porque não é possível desbloqueá-la usando o mouse.</li> - <li><code>DESKTOP=0</code> desativa os outros addons que normalmente usamos no modo de depuração para executar o Gaia no Firefox.</li> -</ul> - -<h3 id="Inicie_o_servidor_WebSocket">Inicie o servidor WebSocket</h3> - -<p>O agente de teste (o corredor de teste) vem com um servidor WebSocket construído que permite que você envie uma mensagem remotamente ao navegador ou dispositivo para fila de teste. Muitas vezes você poderá querer desenvolver utilizando recursos de economia de tempo como um observador de arquivo que irá executar os testes quando um arquivo de teste ou implementação mudar. Para aproveitar destas características você precisa iniciar o servidor:</p> - -<pre class="brush: bash">make test-agent-server -</pre> - -<p>O servidor WebSocket fornece outras ferramentas durante o uso, como por exemplo, um repórter de linha de comando para os resultados do teste (assista ao terminal no qual você executou o comando), um repórter Growl, as notificações de erro de sintaxe, e muito mais.</p> - -<p>O agente também assiste alterações nos arquivos, automaticamente executa os testes associados. Ele é executado quando você salva o teste ou se você salva o arquivo testado (nós usamos a convenção na qual o nome do arquivo de teste é o nome do arquivo testado com <code>_test </code>anexado, veja abaixo para mais exemplos). Ela vê apenas os arquivos existentes, então se você criar um novo arquivo, você terá que reiniciar o agente.</p> - -<h3 id="Executando_testes_unitários_com_o_Firefox_Nightly">Executando testes unitários com o Firefox Nightly</h3> - -<p>Você pode lançar Gaia no Firefox Nightly com os seguintes comandos:</p> - -<pre class="brush: bash">cd <path to gaia> -<path to nightly>/firefox --no-remote -profile <path to gaia>/profile-debug/ http://test-agent.gaiamobile.org:8080/</pre> - -<div class="note"> -<p>Nota: No OS X, o caminho do perfil deve ser um caminho absoluto</p> -</div> - -<p>Você pode usar o Firebug ou o depurador integrado para depurar os testes; use a palavra-chave depurador para quebrar no depurador.</p> - -<h3 id="Executando_testes_unitários_com_B2G_desktop">Executando testes unitários com B2G desktop</h3> - -<p>Inicie o Gaia e o app "Test Agent". A partir do app gent Teste você pode selecionar os testes para executar a partir da interface do usuário.</p> - -<h2 id="Avançado_como_é_que_o_agente_de_teste_funciona">Avançado: como é que o agente de teste funciona?</h2> - -<p><span style="line-height: 19.0909080505371px;">O agente de teste vive em </span><a href="https://github.com/mozilla-b2g/js-test-agent">seu próprio repositório Github</a>. <span style="line-height: 19.0909080505371px;"> Você pode dar uma olhada lá para entender como ele funciona sob o capô.</span></p> diff --git a/files/pt-br/archive/b2g_os/automated_testing/index.html b/files/pt-br/archive/b2g_os/automated_testing/index.html deleted file mode 100644 index a786d1299b..0000000000 --- a/files/pt-br/archive/b2g_os/automated_testing/index.html +++ /dev/null @@ -1,108 +0,0 @@ ---- -title: Testes automatizados do Firefox OS -slug: Archive/B2G_OS/Automated_testing -tags: - - Automated testing - - B2G - - NeedsTranslation - - QA - - Testing - - TopicStub -translation_of: Archive/B2G_OS/Automated_testing ---- -<div class="summary"> -<p>Uma vez que o Fireofox OS está em desenvolvimento e o suporte para novos hardwares está próximo, é importante saber como testá-lo. Essa página mostra artigos que fornecem informações sobre os vários aspectos de como testar o Firefox OS, incluindo a execução de diferentes testes, automação, relatórios de resultados e rastreamento.</p> -</div> - -<h2 id="Iniciando">Iniciando</h2> - -<dl> - <dt><a href="/pt-BR/Firefox_OS/Running_Tests_on_Firefox_OS_for_Developers">Executando testes no Firefox OS: um guia para desenvolvedores</a></dt> - <dd>Um guia rápido, focado no desenvolvedor que deseja iniciar os testes. Se você não tem experiência em executar testes em produtos da Mozilla nem em suas automações, é aqui onde você deve começar. Se você tem alguma ideia que quais testes você precisa executar e como, você pode ir direto aos guias mais específicos abaixo.</dd> -</dl> - -<h2 id="Testes_do_Gaia">Testes do Gaia</h2> - -<p>Esses artigos cobrem o conjunto de testes primários desenvolvido para colocar o Gaia no seu ritmo.</p> - -<dl> - <dt><a href="/pt-BR/docs/Mozilla/Firefox_OS/Platform/Automated_testing/gaia-ui-tests" title="/en-US/docs/Mozilla/Firefox_OS/Platform/Testing/gaia-ui-tests">Testes da Inteface do usuário (IU) Gaia</a></dt> - <dd>Testes python para recursos e interações da IU Gaia.</dd> - <dt><a href="/pt-BR/docs/Mozilla/Firefox_OS/Platform/Automated_testing/Gaia_integration_tests">Testes de integração do Gaia</a></dt> - <dd>Testes de integração JavaScript para o Gaia, baseado no Marionette.</dd> - <dt><a href="/pt-BR/docs/Mozilla/Firefox_OS/Platform/Automated_testing/Gaia_unit_tests" title="/en-US/docs/Mozilla/Firefox_OS/Platform/Testing/Gaia_unit_tests">Testes unitários do Gaia</a></dt> - <dd>Testes unitários do Gaia sem interação com a IU, escrito em JavaScript, não baseado no Marionette.</dd> - <dt><a href="/pt-BR/Firefox_OS/Platform/Automated_testing/Gaia_performance_tests">Testes de performance do Gaia</a></dt> - <dd>Mede a performance do Gaia baseado em instrumentação interna. Measures Gaia app performance based on internal instrumentation. Os equipamentos do teste estão na árvore.</dd> -</dl> - -<h2 id="Testes_B2G">Testes B2G</h2> - -<p>Os guias abaixo cobre um número de diferentes ferramentas de testes em vários aspectos da funcionalidade do B2G.</p> - -<dl> - <dt><a href="/pt-BR/docs/Mozilla/Firefox_OS/Platform/Automated_testing/Mochitests" title="/en-US/docs/Mozilla/Firefox_OS/Platform/Testing/Mochitests">Mochitests</a></dt> - <dd>Testes funcionais do Gecko e APIs; baseados em HTML e JS based. Sem interação com o Gaia.</dd> - <dt><a href="/pt-BR/docs/Mozilla/Firefox_OS/Platform/Automated_testing/Reftests" title="/en-US/docs/Mozilla/Firefox_OS/Platform/Testing/Reftests">Reftests</a></dt> - <dd>Testes de correção da renderização do Gecko.</dd> - <dt><a href="/pt-BR/docs/Marionette/Marionette_JavaScript_Tests" title="/en-US/docs/Marionette/Marionette_JavaScript_Tests">Testes de WebAPI</a></dt> - <dd>Baseado no Gecko e JS. Muitos desses testes necessitam de um emulador.</dd> - <dt><a href="/pt-BR/docs/Mozilla/Firefox_OS/Platform/Automated_testing/XPCShell" title="/en-US/docs/Mozilla/Firefox_OS/Platform/Testing/XPCShell">Testes xpcshell</a></dt> - <dd>Testes <em>headless</em> do Gecko XPCOM APIs.</dd> - <dt><a href="https://github.com/mozilla/b2gperf" title="https://github.com/mozilla/b2gperf">B2GPerf</a></dt> - <dd>Aplicativos de medição de performance do Gaia baseados em instrumentações internas.</dd> - <dt><a href="https://wiki.mozilla.org/Project_Eideticker" title="https://github.com/mozilla/eideticker">Eideticker</a></dt> - <dd>Provê medições de performance para o Firefox OS baseado em captura de vídeos.</dd> - <dt><a href="/pt-BR/docs/Mozilla/Firefox_OS/Platform/Automated_testing/endurance_tests" title="/en-US/docs/Mozilla/Firefox_OS/Platform/Automated_testing/endurance_tests">Teste de resistência</a></dt> - <dd>Testes de longa duração e repetitivos para descobrir problemas como vazamento de memória e problemas de estabilidade.</dd> - <dt><a href="https://developer.mozilla.org/pt-BR/docs/Mozilla/Firefox_OS/Platform/Automated_testing/MTBF_tests">Teste MTBF</a></dt> - <dd>Esse é um framework de teste baseado na não-reinicialização da IU gaia. Tenta localizar todos os tipos de problema evitando a execução de testes de longa duração. Atualmente, pertence a um time de QA em Taiwan que ainda estão testando esse framework.</dd> - <dt>Testes de Memória - Em breve</dt> - <dd>Testes repetitivos são executados a cada commit ao repo mozilla-central, reportados ao <a href="https://areweslimyet.com/" title="https://areweslimyet.com/">https://areweslimyet.com/</a>, projetado para descobrir problemas relacionados ao uso da memória.</dd> -</dl> - -<h2 id="Documentação_de_Suporte">Documentação de Suporte</h2> - -<p>Essa seção fornece links para algumas das tecnologias que suportam os testes da Mozilla, nos quais você pode encontrar maiores informações.</p> - -<dl> - <dt><a href="/pt-BR/docs/Mozilla/QA/Marionette" title="/en-US/docs/Marionette">Marionette</a></dt> - <dd>E driver de teste remoto baseado no Selenium WebDriver.</dd> - <dt><a href="/pt-BR/docs/Mozilla/QA/Marionette/Marionette_JavaScript_Tools" title="/en-US/docs/Marionette/Marionette_JavaScript_Tools">Testes Marionette JavaScrip</a></dt> - <dd>Um executor de testes para Marionette baseado em baseado em node.js-based.</dd> - <dt><a href="/pt-BR/docs/Mozilla/QA/Marionette/Python_Marionette" title="/en-US/docs/Marionette/Python_Marionette">Testes Marionette Python</a></dt> - <dd>Um executor de testes para Marionette baseado em Python.</dd> -</dl> - -<div class="note"> -<p><strong>Nota</strong>: Se você deseja executar o Marionette em uma compilação de produção (executar testes de integração gaia, etc.), você pode <a href="https://github.com/mozilla-b2g/marionette-extension">instalar o Marionette como uma extensão</a> (atualmente só funciona na versão 1.3 builds, porém mais suporte será incluído em breve).</p> -</div> - -<h2 id="sect1"> </h2> - -<dl> - <dt> </dt> -</dl> - -<h2 id="Integração_contínua_e_relatórios_de_resultado">Integração contínua e relatórios de resultado</h2> - -<p>Os artigos a seguir cobre os mecanismos de integração contínua e relatórios de resultados que a Mozilla utliza para armazenar e interpretar os dados oriundos dos testes.</p> - -<dl> - <dt><a href="/pt-BR/docs/Mozilla/Firefox_OS/TBPL">TBPL</a></dt> - <dd>Entenda os testes e compilações que rodam no TBPL.</dd> - <dt><a href="https://wiki.mozilla.org/QA/Execution/Web_Testing/Automation/Jenkins">Jenkins</a></dt> - <dd>Entenda os testes que rodam em dispositivos reais via Jenkins.</dd> - <dt><a href="https://wiki.mozilla.org/B2G/Datazilla" title="https://wiki.mozilla.org/B2G/Datazilla">Datazilla</a></dt> - <dd>Entenda quais testes de performance são reportados no <a href="https://datazilla.mozilla.org/b2g/" title="https://datazilla.mozilla.org/b2g/">dashboard Datazilla</a>, e quais são as medições de testes.</dd> - <dt><a href="/pt-BR/docs/Mozilla/Firefox_OS/Platform/Automated_testing/Test_Execution_Chart" title="/en-US/docs/Mozilla/Firefox_OS/Testing/Test_Execution_Chart">Gráfico de execução de teste</a></dt> - <dd>Um gráfico que mostra quais testes foram executados — em quais dispositivos e onde — e quais plataformas são suportadas para cada testes.</dd> -</dl> - -<h2 class="Community" id="Community" name="Community">Vídeo do framework de teste unitário</h2> - -<div class="intrinsic-wrapper"><div class="intrinsic-container "><iframe src="https://www.youtube.com/embed/LxnRIm0wLLo?rel=0&html5=1"></iframe></div></div> - -<dl> - <dt> </dt> -</dl> diff --git a/files/pt-br/archive/b2g_os/automated_testing/mochitests/index.html b/files/pt-br/archive/b2g_os/automated_testing/mochitests/index.html deleted file mode 100644 index a754c01747..0000000000 --- a/files/pt-br/archive/b2g_os/automated_testing/mochitests/index.html +++ /dev/null @@ -1,139 +0,0 @@ ---- -title: Firefox OS mochitests -slug: Archive/B2G_OS/Automated_testing/Mochitests -translation_of: Archive/B2G_OS/Automated_testing/Mochitests ---- -<div class="summary"> - <p><span class="seoSummary"><a href="/pt-BR/docs/Mochitest">Mochitest</a> é um <a class="internal" href="/pt-BR/docs/Mozilla/QA/Automated_testing" title="En/Mozilla automated testing">framework de testes automatizados</a> construído no topo das bibliotecas JavaScript <a class="external" href="http://mochikit.com/">MochiKit</a>, que fornece testes funcionais e de API. É apenas um dos frameworks de testes de regressão automatizados usados pela Mozilla. Os testes apresentam os resultados (sucesso ou falha) usando chamadas de funções JavaScript. Esse artigo apresenta as etapas necessárias para executar o Mochitests no Firefox OS, no B2G Desktop, no dispositvo ou no emulador.</span></p> -</div> -<h2 id="Executando_mochitests_nas_imagens_do_B2G_desktop">Executando mochitests nas imagens do B2G desktop</h2> -<p>O primeiro caso que vamos cobrir é a execução do B2G no <a href="/pt-BR/docs/Mozilla/Boot_to_Gecko/Using_the_B2G_desktop_client">B2G desktop</a>. Você vai precisar <a href="https://developer.mozilla.org/pt-BR/Firefox_OS/Using_the_B2G_desktop_client#Downloading_Gaia">instalar o Gaia</a> e <a href="https://developer.mozilla.org/pt-BR/Firefox_OS/Using_the_B2G_desktop_client#Generating_a_profile">gerar um perfil</a> antes de começar.</p> -<h3 id="Usando_mach">Usando mach</h3> -<p><strong>Mach</strong> é uma interface em linha de comando que ajuda os desenvolvedores executarem tarefas comuns, vamos observar como usá-la executando o mochitests. Se você tem um B2G Desktop local, compile-o habilitando a configuração <code>ENABLE_MARIONETTE=1</code> no seu <a href="https://developer.mozilla.org/pt-BR/docs/Configuring_Build_Options">mozconfig</a>, você pode usar <a href="https://developer.mozilla.org/pt-BR/docs/Mozilla/Developer_guide/mach" title="/en-US/docs/Developer_Guide/mach">mach</a> para executar todos os mochitests. Execute o seguinte comando no diretório raiz (root) da sua árvore do fonte do seu B2G.</p> -<pre class="brush: bash language-html"><code class="language-html">./mach mochitest-b2g-desktop --profile path/to/non/debug/gaia/profile</code></pre> -<p>Alternativamente você pode configurar a variável de ambiente <code>$GAIA_PROFILE</code> para evitar ter que informar o diretório todas as vezes que executar o comando.</p> -<p>Para executar um teste específico:</p> -<pre class="brush: bash language-html"><code class="language-html">export GAIA_PROFILE=path/to/non/debug/gaia/profile -./mach mochitest-b2g-desktop test_path</code></pre> -<p>Para ver as opções do mochitest:</p> -<pre class="brush: bash language-html"><code class="language-html">./mach help mochitest-b2g-desktop</code></pre> -<div class="note"> - <p><strong>Nota</strong>: Alguns contribuidores tem trabalhado num projeto chamado <a href="https://github.com/ahal/b2g-commands">b2g-commands</a>, que pretende trazer alguns dos comandos disponíveis no Firefox desktop para a imagem B2G, como diagnósticos mais fáceis e construção do ambiente de inicialização. Mais detalhes no artigo <a href="http://ahal.ca/blog/2014/b2g-commands/">Add more Mach to your B2G</a>.</p> -</div> -<h3 id="Usando_o_mochitest">Usando o mochitest</h3> -<p>Você pode executar <a href="https://developer.mozilla.org/pt-BR/docs/Mochitest" title="https://developer.mozilla.org/en-US/docs/Mochitest">mochitest-plain</a> na imagem do B2G Desktop.</p> -<h4 id="Pre-requisitos">Pre-requisitos</h4> -<ul> - <li>Usar uma imagem com a opção <code>Marionette</code> ativa (compilada com <code>ENABLE_MARIONETTE=1</code> no mozconfig.)</li> - <li>Ter gerado um perfil gaia manualmente (que pode ter sido feito se você compilou o B2G desktop manualmente). Deve ser um perfil <em>non-DEBUG.</em></li> - <li>Não pode utilizar um perfil Gaia que tenha sido feito com um <code>GAIA_DOMAIN</code> personalizado.</li> -</ul> -<h4 id="Configuração_para_mozilla-b2g18_trees">Configuração para mozilla-b2g18 trees</h4> -<pre class="brush: bash language-html"><code class="language-html">cd $GECKO_OBJ_DIR -python $GECKO_SRC_DIR/python/virtualenv/virtualenv.py venv -source venv/bin/activate -cd $GECKO_SRC_DIR/testing/marionette/client -python setup.py develop</code></pre> -<div class="note"> - <p><strong>Nota</strong>: você pode precisar instalar <a href="http://pypi.python.org/pypi/setuptools" title="http://pypi.python.org/pypi/setuptools">setuputils.py</a> antes de executar setup.py</p> -</div> -<h4 id="Configuração_para_trunk_trees_incluindo_mozilla-central">Configuração para trunk trees, incluindo mozilla-central</h4> -<pre class="brush: bash language-html"><code class="language-html">cd $GECKO_OBJ_DIR -source _virtualenv/bin/activate</code></pre> -<h4 id="Executando_os_testes">Executando os testes</h4> -<p>Você pode executar mochitests usando os seguintes comandos:</p> -<pre class="brush: bash language-html"><code class="language-html">cd $GECKO_OBJ_DIR/_tests/testing/mochitest -python runtestsb2g.py --desktop --console-level INFO --profile /path/to/gaia/profile --app /path/to/b2g</code></pre> -<p>O executor do teste vai executar o b2g desktop e executar os testes, todos os mochitests B2G por padrão, o que consome muito tempo. Outras opções comuns são as seguintes:</p> -<ul> - <li>Para executar testes específicos, indique em <code>--test-path</code>.</li> - <li>Podem ser adicionados os argumentos <code>--total-chunks</code> e <code>--this-chunks</code> da mesma forma como é feito com o mochitest do desktop.</li> - <li>Finalmente, você pode usar <code>python runtestsb2g.py --help</code> para uma lista completa de argumentos.</li> -</ul> -<h2 id="Executando_mochitest_em_imagens_do_emulador">Executando mochitest em imagens do emulador</h2> -<p>Você pode executar <a href="https://developer.mozilla.org/pt-BR/docs/Mochitest" title="https://developer.mozilla.org/en-US/docs/Mochitest">mochitest-plain</a> em dispositivos B2G. Mas atualmente, funciona melhor quando executado em um emulador.</p> -<div class="warning"> - <p>Você não pode executar o mochitest em um dispositivo B2G que tenha sido compilado com a opção <code>PRODUCTION=1</code>. Para executar os mochitests a imagem deve ser a de engenharia. Veja <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1037858">Bug 1037858</a>.</p> -</div> -<h3 id="Usando_mach_2">Usando mach</h3> -<p>Se você possuir uma imagem local de um emulador que foi realizada a partir de um branch do Gecko (não a mozilla-b2g18), a forma mais fácil de executar um mochitest é com o <a href="https://developer.mozilla.org/pt-BR/docs/Mozilla/Developer_guide/mach" title="/en-US/docs/Developer_Guide/mach">mach</a>. Para executar todos os testes:</p> -<pre class="brush: bash language-html"><code class="language-html">cd $B2G_DIR -./mach mochitest-remote</code></pre> -<p>Para executar um teste específico:</p> -<pre class="brush: bash language-html"><code class="language-html">./mach mochitest-remote test_path</code></pre> -<div class="note"> - <p><strong>Nota</strong>: Esses caminhos são relativos ao diretório fonte do GeckoTest paths are relative to gecko's source directory, por exemplo: <code>content/base/test/test_CrossSiteXHR.html</code></p> -</div> -<p>Para ver as opções do mochitest:</p> -<pre class="brush: bash language-html"><code class="language-html">./mach help mochitest-remote</code></pre> -<h3 id="Usando_o_mochitest_2">Usando o mochitest</h3> -<p>Similar ao anterior, você pode executar o mochitest em compilações B2G no dispositivo ou emulador utilizando o executor do mochitest. Os pré-requisitos s˜ to before, you can also run mochitest on device or emulator builds of B2G using the mochitest runner. The prerequisites são um pouco mais complexos.</p> -<h4 id="Pré-requisitos">Pré-requisitos</h4> -<ul> - <li>Você precisa compilar o B2G para o dispositivo que você está testando(veja <a href="https://developer.mozilla.org/pt-BR/Firefox_OS/Construindo_e_instalando_o_Firefox_OS" title="/en-US/docs/Mozilla/Boot_to_Gecko/Building_and_installing_Boot_to_Gecko">Compilando e instalando o Boot to Gecko</a>).</li> - <li>Você não pode usar a imagem do Gaia que foi compilada com um <code>GAIA_DOMAIN</code> customizado.</li> - <li>Você precisa ter uma versão <strong>desktop</strong> do xpcshell (ele precisa rodar no <em>host</em>), você o terá se tiver uma cópia do Firefox no seu sistema. Alternativamente, você pode baixar uma cópia para o Linux a partir de <a href="http://people.mozilla.com/%7Eahalberstadt/getb2g/xre.zip" title="http://people.mozilla.com/~ahalberstadt/getb2g/xre.zip">http://people.mozilla.com/~ahalberstadt/getb2g/xre.zip</a>.</li> - <li>Você precisa instalar alguns pacotes Python que são necessários, mesmo em um virtualenv. Leia a seguir para maiores detalhes..</li> -</ul> -<h4 id="Configuração_para_mozilla-b2g18_trees_2">Configuração para mozilla-b2g18 trees</h4> -<pre class="brush: bash language-html"><code class="language-html">cd $GECKO_OBJ_DIR -python $GECKO_SRC_DIR/python/virtualenv/virtualenv.py venv -source venv/bin/activate -cd $GECKO_SRC_DIR/testing/marionette/client -python setup.py develop</code></pre> -<div class="note"> - <p><strong>Nota</strong>: antes de executar setup.py você precisa instalar <a href="http://pypi.python.org/pypi/setuptools" title="http://pypi.python.org/pypi/setuptools">setuputils.py</a></p> -</div> -<h4 id="Configuração_para_trunk_trees_incluindo_mozilla-central_2">Configuração para trunk trees, incluindo mozilla-central</h4> -<pre class="brush: bash language-html"><code class="language-html">cd $GECKO_OBJ_DIR -source _virtualenv/bin/activate</code></pre> -<h4 id="Executando_os_testes_2">Executando os testes</h4> -<p>Você pode executar o plano mochitest-plain usando um dos seguintes conjunto de comandos no terminal.</p> -<p>Para executar testes no dispositivo, o computador e o dispositivo devem estar na mesma rede sem fio, uma vez que o dispositivo requisita arquivos de um servidor HTTP que foi iniciado pelo mochitest no computador. Para iniciar os testes utilize os comandos:</p> -<pre class="brush: bash language-html"><code class="language-html">adb forward tcp:2828 tcp:2828 -cd $GECKO_OBJ_DIR/_tests/testing/mochitest -python runtestsb2g.py --b2gpath $B2G_HOME --xre-path /path/to/dir/containing/desktop/xpcshell --console-level INFO \ - --httpd-path ./</code></pre> -<p>Se você estiver usando o emulador:</p> -<pre class="brush: bash language-html"><code class="language-html">cd $GECKO_OBJ_DIR/_tests/testing/mochitest -python runtestsb2g.py --b2gpath $B2G_HOME --xre-path /path/to/dir/containing/desktop/xpcshell --console-level INFO \ - --httpd-path ./ --emulator arm</code></pre> -<div class="warning"> - <p><strong>Aviso</strong>: Executar mochitestes em um emulador B2G no OS X não é suportado, ao invés disso utilize o Linux.</p> -</div> -<p>Os comandos acima executam todos os mochitests B2G por padrão, o que consome muito tempo. Outras opções comuns são as seguintes:</p> -<ul> - <li>Para executar testes específicos: <code>--test-path</code>.</li> - <li>Opcionalmente você pode incluir os argumentos <code>--total-chunks</code> e <code>--this-chunks</code> como feito com mochitests no desktop.</li> - <li>Finalmente, você pode executar <code>python runtestsb2g.py --help</code> para uma lista completa de argumentos possíveis.</li> -</ul> -<p>Após ser iniciado o script <code>runtestsb2g.py</code>, o teste vai chamar o emulador para você (se estiver executando os testes no emulador) ou reiniciar o seu dispositivo (se estiver executando os testes no dispositivo) e comecará a executar os testes. Como o emulador é lento, é necessário copiar um perfil de testes para o emulador e reinicar o processo B2G e pode consumir alguns minutos para iniciar os testes. Antes de ser iniciado você verá apenas uma tela preta ou branca. Após alguns minutos você verá o log dos testes no console.</p> -<p>Quando os testes terminarem, o emulador será encerrado, ou se você estiver usando um dispositivo, o mesmo será reinicializado.</p> -<p>{{noteStart}}Existe um {{bug("780034")}} que evita o mochitest terminar quando você executa um teste simples, ao contrário do que ocorre no teste completo. Nesse caso, quando você perceber que o teste terminou, você pode pressionar CTRL+C para terminar o executor de testes.{{noteEnd}}</p> -<h2 id="Executando_o_mochitest_com_um_emulador_baixado_da_internet">Executando o mochitest com um emulador baixado da internet</h2> -<p>Se você compilou o B2G para outra configuração (como otoro) e gostaria de executar os testes em um emulador, você pode fazer sem a necessidade de compilar você mesmo um emulador. Apenas baixe a <a href="https://pvtbuilds.mozilla.org/pub/mozilla.org/b2g/tinderbox-builds/mozilla-central-generic/" title="https://pvtbuilds.mozilla.org/pub/mozilla.org/b2g/tinderbox-builds/mozilla-central-generic/">última versão do emulador arm</a>, e utilize as mesmas instruções acima, substituindo o argumento <code>--b2gpath $B2G_HOME</code> para <code>runtestsb2g.py</code> com <code>--b2gpath /path/to/unpacked/emulator</code>.</p> -<h2 id="Executando_o_mochitest_com_um_emulador_e_os_testes_baixados_da_internet">Executando o mochitest com um emulador e os testes baixados da internet</h2> -<p>Você também pode executar mochitests em um emuladodr sem compilar ou clonar qualquer coisa. Para fazer isso, você precisa baixar a <a href="https://pvtbuilds.mozilla.org/pub/mozilla.org/b2g/tinderbox-builds/mozilla-central-generic/" title="https://pvtbuilds.mozilla.org/pub/mozilla.org/b2g/tinderbox-builds/mozilla-central-generic/">última versão do emulador arm</a> e descompactá-la e baixar a última versão do arquivo <code>tests.zip</code> (no mesmo lugar de onde baixou o emulador) e descompactá-lo.</p> -<p>Você também precisará do <a href="https://developer.mozilla.org/pt-BR/docs/Python/Virtualenv" title="/en-US/docs/Python/Virtualenv">virtualenv </a>instalado no seu sistema.</p> -<p>Então você poderá configura seu ambiente e executar os testes:</p> -<pre class="brush: bash language-html"><code class="language-html">virtualenv venv -source venv/bin/activate -cd $TESTS_DIR/marionette -python setup.py develop -cd $TESTS_DIR/mochitests -python runtestsb2g.py --b2gpath /path/to/extracted/emulator --xre-path /path/to/desktop/xpcshell --console-level INFO \ - --httpd-path ./ --emulator arm</code></pre> -<h2 id="Detalhes_técnicos_de_implementação">Detalhes técnicos de implementação</h2> -<p>Existem algumas coisas que acontecem quando você executa os mochitests B2G.</p> -<ol> - <li>O aplicativo Homescreen é substituído por um aplicativo certificado chamado test-container (observe que isso é verificado no Gaia). Em teoria esse aplicativo é feito para ser genério, uma vez que qualquer ferramenta de testes pode usá-lo, porém até agora somente o mochitest o utiliza.</li> - <li>O aplicativo test-container expões um simples <a href="http://mxr.mozilla.org/gaia/source/test_apps/test-container/index.html?force=1" title="http://mxr.mozilla.org/gaia/source/test_apps/test-container/manifest.webapp"><iframe mozbrowser mozapp></a> no qual os mochitests são carregados (mochitests possuem seus próprios <a href="http://mxr.mozilla.org/mozilla-central/source/testing/mochitest/manifest.webapp" title="http://mxr.mozilla.org/gaia/source/test_apps/test-container/index.html?force=1">manifest.webapp</a>).</li> - <li>A automação substitui o aplicativo Homescreen pelo aplicativo test-container <a href="http://hg.mozilla.org/mozilla-central/file/947b9aa5e2d3/testing/profiles/prefs_b2g_unittest.js#l3" title="http://mxr.mozilla.org/mozilla-central/source/testing/profiles/prefs_b2g_unittest.js#3">usando uma preferência</a>.</li> - <li>A automação <a href="http://hg.mozilla.org/mozilla-central/file/1f65b5204c8b/testing/mochitest/runtestsb2g.py#l88" title="http://mxr.mozilla.org/mozilla-central/source/testing/mochitest/runtestsb2g.py#88">carrega o aplicativo mochitest</a> no iframe do aplicativo test-container (esse script é executado com privilégios chrome pelo marionette).</li> - <li>A automação <a href="http://hg.mozilla.org/mozilla-central/file/1f65b5204c8b/testing/mochitest/runtestsb2g.py#l56" title="http://hg.mozilla.org/mozilla-central/file/1f65b5204c8b/testing/mochitest/runtestsb2g.py#l56">carrega poderes especiais no frame filho</a> que está executando o mochitests e configura o gerenciador de mensagens (faz com que o mochitests acesse algumas APIs privilegiadas).</li> - <li>A automação <a href="http://hg.mozilla.org/mozilla-central/file/1f65b5204c8b/testing/mochitest/runtestsb2g.py#l92" title="http://hg.mozilla.org/mozilla-central/file/1f65b5204c8b/testing/mochitest/runtestsb2g.py#l92">carrega a url do mochitest</a> no iframe do mochitest. Isso inicia os testes.</li> -</ol> -<div class="note"> - <p><strong>Nota</strong>: Se você estiver interessado em saber como as coisas funcionam, a resposta rápida é: satisfazer os requisitos de permissão para os testes. Para uma resposta mais detalhada verifique {{bug("798580")}} e {{bug("814140")}}.</p> -</div> -<p> </p> diff --git a/files/pt-br/archive/b2g_os/bluetooth_api/index.html b/files/pt-br/archive/b2g_os/bluetooth_api/index.html deleted file mode 100644 index d5fae1f26e..0000000000 --- a/files/pt-br/archive/b2g_os/bluetooth_api/index.html +++ /dev/null @@ -1,135 +0,0 @@ ---- -title: WebBluetooth -slug: Archive/B2G_OS/Bluetooth_API -translation_of: Archive/B2G_OS/Bluetooth_API ---- -<p>{{ non-standard_header }}</p> -<p>{{ B2GOnlyHeader2('certified') }}</p> -<h2 id="Sumário">Sumário</h2> -<p>A API de Bluetooth Web permite descobrir, parear e conectar com dispositivos Bluetooth. Como é uma API completamente experimental e não padronizada, por enquanto está disponível apenas para aplicativos certificados. Porém, pela importância de ter uma API como essa disponível para conteúdos Web comuns, isso será discutido como parte do <a href="http://www.w3.org/2012/sysapps/">W3C's System Applications Working Group</a>.</p> -<div class="note"> - <p><strong>Nota:</strong> Desenvolvedores de apps que querem enviar dados para um dispositivo Bluetooth pode utilizar <a href="/en-US/docs/WebAPI/Web_Activities#Firefox_OS_activities">the share activity</a>. Essa atividade permite imagens, audio, vídeo e conteúdos vCard apenas.</p> -</div> -<h2 id="API_Overview">API Overview</h2> -<p>O ponto de entrada principal para API é a propriedade {{domxref("window.navigator.mozBluetooth","navigator.mozBluetooth")}}, que retorna um objeto {{domxref("BluetoothManager")}}.</p> -<h3 id="Interfaces">Interfaces</h3> -<ul> - <li>{{domxref("BluetoothManager")}}</li> - <li>{{domxref("BluetoothAdapter")}}</li> - <li>{{domxref("BluetoothDevice")}}</li> - <li>{{domxref("BluetoothDeviceEvent")}}</li> - <li>{{domxref("BluetoothStatusChangedEvent")}}</li> -</ul> -<h3 id="Mensagens_do_Sistema">Mensagens do Sistema</h3> -<p>Porque algumas ações de dispositivos remotos pode precisar acordar um aplicativo para lidar com eles, tem várias mensagens do sistema relacionadas ao Bluetooth:</p> -<ul> - <li><code>bluetooth-dialer-command</code></li> - <li><code>bluetooth-cancel</code></li> - <li><code>bluetooth-hid-status-changed</code></li> - <li><code>bluetooth-pairing-request</code></li> - <li><code>bluetooth-opp-transfer-complete</code></li> - <li><code>bluetooth-opp-update-progress</code></li> - <li><code>bluetooth-opp-receiving-file-confirmation</code></li> - <li><code>bluetooth-opp-transfer-start</code></li> -</ul> -<div class="note"> - <p><strong>Nota: </strong> Um aplicativo pode reagir a essas mensagens requerendo eles no arquivo manifesto do aplicativo e utilizando {{domxref("window.navigator.mozSetMessageHandler","navigator.mozSetMessageHandler()")}} para definir o manuseio da mensagem.</p> -</div> -<h3 id="Permissões">Permissões</h3> -<p>Aplicativos certificados que querem utilizar API Web Bluetooth devem requerer uma permissão relevante dentro do manifesto do aplicativo.</p> -<pre class="brush: json">"permission": { - "bluetooth":{} -}</pre> -<p>Também é recomendado perguntar para permissão <code>settings</code> porque agora habilitando e desabilitando Bluetooth tem que estar pronto mudando o valor do tópico mozSettings "bluetooth.enabled".</p> -<h2 id="Pareando_dispositivos_Bluetooth">Pareando dispositivos Bluetooth</h2> -<p>O passo mais importante quando lidar com um ambiente Bluetooth é parear dispositivos em ordem de construir micro-rede Bluetooth para dispositivos funcionando com todos de uma maneira segura. Parear é um procedimento que faz com que dois dispositivos Bluetooth tenham a mesma "chave", que é chamada "Conexão de Chave". Depois que ambos dispositivos estiverem pareados um com o outro, se torna possível a fazer conexões mais avançadas nas ações dos perfis em ordem e acessar recursos específicos dos dispositivos.</p> -<p>O procedimento de pareamento depende nas capacidades IO de cada dispositivo.</p> -<p>Cada vez que um dispositivo remoto quer parear com um dispositivo Firefox OS, uma mensagem do sistema nomeada <code>bluetooth-pairing-request</code> é enviada. Para interceptar essa mensagem do sistema, o aplicativo responsável a lidar com o pareamento deve registrar a mensagem dentro do manifesto do aplicativo:</p> -<pre class="brush: json">"messages": [ - { "bluetooth-pairing-request": "/pairing.html" } -]</pre> -<p>Também é necessário registrar um manipulador de mensagem:</p> -<pre class="brush: js">navigator.mozSetMessageHandler("bluetooth-pairing-request", function (message) { - // Get the information about the pairing request - var request = message.detail; - - // Log the name of the remote device that wants to be paired with your device - console.log(request.name); -});</pre> -<p>A mensagem da propriedade <code>detail</code> contém toda as informações necessárias para iniciar o pareamento os dois dispositivos:</p> -<ul> - <li><code>address</code>: o endereço do dispositivo remoto na micro-rede Bluetooth (veja: {{domxref("BluetoothDevice.address")}})</li> - <li><code>name </code>: o nome do dispositivo remoto pareado (veja: {{domxref("BluetoothDevice.name")}})</li> - <li><code>icon </code>: Um nome icônico para utilizar (veja: {{domxref("BluetoothDevice.icon")}})</li> - <li><code>passkey</code>: Uma chave de acesso que o usuário tem que digitar se o dispositivo remoto é um dispositivo de entrada</li> - <li><code>method </code>: O método de pareamento para usar, um desses <code>confirmation</code>, <code>pincode</code> ou <code>passkey</code>.</li> -</ul> -<p>Finalizando a requisição de pareamento depende no método fornecido.</p> -<dl> - <dt> - <code>confirmation</code></dt> - <dd> - Ambos dispositivos devem mostrar um número de 6 dígitos em suas telas. Os usuários devem confirmar que o número mostrado em ambos os dispositivos é o mesmo.</dd> - <dt> - <code>pincode</code></dt> - <dd> - Os dispositivos remotos não tem uma tela (ex: fones de ouvido), então o usuário será requisitado a entrar o código PIN no outro dispositivo.</dd> - <dt> - <code>passkey</code></dt> - <dd> - Se o dispositivo remoto é um dispositivo de entrada (ex: teclado), um número de 6 dígitos será mostrado e os usuários serão requisitados a entrar a chave utilizando o dispositivo remoto.</dd> -</dl> -<p>Então uma aplicação gerenciando pareamento deve manusear três diferentes métodos de pareamento. Para enviar a resposta para o usuário para o dispositivo remoto, a API Bluetooth fornece os seguintes métodos: {{domxref("BluetoothAdapter.setPairingConfirmation()")}}, {{domxref("BluetoothAdapter.setPinCode()")}}, and {{domxref("BluetoothAdapter.setPasskey()")}}</p> -<pre class="brush: js">var adapter; - -// Retreving the local device adapter is asynchronous, handle this carefully. -navigator.mozBluetooth.getDefaultAdapter().success = function(evt) { - adapter = evt.target.result; -} - -function onPairing(message) { - var reponse, - request = message.detail, - passkey = request.passkey; - - switch (request.method) { - case 'confirmation': - // Make sure the passkey is a string - passkey = String(passkey); - // Make sure the string is 6 characters long (pad with 0 if necessary) - passkey = (new Array((6 - passkey.length) + 1)).join('0') + passkey; - // Let's prompt the user - response = confirm('Is that same number visible on the remote device screen: ' + passkey) - // Let's send the confirmation - adapter.setPairingConfirmation(request.address, response); - break; - - case 'pincode': - // Let's prompt the user - response = prompt('Thanks to provide the remote device PIN code'); - // Let's send the pin code - adapter.setPinCode(request.address, response); - break; - - case 'passkey': - // Let's prompt the user - response = alert('Thanks to type the following code on the remote device'); - // Let's send back the passkey - adapter.setPasskey(request.address, response); - break; - } -} - -navigator.mozSetMessageHandler("bluetooth-pairing-request", onPairing); -</pre> -<p>Uma vez a operação de pareamento está feita por ambos os lados, a aplicação é notificada do sucesso ou falha da operação através do evento {{event("pairedstatuschanged")}} onde o callback handler recebe um {{domxref("BluetoothStatusChangedEvent")}}.</p> -<pre class="brush: js">adapter.onpairedstatuschanged = function (evt) { - if (evt.status) { - alert("The pairing operation has been successfully completed"); - } else { - alert("The pairing operation has failed. Please, try again"); - } -}</pre> -<h2 id="Especificações">Especificações</h2> -<p>Sem ser parte de qualquer especificação ainda. Deve ser discutido como parte do <a href="http://www.w3.org/2012/sysapps/">W3C's System Applications Working Group</a>.</p> -<p> </p> diff --git a/files/pt-br/archive/b2g_os/comecando_a_contribuir_para_o_firefox_os/index.html b/files/pt-br/archive/b2g_os/comecando_a_contribuir_para_o_firefox_os/index.html deleted file mode 100644 index 756a1ba591..0000000000 --- a/files/pt-br/archive/b2g_os/comecando_a_contribuir_para_o_firefox_os/index.html +++ /dev/null @@ -1,74 +0,0 @@ ---- -title: Começando a contribuir para o Firefox OS -slug: Archive/B2G_OS/Comecando_a_contribuir_para_o_Firefox_OS -tags: - - Contribuindo - - Contribuições - - Firefox OS - - Train model -translation_of: Archive/B2G_OS/Developing_Firefox_OS ---- -<p>{{draft()}}</p> - -<p>Espaço reservado para o desenvolvimento da página Introdução.</p> - -<ol> - <li>O que é o Firefox OS? - <ul> - <li>Visão global</li> - <li>Marca</li> - <li>Distribuição</li> - </ul> - </li> - <li>Governança do projeto</li> - <li>Desenvolvimento do Firefox OS - <ul> - <li>A construção do ambiente</li> - <li>Requerimentos HW</li> - <li>Orientações</li> - <li>Reportando Bug - <ul> - <li>Primeira busca <a href="https://bugzilla.mozilla.org/query.cgi" title="https://bugzilla.mozilla.org/query.cgi">https://bugzilla.mozilla.org/query.cgi</a> (Product=Boot2Gecko) para ver se o bug já existe. Se você encontrar o bug, você pode adicionar informaçoes extras se você estiver logado no Bugzilla.</li> - <li>Se o bug não existe, você pode reportá-lo acessando o link: <a href="https://bugzilla.mozilla.org/enter_bug.cgi?product=Boot2Gecko">https://bugzilla.mozilla.org/enter_bug.cgi?product=Boot2Gecko</a>. Lá você encontrará excelentes guias de <a href="https://quality.mozilla.org/docs/bugzilla/starter-kit/how-to-write-a-proper-bug/" title="https://quality.mozilla.org/docs/bugzilla/starter-kit/how-to-write-a-proper-bug/">Como descrever um bug de forma adequada</a>.</li> - </ul> - </li> - <li>Resolvendo bugs</li> - <li>Adicionando funcionalidades ao Firefox OS</li> - </ul> - </li> - <li>Processo de contribuição - <ul> - <li>Fluxo do processo</li> - <li>Requerimentos de licença</li> - </ul> - </li> - <li>Informações sobre o release do Firefox OS - <ul> - <li>Processo de release</li> - <li>Modelo Trem de release</li> - <li>Bugzilla overview and flagging</li> - </ul> - </li> - <li>Desenvolvimento de App</li> - <li>Glossário</li> -</ol> - -<h2 id="Suggestões_e_Feedback">Suggestões e Feedback</h2> - -<ul> - <li>Adicione a seção "Processo de contribuição" - <ul> - <li>com quem você trabalha</li> - <li>quais são as revisões, de onde, e os pontos principais</li> - <li>requerimentos de licença</li> - <li>quem faz a chamada de quais erros vão entrar ou não em qualquer ponto do ciclo de desenvolvimento </li> - </ul> - </li> - <li>Eu sou um parceiro, e eu só apareci com um patch para um grande novo recurso que eu quero. Por que você não está aceitando a contribuição?</li> - <li>Ponteiro para liberar a visão geral do processo - <ul> - <li>o que são esses "trens"</li> - <li>o que são todas essas bandeiras bugzilla</li> - </ul> - </li> -</ul> diff --git a/files/pt-br/archive/b2g_os/compilando_b2g_emulador_qemu/index.html b/files/pt-br/archive/b2g_os/compilando_b2g_emulador_qemu/index.html deleted file mode 100644 index 4cd67280a5..0000000000 --- a/files/pt-br/archive/b2g_os/compilando_b2g_emulador_qemu/index.html +++ /dev/null @@ -1,37 +0,0 @@ ---- -title: Compilando B2G para emulador QEMU -slug: Archive/B2G_OS/Compilando_B2G_Emulador_QEMU -translation_of: Archive/B2G_OS/Building_and_installing_B2G_OS ---- -<p>{{obsolete_header()}}</p> - -<p></p><div class="warning">Esse artigo é obsoleto. Veja <a href="https://developer.mozilla.org/pt-BR/Firefox_OS/Construindo_e_instalando_o_Firefox_OS" title="/en-US/docs/Mozilla/Boot_to_Gecko/Building_and_installing_Boot_to_Gecko">Compilando e instalando Boot to Gecko</a> para o guia completo para compilar Firefox OS.</div><p></p> - -<p>Assumimos que você já <a href="https://developer.mozilla.org/pt-BR/Firefox_OS/Firefox_OS_build_prerequisites" title="https://developer.mozilla.org/en/Mozilla/Boot_to_Gecko/Setting_Up_Boot_to_Gecko_Build_Environment">configurou o seu ambiente de compilação e clonou os repositórios</a>.</p> - -<p>As seguintes etapas possibilitam você <strong>compilar - e executar - B2G no seu emulador</strong>. <strong>Não execute</strong> como root.</p> - -<p><span style="font-family: inherit;"><span style='font-family: "Courier New",Courier,monospace;'>$ cd B2G</span></span><br> - <span style="font-family: inherit;"><span style='font-family: "Courier New",Courier,monospace;'>$ make sync</span></span></p> - -<p><a class="external" href="http://3.bp.blogspot.com/-5o6HoCR0xE0/Tydf8jj-UPI/AAAAAAAAAMk/EfcvWBaWv-w/s320/Make+Sync.tiff"><img alt="" class="default" src="http://3.bp.blogspot.com/-5o6HoCR0xE0/Tydf8jj-UPI/AAAAAAAAAMk/EfcvWBaWv-w/s320/Make+Sync.tiff"></a></p> - -<p>Compile a configuração para QEMU:<br> - <code>$ make config-qemu</code></p> - -<p>Compile o gonk e o sistema.<br> - <code>$ make gonk<br> - $ make</code><br> - <br> - NOTA: se <code>./emu.sh</code> - seu emulador - não executar de primeira, você precisa torná-lo executável:<br> - <code>$ chmod +x emu.sh</code><br> - <br> - Por último, execute o emulador:<br> - <code>$ ./emu.sh</code></p> - -<p>NOTA: Após clonar os repositórios ou compilar pela primeira vez, você pode "limpá-los", por exemplo, colocá-los que o último "pull" é o mesmo que o clone.</p> - -<p>Para fazer isso, a partir do repositório raiz:<br> - <span style='font-family: "Courier New",Courier,monospace;'>$ make sync; git clean -xfd; git submodule foreach "git clean -xfd"</span><br> - Alternativamente, você pode tentar:<br> - <span style='font-family: "Courier New",Courier,monospace;'><span style="font-family: inherit;"><span style='font-family: "Courier New",Courier,monospace;'>$ make mrproper</span></span></span></p> diff --git a/files/pt-br/archive/b2g_os/compilando_instalando_firefox_os/index.html b/files/pt-br/archive/b2g_os/compilando_instalando_firefox_os/index.html deleted file mode 100644 index a8b84c9dde..0000000000 --- a/files/pt-br/archive/b2g_os/compilando_instalando_firefox_os/index.html +++ /dev/null @@ -1,68 +0,0 @@ ---- -title: Compilando e instalando o Firefox OS -slug: Archive/B2G_OS/Compilando_instalando_Firefox_OS -translation_of: Archive/B2G_OS/Building_and_installing_B2G_OS ---- -<p><span id="result_box" lang="pt"><span class="hps alt-edited">Como o Firefox</span> <span class="hps">OS</span> <span class="hps alt-edited">está atualmente em desenvolvimento</span> <span class="hps">ativo, e</span> <span class="hps">está em um estado</span> <span class="hps">de pré-lançamento</span><span>,</span> <span class="hps">a melhor maneira de</span> <span class="hps">garantir que você tenha</span> <span class="hps alt-edited">o sistema</span> <span class="hps">instalado</span> <span class="hps">é construir e</span> <span class="hps">instalá-lo sozinho</span><span>.</span> <span class="hps">Os artigos</span> <span class="hps">listados nesta</span> <span class="hps">página</span> <span class="hps">irá guiá-lo</span> <span class="hps">através da construção</span> <span class="hps">e</span> <span class="hps">instalação do Firefox</span> <span class="hps">OS</span> <span class="hps">em um emulador</span> <span class="hps">ou dispositivo compatível,</span> <span class="hps">ou</span> <span class="hps">a interface do usuário</span> </span><a href="/en-US/docs/Mozilla/Boot_to_Gecko/Introduction_to_Gaia" title="en-US/docs/Mozilla/Boot_to_Gecko/Introduction_to_Gaia">Gaia</a> <span id="result_box" lang="pt"><span class="hps">no navegador</span> <span class="hps">Firefox.</span></span></p> -<table class="topicpage-table"> - <tbody> - <tr> - <td> - <h2 class="Documentation" id="Como_obter_e_compilar_o_Firefox_OS">Como obter e compilar o Firefox OS</h2> - <dl> - <dt> - <a href="https://developer.mozilla.org/en-US/Firefox_OS/Building_and_installing_Firefox_OS/Firefox_OS_build_overview">Visão geral da compilação do Firefox OS</a></dt> - <dd> - A compilação e instalação do Firefox OS exige tempo, banda de rede e poder computacional. Essa página descreve os objetivos do processo de compilação a fim de ajudar os usuários ao longo desse caminho.</dd> - <dt> - <a href="/pt-BR/docs/Mozilla/Boot_to_Gecko/Firefox_OS_build_prerequisites" title="en-US/docs/Mozilla/Boot_to_Gecko/B2G build prerequisites">Pré-requisitos para compilação do Firefox OS</a></dt> - <dd> - O que você precisa (ter e fazer) <span class="short_text" id="result_box" lang="pt"><span class="hps">antes de compilar</span> <span class="hps">o Firefox</span> <span class="hps">OS</span> <span class="hps">pela primeira vez</span></span>.</dd> - <dt> - <a href="/pt-BR/docs/Mozilla/Boot_to_Gecko/Preparando_para_sua_primeira_compilacao_B2G" title="/pt-BR/docs/Mozilla/Boot_to_Gecko/Preparando_para_sua_primeira_build_B2G">Preparando para sua primeira compilação do Firefox OS</a></dt> - <dd> - Antes de você compilar o Firefox OS, você precisa clonar o repositório do Firefox OS e configurar seu ambiente. Este artigo explica como você faz isso.</dd> - <dt> - <a href="/pt-BR/docs/Mozilla/Boot_to_Gecko/Compilando_Boot_to_Gecko" title="/pt-BR/docs/Mozilla/Boot_to_Gecko/Compilando_Boot_to_Geeko">Compilando o Firefox OS</a></dt> - <dd> - Como compilar o Firefox OS.</dd> - <dt> - <a href="/pt-BR/docs/Mozilla/Boot_to_Gecko/Compilando_Boot_to_Gecko" title="/pt-BR/docs/Mozilla/Boot_to_Gecko/Compilando_Boot_to_Geeko">Portando o Firefox OS</a></dt> - <dd> - Informações de como portar o Firefox OS para novos aparelhos.</dd> - </dl> - <p><span class="alllinks"><a href="/en-US/docs/tag/B2G" title="/en-US/docs/tag/B2G">View All...</a></span></p> - </td> - <td> - <h2 class="Community" id="Instalando_o_Firefox_OS_eou_Gaia">Instalando o Firefox OS e/ou Gaia</h2> - <dl> - <dt> - <a href="/pt-BR/docs/Mozilla/Boot_to_Gecko/Escolhendo_como_rodar_Gaia_ou_B2G" title="/pt-BR/docs/Mozilla/Boot_to_Gecko/Escolhendo_como_rodar_Gaia_ou_B2G">Escolhendo como rodar Gaia ou Firefox OS</a></dt> - <dd> - Você pode usar Gaia com Firefox, ou você pode rodar Firefox OS em um dispositivo móvel ou em um simulador. Este guia irá lhe ajudar a decidir conforme suas necessidades.</dd> - <dt> - <a href="/pt-BR/docs/Mozilla/Boot_to_Gecko/Usando_Gaia_no_Firefox" title="/pt-BR/docs/Mozilla/Boot_to_Gecko/Usando_Gaia_no_Firefox">Usando Gaia no Firefox</a></dt> - <dd> - Como usar Gaia com um navegador Firefox no Desktop.</dd> - <dt> - <a href="/pt-BR/docs/Mozilla/Boot_to_Gecko/Usando_o_cliente_desktop_do_B2G" title="/pt-BR/docs/Mozilla/Boot_to_Gecko/Usando_o_cliente_desktop_do_B2G">Usando o cliente desktop do Firefox OS</a></dt> - <dd> - Um guia para rodar e usar o cliente desktop do Firefox OS; isto simula o ambiente do Gaia numa aplicação desktop. É mais preciso que rodar Gaia no Firefox mas não tão preciso quanto o emulador.</dd> - <dt> - <a href="/pt-BR/docs/Mozilla/Boot_to_Gecko/Usando_o_emulador_B2G" title="/pt-BR/docs/Mozilla/Boot_to_Gecko/Usando_o_emulador_B2G">Usando o emulador do Firefox OS</a></dt> - <dd> - Um guia de como compilar e usar o emulador; e quando e qual emulador usar.</dd> - <dt> - <a href="/pt-BR/docs/Mozilla/Boot_to_Gecko/Instalando_Boot_to_Gecko_em_um_dispositivo_movel" title="/pt-BR/docs/Mozilla/Boot_to_Gecko/Instalando_Boot_to_Gecko_em_um_dispositivo_movel">Instalando o Firefox OS em um dispositivo móvel</a></dt> - <dd> - Como instalar o Firefox OS em um dispositivo móvel real.</dd> - <dt> - <a href="/pt-BR/docs/Mozilla/Boot_to_Gecko/Dual_boot_de_B2G_e_Android_em_um_SGS2" title="/pt-BR/docs/Mozilla/Boot_to_Gecko/Dual_boot_de_B2G_e_Android_em_um_SGS2">Dual boot de Firefox OS e Android em um SGS2</a></dt> - <dd> - Como instalar um ambiente de dual boot Firefox OS/Android em um Samsung Galaxy S2.</dd> - </dl> - </td> - </tr> - </tbody> -</table> -<p> </p> diff --git a/files/pt-br/archive/b2g_os/compilando_o_firefox_os/index.html b/files/pt-br/archive/b2g_os/compilando_o_firefox_os/index.html deleted file mode 100644 index 78ba17a994..0000000000 --- a/files/pt-br/archive/b2g_os/compilando_o_firefox_os/index.html +++ /dev/null @@ -1,252 +0,0 @@ ---- -title: Compilando o Firefox OS -slug: Archive/B2G_OS/Compilando_O_Firefox_OS -tags: - - B2G - - Compilação B2G - - Erros no Mac OSX -translation_of: Archive/B2G_OS/Building ---- -<div> - </div> -<div class="summary"> - <p>Uma vez que você já <a href="/en-US/docs/Mozilla/Firefox_OS/Firefox_OS_build_prerequisites" title="Mozilla/Firefox_OS/Firefox_OS_build_prerequisites">preparou seu sistema</a> e <a href="/pt-BR/docs/Mozilla/Firefox_OS/Preparando_sua_primeira_compilacao_do_B2G" title="Mozilla/Firefox_OS/Preparing_for_your_first_B2G_build">baixou os arquivos e fez a configuração</a> do código, você agora pode compilar o <em>Boot to Gecko</em>. Esse artigo vai explicar como fazer isso.</p> -</div> -<h2 id="Atualize_seu_código">Atualize seu código</h2> -<p>Se esta não é sua primeira compilação do B2G, você talvez queira baixar a última versão do código antes de iniciar a compilação. Para fazer isso, você deve atualizar as ferramentas B2G e as dependências, usando os seguintes comandos:</p> -<pre>git pull -./repo sync -d -</pre> -<p>Você pode atualizar um repositório específico especificando o nome:</p> -<pre>./repo sync gaia -</pre> -<p>O comando <code>repo</code> tem outras opções que podem ser interessantes: digite <code>repo help</code> para a lista completa de opções.</p> -<h2 id="Compilando">Compilando</h2> -<div class="note"> - <p><strong>Nota:</strong> Se você quiser customizar a compilação, você deve configurar o arquivo .<code>userconfig</code>. Veja o artigo <a href="/pt-BR/Firefox_OS/Customizacao_com_o_arquivo_.userconfig_file" title="Mozilla/Firefox_OS/Customization_with_the_.userconfig_file">Customização com o arquivo .userconfig</a> para maiores detalhes.</p> -</div> -<p>Para compilar, basta executar o script <code>build.sh</code>:</p> -<pre>cd B2G -./build.sh -</pre> -<p>Hora de mais uma pausa para um café, ou talvez um cochilo (especialmente se for sua primeira compilação). Assim como na etapa de configuração, na página anterior, se você está usando o sistema de arquivos do Android previamente extraído, você deve configurar a variável <code>ANDROIDFS_DIR</code> antes de executar <code>build.sh</code>.</p> -<div class="note"> - <p><strong>Nota</strong>: Para mais instruções de como fazer um flashing de um novo binário no telefone, leia <a href="https://developer.mozilla.org/pt-BR/Firefox_OS/Installing_on_a_mobile_device">Instalando o Firefox OS em dispositivo móvel</a>.</p> -</div> -<h3 id="Compilando_módulos_específicos">Compilando módulos específicos</h3> -<p>Se você quer compilar um módulo específico, como o Gecko, você deve incluir o nome do módulo como parâmetro da chamada do script:</p> -<pre>./build.sh gecko -</pre> -<p>Para atualizar apenas um aplicativo, você pode compilar apenas módulo <code>gaia</code>, por exemplo, usando a variável de ambiente BUILD_APP_NAME:</p> -<pre>BUILD_APP_NAME=calendar ./build.sh gaia</pre> -<p>Para saber quais módulos você pode compilar, execute o comando:</p> -<pre>./build.sh modules -</pre> -<h3 id="Configurando_o_número_de_processadores_a_ser_usado">Configurando o número de processadores a ser usado</h3> -<p>Por padrão, os scripts de compilação B2G usa o número de núcleos do processador do seu sistema mais dois como um número de tarefas paralelas a ser executada. Você pode alterar esse valor especificando o parâmetro <code>-j</code> quando executa <code>build.sh</code>. Isso pode ser útil se você estiver usando o sistema para outras coisas enquanto compila em segundo plano e precisa reduzir um pouco a carga da CPU. Também é útil quando você está tendo problemas na compilação, Isso pode fazer a leitura da saída de erros do processo de compilação mais fácil se você tem apenas uma tarefa por vez!</p> -<p>Por exemplo, para compilar usando apenas duas tarefas em paralelo:</p> -<pre>./build.sh -j2 -</pre> -<p>O caso mais comum para isso, é evitar compilações executando em paralelo. Isso faz a saída do processo muito mais fácil de ser interpretada, tornando mais fácil a resolução dos problemas de compilação. Para fazer isso execute:</p> -<pre>./build.sh -j1 -</pre> -<h3 id="Compilando_uma_imagem_multilíngue">Compilando uma imagem multilíngue</h3> -<p>Para compilar uma imagem multilingue, siga esses passos:</p> -<h4 id="Gaia">Gaia</h4> -<ol> - <li>Determine quais idiomas do Gaia serão utilizados. Atualmente usamos os arquivos de idiomas <a href="http://hg.mozilla.org/integration/gaia-nightly/file/e2eed5263e77/shared/resources/languages-dev.json"><code>locales/languages_dev.json</code></a> e <a href="http://hg.mozilla.org/integration/gaia-nightly/file/e2eed5263e77/shared/resources/languages-all.json"><code>locales/languages_all.json</code></a> como nossos arquivos Gaia de idiomas.</li> - <li>Clone as localizações apropriadas do endereço <a href="http://hg.mozilla.org/gaia-l10n">http://hg.mozilla.org/gaia-l10n</a> dentro de um diretório, nós o nomeamos <code>gaia-l10n/</code>. Você pode nomear o diretório como <code>locales/</code>. Será necessário clonar um repo para cada localização listada no arquivo de idiomas.</li> - <li>No seu ambiente, configure a variável de ambiente <code>LOCALE_BASEDIR</code> como o caminho completo para o diretório configurado no item 2. Configure <code>LOCALES_FILE</code> para o caminho completo configurado no item 1.</li> - <li>Você também pode configurar a variável <code>GAIA_DEFAULT_LOCALE</code> para informar a localização padrão.</li> -</ol> -<pre style="font-size: 12px;">cd gaia/locales/ -hg clone https://hg.mozilla.org/releases/gaia-l10n/v1_2/es</pre> -<div> - Configure suas variáveis de ambiente:</div> -<div> - </div> -<pre>export LOCALE_BASEDIR=$PWD/locales -export LOCALES_FILE=$PWD/locales/languages_dev.json -export GAIA_DEFAULT_LOCALE=es -</pre> -<p>O arquivo <code>languages-dev.json</code> pode ser substituído pelo seu próprio <code>languages-own.json</code>, que pode ser formado como esse. Você precisa adicionar uma entrada para cada repo clonado em seus diretórios de localização<span style="line-height: 1.5;">:</span></p> -<pre>{ - "en-US" : "English (US)", - "es" : "Español" -} -</pre> -<div> - <p>Desde que o <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=884752">bug 884752</a> foi solucionado (novembro de 2013), você pode usar o parâmetro <code>GAIA_KEYBOARD_LAYOUTS </code>para adicionar <a href="https://github.com/mozilla-b2g/gaia/tree/v1.2/keyboard/layouts">configurações de teclado</a> (se disponível no Gaia) . </p> - Por exemplo, para adicionar configurações de teclado espanhol e italiano, execute os comandos ateriores incluindo<br> - <pre> GAIA_KEYBOARD_LAYOUTS=en,es,it</pre> - <p>Nesse ponto, você está pronto para copiar (<em>flash</em>) o Gaia para seu telefone pela primeira vez. Conecte o telefone e certifique-se que a Depuração remota está ativada em <span style="line-height: 1.5;">Settings > Device Information > More Information > Developer. Você precisa fazer isso somente a primeira vez, para sua própria compilação ter essa opção atvida como padrão, configure <code>REMOTE_DEBUGGER=1</code>:</span></p> - <pre> make clean && make production LOCALES_FILE=locales/languages-own.json</pre> - <div class="note"> - <p>Se você quiser clonar e/ou atualizar todos os idiomas suportados, você pode usar <a href="https://gist.github.com/TheoChevalier/254461892d8bf118e1bc">esse script</a></p> - </div> - <h4 id="Gecko">Gecko</h4> - <ol> - <li>Determine qual arquivo de idioma do Gecko vai usar. Nós atualmente usamos <a href="http://hg.mozilla.org/releases/mozilla-b2g18/file/default/b2g/locales/all-locales">b2g/locales/all-locales</a> como nosso arquivo de idioma.</li> - <li>Clone as localizações apropriadas dentro de um diretório, o nome do diretório pode ser <code>gecko-l10n/</code> . - <ul> - <li>Para mozilla-central, use <a href="http://hg.mozilla.org/l10n-central/">http://hg.mozilla.org/l10n-central/</a></li> - <li>Para mozilla-aurora, use <a href="http://hg.mozilla.org/releases/l10n/mozilla-aurora/">http://hg.mozilla.org/releases/l10n/mozilla-aurora/</a></li> - <li>Para mozilla-beta ou mozilla-b2g18 ou mozilla-b2g26_v1_2, use <a href="http://hg.mozilla.org/releases/l10n/mozilla-beta/">http://hg.mozilla.org/releases/l10n/mozilla-beta/</a></li> - </ul> - </li> - <li>Clone <a href="http://hg.mozilla.org/build/compare-locales">compare-locales</a>.</li> - <li> - <p>No seu ambiente configure a variável <code>L10NBASEDIR</code> como o caminho completo do diretório do item 2. Configure <code>MOZ_CHROME_MULTILOCALE</code> como uma <em>string</em> delimitadas por espaço com as localizações do item 1.</p> - <p>Inclua o diretório <code>compare-locales/scripts</code> à variável <code>PATH</code>, e <code>compare-locales/lib</code> à variável <code>PYTHONPATH</code>.</p> - Por exemplo, - <pre>export L10NBASEDIR=$PWD/gecko-l10n -export MOZ_CHROME_MULTILOCALE="ja zh-TW" -export PATH="$PATH:$PWD/compare-locales/scripts" -export PYTHONPATH="$PWD/compare-locales/lib" -</pre> - <p>Uma vez que a configuração acima estiver pronta, você pode executar <code>build.sh</code>.</p> - <p>Você pode usar <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=818560#c9/">.userconfig</a> também:</p> - <pre>## Gaia -export GAIA_DEFAULT_LOCALE=es -export LOCALE_BASEDIR=/b2g/gaia-l10n-transifex-v1.2/ -export LOCALES_FILE=/b2g/languages_propio.json - -## Gecko -export L10NBASEDIR='/b2g/gecko-l10n-v1.2' -export MOZ_CHROME_MULTILOCALE="es-ES eu ca gl pt-BR" -export PATH="$PATH:/b2g/compare-locales/scripts" -export PYTHONPATH="/b2g/compare-locales/lib" - </pre> - </li> - </ol> - <div class="note"> - <p>Existe algum mapeamento entre os idiomas do Gaia e do Gecko. Por exemplo, no Gaia, Espanhol é "es", mas no Gecko é traduzido para "Espanhol da Espanha" (es-ES)</p> - </div> - <p>Essas instruções podem mudar a medida que as coisas melhorarem.</p> - <h2 id="Erros_conhecidos">Erros conhecidos</h2> - <h3 id="Build_failed!">"Build failed!"</h3> - <p><span id="cke_bm_81S" style="display: none;"> </span>Se você receber uma mensagem genérica "Build failed" (A Compilação falhou), você sempre deve tentar reconectar seu telefone ao seu computador, algumas vezes o telefone pode perder a conexão por uma variedade de razões.</p> - <div class="note"> - <p><strong>Note que configurar e compilar o B2G para Keon NÃO FUNCIONA no Mac</strong>. Você precisará de um Linux para compilar para esse telefone.</p> - </div> - <h3 id="Erros_específicos_do_Mountain_Lion">Erros específicos do Mountain Lion</h3> - <div> - <p>1. Se você está compilando no OS X 10.8 "Mountain Lion" (Xcode 4.4.1 ou superior) e encontrar o seguinte erro:</p> - <pre style="font-size: 14px;">external/qemu/android/skin/trackball.c:130:25: error: 'M_PI' undeclared (first use in this function)</pre> - Edite o arquivo: <code style="font-size: 14px;">B2G/external/qemu/Makefile.android</code> e inclua na linha 78:<br> - <pre style="font-size: 14px;">MY_CFLAGS += -DM_PI=3.14159265358979323846264338327950288 #/* B2G_fix: not finding M_PI constant */ -</pre> - </div> - <div> - 2. Se você está no Mountain Lion o seguinte erro durante a execução do script <code>./build.sh</code>:</div> - <div> - <pre>/System/Library/Frameworks/IOKit.framework/Headers/usb/USB.h:797:9: error: too many #pragma options align=reset</pre> - <p>Substitua todas as ocorrências de '<code>#pragma options align=reset</code>' por '<code>#pragma pack()</code>' no arquivo <code>/System/Library/Frameworks/IOKit.framework/Headers/usb/USB.h</code></p> - </div> - <h3 id="Undefined_symbols__sqlite3_androidopt_handle_pragma_and__sqlite3_androidopt_open">Undefined symbols "_sqlite3_androidopt_handle_pragma" and "_sqlite3_androidopt_open"</h3> - <p>Esse erro aparece se você está compilando no OS X 10.7 ou superior com Xcode 4.5 or superior. Para resolver isso, aplique a correção <a href="https://groups.google.com/forum/#!msg/android-building/yAfPyUqCsiQ/7zvICk4GWjYJ">https://groups.google.com/forum/#!msg/android-building/yAfPyUqCsiQ/7zvICk4GWjYJ</a> no arquivo external/sqlite/dist/Android.mk.</p> - <h3 id="KeyedVector.h19331_error_indexOfKey_was_not_declared_in_this_scope">KeyedVector.h:193:31: error: indexOfKey was not declared in this scope</h3> - <p>Esse erro aparece quando a versão do gcc é muito recente. Instale a versão 4.6.x dos aplicativos gcc/g++/g++-multilib. Veja <a href="/pt-BR/docs/Mozilla/Firefox_OS/Customizacao_com_o_arquivo_.userconfig_file" title="Mozilla/Firefox_OS/Customization_with_the_.userconfig_file">Customização com o arquivo .userconfig file</a> para mais informações.</p> - <div class="note"> - <p><strong>Nota da comunidade:</strong> É possível usar o 4.7.x com pequenas modificações no código B2G (as mensagens do gcc guiará você) mas você não conseguirá nenhuma ajuda! Seja na modificação do código ou na resolução dos bugs que você encontrar.</p> - </div> - <h3 id="arm-linux-androideabi-g_Internal_error_Killed_program_cc1plus">arm-linux-androideabi-g++: Internal error: Killed (program cc1plus)</h3> - <p>Se você receber essa mensagem, é provável que você esteja com pouca memória disponível. Certifique-se que existe memória suficiente antes de executar <code>./build.sh</code>. Para executar sem problemas o sistema de ter 4GB de memória RAM.</p> - <h3 id="...is_referenced_by_DSO_error">"...is referenced by DSO" error</h3> - <p>Se durante a compilação do emulador, você receber o erro:<code> /usr/bin/ld: out/host/linux-x86/obj/EXECUTABLES/triangleCM_intermediates/triangleCM: hidden symbol `_XGetRequest' in out/host/linux-x86/obj/STATIC_LIBRARIES/libSDL_intermediates/libSDL.a(SDL_x11dyn.o) is referenced by DSO</code>.</p> - <p>Esse erro pode aparecer em algumas versões do <code>binutils</code>. Se você está executando num Debian estável, você pode usar o "gold linker" instalando o pacote <code>binutils-gold</code>. Observe que o <em>gold</em> linker é instalado pelo <code>binutils</code>, mas não é utilizado como padrão. <code>binutils-gold</code> faz exatamente isso.</p> - <h3 id="Se_você_receber_erros_de_compilação_durante_a_execução_de_testes">Se você receber erros de compilação durante a execução de testes</h3> - <p>Algumas vezes (principalmente após atualização da ferramenta de compilação ou do sistema operacional) você pode receber erros estranhos como esses após a etapa de compilação durante os testes pós-compilação:</p> - <pre>Generating permissions.sqlite... -test -d profile || mkdir -p profile -run-js-command permissions -WARNING: permission unknown:offline-app -WARNING: permission unknown:indexedDB-unlimited -build/permissions.js:122: NS_ERROR_UNEXPECTED: Component returned failure code: 0x8000ffff (NS_ERROR_UNEXPECTED) [nsIPermissionManager.add] -make[1]: *** [permissions] Error 3 -make: *** [gaia/profile.tar.gz] Error 2</pre> - <p>Nessa situação, tente apagar o diretório <code>gaia/xulrunner-sdk</code> e baixar o código novamente:</p> - <pre>rm -r gaia/xulrunner-sdk -</pre> - <p>Isso apaga a cópia baixada e pré-compilada do <a href="/pt-BR/docs/XULRunner" title="/en-US/docs/XULRunner">XULRunner</a> mas o sistema de compilação recupera automaticamente. Na sua próxima compilação uma nova cópia do XULRunner será automaticamente recuperada.</p> - <h3 id="Cannot_fetch_platformlibcore">Cannot fetch platform/libcore</h3> - <p>Se você tentar configurar sua compilacão B2G para o Nexus S (<code>./config.sh nexus-s</code>) e receber um erro relacionado com o <code>libcore</code>, isso é devido a um problema com o git <code>linaro</code> que o alimenta. Para resolver isso, baixe o manifesto B2G:</p> - <pre class="brush: bash">git clone https://github.com/mozilla-b2g/b2g-manifest.git</pre> - <p>Edite o arquivo <code>nexus-s.xml</code> nesse repo, substituindo a entrada do <code>git linaro </code>por uma referência ao aosp, que deve ser lido como:</p> - <pre class="brush: xml"><default revision="refs/tags/android-4.0.4_r1.2" - remote="aosp" - sync-j="4" /></pre> - <p>Faça um <em>Commit</em> dessas alterações (<code>git commit -a</code>) e altere o arquivo <code>config.sh</code> no <em>branch master</em> do repo principal do B2G que você baixou apontando para o seu manifesto local alterado no lugar do manifesto da Mozilla:</p> - <pre class="brush: bash">GITREPO=${GITREPO:-"file:///home/path/to/my/b2g-manifest"}</pre> - <h3 id="Erros_clang_quando_compliar_com_Xcode_5_no_Mac">Erros "clang" quando compliar com Xcode 5 no Mac</h3> - <p>Se você estiver usando o Mac OS X 10.8 com Xcode 5, é provável que você receba erros como esse:</p> - <pre class="brush: bash">clang: error: argument unused during compilation: '-include system/core/include/arch/darwin-x86/AndroidConfig.h' -clang: error: argument unused during compilation: '-U DEBUG' -clang: error: argument unused during compilation: '-U DEBUG' -clang: error: argument unused during compilation: '-MF out/host/darwin-x86/obj/EXECUTABLES/obbtool_intermediates/Main.d' -make: *** [out/host/darwin-x86/obj/EXECUTABLES/obbtool_intermediates/Main.o] Error 1</pre> - <p>Isso é devido ao fato do Xcode 5 alterar o compilador g++ em <code>/usr/bin</code>, que interrompe o processo de compilação se você tentar usá-lo para compilar. Uma solução de contorno para esse problema é editar a seguinte linha em <code>build/core/combo/HOST_darwin-x86.mk:</code></p> - <p>de</p> - <pre class="brush: bash">HOST_CXX := g++</pre> - <p>para</p> - <pre class="brush: bash">HOST_CXX := g++-4.6 -ifeq (,$(wildcard /usr/local/bin/g++-4.6)) - HOST_CXX := g++ -endif</pre> - <p>Após isso, desinstale o gcc usando brew (assumindo que você executou o <a href="https://developer.mozilla.org/pt-BR/docs/Mozilla/Boot_to_Gecko/Firefox_OS_build_prerequisites#Instalando_o_Bootstrap_do_Firefox_OS_no_Mac">script de insalação do bootstrap no Mac OS</a>) — se não executou, você precisa completar essa tarefa antes de continuar:</p> - <pre class="brush: bash">brew uninstall gcc-4.6</pre> - <p>Agora reinstale o gcc com suporte ao multilib e c++:</p> - <pre class="brush: bash">brew install --enable-cxx https://gist.github.com/artlogic/6988658/raw/aeb9d1ea098274ad3f3fe2637b9df7f308a8a120/gcc-4.6.rb</pre> - <p>Certifique-se que <code>/usr/local/bin</code> esteja no sua variável de ambiente <code>PATH</code>. Você pode fazer isso temporariamente digitando o seguinte comando:</p> - <pre class="brush: bash">export PATH=/usr/local/bin:$PATH</pre> - <p>Para incluir o diretório na variável PATH definitivamente inclua essa linha no arquivo<code> .bash_profile</code> no seu diretório <code>home</code>.</p> - <p>Após configurar a variável <code>PATH</code>, certifique-se de que você consegue executar os seguintes comandos:</p> - <pre class="brush: bash">gcc-4.6 -v - -g++-4.6 -v</pre> - <p>Se algum desses comandos falhar, você vai precisar fazer um novo <em>link</em> usando brew com o seguinte comando:</p> - <pre class="brush: bash">brew link --overwrite gcc-4.6</pre> - <p>Também é possível que <code>/usr/bin/c++</code> não está apontando para <code>clang++</code> como deveria ser com o Xcode5 instalado. Você pode verifique isso digitando:</p> - <pre class="brush: bash">ls -l /usr/bin/c++</pre> - <p>O comando retornará alguma coisa como isso:</p> - <pre class="brush: bash">lrwxr-xr-x 1 root admin 7 Sep 19 11:40 /usr/bin/c++ -> clang++ -</pre> - <p>Se <code>c++</code> estiver apontando para alguma coisa diferente que <code>clang++</code>, resolva isso com os seguintes comandos:</p> - <pre class="brush: bash">sudo rm /usr/bin/c++ - -sudo ln -s /usr/bin/clang++ /usr/bin/c++</pre> - <h3 id="Não_consegue_copiar_os_arquivos_do_diretório_de_backup">Não consegue copiar os arquivos do diretório de backup</h3> - <p>Isso pode acontecer se perder conexão USB durante o processo de backup do dispositivo.</p> - <p>Quando for executar o script novamente, você pode receber o erro abaixo: (no exemplo o dispositivo é o peak).</p> - <p><code>Pulling files from ../../../backup-peak<br> - cat: ../../../backup-peak/system/build.prop: No such file or directory<br> - Found firmware with build ID<br> - Pulling "libaudioeq.so"<br> - cp: cannot stat `../../../backup-peak/system/lib/libaudioeq.so': No such file or directory<br> - Failed to pull libaudioeq.so. Giving up.<br> - <br> - > Build failed! <<br> - <br> - Build with |./build.sh -j1| for better messages<br> - If all else fails, use |rm -rf objdir-gecko| to clobber gecko and |rm -rf out| to clobber everything else.</code></p> - <p>Para resolver isso não é necessário remover os diretórios objdir-gecko ou out. Basta remover o diretório de backup:</p> - <p><code>$rm -rf backup-peak</code></p> - <h2 id="Próximas_etapas">Próximas etapas</h2> - <p>Após compilar, sua próxima etapa depende para onde você compilou o Boot to Gecko. Para algum emulador ou para um dispositível móvel real. Veja os seguintes artigos para detalhes:</p> - <ul> - <li><a href="https://developer.mozilla.org/pt-BR/docs/Mozilla/Boot_to_Gecko/Using_the_B2G_emulators" title="Mozilla/Firefox_OS/Using_the_B2G_emulators">Usando emuladores B2G</a></li> - <li><a href="https://developer.mozilla.org/pt-BR/docs/Mozilla/Boot_to_Gecko/Using_the_B2G_desktop_client" title="Mozilla/Firefox_OS/Using_the_B2G_desktop_client">Usando o cliente B2G para desktop</a></li> - <li><a href="/pt-BR/docs/Mozilla/Firefox_OS/Instalando_FirefoxOS_dispositivo_movel" title="Mozilla/Firefox_OS/Installing_on_a_mobile_device">Instalando Firefox OS em dispositivo móvel</a></li> - <li><a href="/pt-BR/docs/Mozilla/Firefox_OS/Instalando_B2G_Pandaboard" title="Mozilla/Firefox_OS/Pandaboard">Instalando o Boot to Gecko na pandaboard</a></li> - </ul> -</div> -<h3 id="Enviando_bugs_no_B2GFirefox_OSGaia">Enviando bugs no B2G/Firefox OS/Gaia</h3> -<p>Uma vez que você conseguiu compilar o B2G/Firefox OS, você provavelmente vai querer começar a registrar os <em>bugs</em> de uma determinada versão. A comunidade do Firefox OS pode incrementar as coisas tão eficientemente quanto possível. Você vai querer <a href="https://bugzilla.mozilla.org/enter_bug.cgi?product=Firefox%20OS">registrar o bug no Bugzilla</a>, no projeto"Firefox OS", mas você deve incluir detalhes específios da versão:</p> -<ol> - <li>Para começar, diga-nos o número da versão principal. Por exemplo, e.g. <em>1.4.0.0-prerelease</em>. Isso pode ser facilmente encontrado no seu dispositivo em <em>Settings > Device Information</em>.</li> - <li>Você pode fornecer mais identificadores específicos da versão retornando os hashes atuais dos repositórios do gaia e do gecko. Isso pode ser feito assim: - <pre class="brush: bash">#!/bin/bash -(cd gaia; echo "gaia $(git rev-parse HEAD)") -(cd gecko; echo "gecko $(git rev-parse HEAD)")</pre> - </li> -</ol> diff --git a/files/pt-br/archive/b2g_os/construindo_e_instalando_o_firefox_os/compilando_o_firefox_os_para_o_flame_no_osx/index.html b/files/pt-br/archive/b2g_os/construindo_e_instalando_o_firefox_os/compilando_o_firefox_os_para_o_flame_no_osx/index.html deleted file mode 100644 index 96f221ab00..0000000000 --- a/files/pt-br/archive/b2g_os/construindo_e_instalando_o_firefox_os/compilando_o_firefox_os_para_o_flame_no_osx/index.html +++ /dev/null @@ -1,139 +0,0 @@ ---- -title: Compilando o Firefox OS para o Flame no OSX -slug: >- - Archive/B2G_OS/Construindo_e_instalando_o_Firefox_OS/Compilando_o_Firefox_OS_para_o_Flame_no_OSX -tags: - - B2G - - Build Documentation PT-BR - - Documentação Build - - Firefox OS - - Flame - - Guía - - Mac - - OSX -translation_of: Archive/B2G_OS/Building_and_installing_B2G_OS/Building_for_Flame_on_OS_X ---- -<div> - Instalar pré-requisitos <a href="/pt-BR/Firefox_OS/Firefox_OS_build_prerequisites#Requisitos_para_Mac_OS_X">Requisitos_para_Mac_OS_X</a>.</div> -<div> - </div> -<div> - Instale o binutils, para objdump na build de debug.</div> -<pre>brew install binutils</pre> -<div> - <span style="line-height: 1.5;">Crie uma imagem de disco com arquivo de sistema HFS+ com log e build usando os seguintes comandos.</span></div> -<div> - <pre>hdiutil create -volname 'firefoxos' -type SPARSE -fs 'Case-sensitive Journaled HFS+' -size 40g ~/firefoxos.sparseimage -<span style="line-height: 1.5;">open ~/firefoxos.sparseimage</span> -cd /Volumes/firefoxos/</pre> -</div> -<div> - <h3 id="Clone_o_repositório_B2G" style="line-height: 30px;">Clone o repositório B2G</h3> - <p>O primeiro passo, antes de iniciar a sua primeira compilação, é clonar o repositório B2G. Não vai buscar tudo! Em vez disso, ele vai buscar o sistema compilação B2G e utilitários de configuração. A maioria do código B2G real está no principal repositório <a href="/pt-BR/docs/Mercurial">Mercurial</a> da Mozilla.</p> - <p>Para clonar o repositório, use o git:</p> - <pre style="font-size: 14px;">git clone git://github.com/mozilla-b2g/B2G.git</pre> - <p>Após a clonagem (que só deve levar um minuto com uma conexão rápida), cd para o diretório B2G:</p> - <pre style="font-size: 14px;">cd B2G</pre> -</div> -<h3 id="Configurando_o_B2G_para_o_flame" style="line-height: 30px;">Configurando o B2G para o flame</h3> -<p>Quando você tiver obtido o core da build de sistema B2G, você precisa configurar o dispositivo que você planeja instála-lo. Para ver a lista de dispositivos suportados, você pode usar o utilitário <code>config.sh</code> — rode o seguinte comando de dentro do diretório B2g:</p> -<pre style="font-size: 14px;">./config.sh flame</pre> -<div class="warning" style="font-size: 14px;"> - <strong>Importante</strong>: ~15Gb de download do código fonte - precisa de boa conexão de internet.</div> -<div class="syntaxbox" lang="ruby" style=""> - <h3 id="Configurando_a_compilação_do_B2G_para_um_dispositivo_móvel" style="line-height: 24px;">Configurando a compilação do B2G para um dispositivo móvel</h3> - <p>Neste ponto, conecte o seu dispositivo se ele já não estiver conectado; será necessário passar pelo processo de configuração para acessá-lo.</p> - <pre>adb devices -l -><span style="font-size: 1rem;">List of devices attached </span> -<span style="line-height: 1.5;">>f04840ed</span><span class="Apple-tab-span" style="line-height: 1.5;"> </span><span style="line-height: 1.5;">device</span></pre> - <p>O dispositivo deve estar disponível e conectado:</p> - <pre>mkdir backup-flame -cd backup-flame -adb pull /system system -adb pull /data data</pre> - <p><span style="font-size: 1.714285714285714rem; letter-spacing: -0.5px; line-height: 24px;">Soluções de problema na compilação no OSX</span></p> - <p>Testado no OSX 10.9.4 Maverick.</p> - <h4 id="Não_existe_mkfs.vfat">Não existe mkfs.vfat</h4> - <p>Precisa instalar a versão portada do dosfstools para trabalhar com a imagem <a href="https://github.com/sv99/dosfstools-osx">dosfstools-osx</a>.</p> - <pre>brew create https://github.com/sv99/dosfstools-osx.git</pre> - <p>Edite o Dosfstools formula</p> - <pre class="brush: js"><span class="nb">require</span> <span class="s2">"formula"</span> - -<span class="k">class</span> <span class="nc">Dosfstools</span> <span class="o"><</span> <span class="no">Formula</span> - <span class="n">homepage</span> <span class="s2">"https://github.com/sv99/dosfstools-osx"</span> - <span class="n">url</span> <span class="s2">"https://github.com/sv99/dosfstools-osx.git"</span> - <span class="n">sha1</span> <span class="s2">""</span> - - <span class="k">def</span> <span class="nf">install</span> - <span class="nb">system</span> <span class="s2">"make"</span><span class="p">,</span> <span class="s2">"install"</span> - <span class="k">end</span> - -<span class="k">end</span> -</pre> - <p>e instale-o</p> - <pre>brew install dosfstools</pre> - <h4 id="Bugs_1039223_and_1027682_workaround_in_.userconfig">Bugs 1039223 and 1027682 workaround in .userconfig</h4> - <div> - <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1039223" style="line-height: 1.5;">Bug 1039223</a><span style="line-height: 1.5;"> - Build for flame fails complaining of missing dt.img</span></div> - <div> - <div> - <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1027682">Bug 1027682</a> - [Flame][Build] Failed to build on Mac OS X 10.9, elf.h file not found</div> - <div> - </div> - <div> - <pre># .userconfig for flame build 14.08.2014 -# osx repo change -# Bug 1039223 - Build for flame fails complaining of missing dt.img -# https://bugzilla.mozilla.org/show_bug.cgi?id=1039223 -pushd device/qcom/common/dtbtool -patch -N << EOF ---- a/dtbtool/dtbtool.c -+++ b/dtbtool/dtbtool.c -@@ -616,7 +616,7 @@ int main(int argc, char **argv) - extract "qcom,msm-id" parameter - */ - while ((dp = readdir(dir)) != NULL) { -- if ((dp->d_type == DT_REG)) { -+ if ((dp->d_type == DT_REG||dp->d_type == DT_UNKNOWN)) { - flen = strlen(dp->d_name); - if ((flen > 4) && - (strncmp(&dp->d_name[flen-4], ".dtb", 4) == 0)) { -EOF - -popd - -# Bug 1027682 - [Flame][Build] Failed to build on Mac OS X 10.9, elf.h file not found -# https://bugzilla.mozilla.org/show_bug.cgi?id=1027682 -if [[ ! -e /usr/local/include/elf.h ]]; then - cp "${B2G_DIR}/external/elfutils/libelf/elf.h" /usr/local/include - echo "Bug 1027682: elf.h copied into /usr/local/include" -fi - -# Disable First Time User experience -export NOFTU=1 -echo "NOFTU = ${NOFTU}" - -# Enable gaia developer mode -export DEVICE_DEBUG=1 -echo "DEVICE_DEBUG = ${DEVICE_DEBUG}" - -# Keeping both debug and non-debug objects -#export GECKO_PATH=${B2G_DIR}/mozilla-inbound -echo "GECKO_PATH = ${GECKO_PATH}" - -export B2G_DEBUG=1 -echo "B2G_DEBUG = ${B2G_DEBUG}" - -#export GECKO_OBJDIR=${GECKO_PATH}/objdir-gonk -if [[ "${B2G_DEBUG}" != "0" ]]; then - export GECKO_OBJDIR=${GECKO_OBJDIR}-debug -fi -echo "GECKO_OBJDIR = ${GECKO_OBJDIR}"</pre> - <h3 id="Primeira_Compilação">Primeira Compilação</h3> - <pre>./build.sh</pre> - <div> - </div> - </div> - </div> -</div> -<p> </p> diff --git a/files/pt-br/archive/b2g_os/construindo_e_instalando_o_firefox_os/criando_e_aplicando_pacotes_de_atualizacao_firefox_os/index.html b/files/pt-br/archive/b2g_os/construindo_e_instalando_o_firefox_os/criando_e_aplicando_pacotes_de_atualizacao_firefox_os/index.html deleted file mode 100644 index aa34d79dc2..0000000000 --- a/files/pt-br/archive/b2g_os/construindo_e_instalando_o_firefox_os/criando_e_aplicando_pacotes_de_atualizacao_firefox_os/index.html +++ /dev/null @@ -1,237 +0,0 @@ ---- -title: Criando e aplicando pacotes de atualização do Firefox OS -slug: >- - Archive/B2G_OS/Construindo_e_instalando_o_Firefox_OS/Criando_e_aplicando_pacotes_de_atualizacao_Firefox_OS -translation_of: Archive/B2G_OS/Building_and_installing_B2G_OS/B2G_OS_update_packages ---- -<div class="summary"> - <p>Se você deseja possibilitar que os usuários do Firefox OS facilmente atualize a versão do sistema em seus dispositivos, você precisa criar um pacote de atualização para eles usarem. Este artigo apresenta os diferentes tipos de pacote de atualização disponível e abrange a compilação do pacote, hospedagem das atualizações (e como o sistema faz o <em>polling</em> das atualizações disponíveis), aplicação e verificação das atualizações.</p> -</div> -<p>Essa atividade é dividida em quatro tarefas:</p> -<ol> - <li>Compilar um pacote de atualização incremental da versão(ões) anteriores para uma nova versão em uma máquina de compilacão.</li> - <li>Encontrar o pacote de atualização correto.</li> - <li>Baixar a atualização.</li> - <li>Aplicar a atualização dos arquivos existentes no dispositivo.</li> -</ol> -<p>Cada uma das etapas está descrita abaixo.</p> -<h2 id="Tipos_de_atualização"><span class="mw-headline" id="Types_of_updates">Tipos de atualização</span></h2> -<p>São dois tipos de atualização a saber: FOTA e Gecko/Gaia OTA. Vamos verificar a diferença entre elas</p> -<h3 id="Atualização_FOTA"><span class="mw-headline" id="FOTA_updates">Atualização FOTA</span></h3> -<p><span class="mw-headline">É possível atualizar o Firefox OS inteiro através da <strong>atualização FOTA</strong>, a tecnologia usada é compartilhada do projeto Android. Os locais no disco rígido do telefone podem ser alterados usando a alteração incluindo a partição do sistema, kernel, modem, imagem de recuperação usada para atualização, ou qualquer outro arquivo no dispositivo.</span></p> -<p>Firefox OS não depende de um cliente FOTA em particular, a interface é abstraída através de uma API que chamamos <a class="externallink" href="http://git.mozilla.org/?p=b2g/librecovery.git;a=blob;f=librecovery.h;h=a6e13374f9bffcf947a39d6f3348290d67113321;hb=HEAD" rel="nofollow" title="http://git.mozilla.org/?p=b2g/librecovery.git;a=blob;f=librecovery.h;h=a6e13374f9bffcf947a39d6f3348290d67113321;hb=HEAD">librecovery</a>. Portanto nós recomendamos usar o cliente de recuperação GOTA (veja abaixo para mais detalhes), e assumiremos a utilização do FOTA a partir de agora.</p> -<p>O pacote de atualização FOTA consiste-se principalmente de um arquivo chamado <code>update.zip</code>. Esse pacote possui:</p> -<ul> - <li>Um conjunto de "<em>diffs</em>" binários e novos arquivos necessários para a atualizção do cliente para a nova versão do software</li> - <li>Um script de atualização que controla como os "<em>diffs</em>" e novos arquivos serão carregados no cliente</li> - <li>Uma assinatura interna usada para verificar o pacote de atualização</li> -</ul> -<p>O formato e o conjunto de arquivo são os mesmos que os usados em uma atualização normal do Android, exceto pelo fato de que o Firefox OS adicionamente envolve o pacote <code>update.zip</code> em um invólucro <code>mar</code> (MAR é o acrônimo de <strong>Mozilla ARchive</strong>). Esse invólucro <code>mar</code> possibilita um nível adicional de verificação que será explicado abaixo.</p> -<h3 id="Atualização_GeckoGaia_OTA"><span class="mw-headline" id="Gecko.2FGaia_OTA_updates">Atualização Gecko/Gaia OTA</span></h3> -<p><span class="mw-headline">A outra opção é atualizar <strong>apenas</strong> os arquivos do Gecko e o Gaia em um dispositivo Firefox OS</span> através de um mecanismo que nós chamamos <strong>atualizações Gecko/Gaia OTA</strong><strong>.</strong> Todos os arquivos Gecko e Gaia <span class="mw-headline">— </span>compreendendo o Gecko <em>runtime core</em> e as interfaces de usuário do dispositivo <span class="mw-headline">— estão no diretório do dispositivo <code>/system/b2g</code>.</span> Esse é o único diretório que o OTA pode fazer alterações.</p> -<p>As atualizações Gecko/Gaia OTA utilizam a mesma tecnologia utilizada pela atualização do navegador Firefox para desktop. Muito parecido com os pacotes FOTA <code>update.zip</code> discutidos acima, as atualizações OTA consiste-se de um arquivo MAR contendo um conjunto de <em>diffs</em> binários e novos arquivos necessários para atualizar o cliente com uma nova versão.</p> -<p>O cliente Gecko verifica a integridade dos arquvios <code>MARs</code> que foram baixados e os <code>MARs</code> podem ser assinados por múltiplas partes.</p> -<h3 id="Por_que_ter_duas_tecnologias_de_atualizações"><span class="mw-headline" id="Why_have_two_update_technologies.3F">Por que ter duas tecnologias de atualizações?</span></h3> -<p>Atualizações OTA não são tão abrangentes as atualizações FOTA, mas são muito mais amigáveis e fáceis de usar, e geralmente o processo de atualização funciona bem.</p> -<ul> - <li>Atualizações Gecko/Gaia OTA podem ser aplicadas "em segundo plano", enquanto o Firefox OS continua a funcionar normalmente. Isso proporciona um experiência do usuário muito melhor uma vez que não é necessário reiniciar o telefone e esperar enquanto a atualização é aplicada. Quando o processo termina a única coisa que o usuário precisa fazer é concordar em reiniciar o processo principal <code>b2g</code>. Isso leva apenas alguns segundos, em vez dos minutos normalmente necessários para aplicar as atualizações FOTA.</li> - <li>Normalmente, mas nem sempre, os pacotes de atualização Gecko/Gaia OTA são menores que os pacotes FOTA. Isso significa que os usuários podem ter menos dados para baixar.</li> -</ul> -<p>É claro que se você precisar atualizar arquivos fora do Gecko/Gaia, você terá que usar o roteiro do pacote completo FOTA.</p> -<p>Seguindo, vamos verificar o processo de compilação do pacote.</p> -<h2 id="Compilando_os_pacotes_de_atualização"><span class="mw-headline" id="Building_updates_for_multiple_software_versions">Compilando os pacotes de atualização</span></h2> -<p>A compilação das atualizações é o processo de gerar os arquivos necessários para atualizar os clientes Firefox OS da <em>versão X</em> do software para a nova <em>versão Y</em>. O pacote de atualização necessário depende de quais arquivos foram alterados entre a versão X e a versão Y.</p> -<ul> - <li>se <b>somente</b> arquivos do diretório <code>/system/b2g</code> foram alterados, vamos gerar uma atualização Gecko/Gaia OTA</li> - <li>Se algum arquivo que não seja do diretório <code>/system/b2g</code> é alterado, nós vamos gerar uma atualização FOTA</li> -</ul> -<p>Para gerar um pacote de atualização incremental (seja para atualização FOTA ou Gecko/Gaia OTA), nossas ferramentas necessitam compilações completas de ambas as versões X e Y (nova e a anterior). Compilação completa significa que o pacote inclui todos os arquivos necessários para fazer o <em>flash</em> no cliente. Quando nós produzimos uma compilação completa da versão X, nós não sabemos quais as futuras versões nós atualizaremos a partir da versão X. Por isso, nós compilamos ambos os pacotes para cada versão. Isso possibilita criar pacotes incrementais.</p> -<p>Numa visão geral, o processo de compilação é semalhante a isso:</p> -<ol> - <li>Com o software <em>versão X</em> - <ul> - <li>Gerar um arquivo completo <code>MAR</code> do Gecko/Gaia OTA para o conteúdo do diretório <code>/system/b2g</code>.</li> - <li>Gerar arquivo completo <code>update.zip</code> do FOTA e arquivos zip específicos para as partições do dispositivo.</li> - </ul> - </li> - <li>Com o software <em>versão Y</em> - <ul> - <li>Gerar um arquivo completo <code>MAR</code> do Gecko/Gaia OTA do diretório <code>/system/b2g</code>.</li> - <li>Gerar um arquivo completo <code>update.zip</code> do FOTA e arquivos zip específicos para as partições do dispositivo.</li> - </ul> - </li> - <li>Se apenas os arquivos do diretório <code>/system/b2g</code> foram alterados, gerar uma atualização incremental Gecko/Gaia OTA <code>MAR</code> da versão X para a versão <em>Y</em>.</li> - <li>Caso contrário, gerar um arquivo <code>update.zip</code> da atualização incremental FOTA da versão X para a versão Y. Empacote a atualização incremental FOTA <code>update.zip</code> em um <code>MAR</code> para entrega ao cliente B2G.</li> - <li>Assine os pacotes como exigido pelos acordos de entrega.</li> -</ol> -<p>A sub-sessão abaixo descreve como usar as ferramentas do B2G para implementar cada uma dessas etapas.</p> -<div class="note"> - <p><strong>Nota</strong>: para executar as etapas a seguir assumimos que você já configurou um ambiente de compilação b2g na localização <code>$b2g</code>. Os comandos abaixo fazem referência ao script de ajuda <code>$b2g/build.sh</code>, mas o <code>make</code> também pode ser usado.</p> -</div> -<h3 id="Gerando_uma_atualização_GeckoGaia_OTA"><span class="mw-headline" id="Generating_a_complete_Gecko.2FGaia_OTA_update_MAR">Gerando uma atualização Gecko/Gaia OTA </span></h3> -<h3 id="completa_em_MAR"><span class="mw-headline" id="Generating_a_complete_Gecko.2FGaia_OTA_update_MAR">completa em MAR</span></h3> -<p>Execute <code>gecko-update-full</code> para gerar um <code>MAR</code> completo da última compilação bem sucedida do <code>b2g</code>. Para colocar o MAR em <code>$b2g/objdir-gecko/dist/b2g-update/b2g-gecko-update.mar</code>, use os seguintes comandos:</p> -<pre class="brush: bash">$ cd $b2g -$ ./build.sh gecko-update-full -$ cp objdir-gecko/dist/b2g-update/b2g-gecko-update.mar <destination> -</pre> -<h3 id="Gerando_uma_atualização_FOTA_zip_completa_e_arquivos_de_destino"><span class="mw-headline" id="Generating_a_complete_FOTA_update_zip_and_target_files_zip">Gerando uma atualização FOTA zip completa e arquivos de destino</span></h3> -<p>O alvo padrão no sistema de compilação <code>b2g</code> irá gerar um FOTA <code>update.zip</code> / arquivos de destino zip quando o kernel binário tiver sido copiado para a localização apropriada embaixo do diretório <code>vendor/</code>. Isso habilita a imagem de <em>boot</em>, imagem de recuperação e a geração do update.zip.</p> -<ul> - <li>O arquivo completo do FOTA <code>update.zip</code> é gerado em <code>out/target/product/$DEVICE/$DEVICE-ota-$VARIANT.$USER.zip</code></li> - <li>O arquivo zip de destino é gerado em <code>out/target/product/$DEVICE/obj/PACKAGING/target_files_intermediates/$DEVICE-target_files-$VARIANT.$USER.zip</code></li> -</ul> -<p>Os comandos a seguir realizam essa etapa:</p> -<pre class="brush: bash">$ cd $b2g -$ ./build.sh target-files-package -$ cp out/target/product/$DEVICE/obj/PACKAGING/target_files_intermediates/$DEVICE-target_files-$VARIANT.$USER.zip <destination> -</pre> -<p>Os valores das variáveis nos comandos listados acima devem ser preenchidos dessa forma:</p> -<table> - <thead> - <tr> - <th scope="col">Variable</th> - <th scope="col">Meaning</th> - </tr> - </thead> - <tbody> - <tr> - <td><code>$DEVICE</code></td> - <td>O nome do dispositvo para o produto AOSP</td> - </tr> - <tr> - <td><code>$VARIANT</code></td> - <td><code>eng</code>, <code>user</code>, ou <code>userdebug</code></td> - </tr> - <tr> - <td><code>$USER</code></td> - <td>O nome do usuário de compilaçãoThe build username</td> - </tr> - </tbody> -</table> -<h3 id="Gerando_um_MAR_da_atualização_incremental_OTA"><span class="mw-headline" id="Generating_an_incremental_OTA_update_MAR">Gerando um MAR da atualização incremental OTA</span></h3> -<p>Nesse exemplo, nós assumimos que estamos gerando uma atualização do software versão X para versão Y. A localização do MAR completo da compilação Gecko/Gaia OTA da versão X usando as instruções acima será chamado de <code>$MAR_X</code>. Isso deve ser um caminho no servidor de compilacão como por exemplo<code> /home/build/b2g/versions/X/update.mar</code>. De forma similiar, a localização do <code>MAR</code> completo da versão Y será chamado de <code>$MAR_Y</code>.</p> -<p>A ferramenta <code>build-gecko-mar.py</code> vair gerar uma MAR da atualização incremental usando <code>$MAR_X</code> e <code>$MAR_Y</code>. Nós chamaremos o destino do arquivo gerado de <code>$GENERATED_INCREMENTAL_MAR_X_Y</code>. Use os seguintes comandos para essa etapa:</p> -<pre class="brush: bash">$ cd $b2g -$ ./tools/update-tools/build-gecko-mar.py --from $MAR_X --to $MAR_Y $GENERATED_INCREMENTAL_MAR_X_Y -</pre> -<h3 id="Gerando_um_update.zip_da_atualização_incremental_FOTA"><span class="mw-headline" id="Generating_an_incremental_FOTA_update_zip">Gerando um update.zip da atualização incremental FOTA</span></h3> -<p>Nesse exemplo, nós assumimos que estamos gerando uma atualização do software versão X para versão Y. A localização do arquivo zip completo do FOTA compilado do software vesrão X usando as instruções acima será chamado<code> $TARGET_FILES_X</code>. Esse deve ser o caminho no servidor de compilação como <code>/home/build/b2g/versions/X/target_files.zip</code>. De forma semelhante, a localização do zip destino do FOTA completo construido da versão Y será chamado <code>$TARGET_FILES_Y</code>.</p> -<p>A ferramenta <code>build/tools/releasetools/ota_from_target_files</code> irá gerar um FOTA incremental no arquivo update.zip usando <code>$TARGET_FILES_X</code> e <code>$TARGET_FILES_Y</code>. Nós chamamos o arquivo intermediário de <code>$INTERMEDIATE_FOTA_UPDATE_FOTA_X_Y</code>.</p> -<p>Depois do arquivo <code>update.zip</code> ter sido gerado, a última etapa é empacotá-lo em um arquvio <code>MAR</code> para entrega ao cliente b2g. A ferramenta <code>tools/update-tools/build-fota-mar.p</code> executa essa etapa. Nós chamaremos o destino desse arquivo gerado de <code>$GENERATED_INCREMENTAL_FOTA_X_Y</code>. Use os seguintes comandos para completar essa etapa:</p> -<pre class="brush: bash">$ cd $b2g -$ ./build/tools/releasetools/ota_from_target_files -v \ - -i $TARGET_FILES_X \ - -p out/host/$HOST_ARCH \ - -k $FOTA_SIGNING_KEY \ - $TARGET_FILES_Y \ - $INTERMEDIATE_FOTA_UPDATE_FOTA_X_Y -$ ./tools/update-tools/build-fota-mar.py $INTERMEDIATE_FOTA_UPDATE_FOTA_X_Y --output=$GENERATED_INCREMENTAL_FOTA_X_Y -</pre> -<p>Os valores das variáveis nos comandos listados acima devem ser preenchidos dessa forma:</p> -<table> - <thead> - <tr> - <th scope="col">Variable</th> - <th scope="col">Meaning</th> - </tr> - </thead> - <tbody> - <tr> - <td><code>$TARGET_FILES_X</code></td> - <td>Os arquivos zip destino do <em>para a versão X</em></td> - </tr> - <tr> - <td><code>$TARGET_FILES_Y</code></td> - <td>Os arquivos zip destino do <em>para a versão Y</em></td> - </tr> - <tr> - <td><code>$GENERATED_INCREMENTAL_FOTA_X_Y</code></td> - <td> - <p>O destino da atualização incremental em zip empacotado num <code>MAR</code> para entrega aos clientes</p> - </td> - </tr> - <tr> - <td><code>$HOST_ARCH</code></td> - <td>A combinação do <em>host</em> e arquitetura (i.e. <code>linux-x86</code> ou <code>darwin-x86</code>)</td> - </tr> - <tr> - <td><code>$FOTA_SIGNING_KEY</code></td> - <td>Caminho para o prefixo para uma chave privada e o certificado público para assinatura do arquivo update zip. Ambos os arquivo <code>$FOTA_SIGNING_ZIP.pk8</code> e <code>$FOTA_SIGNING_ZIP.x509.pem</code> devem existir no sistema</td> - </tr> - </tbody> -</table> -<h2 id="Hospedagem_e_polling_de_atualizações_no_lado_do_cliente"><span class="mw-headline" id="Hosting_updates_.28respectively.2C_polling_for_updates_on_the_client_side.29">Hospedagem e <em>polling</em> de atualizações no lado do cliente</span></h2> -<p>Clientes Firefox OS fazem <em>polling</em> das atualizações através de um parsing do <strong>manifesto de atualização</strong>: <code>update.xml</code>. Os clientes Firefox OS são configurados para fazer o <em>polling</em> de atualizações em servidores específicos — eles consultam um caminho especialmente construído no servidor. HTTPS é o protocolo recomendado para consultar o servidor, embora HTTP também é suportado. O servidor e o caminho utilizado pelos clientes podem ser alterados entregando uma atualização para clientes existentes que altera o código do polling.</p> -<p>Nos exemplos abaixo, assumimos que as atualizações estão hospedadas no servidor <code>updates.b2g.com</code>.</p> -<p>A URL pesquisada pelo cliente comumente contém os seguintes parâmetros:</p> -<table> - <thead> - <tr> - <th scope="col">Parameter</th> - <th scope="col">Explanation</th> - </tr> - </thead> - <tbody> - <tr> - <td><code>PRODUCT_MODEL</code></td> - <td>O nome do modelo do dispositivo. É o valor da propriedade <code>ro.product.model</code> no banco de dados do B2G.</td> - </tr> - <tr> - <td><code>CHANNEL</code></td> - <td>O "canal" da atualização. Isso é útil para teste: servidores podem ser configurados para hospedar, por exemplo, os canais "nightly", "beta" e "release".</td> - </tr> - <tr> - <td><code>VERSION</code></td> - <td>A versão do software do cliente. Por exemplo, "18.0.2".</td> - </tr> - <tr> - <td><code>BUILD_ID</code></td> - <td>O ID unívoco como um <em>timestamp</em>, configurado para uma compilação em particular</td> - </tr> - </tbody> -</table> -<p>Entretando, existem mais valores que podem ser consultados para construir a consulta de URL de atualização.</p> -<p>O cliente Firefox usa os valores de onde as atualizações estão hospedadas para construir a URL para o <em>polling</em> em tempo de execução. Um exemplo dessa URL é:</p> -<pre class="brush: xml">https://updates.b2g.com/release/unagi1/18.0/20121203123456/update.xml</pre> -<p>Se o servidor retornar um erro "404 Not Found" em resposta à requisição do cliente, então não há atulização disponível. Se o servidor retornar "200" e o arquivo manifesto, então há uma atualizacão disponível. O manifesto descreve a compilação recem-disponível, ou seja, a <strong>atualização que o cliente deve usar</strong>. Um exemplo de manifesto:</p> -<pre class="brush: xml"><?xml version="1.0"?> -<updates> - <update type="major" appVersion="19.0" version="19.0" extensionVersion="19.0" buildID="20121210123456" - licenseURL="http://www.mozilla.com/test/sample-eula.html" - detailsURL="http://www.mozilla.com/test/sample-details.html"> - <patch type="partial" URL="https://updates.b2g.com/release/unagi1/18.0/20121203123456/update.mar" - hashFunction="SHA512" hashValue="5111e033875752b7d9b32b4795152dea5ef954cb8a9d4a602dd19a923b464c43521287dcb5781faf3af76e6dc5e8a3dd9c13edea18c1f2c8f3bd89e17d103d6f" - size="41901319"/> - </update> -</updates> -</pre> -<p>Os campos no manifesto descrevem:</p> -<ul> - <li>metadata usado para mostrar a interface no cliente</li> - <li>metadata sobre a versão recém-disponível</li> - <li>a localização do pacote de atualização</li> - <li>metadata usado para verificar o <em>download</em> do pacote de atualização</li> -</ul> -<div class="note"> - <p><strong>Nota</strong>: O dispositivo do cliente ou o próprio usuário pode recusar a atualização.</p> -</div> -<p>Usando os mecanismos acima descritos, os servidores podem hospedar pacotes de atualização para atualizar qualquer versão antiga cliente para a versão mais recente. Ou podem hospedar somente uma "atualização linear" na qual os clientes devem atualizar através de um caminho simples.</p> -<p>Os detalhes da interação entre os servidores de compilação e de atualização estão fora do escopo desse documento. E são altamente dependentes no ambiente produtivo.</p> -<h2 id="Verificando_e_aplicando_as_atualizações"><span class="mw-headline" id="Verifying_and_applying_updates">Verificando e aplicando as atualizações</span></h2> -<p>Após o cliente Firefox OS ter baixado a atualização e verificado a integridade do pacote, a etapa final é aplicar a atualização.</p> -<p>A primeira etapa consiste-se em verificar as assinaturas embutidas nos pacotes <code>MAR</code>. Isso é feito pelo próprio cliente Firefox OS após checar a integridade do pacote. O código usado para isso é o mesmo para atualizações FOTA ou Gecko/Gaia OTA.</p> -<p>Após as assinaturas terem sido verificadas, o processo de aplicar uma atualização diverge entre os tipos de pacotes. Vamos ver as diferenças entre os dois a partir de agora.</p> -<h3 id="Aplicando_atualizações_GeckoGaia_OTA"><span class="mw-headline" id="Applying_Gecko.2FGaia_OTA_updates">Aplicando atualizações Gecko/Gaia OTA</span></h3> -<p>O cliente Firefox OS usa o executável <code>updater</code> para aplicar as atualizações. É parte da distribuição Gecko e é o mesmo código usado para aplicar as atualizações do Firefox Desktop. Como descrito acima, a atualização é aplicada enquanto o Firefox OS continua a rodar normalmente. Usuários podem fazer e receber ligações, executar aplicativos, navegar na internet, etc durante o processo de atualização.</p> -<p>Os detalhes específicos do <code>updater</code> estão além do escopo desse documento, mas seu funcionamento é aproximadamente descrito abaixo:</p> -<ul> - <li>Faz uma cópia do diretório <code>/system/b2g</code>.</li> - <li>Aplica os <em>patches</em> binários, removendo arquivos antigos, e incluindo os novos como especificado no arquivo <code>MAR</code>.</li> - <li>Reinicia o processo principal <code>b2g</code> para que utilize os novos arquivos.</li> -</ul> -<p>Após reiniciar o processo <code>b2g</code> o usuário já está executando a nova versão do software cliente B2G.</p> -<h3 id="Aplicando_atualizações_FOTA"><span class="mw-headline" id="Applying_FOTA_updates">Aplicando atualizações FOTA</span></h3> -<p>O cliente FOTA é o responsável por aplicar a atualização. O cliente Gecko não interefer no processo que será aplicado chamando a API <a class="externallink" href="http://git.mozilla.org/?p=b2g/librecovery.git;a=blob;f=librecovery.h;h=a6e13374f9bffcf947a39d6f3348290d67113321;hb=HEAD" rel="nofollow" title="http://git.mozilla.org/?p=b2g/librecovery.git;a=blob;f=librecovery.h;h=a6e13374f9bffcf947a39d6f3348290d67113321;hb=HEAD">librecovery</a>. O que acontece após essa etapa é específico de cada cliente FOTA.</p> -<p>Na implementação do <code>librecovery</code> usado pelo cliente FOTA, o pacote de atualização baixado é armazenado para ser aplicado e comandos especiais são enfileirados para recuperar o cliente. <code>librecovery</code> então inicializa o dispositivo no modo recovery no qual é executado o <em>script</em> que está dentro do arquivo <code>update.zip</code> que atualiza os arquivos e as partições necessárias. O cliente recovery pode necessitar reinicar o dispositivo diversas vezes para atualizar todos os arquivos.</p> -<p>Na inicialização final, o dispositivo estará com a nova versão do Firefox OS instalado.</p> diff --git a/files/pt-br/archive/b2g_os/construindo_e_instalando_o_firefox_os/index.html b/files/pt-br/archive/b2g_os/construindo_e_instalando_o_firefox_os/index.html deleted file mode 100644 index 65c93a2baf..0000000000 --- a/files/pt-br/archive/b2g_os/construindo_e_instalando_o_firefox_os/index.html +++ /dev/null @@ -1,75 +0,0 @@ ---- -title: Compilando e instalando o Firefox OS -slug: Archive/B2G_OS/Construindo_e_instalando_o_Firefox_OS -tags: - - B2G - - Compilador - - Compilação - - Código fonte - - Emulador - - Gaia -translation_of: Archive/B2G_OS/Building_and_installing_B2G_OS ---- -<p><span id="result_box" lang="pt"><span class="hps alt-edited">Como o Firefox</span> <span class="hps">OS</span> <span class="hps alt-edited">está atualmente em desenvolvimento</span> <span class="hps">ativo, e</span> <span class="hps">está em um estado</span> <span class="hps">de pré-lançamento</span><span>,</span> <span class="hps">a melhor maneira de</span> <span class="hps">garantir que você tenha</span> <span class="hps alt-edited">o sistema</span> <span class="hps">instalado</span> <span class="hps">é construir e</span> <span class="hps">instalá-lo sozinho</span><span>.</span> <span class="hps">Os artigos</span> <span class="hps">listados nesta</span> <span class="hps">página</span> <span class="hps">irá guiá-lo</span> <span class="hps">através da construção</span> <span class="hps">e</span> <span class="hps">instalação do Firefox</span> <span class="hps">OS</span> <span class="hps">em um emulador</span> <span class="hps">ou dispositivo compatível,</span> <span class="hps">ou</span> <span class="hps">a interface do usuário</span> </span><a href="/en-US/docs/Mozilla/Boot_to_Gecko/Introduction_to_Gaia" title="en-US/docs/Mozilla/Boot_to_Gecko/Introduction_to_Gaia">Gaia</a> <span id="result_box" lang="pt"><span class="hps">no navegador</span> <span class="hps">Firefox.</span></span></p> -<table class="topicpage-table"> - <tbody> - <tr> - <td> - <h2 class="Documentation" id="Como_obter_e_compilar_o_Firefox_OS">Como obter e compilar o Firefox OS</h2> - <dl> - <dt> - <a href="/pt-BR/docs/Mozilla/Firefox_OS/Construindo_e_instalando_o_Firefox_OS/visao_geral_compilacao_firefox_os">Visão geral da compilação do Firefox OS</a></dt> - <dd> - A compilação e instalação do Firefox OS exige tempo, banda de rede e poder computacional. Essa página descreve os objetivos do processo de compilação a fim de ajudar os usuários ao longo desse caminho.</dd> - <dt> - <a href="/pt-BR/docs/Mozilla/Boot_to_Gecko/Firefox_OS_build_prerequisites" title="en-US/docs/Mozilla/Boot_to_Gecko/B2G build prerequisites">Pré-requisitos para compilação do Firefox OS</a></dt> - <dd> - O que você precisa (ter e fazer) <span class="short_text" id="result_box" lang="pt"><span class="hps">antes de compilar</span> <span class="hps">o Firefox</span> <span class="hps">OS</span> <span class="hps">pela primeira vez</span></span>.</dd> - <dt> - <a href="/pt-BR/docs/Mozilla/Firefox_OS/Preparando_sua_primeira_compilacao_do_B2G" title="/pt-BR/docs/Mozilla/Boot_to_Gecko/Preparando_para_sua_primeira_build_B2G">Preparando para sua primeira compilação do Firefox OS</a></dt> - <dd> - Antes de você compilar o Firefox OS, você precisa clonar o repositório do Firefox OS e configurar seu ambiente. Este artigo explica como você faz isso.</dd> - <dt> - <a href="/pt-BR/docs/Mozilla/Firefox_OS/Compilando_O_Firefox_OS" title="/pt-BR/docs/Mozilla/Boot_to_Gecko/Compilando_Boot_to_Geeko">Compilando o Firefox OS</a></dt> - <dd> - Como compilar o Firefox OS.</dd> - <dt> - <a href="https://developer.mozilla.org/pt-BR/docs/Mozilla/Firefox_OS/Porting" title="/pt-BR/docs/Mozilla/Boot_to_Gecko/Compilando_Boot_to_Geeko">Portando o Firefox OS</a></dt> - <dd> - Informações de como portar o Firefox OS para novos aparelhos.</dd> - </dl> - <p><span class="alllinks"><a href="/pt-BR/docs/tag/B2G" title="/en-US/docs/tag/B2G">Veja os artigos...</a></span></p> - </td> - <td> - <h2 class="Community" id="Instalando_o_Firefox_OS_eou_Gaia">Instalando o Firefox OS e/ou Gaia</h2> - <dl> - <dt> - <a href="https://developer.mozilla.org/pt-BR/docs/Mozilla/Firefox_OS/Escolhendo_como_executar_Gaia_ou_B2G" title="/pt-BR/docs/Mozilla/Boot_to_Gecko/Escolhendo_como_rodar_Gaia_ou_B2G">Escolhendo como rodar Gaia ou Firefox OS</a></dt> - <dd> - Você pode usar Gaia com Firefox, ou você pode rodar Firefox OS em um dispositivo móvel ou em um simulador. Este guia irá lhe ajudar a decidir conforme suas necessidades.</dd> - <dt> - <a href="https://developer.mozilla.org/pt-BR/docs/Mozilla/Firefox_OS/Developing_Firefox_OS/Guia_rapido_desenvolvimento_Gaia" title="/pt-BR/docs/Mozilla/Boot_to_Gecko/Usando_Gaia_no_Firefox">Usando Gaia no Firefox</a></dt> - <dd> - Como usar Gaia com um navegador Firefox no Desktop.</dd> - <dt> - <a href="https://developer.mozilla.org/pt-BR/docs/Mozilla/Boot_to_Gecko/Using_the_B2G_desktop_client" title="/pt-BR/docs/Mozilla/Boot_to_Gecko/Usando_o_cliente_desktop_do_B2G">Usando o cliente desktop do Firefox OS</a></dt> - <dd> - Um guia para rodar e usar o cliente desktop do Firefox OS; isto simula o ambiente do Gaia numa aplicação desktop. É mais preciso que rodar Gaia no Firefox mas não tão preciso quanto o emulador.</dd> - <dt> - <a href="https://developer.mozilla.org/pt-BR/docs/Mozilla/Boot_to_Gecko/Using_the_B2G_emulators" title="/pt-BR/docs/Mozilla/Boot_to_Gecko/Usando_o_emulador_B2G">Usando o emulador do Firefox OS</a></dt> - <dd> - Um guia de como compilar e usar o emulador; e quando e qual emulador usar.</dd> - <dt> - <a href="https://developer.mozilla.org/pt-BR/docs/Mozilla/Firefox_OS/Instalando_FirefoxOS_dispositivo_movel" title="/pt-BR/docs/Mozilla/Boot_to_Gecko/Instalando_Boot_to_Gecko_em_um_dispositivo_movel">Instalando o Firefox OS em um dispositivo móvel</a></dt> - <dd> - Como instalar o Firefox OS em um dispositivo móvel real.</dd> - <dt> - <a href="https://developer.mozilla.org/pt-BR/docs/Mozilla/Firefox_OS/Dual_Boot_B2G_Android_SGS2" title="/pt-BR/docs/Mozilla/Boot_to_Gecko/Dual_boot_de_B2G_e_Android_em_um_SGS2">Dual boot de Firefox OS e Android em um SGS2</a></dt> - <dd> - Como instalar um ambiente de dual boot Firefox OS/Android em um Samsung Galaxy S2.</dd> - </dl> - </td> - </tr> - </tbody> -</table> -<p> </p> diff --git a/files/pt-br/archive/b2g_os/construindo_e_instalando_o_firefox_os/visao_geral_compilacao_firefox_os/index.html b/files/pt-br/archive/b2g_os/construindo_e_instalando_o_firefox_os/visao_geral_compilacao_firefox_os/index.html deleted file mode 100644 index 005aa4dd10..0000000000 --- a/files/pt-br/archive/b2g_os/construindo_e_instalando_o_firefox_os/visao_geral_compilacao_firefox_os/index.html +++ /dev/null @@ -1,163 +0,0 @@ ---- -title: Visão Geral da compilação do Firefox OS -slug: >- - Archive/B2G_OS/Construindo_e_instalando_o_Firefox_OS/visao_geral_compilacao_firefox_os -translation_of: Archive/B2G_OS/Building_and_installing_B2G_OS/B2G_OS_build_process_summary ---- -<div class="summary"> -<p>A compilação e instalação do Firefox OS exige muito tempo, banda de internet e poder computacional. Infelizmente, ao longo do caminho, coisas podem dar errado. Essa página descreve os objetivos do processo de compilação e o passo-a-passo do processo a fim de ajudar os usuários. Detalhes de cada etapa são detalhadas ao clicar nos links ao longo do texto.</p> -</div> - -<div class="note"> -<p><strong style="font-weight: bold;">Nota:</strong> O processo de compilação do Firefox OS possui diversas referências a 'B2G' ou 'Boot2Gecko'. 'Boot2Gecko' era o nome original do projeto Firefox OS.</p> -</div> - -<h2 id="O_objetivo_da_compilação_quatro_arquivos_de_imagem_('image_files')">O objetivo da compilação: quatro arquivos de imagem ('<em>image files</em>')</h2> - -<p>O objetivo principal do processo de compilação são os quatro arquivos que serão copiados num dispositivo Firefox OS.</p> - -<table style="margin: 4px auto; vertical-align: top; width: 90%;"> - <tbody> - <tr> - <td><strong>boot.img</strong></td> - <td> - <p>O kernel Linux e uma imagem de sistema de arquivos raiz. Esse último oferecendo um conjunto de ferramentas básicas do Unix.</p> - </td> - </tr> - <tr> - <td><strong>system.img</strong></td> - <td> - <p>A parte central do Firefox OS, incluindo partes do Gonk,</p> - - <p>O core do Firefox OS incluindo partes do Gonk, a conexão com o Gecko e o executável b2g.</p> - </td> - </tr> - <tr> - <td><strong>userdata.img</strong></td> - <td> - <p>O perfil Gecko do usuário e as aplicações web do Gaia para o dispositivo.</p> - </td> - </tr> - <tr> - <td><strong>recovery.img</strong></td> - <td> - <p>Um kernel Linux e uma imagem de sistema de arquivos raiz com uma ferramenta simples que possibilite aos usuários recuperar o sistema após uma instalação com erros.</p> - </td> - </tr> - </tbody> -</table> - - -<p>Uma vez que essas quatro imagens tenham sido criadas, elas podem ser transferidas ao dispositivo.</p> - -<p>O Firefox OS é compilado sobre o AOSP (Android Open Source Project). As ferramentas AOSP <code>adb</code> e <code>fastboot</code> são formas poderosas de acessar e manipular o dispositivo. O comando <code>adb reboot-bootloader</code> pode reiniciar um dispositivo conectado, permitindo ao usuário interromper o processo na fase inicial do processo onde o comando <code>fastboot flash $partition $image</code> pode ser usado para copiar uma imagem para o dispositivo.</p> - -<h3 id="A_imagem_de_inicialização">A imagem de inicialização</h3> - -<p>A imagem de inicialização <code>(boot.img)</code> é uma combinação do kernel Linux e uma partição inicial que provê softwares utilitários e scripts de inicialização. Esses scripts são copiados na memória do dispositivo para um uso mais eficiente, e são chamados de "<em>ramdisk</em>". O arquivo boot.img será copiado na partição 'boot' do dispositivo e o conteúdo da <em>ramdisk</em> será acessível a partir diretório raiz em tempo de execuçã, bem como usando <code>adb shell</code>.</p> - -<p>A imagem de inicialização também estabelece as permissões do usuário root no arquivo <code>default.prop</code> localizado no diretório raiz.</p> - -<p>Também é possível modificar as imagens de inicialização existentes verificando o arquivo, dividindo o arquivo entre o kernel e a imagem da <em>ramdisk</em>, modificando seu conteúdo, remontando a imagem da ramdisk e finalmente recompilando o arquivo <code>boot.img</code>. Veja, por exemplo a página <a href="http://k.japko.eu/alcatel-otf-hackers-guide-1.html">Alcatel One Touch Fire Hacking (Mini) Guide</a>.</p> - -<p>Imagens de inicialização podem ser testadas antes de serem definitivamente instaladas. O dispositivo pode ser inicializado e ser interrompido durante a carga. Para inicializar o dispositivo com a Imagem a ser testada sem instalá-la utilize o comando <code>fastboot</code> <code>boot /some/path/to/boot.img</code>.</p> - -<h3 id="A_imagem_do_Sistema">A imagem do Sistema</h3> - -<p>A imagem do sistema (<code>system.img</code>) possui o núcleo principal do Firefox OS:</p> - -<ul> - <li><strong>Gonk</strong>: componentes de baixo nível do sistema operacional</li> - <li><strong>Gecko</strong>: adaptação dos motores de layout HTML e JavaScript do Firefox</li> - <li><strong>B2G</strong>: o núcelo dos processos de runtime do sistema operacional</li> -</ul> - -<div class="note"> -<p>Veja o guia <a href="https://developer.mozilla.org/pt-BR/docs/Mozilla/Firefox_OS/Platform">a plataforma Firefox OS</a> para mais informações sobre a arquitetura do Firefox OS.</p> -</div> - -<p>A imagem do sistema será copiada para a partição <code>system</code> do dispositivo e acessadas no diretório <code>/system/</code> quando o sistema de arquivos é acessado em tempo de execução.</p> - -<div class="note"> -<p><strong>Nota</strong>: A imagem do sistema também fornece blobs (Binary Large OBject) que pode ser usado pelo dispositivo, como por exemplo o blob RIL (Radio Interface Layer) que controla o rádio do dispositivo.</p> -</div> - -<h3 id="A_Imagem_de_Dados_do_Usuário">A Imagem de Dados do Usuário</h3> - -<p>A imagem de dados do usuário (<code>userdata.img</code>) fornece as aplicações Gaia carregadas em tempo de execução.</p> - -<p>A imagem de dados do usuário será copiada para a partição <code>userdata</code> no dispositivo e seu conteúdo pode ser acessado no diretório <code>/data/</code> quando o sistema de arquivos do dispositivo é acessado em tempo de execução. O diretório <code>/data/b2g/</code> contem o perfil Mozila Gecko do usuário do dispositivo enquanto que o diretório <code>/data/local/webapps/</code> contém os arquivos executáveis das aplicações web disponíveis para o usuário.</p> - -<p>The User Data Image will be copied to the <code>userdata</code> partition on the device and the contents will be visible in the <code>/data/</code> directory when the device filesystem is accessed at runtime. Notably the <code>/data/b2g/</code> directory contains the Mozilla Gecko <em>profile</em> of the device user while the <code>/data/local/webapps/</code> directory contains the actual web applications available to the user.</p> - -<h3 id="A_imagem_de_recuperação">A imagem de recuperação</h3> - -<p>A imagem de recuperacão (<code>recovery.img</code>) contém o mesmo kernel e um <em>ramdisk</em> similar ao existente na partição da Imagem de inicializção (<em>Boot Image</em>). Porém, a imagem de recuperação utiliza um script de inicialização diferente, que apresenta ao usuário um conjunto de comandos de recuperação acessíveis pelos botões externos do dispositivo.</p> - -<p>A imagem de recuperação é copiada na partição <code>recovery</code> do dispositivo, que por sua vez não é montada no sistema de arquivos durante sua execução normal.</p> - -<h2 id="O_processo_de_compilação_preparacão_configuração_compilação_e_instalação">O processo de compilação: preparacão, configuração, compilação e instalação</h2> - -<p>O processo completo de compilação e instalação do Firefox OS é composto de quatro passos:</p> - -<table style="margin: 4px auto; vertical-align: top; width: 90%;"> - <tbody> - <tr> - <td><strong>Preparação</strong></td> - <td>Obter todos os programas a serem utilizados no processo de compilação, bem como seus compiladores e bibliotecas.</td> - </tr> - <tr> - <td><strong>Configuração</strong></td> - <td>Baixar o código fonte que será compilado e criar o arquivo <code>.configure</code> que define as variáveis de ambiente como os caminhos e outros valores a serem utilizados na compilação.</td> - </tr> - <tr> - <td><strong>Compilação</strong></td> - <td>Compilar o perfil do usuário do Gecko e as aplicações web do Gaia para o dispositivo.</td> - </tr> - <tr> - <td><strong>Instalação</strong></td> - <td>Instalar os arquivos no dispositivo.</td> - </tr> - </tbody> -</table> - - -<p> </p> - -<h3 id="Preparação">Preparação</h3> - -<p>A preparação inicial deve ser realizada para garantir que o computador a ser utilizado no processo de compilação tenha todo o software necessário como o compilador e as demais ferramentas de compilação.</p> - -<p>Essa etapa pode ser feita manualmente ou utilizando um <em>script</em>. Maiores detalhes na página <a href="https://developer.mozilla.org/pt-BR/docs/Mozilla/Boot_to_Gecko/Firefox_OS_build_prerequisites" title="Firefox OS build prerequisites">Pré requisitos para compilar o Firefox OS</a>.</p> - -<div class="note"> -<p><strong>Nota</strong>: Em máquinas UNIX e UNIX-like, para checar a existência do software pode ser utilizado o comando <code>which</code> com o nome do programa como parâmetro.</p> -</div> - -<h3 id="Configuração">Configuração</h3> - -<p>Na realidade, o processo de compilação inicia-se com a obtenção de uma cópia do software Firefox OS (ou B2G), usualmente com a criação de um clone com a ferramenta Git a partir do projeto <code>B2G</code>. A configuração da compilação compreende tanto baixar as cópias de todo o código fonte que será compilado como criar o arquivo de configuração <code>.config</code>, que especifica as variáveis de ambiente a serem utilizadas no processo de compilação.</p> - -<p>A configuração é executada com o script <code>config.sh</code>. A página <a href="https://developer.mozilla.org/pt-BR/docs/Mozilla/Firefox_OS/Preparando_sua_primeira_compilacao_do_B2G" title="Preparing for your first B2G build">Preparando sua primeira compilação do B2G</a> possuí detalhes desse proceso.</p> - -<p>O script de configuracão necessita de um parâmetro que especifica o tipo de dispositivo para o qual o B2G será compilado. A codificação desse parâmetro é vinculada à arquitetura da CPU utilizada e não ao nome específico do dispositivo. Atualmente não há como estabelecer qual compilação funciona para cada dispositivo. Uma lista de códigos disponíveis pode se encontrada <a href="/en-US/Firefox_OS/Phones">nessa página</a>.</p> - -<p>A etapa de configuração também utiliza a ferramenta <code>repo</code> do AOSP (Androis Open Source Project) para baixar (ou atualizar) a cópia de todo o código utilizado na compilação. Essas cópias são armazenadas no diretório <code>.repo/projects</code>. Devido a essa atividade a etapa de configuração consome muito tempo e muitos dados são trafegados para baixar todo o código necessário.</p> - -<h3 id="Compilação">Compilação</h3> - -<p>A etapa da compilação é a qual todo o código fonte realmente é compilado e os arquivos imagens são gerados.</p> - -<p>Deve ser executado o script <code>build.sh</code>. Detalhes são discutidos na página <a href="/pt-BR/docs/Mozilla/Firefox_OS/Compilando_O_Firefox_OS" title="Building">Compilando o Firefox OS</a>.</p> - -<p>Como padrão, a etapa de compilação é monolítica, ou seja, tudo é compilada de uma só vez a partir das ferramentas AOSP gerando o kernel do Linux e as aplicações web do Gaia. No caso de ocorrência de erros na compilação, pode não ficar claro em qual etapa ocorreu o erro.</p> - -<p>Na compilação do Firefox é possível compilar somente algumas partes do conjunto completo que compõe o Firefox OS. Por exemplo, o sistema Gecko somente pode ser compilado através do script com o parâmetro <code>gecko</code>. Da mesma forma, o Gaia é compilado com o parâmetro <code>gaia</code>. Essas partes podem ser instaladas separadamente no dispositivo como será explicado a seguir.</p> - -<p>Também é possivel construir as imagens apresentadas no início desse artigo. Por exemplo, a imagem de sistema pode ser compilada através do comando <code>./build.sh out/platform/$target/system.img</code>, no qual o parâmetro <code>$target</code> é o mesmo que o apresentado na etapa de configuração.</p> - -<h3 id="Instalação">Instalação</h3> - -<p>A etapa de instalação consiste em colocar o novo código compilado no dispositivo. É executada pelo script <code>flash.sh</code>.</p> - -<p>A instalação pode ser realizada por etapas através de parâmetro no script <code>flash.sh</code>. Por exemplo, é possível instalar somente as aplicações web do Gaia com o comando <code>./flash.sh gaia</code>.</p> diff --git a/files/pt-br/archive/b2g_os/correções/index.html b/files/pt-br/archive/b2g_os/correções/index.html deleted file mode 100644 index b427f00ffb..0000000000 --- a/files/pt-br/archive/b2g_os/correções/index.html +++ /dev/null @@ -1,35 +0,0 @@ ---- -title: Resolução de problemas no Firefox OS -slug: Archive/B2G_OS/Correções -tags: - - Firefox OS - - Reiniciar - - SMS iPhone - - Travamento -translation_of: Archive/B2G_OS/Troubleshooting ---- -<p>Este artigo contém dicas para resolver problemas comuns que talvez você encontre ao utilizar o Sistema Operacional Firefox OS. Sinta-se à vontade para adcionar ainda mais conteúdo a esta página!</p> -<div class="note"> - <p><strong>Nota:</strong> Estas instruções assumem que você configurou <a href="/en-US/docs/Mozilla/Firefox_OS/Installing_on_a_mobile_device#Configuring_the_udev_rule_for_your_device" title="en-US/docs/Mozilla/Firefox_OS/Installing_on_a_mobile_device#Configuring_the_udev_rule_for_your_device">conforme as orientações de udev</a> em seu dispositivo.</p> -</div> -<h2 id="Problemas_de_Rede">Problemas de Rede</h2> -<p>Se você está tendo dificuldades com a rede Wi-Fi, pode ser que resolva apagando o arquivo de configuração de Wi-Fi do aparelho. Para tanto, faça o seguinte:</p> -<pre>adb shell rm /data/misc/wifi/wpa_supplicant.conf -adb reboot -</pre> -<h2 id="Telefone_Bloqueado">Telefone Bloqueado</h2> -<p>Se acontecer de o telefone bloquear, ou travar quando, por exemplo, tentando copiar uma ROM mal-compilada, reinicie com bootloader (fastboot ou heimdal, dependendo do seu dispositivo). A sequência exata varia dependendo do dispositivo.</p> -<ul> - <li>Remova o cabo USB.</li> - <li>Remova a bateria.</li> - <li>Reinstale a bateria.</li> - <li>Para unagi e otoro, segure os botões aumentar volume e liga/desliga por alguns segundos até você ver a tela de splash.</li> - <li>Certifique-se que você colocou o aparelho no modo bootloader usando <code>fastboot devices</code> (ou <code>heimdall devices</code> para alguns aparelhos Samsung).</li> - <li>Uma vez que você visualize o celular em <code>fastboot devices</code>, você pode usar <code>./flash.sh </code>para copiar uma imagem.for Unagi.</li> -</ul> -<h2 id="Led_vermelho_piscando_(otorounagi)">Led vermelho piscando (otoro/unagi)</h2> -<p>Isto significa que a bateria está com tão pouca carga que não consegue reiniciar. Você deve recarregar durante um certo tempo (até a luz vermelha parar de piscar rápido), ou você desliga o cabo USB, remove a bateria, reinstala o cabo USB, e coloca novamente a bateria.</p> -<h2 id="Falha_ao_receber_SMS_após_instalar_um_cartão_SIM_originário_de_um_iPhone">Falha ao receber SMS após instalar um cartão SIM originário de um iPhone</h2> -<p>Se você instalou no Firefox OS um cartão SIM que estava instalado em um iPhone (ou qualquer outra plataforma diferente), você pode perceber esse tipo de problema ao receber mensagens de texto originadas de usuários do iPhone.</p> -<p>Isso é devido ao fato do iPhone envia as mensagens de texto usando <a href="https://www.apple.com/ios/messages/">iMessage</a>, que funciona roteando mensagens iPhone-iPhone através de servidores Apple ao invés do método tradicional a fim de evitar custos de SMS dos usuários de iPhone. Infelizmente quando você deixa de utilizar o iPhone, o iMessage não tem como saber que você não está mais utilizando o iPhone e as mensagens enviadas de outro iPhone continuarão usando o iMessage e você não as receberá.</p> -<p>Para corrigir isso, desabilite o iMessage para o seu cartão SIM. Existe um guia de como fazer isso no imore.com — veja <a href="http://www.imore.com/text-issues-switching-iphone-android-heres-fix">o artigo</a>.</p> diff --git a/files/pt-br/archive/b2g_os/customizacao_com_o_arquivo_.userconfig_file/index.html b/files/pt-br/archive/b2g_os/customizacao_com_o_arquivo_.userconfig_file/index.html deleted file mode 100644 index e21a063826..0000000000 --- a/files/pt-br/archive/b2g_os/customizacao_com_o_arquivo_.userconfig_file/index.html +++ /dev/null @@ -1,107 +0,0 @@ ---- -title: Customização com o arquivo .userconfig -slug: Archive/B2G_OS/Customizacao_com_o_arquivo_.userconfig_file -tags: - - .userconfig - - B2G - - Depuração - - valgrind -translation_of: Archive/B2G_OS/Customization_with_the_.userconfig_file ---- -<div class="summary"> - <p>Você pode customizar alguns aspectos do processo de compilação colocando códigos bash no arquivo <code>.userconfig</code> presente no fonte do B2G. Esse artigo mostra como você pode fazer alterações nesse arquivo.</p> -</div> -<p>O arquivo <code>.userconfig</code> não é marcado no controle do código fonte, assim suas alterações não irão ser sobrescritas quando você atualizar sua árvore dos fontes. Deve ser criado na <a href="https://github.com/mozilla-b2g/B2G">raiz da sua árvore B2G</a>, ou seja, no mesmo diretório que se encontram os arquivos <code>flash.sh</code>, <code>build.sh</code>, etc. Você deve adicioná-lo antes de executar a configuração e as demais etapas de compilação.</p> -<p>Se o arquivo <code>.userconfig</code> existir, foi originado pelo script <code>load-config.sh</code>, que por sua vez foi originado pelos scripts: <code>flash.sh</code>, <code>build.sh</code> (através do <code>setup.sh</code>), <code>run-gdb.sh</code>, e <code>run-emulator.sh</code> e <code>tools/mach_b2g_bootstrap.ph</code>. O script <code>run-<em>*</em>.sh</code> usa-o para determinar onde está o Gecko para sua compilação. O script <code>mach_b2g_boostrap.py</code> é usado por todos os comandos <a href="https://developer.mozilla.org/pt-BR/docs/Developer_Guide/mach">mach</a> relacionados com o B2G.</p> -<div class="warning"> - <p><strong>Importante</strong>: Seu arquivo .userconfig deve estar no diretório raiz do fonte do B2G e não no seu diretório home!</p> -</div> -<h2 id="Alterando_a_árvore_fonte_do_Gecko">Alterando a árvore fonte do Gecko</h2> -<p>Por padrão, o processo de compilação usa a árvore do Gecko, que é clonada de uma árvore no Github. Algumas pessoas gostam de usar <a href="https://developer.mozilla.org/pt-BR/docs/Developer_Guide/Source_Code/Mercurial#mozilla-inbound_%28used_for_landing_your_patches%29" title="https://developer.mozilla.org/en-US/docs/Developer_Guide/Source_Code/Mercurial#mozilla-inbound_%28used_for_landing_your_patches%29">mozilla-inbound</a>, ou <a href="https://developer.mozilla.org/en-US/docs/Developer_Guide/Source_Code/Mercurial#mozilla-central_%28main_development_tree%29" title="https://developer.mozilla.org/en-US/docs/Developer_Guide/Source_Code/Mercurial#mozilla-central_%28main_development_tree%29">mozilla-central</a>. Para fazer isso, crie seu clone onde quer que você queira e adicione uma linha ao seu <code>.userconfig</code> indicando o <code>GECKO_PATH</code>, por exemplo:</p> -<pre>export B2G_DIR=${B2G_DIR:-$(cd $(dirname $0); pwd)} -echo "B2G_DIR = ${B2G_DIR}" - -export GECKO_PATH=${B2G_DIR}/mozilla-inbound -echo "GECKO_PATH = ${GECKO_PATH}" -</pre> -<div class="note"> - <p><strong>Nota</strong>: Caso você esteja compilando em um Mac OS X, o diretório <code>mozilla-central</code> deve estar em um sistema case sensitive file system ou o conteúdo de <code>GECKO_PATH</code> será ignorado. Você pode verificar se o sistema de arquivos é case sensitive rodando o seguinte comando no seu terminal\:</p> - <pre>echo -n This file system is case->tmp; echo -n in>>TMP; echo sensitive>>tmp; cat tmp</pre> - <p>Obtendo o <code>B2G_DIR</code> da forma descrita acima permite o seu <code>.userconfig</code> trabalhar sem a necessidade de descrever caminhos de diretório diretamente no arquivo (hard-coded).</p> -</div> -<h2 id="Alterando_as_configurações_Gaia">Alterando as configurações Gaia</h2> -<p>Algumas vezes é interessante alterar as configurações Gaia. Por exemplo, habilitar o <code>adb</code> em uma imagem do usuário. O Gaia <code>Makefile</code> passa em <code>--override build/custom-settings.json</code> quando chamar <code>build/settings.py</code>, assim nós podemos escrever algum bash que escreve <code>{"devtools.debugger.remote-enabled": true}</code> no arquivo <code>custom-settings.json</code>. Nós tentamos evitar alterar <code>custom-settings.json</code> se não for preciso, então nós realmente geramos o arquivo <code>custom-settings.json.new</code> e se os conteúdos forem diferentes de <code>custom-settings.json</code> então nós o substituímos.</p> -<pre>export GAIA_PATH=${GAIA_PATH:-$(cd gaia; pwd)} -export CUSTOM_SETTINGS="${GAIA_PATH}/build/config/custom-settings.json" -cat > "${CUSTOM_SETTINGS}.new" <<EOF -{"devtools.debugger.remote-enabled": true} -EOF -if [[ -f ${CUSTOM_SETTINGS} ]] && cmp "${CUSTOM_SETTINGS}" "${CUSTOM_SETTINGS}.new" >& /dev/null; then - rm "${CUSTOM_SETTINGS}.new" -else - mv "${CUSTOM_SETTINGS}.new" "${CUSTOM_SETTINGS}" -fi -</pre> -<p>Uma outra forma mais fácil é configurar o arquivo <code>build/config/custom-prefs.js</code> no diretório de trabalho Gaia, ou seja, <code>gaia/build/config/custom-prefs.js</code> se você estiver no diretório B2G. Veja o artigo <a href="https://developer.mozilla.org/pt-BR/Firefox_OS/Platform/Gaia/Sistema_compilacao_primario#Customizando_as_prefer.C3.AAncias" title="/en-US/docs/Mozilla/Firefox_OS/Platform/Gaia/Build_System_Primer#Customizing_the_preferences">Sistema de Compilação Primária</a>.</p> -<div class="note"> - <p><strong>Nota:</strong> Atualmente o processo de compilação não é automatizado o suficiente para procurar em um diretório diferente baseado em <code>GAIA_PATH</code>. Isso é diferente de como <code>GECKO_PATH</code> se comporta. Se você deseja usar um clone separado do Gaia você pode <a href="/pt-BR/docs/Mozilla/Firefox_OS/Platform/Gaia/Build_System_Primer" title="/en-US/docs/Mozilla/Firefox_OS/Platform/Gaia/Build_System_Primer">executar o make manualmente</a> daquele diretório.</p> -</div> -<h2 id="Criar_uma_imagem_de_depuração">Criar uma imagem de depuração</h2> -<p>Para fazer isso, coloque a seguinte linha no seu arquivo <code>.userconfig</code>:</p> -<pre>export B2G_DEBUG=1</pre> -<h2 id="Construção_de_perfis">Construção de perfis</h2> -<p>Para habilitar os perfis (para melhores resultados com a plataforma de perfis SPS), inclua o seguinte trecho no arquivo <code>.userconfig</code> e depois recompile:</p> -<pre>export MOZ_PROFILING=1</pre> -<div class="warning"> - <p>NÃO emparelhe com B2G_NOOPT. Os resultados não farão sentido!</p> -</div> -<h2 id="Desabilitar_o_otimizador">Desabilitar o otimizador</h2> -<p>Para desabilitar o otimizador (que pode criar imagens mais fáceis para depurar), inclua o seguinte trecho no arquivo <code>.userconfig</code> e depois recompile:</p> -<pre>export B2G_NOOPT=1</pre> -<h2 id="Desabiltar_a_Experência_de_Primeiro_Uso">Desabiltar a Experência de Primeiro Uso</h2> -<p>Se você compila e copiar para o dispositivo muitas vezes, passar várias vezes pela rotina de primeiro uso pode ser irritante. Você pode desabilitar isso incluindo o seguinte trecho no arquvio <code>.userconfig</code>:</p> -<pre>export NOFTU=1</pre> -<h2 id="Habilitar_o_modo_desenvolvedor_do_Gaia">Habilitar o modo desenvolvedor do Gaia</h2> -<p>Se você planeja desenvolver aplicativos ou modificar o Gaia, você pode configurar automaticamente várias opções úteis para trabalhar mais facilmente com o seu dispositivo. Por exemplo, habilitar a depuração remota e desabilitar o prompt automaticamente quando uma conexão com o computador for iniciada.</p> -<p>Inclua isso no seu arquivo <code>.userconfig</code>:</p> -<pre>export DEVICE_DEBUG=1</pre> -<h2 id="Habilitar_o_valgrind">Habilitar o valgrind</h2> -<p>Valgrind é útil para depurar memória ou problemas relacionados com <em>threads</em> na sua aplicação. Para mais informação de como executar o valgrind, veja o artigo <a href="/pt-BR/Firefox_OS/Debugging/Debugging_B2G_using_valgrind">Depurando o B2G usando valgrind</a>.</p> -<p>Para usar o valgrind com B2G, inclua o trecho no seu arquivo <code>.userconfig</code>:</p> -<pre>export B2G_VALGRIND=1</pre> -<h2 id="Alterando_o_compilador_padrão"><a name="Changing_the_default_host_compiler"></a>Alterando o compilador padrão</h2> -<p>Em algumas distribuições recentes que usam o GCC 4.7 como compilador padrão você necessitará especificar uma versão anterior para poder compilar corretamente, para fazer isso inclua duas linhas ao arquivo<code>.userconfig</code> para configurar as variáveis <code>CC</code> e <code>CXX</code> alterando os compiladores C e C++ respectivamente. Por exemplo, para configurar o compilador GCC 4.6 no Ubuntu 12.10 use:</p> -<pre>export CC=gcc-4.6 -export CXX=g++-4.6 -</pre> -<p>Ou se você esetiver usando uma versão compilada a partir dos fontes forneça o caminho completo para os executáveis:</p> -<pre>export CC=/opt/gcc-4.6.4/bin/gcc -export CXX=/opt/gcc-4.6.4/bin/g++ -</pre> -<h2 id="Especificar_um_local_específico_para_a_árvore_de_objetos_do_Gecko">Especificar um local específico para a árvore de objetos do Gecko</h2> -<p>Uma vez que você altere a árvore dos fontes do Gecko e outras opções de compilação, você pode querer alterar o local onde esses objetos são armazendos (assim seus objetos para depuração ficarão em uma árvore diferente dos objetos da imagem sem depuração, por exemplo). Isso deve ser feito dessa forma:</p> -<pre>export GECKO_OBJDIR=${GECKO_PATH}/objdir-gonk-debug -</pre> -<p>Usando <code>${GECKO_PATH}</code> torna mais fácil alternar entre as diferentes árvores do Gecko (por exemplo: central, beta, aurora, etc).</p> -<h2 id="Mantendo_os_objetos_com_e_sem_depuração">Mantendo os objetos com e sem depuração</h2> -<p>Você pode usar o arquivo <code>.userconfig</code> para alternar entre imagens com e sem depuracão sem a necessidade de recompilar tudo a cada vez que quiser trocar.</p> -<dl> -</dl> -<pre class="brush:bash;">export B2G_DIR=${B2G_DIR:-$(cd $(dirname $0); pwd)} -echo "B2G_DIR = ${B2G_DIR}" - -export GECKO_PATH=${B2G_DIR}/mozilla-inbound -echo "GECKO_PATH = ${GECKO_PATH}" - -export B2G_DEBUG=1 -echo "B2G_DEBUG = ${B2G_DEBUG}" - -export GECKO_OBJDIR=${GECKO_PATH}/objdir-gonk -if [[ "${B2G_DEBUG}" != "0" ]]; then - export GECKO_OBJDIR=${GECKO_OBJDIR}-debug -fi -if [[ "${GECKO_PATH/*mozilla-inbound*/mozilla-inbound}" == "mozilla-inbound" ]]; then - export GECKO_OBJDIR=${GECKO_OBJDIR}-m-i -fi -echo "GECKO_OBJDIR = ${GECKO_OBJDIR}"</pre> -<p>O comando <code>echo</code> ajuda a lembrá-lo de suas configurações atuais. Para alterar entre imagens de depuração e release, basta alterar no valor de <code>B2G_DEBUG</code> na linha 7.</p> diff --git a/files/pt-br/archive/b2g_os/debugging/conectando_um_dispositivo_com_firefox_os_no_desktop/index.html b/files/pt-br/archive/b2g_os/debugging/conectando_um_dispositivo_com_firefox_os_no_desktop/index.html deleted file mode 100644 index 5226b777ed..0000000000 --- a/files/pt-br/archive/b2g_os/debugging/conectando_um_dispositivo_com_firefox_os_no_desktop/index.html +++ /dev/null @@ -1,38 +0,0 @@ ---- -title: Conectando um dispositivo com Firefox OS no desktop -slug: Archive/B2G_OS/Debugging/Conectando_um_dispositivo_com_Firefox_OS_no_desktop -translation_of: Archive/B2G_OS/Debugging/Connecting_a_Firefox_OS_device_to_the_desktop ---- -<div class="summary"> - <p><span class="seoSummary"><span id="result_box" lang="pt"><span class="hps">Este guia</span> <span class="hps">explica como conectar</span> <span class="hps">um dispositivo</span> <span class="hps">Firefox</span> <span class="hps">OS</span> <span class="hps">em seu desktop</span> <span class="hps">através do USB.</span></span></span></p> -</div> -<div class="note"> - <p><strong>Nota</strong>: Se você quiser apenas depurar aplicações em um dispositivo com Firefox OS e estiver executando uma versão do Firefox 1.2 ou superior. Sua melhor opção é usar o App Manager. Leia o artigo <a href="https://developer.mozilla.org/pt-BR/docs/Mozilla/Firefox_OS/Usando_o_App_Manager">Usando o App Manager</a> para mais detalhes. Se sua versão for inferior à 1.2, leia <a href="https://developer.mozilla.org/pt-BR/docs/Mozilla/Firefox_OS/Debugging/Configurando">Configurando o Firefox OS para depurar usando as ferramentas de desenvolvimento do Firefox</a> para aprender sobre o uso da depuração remota padrão.</p> -</div> -<h2 id="Configurar_o_dispositivo">Configurar o dispositivo</h2> -<p>No seu Firefox OS (<a href="/en-US/docs/Mozilla/Firefox_OS/Debugging/Developer_settings#The_Developer_panel">ver a ilustração</a>):</p> -<ol> - <li>Abrir o aplicativo Configurações, em seguida: <code>Informações</code> > <code>Mais Informações</code> > <code>Desenvolvedor</code>.</li> - <li>No menu de desenvolvedores, marque a opção: "Depuração Remota".</li> -</ol> -<h2 id="Configurar_o_Desktop">Configurar o Desktop</h2> -<p>Para conectar o dispositivo ao desktop, você precisa do <a class="external" href="http://developer.android.com/tools/help/adb.html" title="http://developer.android.com/tools/help/adb.html">Android Debug Bridge (adb)</a> instalado. Note que o <a href="https://developer.mozilla.org/en-US/docs/Tools/Firefox_OS_Simulator" title="/en-US/docs/Tools/Firefox_OS_Simulator">Simulador do Firefox OS</a> adiciona o pacote <em>adb</em> para você.</p> -<p>As instruções para a criação do seu ambiente de trabalho são específicas para o seu sistema operacional e são detalhadas no ponto 3 do <a class="external" href="https://developer.android.com/tools/device.html" title="https://developer.android.com/tools/device.html">"Configurando um Dispositivo para Desenvolvimento (em inglês)"</a> no site do desenvolvedor Android. Nós listamos algumas instruções adicionais abaixo.</p> -<h3 id="Instruções_Especiais_para_Mac_OS_X">Instruções Especiais para Mac OS X</h3> -<p>Se você estiver executando o Mac OS X, você deve ter baixado um pacote com um nome longo <code>adt-bundle-mac-x86_64-20130522</code>. Coloque essa pasta dentro de <em>Applications</em>, de moto que você tenha <code>/Applications/adt-bundle-mac-x86_64-20130522/</code> que contém dois diretórios: <code>eclipse</code> e <code>sdk</code>. Depois, você pode editar seu <code>~/.bashrc</code> e adicionar:</p> -<pre>export PATH="/Applications/adt-bundle-mac-x86_64-20130522/sdk/platform-tools:$PATH"</pre> -<p><span id="result_box" lang="pt"><span class="hps atn">(</span><span>Ele estará pronto</span> <span class="hps">na próxima vez</span> <span class="hps">que você iniciar o</span> <span class="hps">shell)</span><span>.</span> <span class="hps">Agora você pode</span> <span class="hps">digitar no</span> <span class="hps">CLI</span> <span class="hps">do</span> <span class="hps">shell:</span></span></p> -<pre>adb devices -</pre> -<p><span id="result_box" lang="pt"><span class="hps">e ele irá retornar</span> <span class="hps">uma lista de</span> <span class="hps">dispositivos conectados</span><span>, tais como:</span></span></p> -<pre>List of devices attached -AA:BB:A5:B5:AA:BB device</pre> -<h3 id="Instruções_Especiais_para_Linux">Instruções Especiais para Linux</h3> -<p>Se você estiver executando o Linux, a identificação do fornecedor para usar os dispositivos Geeksphone com Firefox OS é <code>05c6</code>, assim seu arquivo <code>/etc/udev/rules.d/51-android.rules</code> deverá conter uma entrada similar a:</p> -<pre class="bash" style="font-family: monospace;"><span style="color: #007800;">SUBSYSTEM</span>==”usb”, ATTR<span style="color: #7a0874; font-weight: bold;">{</span>idVendor<span style="color: #7a0874; font-weight: bold;">}</span>==”05c6”, <span style="color: #007800;">MODE</span>=”0666”, <span style="color: #007800;">GROUP</span>=”plugdev”</pre> -<h3 id="Instruções_Especiais_para_Windows">Instruções Especiais para Windows</h3> -<p>Você pode realizar download dos drivers para Windows através do site da fabricante <a href="http://www.geeksphone.com/downloads/fos/fos_usb_driver.zip" title="http://www.geeksphone.com/downloads/fos/fos_usb_driver.zip">Geeksphone</a>.</p> -<p>Se você utiliza o Windows 8, por padrão ele não permitirá a instalação de drivers sem assinatura. Para isso veja um tutorial em <a href="http://www.craftedge.com/tutorials/driver_install_windows8/driver_install_win8.html" title="http://www.craftedge.com/tutorials/driver_install_windows8/driver_install_win8.html">"<span id="result_box" lang="pt"><span class="hps">Como</span> <span class="hps">instalar</span> <span class="hps">um driver não assinado</span> <span class="hps">no Windows</span> <span class="hps">8 (em inglês)</span></span>"</a>.</p> -<p>Uma vez que o Windows XP Home Edition não possui o arquivo <code>tasklist.exe</code>, o simulador pode não detectar o dispositivo. Isso pode ser solucionado baixando esse arquivo do site <a href="http://www.computerhope.com/download/winxp.htm">ComputerHope</a> e colocá-lo na pasta <code>Windows\System32</code>.</p> -<h2 id="Verificando_sua_Configuração">Verificando sua Configuração</h2> -<p>Depois de ter seguido as instruções, conecte o dispositivo no computador usando o cabo USB, abra um prompt de comando e digite "<code>adb devices</code>" (<span id="result_box" lang="pt"><span>garantindo que</span> <span class="hps">adb</span> <span class="hps">está no seu caminho</span></span>). <span id="result_box" lang="pt"><span class="hps">Você deverá ver</span> <span class="hps">o seu dispositivo</span> <span class="hps">Firefox</span> <span class="hps">OS</span> <span class="hps">listado na saída</span><span>.</span></span></p> diff --git a/files/pt-br/archive/b2g_os/debugging/configurando/index.html b/files/pt-br/archive/b2g_os/debugging/configurando/index.html deleted file mode 100644 index 6d2b1f4d48..0000000000 --- a/files/pt-br/archive/b2g_os/debugging/configurando/index.html +++ /dev/null @@ -1,39 +0,0 @@ ---- -title: >- - Configurando o Firefox OS para depurar usando as ferramentas de - desenvolvimento do Firefox -slug: Archive/B2G_OS/Debugging/Configurando -translation_of: Archive/B2G_OS/Debugging/Setting_up ---- -<div class="summary"> - <p><span id="result_box" lang="pt"><span class="hps">O</span> <span class="hps">Firefox</span> <span class="hps">OS suporta</span> <span class="hps">o mesmo protocolo de</span> <span class="hps">depuração remota</span><span class="hps"> presente no Firefox</span> para<span class="hps"> Android.</span></span> <span id="result_box" lang="pt"><span class="hps">Isto significa que você</span> <span class="hps">pode usar as</span> <span class="hps">ferramentas de desenvolvimento do</span> <span class="hps">Firefox</span> <span class="hps">para depurar aplicativos</span> do <span class="hps">Gaia</span> <span class="hps">executado em um dispositivo</span> <span class="hps">Firefox</span> <span class="hps">OS</span> <span class="hps">ou simulador. <span id="result_box" lang="pt"><span class="hps">Para</span> <span class="hps">depurar</span> <span class="hps">o Firefox</span> <span class="hps">OS</span> <span class="hps">rodando no seu</span> <span class="hps">dispositivo ou no</span> <span class="hps">Firefox</span> <span class="hps">OS</span> <span class="hps">Simulator,</span> <span class="hps">você precisa usar</span> <span class="hps">o Firefox</span> <span class="hps">18</span> <span class="hps">ou superior</span> <span class="hps">e, além disso</span><span>, existem</span> <span class="hps">configurações</span> <span class="hps">que precisam ser</span> <span class="hps">alteradas, tanto</span> <span class="hps">na configuração do Firefox quanto </span><span class="hps">no dispositivo</span> <span class="hps">Firefox</span> <span class="hps">OS</span> <span class="hps">ou</span> <span class="hps">simulador</span><span>.</span></span></span></span></p> -</div> -<div class="note"> - <p><strong>Nota</strong>: <span id="result_box" lang="pt"><span class="hps">Se</span> <span class="hps">você deseja depurar</span> <span class="hps">aplicações</span> <span class="hps">em um dispositivo</span> com <span class="hps">Firefox</span> <span class="hps">OS</span><span class="hps"> em versão 1.2</span> <span class="hps">ou superior.</span><span> Sua melhor opção</span> <span class="hps">é usar o</span> </span><a href="/pt-BR/docs/Mozilla/Firefox_OS/Usando_o_App_Manager">App Manager</a>.</p> -</div> -<h2 id="Firefox">Firefox</h2> -<p><span id="result_box" lang="pt"><span class="hps">Você</span> <span class="hps">precisa ter certeza de</span> <span class="hps">que você tem</span> <span class="hps">uma versão do</span> <span class="hps">Firefox</span> <span class="hps">18</span> <span class="hps">ou superior</span><span>, a fim de</span> <span class="hps">ter suporte</span> <span class="hps">à depuração remota</span><span>.</span> <span class="hps">Se você</span> <span class="hps">ainda não tem</span> <span class="hps">uma versão</span> <span class="hps">recente</span><span>, baixe</span> <span class="hps">a última versão</span> </span><a href="http://nightly.mozilla.org/" title="http://nightly.mozilla.org/">Nightly</a> <span id="result_box" lang="pt"><span class="hps">para obter</span> <span class="hps">acesso à todos os</span> <span class="hps">recursos mais recentes.</span></span></p> -<p>Uma vez que você esteja executando uma versão apropriada do Firefox em seu computador, digite <code>about:config</code> na barra de endereços, aceite o termo e pesquise por <code>devtools.debugger.remote-enabled</code> em seguida altere o seu valor para <code>true</code>. Feito isso, você deve reiniciar o seu navegador para que a depuração remota seja de fato habilitada. Após reiniciar o Firefox, no menu Desenvolvedor Web você verá uma nova opção, <code>Ferramentas</code> > <code>Conectar</code>.</p> -<h2 id="Habilitando_a_depuração">Habilitando a depuração</h2> -<p><span id="result_box" lang="pt"><span class="hps">Ao usar o</span> <a href="/pt-BR/docs/Tools/Simulador_Firefox_OS"><span class="hps">Firefox</span> <span class="hps">OS</span> <span class="hps">Simulator</span></a> <span class="hps">(</span><span class="hps">B2G</span> <span class="hps">Desktop)</span><span>, a configuração</span> para <span class="hps">depuração</span> <span class="hps">é muito fácil.</span> <span class="hps">Você não</span> <span class="hps">precisa fazer</span> <span class="hps">encaminhamento de porta</span><span>, como você faz</span> <span class="hps">quando a depuração</span> é <span class="hps">em um dispositivo</span> <span class="hps">físico.</span> </span>Basta abrir o aplicativo Configurações, em seguida: <code>Informações</code> > <code>Mais Informações</code> > <code>Desenvolvedor</code> ative <em><code>Depuração remota</code></em>.</p> -<div class="warning"> - <p>Nota: Isso não funciona mais em dispositivos com Firefox OS desde 10 de Janeiro de 2013. <span id="result_box" lang="pt"><span class="hps">Eventualmente, haverá</span> <span class="hps">uma maneira de</span> <span class="hps">construir a sua própria</span> <span class="hps">compilação com</span> <span class="hps">ele</span> <span class="hps atn">re-</span><span>ativado,</span> <span class="hps">mas isso</span> <span class="hps">ainda não existe</span><span>.</span> <span class="hps">Este documento será</span> <span class="hps">atualizado assim que </span><span class="hps">acontecer.</span> <span class="hps">Além disso,</span> <span class="hps">a preferência</span> <span class="hps">para desligar</span> <span class="hps">o suporte</span> <span class="hps">"out-of</span><span>-process"</span> <span class="hps">foi removido.</span> <span class="hps">Por enquanto</span><span>, você</span> <span class="hps">precisa fazer a sua</span> <span class="hps">depuração no</span> <span class="hps">Firefox</span> <span class="hps">OS</span> <span class="hps">Simulator.</span></span></p> -</div> -<p>Se estiver usando um dispositivo com Firefox OS, abra as <a href="/pt-BR/docs/Mozilla/Firefox_OS/Debugging/Configura%C3%A7%C3%B5es_do_Desenvolvedor">Configurações do Desenvolvedor</a> e:</p> -<ul> - <li>Ativar a <em>Depuração Remota</em>.</li> - <li><span id="result_box" lang="pt"><span class="hps">Desativar o suporte<em> Out-of-process</em></span><span>,</span> <span class="hps">até</span> {{bug(797627)}}<span class="hps"> é fixo.</span> <span class="hps">Se não </span><span class="hps">fazer isto,</span> <span class="hps">apenas</span> <span class="hps">os scripts</span> <span class="hps">do sistema poderão ser</span> <span class="hps">depurados.</span></span></li> -</ul> -<div class="note"> - <p><strong>Nota:</strong> <span id="result_box" lang="pt"><span class="hps">Se você</span> aplicar as definições de fábrica n<span class="hps">o dispositivo,</span> <span class="hps">você terá que</span> <span class="hps">refazer</span> <span class="hps">essas alterações de configuração</span><span>.</span></span></p> -</div> -<p><span class="short_text" id="result_box" lang="pt"><span class="hps">Agora</span> <span class="hps">você está pronto para</span> <span class="hps">usar o <a href="/pt-BR/docs/Tools/Depurador">depurador</a></span><span>!</span></span></p> -<h2 id="Habilitando_o_log_do_console_em_um_dispositivo_Firefox_OS"><span id="result_box" lang="pt"><span class="hps">Habilitando o log</span> <span class="hps">do console</span> <span class="hps">em um dispositivo</span> <span class="hps">Firefox</span> <span class="hps">OS</span></span></h2> -<p><span id="result_box" lang="pt"><span class="hps">Na</span> <span class="hps">produção de</span> <span class="hps">versões do Firefox</span> <span class="hps">OS</span><span>, o log do</span> <span class="hps atn">console (</span><span>por exemplo</span> <span>{{domxref("console.log()")}}) é</span> <span class="hps">desativado por padrão.</span> <span class="hps">Para</span> <span class="hps">ativá-lo,</span> <span class="hps">vá para <a href="https://developer.mozilla.org/pt-BR/docs/Mozilla/Firefox_OS/Debugging/Configura%C3%A7%C3%B5es_do_Desenvolvedor">Configurações</a></span><a href="/pt-BR/docs/Mozilla/Firefox_OS/Debugging/Configura%C3%A7%C3%B5es_do_Desenvolvedor"> <span class="hps">do Desenvolvedor</span></a> <span class="hps">no seu dispositivo</span> <span class="hps">e</span> <span class="hps">habilite</span> <em>Console Ativado</em>.</span></p> -<p>Nota: Leia o artigo <a href="/en-US/docs/Mozilla/Firefox_OS/Debugging/On-device_console_logging">On-device console logging</a> para mais detalhes sobre como usar o console logging on Firefox OS.</p> -<h2 id="Veja_também">Veja também</h2> -<ul> - <li><a href="/pt-BR/docs/Mozilla/Firefox_OS/Debugging" title="/en-US/docs/Mozilla/Firefox_OS/Debugging">Depurando no Firefox OS</a></li> - <li><a href="/pt-BR/docs/Tools/Depurador" title="/en-US/docs/Tools/Debugger">Depurador</a></li> - <li><a href="/pt-BR/docs/Mozilla/Firefox_OS/Debugging/Configura%C3%A7%C3%B5es_do_Desenvolvedor" title="/en-US/docs/Mozilla/Firefox_OS/Debugging/Developer_settings">Configurações do Desenvolvedor para Firefox OS</a></li> -</ul> diff --git a/files/pt-br/archive/b2g_os/debugging/configurações_do_desenvolvedor/index.html b/files/pt-br/archive/b2g_os/debugging/configurações_do_desenvolvedor/index.html deleted file mode 100644 index de82a2026d..0000000000 --- a/files/pt-br/archive/b2g_os/debugging/configurações_do_desenvolvedor/index.html +++ /dev/null @@ -1,164 +0,0 @@ ---- -title: Configurações do Desenvolvedor para Firefox OS -slug: Archive/B2G_OS/Debugging/Configurações_do_Desenvolvedor -translation_of: Archive/B2G_OS/Debugging/Developer_settings ---- -<div class="summary"> - <p><span class="seoSummary">O painel do desenvolvedor fica dentro do aplicativo de configurações do Firefox OS. Este painel oferece uma série de opções que podem tornar <span id="result_box" lang="pt"><span class="hps gt-trans-draggable">a depuração de sua</span> <span class="hps gt-trans-draggable">aplicação web</span> <span class="hps gt-trans-draggable">no</span> <span class="hps gt-trans-draggable">Firefox</span> <span class="hps gt-trans-draggable">OS</span> <span class="hps gt-trans-draggable">mais fácil</span></span>.</span> <span id="result_box" lang="pt"><span class="hps">Este artigo aborda</span> <span class="hps">as opções disponíveis</span> <span class="hps">e</span> <span class="hps">como fazer</span> <span class="hps">uso deles.</span></span></p> -</div> -<p><span id="result_box" lang="pt"><span class="hps">O</span> <span class="hps">painel de configurações</span> <span class="hps">para as opções de</span> <span class="hps">desenvolvedor</span> <span class="hps">é intencionalmente</span> <span class="hps">"trancando a sete chaves"</span> <span class="hps">para evitar que</span> <span class="hps">os usuários finais</span> <span class="hps">que não têm necessidade</span> <span class="hps">de fazer uso dessas opções</span><span>, inadvertidamente,</span> <span class="hps">realizem a ativação de opções</span> <span class="hps">que farão o </span><span class="hps">dispositivo</span> <span class="hps">funcionar mais</span> <span class="hps">lentamente</span> <span class="hps">ou adicionar</span> <span class="hps">efeitos visuais</span> <span class="hps">estranhos</span> <span class="hps">as suas telas</span><span class="hps">.</span> <span class="hps">O painel</span> <span class="hps">é algo como</span> <span class="hps atn">isto (</span><span>o</span> <span class="hps">que se segue é</span> uma captura de tela retirada de um Geeksphone Keon com Firefox OS 2.0 em abril de 2014, a sua versão pode apresentar algumas diferenças<span class="hps">):</span></span></p> -<p><img alt="" src="https://mdn.mozillademos.org/files/7801/developermenu-short.png" style="width: 320px; height: 480px; display: block; margin: 0px auto;"></p> -<p><span id="result_box" lang="pt"><span class="hps">O painel de</span> <span class="hps">desenvolvedor</span> <span class="hps">é acessado</span> <span class="hps">da seguinte forma:</span></span></p> -<ul> - <li>Em versões inferiores ao Firefox OS 1.4, você pode abrir o painel do desenvolvedor via <em>Configurações > Informações do Dispositivo > Mais Informações > Desenvolvedor</em>.</li> - <li>Em versões superiores ao Firefox 1.4, você pode abrir o painel do desenvolvedor via <em>Configurações > Informações do Dispositivo > Mais Informações > <span class="short_text" id="result_box" lang="pt"><span class="hps">Marque a caixa</span> <span class="hps">de menu</span> <span class="hps">desenvolvedor</span></span></em>. Feito isso, você pode acessar o painel do desenvolvedor via <em>Configurações > Desenvolvedor</em>.</li> -</ul> -<p><span id="result_box" lang="pt"><span class="hps">As</span> <span class="hps">seções a seguir abordam</span> <span class="hps">cada uma das</span> <span class="hps">opções presentes no painel do desenvolvedor</span><span class="hps">.</span> <span class="hps">Explicando</span> <span class="hps">o que elas fazem</span> <span class="hps">e descrevendo suas utilidade</span><span>s.</span></span></p> -<div class="note"> - <p><strong>Nota do tradutor</strong>: Nem todas as opções de configuração estão traduzidas na versão em Português-BR dos dispositivos. Os títulos das opções a seguir estão de acordo com os títulos encontrados no dispostivo.</p> -</div> -<h2 id="Configurações_das_ferramentas_de_desenvolvimento">Configurações das ferramentas de desenvolvimento</h2> -<h3 id="Depurando_via_USB"><a name="Debugging_via_USB"></a>Depurando via USB</h3> -<p><a name="Remote_debugging"></a>A opção "Depuração Remota" habilita o suporte para <a href="https://developer.mozilla.org/pt-BR/docs/Tools/Debugger" title="/en-US/docs/Tools/Debugger">depurar remotamente </a>seu dispositivo Firefox OS. Isso também habilitar os comandos <a href="https://developer.mozilla.org/pt-BR/Firefox_OS/Debugging/Installing_ADB">ADB</a><strong>.</strong> Nas versões anteriores à 1.4 existe somente um checkbox, no Firefox 1.4 existem três opções disponíves em uma select box:</p> -<ul> - <li>Desabilitado: Depuração remota desligada (padrão)</li> - <li>Somente ADB: Possibilita acesso ao dispositivo pelo ADB.</li> - <li>ADB e Devtools: Possibilita acesso ao dispositivo pelo ADB e pelas ferramentas de desenvolvimento do Firefox como o <a href="https://developer.mozilla.org/pt-BR/Firefox_OS/Using_the_App_Manager">App Manager</a>.</li> -</ul> -<h3 id="HUD_(Head_Up_Display)_do_desenvolvedor">HUD (<a href="http://pt.wikipedia.org/wiki/Head_up_display">Head Up Display</a>) do desenvolvedor</h3> -<p>Disponível nas versões Firefox OS 1.4 e posteriores.</p> -<p><img alt="" src="https://mdn.mozillademos.org/files/7803/developerhud-new.png" style="width: 320px; height: 480px; margin: 0px auto; display: block;"></p> -<p>Existe um checkbox que você pode usar para habilitar ou desabilitar o HUD do Desenvolvedor (uma seção no tipo da Interface do Usuário do Firefox OS para mostrar informações para o desenvolvedor). São cinco checkboxes a serem habilitados ou desabilitados:</p> -<ul> - <li><strong>L<strong>og changes in adb</strong></strong>: Habilita o log de alterações do dispositivo no adb logcat.</li> - <li><strong>Warnings</strong>: Mostra avisos do console.</li> - <li><strong>Errors</strong>: Mostra erros do console.</li> - <li><strong>Security issues</strong>: Mostra potenciais falhas de segurança.</li> - <li><strong>Reflows</strong>: Mostra refluxos quando ocorrem.</li> - <li><strong><a href="/pt-BR/Firefox_OS/Platform/Architecture#Jank">Jank</a>/Jank threshold</strong>: Notifica o usuário sobre ocorrências de alto <em>jank</em> (demora visível na renderização) o valor indica o limiar para o qual pode ser customizado.</li> - <li><strong>Frames per second</strong>: Mostra frames por segundo como explicado na seção {{ anch("Frames_per_second") }}.</li> - <li><strong>Time to load</strong>: Mostra o tempo para carregar a informação como explicado na seção {{ anch("Time_to_load") }}.</li> - <li><strong>App memory</strong>: Mostra o quanto de memória o aplicativo está utilizando, e possibilita habilitar ou desabilitar os diferentes fatores de uso da memória. Veja a seção {{ anch("App_memory") }} para maiores detalhes.</li> -</ul> -<h4 id="Frames_per_second">Frames per second</h4> -<p>Ao habilitar essa opção serão apresentados três números no canto superior esquerdo da tela do Firefox OX, os valores são a média dos últimos resultados dentro de uma janela de tempo, podem ser considerados valores instantâneos com uma boa margem de erro. </p> -<ul> - <li>O número da esquerda é a <strong>taxa de composição (<em>composition rate</em>)</strong>: número estimado de vezes por segundo que o Firefox OS desenha frames no <em>framebuffer</em> do hardware. É uma estimativa da percepção do usuário do <em>framerate</em>, e somente uma estimativa. Por exemplo, o contador pode reportar 60 composições por segundo mesmo sem a tela ter sido alterada. Nesse caso a percepção do usuário poderia ser 0. Porem, quando utilizado com esta ressalva e corroborado com outras medidas, o monitor pode ser uma ferramenta útil e simples.</li> - <li>O número do meio é a <strong>taxa de transação da camada (<em>layer transaction rate</em></strong>): número estimado de vezes por segundo que o processo monta a tela e notifica o compositor. Esse número é mais útil para os engenheiros da plataforma Gecko, e deve ser menor ou igual à taxa de composição apresentado à esquerda.</li> - <li>O número à direita é uma medida do número de pixels desenhados como um percentual do tamanho da tela. Por exemplo, o número 273 indica que a tela é escrita 2,73 vezes. Idealmente esse número deve estar o mais próximo de 100.</li> -</ul> -<p><img alt="A screenshot of Firefox OS, showing three numbers in the top left hand corner that are measurements of app framerate." src="https://mdn.mozillademos.org/files/6889/framerate-fxos.jpg" style="width: 357px; height: 640px; display: block; margin: 0px auto;"></p> -<h4 id="Time_to_load">Time to load</h4> -<p>Firefox OS também tem uma ferramenta que ajuda a medir o tempo de inicialização, especificamente o tempo do "<em>first paint</em>". O valor apresentado pela ferramenta — no canto superior direito da tela do Firefox OS — é o tempo decorrido (em milisegundos) entre o lançamento da aplicação mais recente e o momento estimado de quando a aplicação foi desenhada na Interface do Usuário. Esse número é aproximado ao real tempo de "<em>first paint</em>", e é particularmente subestimada. Porem, ao baixar este número quase sempre indica no tempo de inicialização real, por isso pode ser útil para medir melhorias na otimização.</p> -<p><img alt="A screenshot of Firefox OS, showing a number in the top right hand corner that is a measurement of the current app startup time, in milliseconds." src="https://mdn.mozillademos.org/files/6891/startup-time-fxos.jpg" style="width: 378px; height: 640px; display: block; margin: 0px auto;"></p> -<h4 id="App_memory">App memory</h4> -<p>Mostra o quanto de memória o aplicativo está usando e possibilita habilitar ou desabilitar os diferentes itens que usam memória para mostrar o quanto de memória cada item desses usa no aplicativo corrente. Por exemplo, de acordo com a configuração apresentada na tela abaixo só será mostrado o uso de memória por objetos JS. O número no canto inferior direito indica que o aplicativo de configuração está usando 414.778KB para objetos JS.</p> -<p><img alt="" src="https://mdn.mozillademos.org/files/7731/memory-usage.png" style="width: 320px; height: 480px; display: block; margin: 0px auto;"></p> -<h3 id="Piscar_área_desenhada">Piscar área desenhada</h3> -<p>Nesse modo, toda vez que uma região da tela é desenhada pelo Gecko, acontece uma piscada de uma cor randômica translúcida sobre a região desenhada. Idealmente, somente as partes da tela que mudaram visualmente piscarão com a nova cor. Mas algumas vezes uma área maior é necessária ser redesenhada, causando uma piscada em áreas maiores. Esse sintoma pode indicar que o código da aplicação está forçando uma atualização da tela maior que o necessário. Isso também pode indicar um bug no próprio Gecko.</p> -<p><img alt="A screenshot of Firefox OS with a number of transparent overlays, showing the parts of the screen repainted with each new animation frame." src="https://mdn.mozillademos.org/files/6893/paint-update-fxos.jpg" style="width: 378px; height: 640px; display: block; margin: 0px auto;"></p> -<h2 id="Configurações_gráficas">Configurações gráficas</h2> -<h3 id="Habilitar_APZ_para_todo_conteúdo_(era_Async_PanZoom)">Habilitar APZ para todo conteúdo (era Async Pan/Zoom)</h3> -<p>Quando habilitado, o módulo Async Pan/Zoom permite pan e zoom assíncrono, em outra thread, com algumas diferenças perceptíveis no comportamento de renderização. Para saber mais, leia o artigo <a href="https://wiki.mozilla.org/Platform/GFX/APZ">MozillaWiki APZ</a>.</p> -<h3 id="Tiling_(era_Layers_Enable_tiles)">Tiling (era Layers: Enable tiles)</h3> -<p>Introduzido no Firefox OS 1.4, esse recurso possibilita o desenho do conteúdo na tela em pedaços pequenos ("<em>tiles</em>") ao invés de desenhar a tela inteira de uma vez. Isso é útil para a área de QA (Quality Assurance) da plataforma envolvendo a redução de checkerboarding e encontrando janalas de regressão.</p> -<h3 id="Simple_tiling_(era_Layers_Simple_tiles)">Simple tiling (era Layers: Simple tiles)</h3> -<p>Inverte entre as duas implementações diferentes do desenho de conteúdo descritos na seção acima.</p> -<h3 id="Hardware_composer_(era_Enable_hardware_compositing)">Hardware composer (era Enable hardware compositing)</h3> -<p>Quando habilitado, faz o dispositivo usar o <a href="https://source.android.com/devices/graphics.html#hwc">Hardware Composer</a> para compor elementos visuais (superfícies) na tela.</p> -<h3 id="Draw_tile_borders_(era_Layers_Draw_tile_borders)">Draw tile borders (era Layers: Draw tile borders)</h3> -<p>Muito similar à opção {{ anch("Draw layer borders") }}, a diferença é que nessa opção são desenhadas bordas para os "tiles" individuais bem como as bordas ao redor das camadas.</p> -<h3 id="Mostrar_layers">Mostrar layers</h3> -<p>Desenha uma borda brilhande e colorida ao redor das diferentes camadas desenhadas na tela — bom para diagnosticar problemas de layout.</p> -<p><img alt="A screenshot from Firefox OS showing an opened select form with the draw layers borders option enabled, resulting in colored borders being drawn on all the different rendered layers." src="https://mdn.mozillademos.org/files/6897/paint-layers-borders.png" style="width: 320px; height: 480px; display: block; margin: 0px auto;"></p> -<h3 id="Dump_layers_tree">Dump layers tree</h3> -<p>Essa opção faz uma cópia da árvore de camadas do compositor a ser enviado para o logcat a cada camada (layer) composto na tela. Isso é útil para verificar a performance gráfica da plataforma.</p> -<h3 id="Cards_View_Cópia_de_tela">Cards View: Cópia de tela</h3> -<p>Quando habilitado, cópias de tela serão feitas quando o usuário entrar na visão de cartões para visualizar os aplicativos abertos. Se desabilitado, ícones das aplicações serão mostrados no centro de cartões em branco durante a visão de cartões.</p> -<h2 id="Configurações_do_gerenciamento_de_janelas">Configurações do gerenciamento de janelas</h2> -<h3 id="Botão_Home_por_Software"><a name="Enable_software_home_button"></a>Botão Home por Software</h3> -<p>Essa opção cria um botão Home por software que possui a mesma funcionalidade que o seu equivalente externo. A intenção é o uso em dispositivo que provavelmente não venham com botões externos, como em tablets.</p> -<h3 id="Gesto_para_tela_de_início_ativado">Gesto para tela de início ativado</h3> -<p>Ao habilitar essa opção o usuário pode arrastar o dedo do centro para fora da tela para abrir a tela de início. Isso fornece a mesma funcionalidade que o botão externo caso ele não esteja disponível.</p> -<h3 id="Gesto_de_canto">Gesto de canto</h3> -<p>Ao habilitar essa opção o usuário pode arrastar o dedo para esquerda ou direita a partir dos cantos para o centro para navegar entre as páginas (como acontece nas páginas do seu navegador, ou visões dentro de um aplicativo). Basicamente funciona como a barra de navegacão do Firefox.</p> -<h3 id="Continuous_transition">Continuous transition</h3> -<p>Possibilita você decidir se o teclado abra imediatamente ou continuamente (com uma transição). Desabilitar os efeitos da transição é útil para equipamentos low-end uma vez que pode degradar a performance.</p> -<h3 id="App_transition">App transition</h3> -<p>Habilita ou desabilita transições ao iniciar ou encerrar um aplicativo. Sem a transição os aplicativos serão apresentados imediatamente sem uma animação suave bem como o teclado. Assim como o item anterior, ao desabilitar os dispositivos low-end terão uma performance melhor.</p> -<h3 id="App_suspending">App suspending</h3> -<p>Se habilitado, quando um aplicativo for encerrado em segundo plano, ele permanecerá no histórico e será reaberto quando você abrí-lo na tela inicial ou visão de cartões. Se desabilitado os aplicativos não serão mantidos no histórico ou na visão de cartões.</p> -<h2 id="Configuração_de_depuração">Configuração de depuração</h2> -<h3 id="Reg._animaçõe_lentas">Reg. animaçõe lentas</h3> -<p>Essa ferramenta tenta ajudar aos desenvolvedores entenderem porque as animações não são transferidas ao compositos para serem executadas o mais eficientemente possível. Registra "bugs" como tentar animar elementos que são muito grandes, ou tentar animar propriedades CSS que ão podem ser transferidas. As mensagens que você receberá no dispositivo são semelhantes a essas:</p> -<pre class="language-html">I/Gecko ( 5644): Performance warning: Async animation disabled because frame size (1280, 410) is bigger than the viewport (360, 518) [div with id 'views'] -</pre> -<h3 id="Saída_Wi-Fi_para_adb">Saída Wi-Fi para adb</h3> -<p>Ao habilitar essa opção informações sobre Wi-Fi são incluídas nos logs do adb (logs de erro podem ser acessados pelo console usando <code>adb logcat | grep "Error"</code>)</p> -<h3 id="Bluetooth_output_in_adb">Bluetooth output in adb</h3> -<p>Ao habilitar essa opção informações sobre Bluetooth são incluídas nos logs do adb (logs de erro podem ser acessados pelo console usando <code>adb logcat | grep "Error"</code>)</p> -<h3 id="Console_ativado">Console ativado</h3> -<p>Quando habilitado, essa opção permite usar o <a href="https://developer.mozilla.org/pt-BR/docs/Mozilla/Firefox_OS/Debugging/Using_the_Remote_Web_Console" title="/en-US/docs/Mozilla/Firefox_OS/Debugging/Using_the_Remote_Web_Console">Web Console</a> no Firefox para acessa remotamente o console do dispositivo, sem essa opção habilitada, a função {{domxref("console.log()")}} não faz nada.</p> -<h3 id="Gaia_debug_traces">Gaia debug traces</h3> -<p>Isso habilita diretamente DEBUG traces no Gaia; veja {{ bug("881672") }} para mais detalhes.</p> -<div class="note"> - <p><strong>Note</strong>: Infelizmente, nem todo aplicativo suporta esse mecanismo para gravar seu log de depuração. Ao invés disso, eles controlam a opção "DEBUG" diretamente no código, assm, ao habilitar essa opção não há como garantir que serão gerados todos os logs de depuração.</p> -</div> -<h3 id="Show_accessibility_settings">Show accessibility settings</h3> -<p>Habilitar o menu de configurações de acessibilidade, que poderá ser acessado em <em>Configurações > Accessibilidade</em>. As opções são as seguintes:</p> -<h4 id="Leitor_de_Tela">Leitor de Tela</h4> -<p>Essa opção transforma o Firefox OS em um leitor de tela. Atualmente em um estágio inicial ele altera o modo que os eventos de toque funcionam. Quando o leitor de tela está habilitado você pode interagir com a tela das seguintes maneiras:</p> -<ul> - <li>Toque em qualquer lugar para transferir o foco para o aplicativo e seja avisado do que ele é. A notificação é feita tanto sonramente como por um retângulo ao redor do item selecionado. Um duplo toque em qualquer lugar da tela (dois toques numa rápida sucessão) ativa o ítem rodeado pelo retângulo.</li> - <li>Arraste o dedo da esquerda para a direita sequencialmente através dos itens na tela faz com que sejam movidos da esquerda para a direita, se for de cima para baixo, inclui um scroll vertical is houver mais itens a serem mostrados, e você será alertado do nome de cada item sonoramente e pelo retângulo. Da direita para a esquerda move os itens na ordem reversa. Novamente um toque duplo executa o item selecionado.</li> - <li>Arraste com dois dedos — esquerda, direita, para cima ou para baixo — para rolar a tela na direção desejada. Isso é equivalente a arrastar um dedo através da tela quando o leitor de tela não está ativo. Por exemplo, um arrasto com dois dedos para esquerda na tela inicial leva para a segunda tela, o mesmo movimento para cima rolará a tela para mostrar mais conteúdo.</li> -</ul> -<div class="note"> - <p><strong>Nota</strong>: Se o leitor de tela estiver funcionando e você deseja desabilitá-lo, você deve navegar até as configurações através desses novos gestos e dar um toque duplo no checkbox uma vez para desligá-lo. O que vai restaurar o comportamento da tela sensível ao toque ao seu comportamento padrão.</p> -</div> -<p><strong>Nota</strong>: No Firefox 1.4 e superior, existe uma maneira rápida para ligar e desligar o leitor de tela. Ele o instruirá para que seja executada a mesma ação novamente (botões volume: cima, baixo, cima, baixo, cima, baixo) para ligar ou desligar.Assim, você pode testar sua aplicação web para acessibilidade sem ter que navegar no menu de preferências a cada vez que quiser alterá-la.</p> -<h4 id="Speech_volume">Speech volume</h4> -<p>Controle deslizante do volume da voz.</p> -<h4 id="Speech_rate">Speech rate</h4> -<p>Controle deslizante da velocidade da voz.</p> -<h3 id="Abrir_a_primeira_utilização">Abrir a primeira utilização</h3> -<p>Executa o programa de primeira configuração, que nada mais é que conduz o usuário à configurar as opções básicas e um tutorial. É útil quando você quer testar esse processo, ou se você quer reconfigurar seu dispositivo.</p> -<h2 id="Configurações_obsoletas">Configurações obsoletas</h2> -<p>Essa seção apresenta as configurações que não estão mais disponíveis, ou são apresentadas de uma forma diferente, mas pode ser interessante se estiver executando uma versão antiga do Firefox OS.</p> -<h3 id="Accessibilidade">Accessibilidade</h3> -<p>Nas versões anteriores à 1.4, essa opção apresentava as configurações explicadas na seção {{ anch("Show_accessibility_settings") }}.</p> -<h3 id="Grid">Grid</h3> -<p>Quando habilitada, a tela do Firefox era sobreposta por um grid padrão que ajudava o posicionamento e alinhamento dos itens. Abaixo um exemplo da tela com o grid ativado.</p> -<p><img alt="" src="https://mdn.mozillademos.org/files/5071/Grid.png" style="width: 320px; height: 480px; display: block; margin: 0px auto;"></p> -<p>As linhas mais largas são separadas por 32 pixels, tanto horizontal quanto verticalmente.</p> -<h3 id="Show_frames_per_second">Show frames per second</h3> -<p>Nas versões anteriores à 1.4 ao habilitar essa opção mostrava os frames por segundo como explicado na seção {{ anch("Frames_per_second") }}.</p> -<h3 id="Show_time_to_load">Show time to load</h3> -<p>Nas versões anteriores à 1.4 ao habilitar essa opção mostrava o tempo para carregar a informação como explicado na seção {{ anch("Time_to_load") }} .</p> -<h3 id="Rocketbar_enabled">Rocketbar enabled</h3> -<p>Nas versões anteriores à 1.4, essa opção habilita o novo <a href="https://groups.google.com/forum/#%21topic/mozilla.dev.gaia/Nlfbrq1KMP0">Firefox Rocketbar</a> no seu dispositivo, que fornece uma nova forma de trocar entre aplicativos, procurar e mais. Você pode encontrar um ícono no canto superior esquerdo do dispositivo e o RocketBar pode executá-lo arrastando do canto superior esquerdo para o canto inferior esquerdo.</p> -<div class="note"> - <p><strong>Nota</strong>: Nas novas versões do Firefox OS, Rocketbar é habilitado automaticamente e não pode ser desabilitado.</p> -</div> -<h3 id="Contacts_debugging_output_in_adb">Contacts debugging output in adb</h3> -<p>Ao habilitar essa opção informações sobre contatos são adicionadas ao log do adb (logs de erro podem ser acessados digitando <code>adb logcat | grep "Error"</code> no terminal.)</p> -<h3 id="Progressive_paint_(era_Layers_Progressive_paint)">Progressive paint (era Layers: Progressive paint)</h3> -<p>Essa opção foi introduzida para ajudar a depuração do <a href="https://wiki.mozilla.org/Platform/GFX/APZ">módulo Async Panning/Zoom module</a> (APZ) durante sua implementação. Agora que a implementação está pronta, essa opção está obsoleta e será removida das próximas versões (veja {{ Bug("1003228") }}).</p> -<h3 id="Displayport_Heuristics">Displayport Heuristics</h3> -<ul> - <li>Default</li> - <li>Center displayport</li> - <li>Assume perfect paints</li> - <li>Taller displayport</li> - <li>Faster paints</li> - <li>No checkerboarding</li> -</ul> -<p>Essas opções foram introduzidas para ajudar a depuração do <a href="https://wiki.mozilla.org/Platform/GFX/APZ">Async Panning/Zoom module</a> (APZ) durante sua implementação especificamente para possibilitar a equipe de QA testar diferentes heurísticas para verificar qual resultado era o melhor. gora que a implementação está pronta, essa opção está obsoleta e será removida das próximas versões (veja {{ Bug("1003228") }}).</p> -<h2 id="Keyboard_layouts">Keyboard layouts</h2> -<p>Adicionalmente às opções específicas para desenvolvedores as versões anteriores à 1.4 apresentava opções de teclado. Isso permitia a realização de testes dos métodos de entrada do idioma chinês:</p> -<p><img alt="" src="https://mdn.mozillademos.org/files/5079/InputMethods.png"></p> -<p>No Firefox 1.4, essas opções foram removidas. Isso é porque a implementação de layout de teclados chineses (zhuyin and pinyin) não terminaram.</p> -<div class="note"> - <p><strong>Note</strong>: Para outros layoutes de teclado que ainda estão em desenvolvimento, como o japonês por exemplo, existe uma opção em tempo de compilação para incluí-los na imagem.</p> -</div> -<p> </p> diff --git a/files/pt-br/archive/b2g_os/debugging/debugging_b2g_using_valgrind/index.html b/files/pt-br/archive/b2g_os/debugging/debugging_b2g_using_valgrind/index.html deleted file mode 100644 index 78082a8793..0000000000 --- a/files/pt-br/archive/b2g_os/debugging/debugging_b2g_using_valgrind/index.html +++ /dev/null @@ -1,88 +0,0 @@ ---- -title: Depurando o B2G usando Valgrind -slug: Archive/B2G_OS/Debugging/Debugging_B2G_using_valgrind -translation_of: Archive/B2G_OS/Debugging/Debugging_B2G_using_valgrind ---- -<p><span style="position: fixed ! important; top: 0px ! important; left: 0px ! important; font-size: xx-small ! important; line-height: 130% ! important; border-color: black ! important; border-width: 1px ! important; border-style: solid ! important; padding: 0px 2px ! important; background-color: rgb(214, 227, 254) ! important; display: none;">S</span></p> -<div class="summary"> - <p><a href="http://valgrind.org">Valgrind<span style="font-family: arial,sans-serif; font-size: xx-small ! important; line-height: 130% ! important; border-width: 1px ! important; border-style: solid ! important; padding: 0px 2px ! important; margin-left: 2px; max-width: 20px; overflow: visible ! important; float: none ! important; display: none;">DSS</span></a> dá acesso aos desenvolvedores à informações sobre alocação de memória, threads/processos, e outras coisas relevantes à performance do programa. Está incluído na árvore do Firefox OS, e pode ser executado por telefones que tem os recursos adequados. Esse artigo explica como usá-lo.</p> -</div> -<h2 id="Requisitos">Requisitos</h2> -<p>Antes de executar o Valgrind no Firefox OS, é recomendado que os desenvolvedores familiarizem-se com o artigo <a href="/pt-BR/docs/Debugging_Mozilla_with_Valgrind">Depurando Mozilla com Valgrind<span style="font-family: arial,sans-serif; font-size: xx-small ! important; line-height: 130% ! important; border-width: 1px ! important; border-style: solid ! important; padding: 0px 2px ! important; margin-left: 2px; max-width: 20px; overflow: visible ! important; float: none ! important; display: none;">DSD</span><span style="font-family: arial,sans-serif; font-size: xx-small ! important; line-height: 130% ! important; border-width: 1px ! important; border-style: solid ! important; padding: 0px 2px ! important; margin-left: 2px; max-width: 20px; overflow: visible ! important; float: none ! important; display: none;">DSD</span><span style="font-family: arial,sans-serif; font-size: xx-small ! important; line-height: 130% ! important; border-width: 1px ! important; border-style: solid ! important; padding: 0px 2px ! important; margin-left: 2px; max-width: 20px; overflow: visible ! important; float: none ! important; display: none;">DSG</span></a>. Muitas das informações desse artigo são relevantes ao executar o Valgrind no Firefox OS, embora muitas das etapas de compilação e linhas de comando são atendidos pela imagem Firefox OS e os scripts de execução.</p> -<p>Para rodar o Valgrind no telefone com Firefox OS, é necessário um aparelho com especificações maiores que o normal. Valgrind é um recurso que consome muita memória, geralmente causando falhas de falta de memória em aparelhos com menos de 1GB de RAM. Nesse artigo (de 2013-12-04), Valgrind foi testado em um aparelho Nexus 4 rodando Firefox OS com 2GB de RAM, mas pode ser executado em aparelhos Geeksphone Keons ou similares. Verifique em <a href="/pt-BR/Firefox_OS/Phones">Especificações de Telefones</a> para maiores detalhes dos aparelhos disponíveis.</p> -<h2 id="Executando_Valgrind_em_telefones_com_FxOS">Executando Valgrind em telefones com FxOS</h2> -<h3 id="Compilando">Compilando</h3> -<p>Para compilar o Firefox OS com o valgrind habilitado, inclua no arquivo<a href="/pt-BR/Firefox_OS/Customization_with_the_.userconfig_file"><code>.userconfig</code></a>.</p> -<pre>export B2G_VALGRIND=1 </pre> -<p>Compilar com debug (<code>B2G_DEBUG</code>) também é recomendado. Compilação sem otimizações (<code>B2G_NOOPT</code>) torna a usabilidade um pouco mais lenta, e não é reomendado a não ser nos casos onde as otimizações podem ofuscar os erros.</p> -<h3 id="Executando">Executando</h3> -<div class="note"> - <p><strong>Nota:</strong> A execução do Valgrind em um telefone Firefox OS é realizada no contexto do telefone, não no sistema operacional hospedeiro. Isso siginifica que os desenvolvedores podem usar qualquer plataforma com o <a href="/pt-BR/Firefox_OS/Debugging/Installing_ADB">adb</a> disponível e executar o script <code>run-valgrind.sh</code> para iniciar o valgrind no telefone.</p> -</div> -<p>Para executar o Firefox OS sob o valgrind, use o script <a href="https://github.com/mozilla-b2g/B2G/blob/master/run-valgrind.sh"><code>run-valgrind.sh</code></a> a partir do diretório B2G. Esse script faz o seguinte:</p> -<ol> - <li>Remonta o sistema de arquivos do telefone com r/w.</li> - <li>Copia a biblioteca atual <code>libxul.so</code> com os símbolos completos do telefone. Como esse arquivo tem centenas de MB esse passo leva muito tempo para terminar. E precisa ser refeito a cada vez que uma nova compilação é feita. Para executar o valgrind sem copiar <code>libxul</code> execute esse comando:<br> - <pre class="brush: bash">run-valgrind.sh nocopy</pre> - </li> - <li>Reinicia o telefone.</li> - <li>Encerra os processos b2g que foram iniciados.</li> - <li>Executa o seu próprio processo b2g sob o valgrind.</li> -</ol> -<p>Toda a saída do valgrind é escrita em <code>stdout</code> do terminal que executou o script <code>run-valgrind.sh</code>. Essa saída pode ser lida no terminal ou direcionada para um arquivo.</p> -<div class="note"> - <p><strong>Nota</strong>: Uma vez que o script <code>run-valgrind.sh</code> é o proprietário do processo adb que executa o processo b2g, ao encerrar o script, os processos b2g e valgind também serão encerrados no telefone. É recomendado que o telefone seja reiniciado após o término de uma sessão do valgrind, para evitar problemas.</p> -</div> -<h2 id="Executando_Valgrind_no_Firefox_OS_Desktop">Executando Valgrind no Firefox OS Desktop</h2> -<p>Executar o valgrind no Firefox OS Desktop funciona da mesma forma que excutar o Firefox (navegador). Consulte o artigo <a href="/pt-BR/docs/Debugging_Mozilla_with_Valgrind">Depurando o Mozilla com Valgrind<span style="font-family: arial,sans-serif; font-size: xx-small ! important; line-height: 130% ! important; border-width: 1px ! important; border-style: solid ! important; padding: 0px 2px ! important; margin-left: 2px; max-width: 20px; overflow: visible ! important; float: none ! important; display: none;">DDS</span></a> para mais informações. Todos os flags de compilação relevantes necessários a ser incluídos no <code>mozconfig</code>, e todos os problemas específicos das plataformas descritos na página devem ser aplicados.</p> -<p>Observe que ao executar Valgrind no desktop em modo <em>OOP/process-per-tab </em>requer adicionar as seguintes opções para certificar-se que os processos-filho também estão sendo monitorados:</p> -<pre class="brush: bash">--trace-children=yes</pre> -<h2 id="Mantendo_e_atualizando_o_Firefox_OS_Valgrind">Mantendo e atualizando o Firefox OS Valgrind</h2> -<p>Durante as liberações de correções, Valgrind para Firefox OS é mantido em um repositório <em>forked</em> para mantê-lo o mais atualizado possível enquanto as excentricidades do Firefox OS são adequadas às mais novas versões.</p> -<h3 id="Atualizando_Repositórios_Valgrind">Atualizando Repositórios Valgrind</h3> -<div class="warning"> - <p><strong>AVISO:</strong> NECESSÁRIO EXPERIÊNCIA COM GIT. Não tente atualizar o repositório Valgrind se você não dominar operações complexas do Git. Qualquer atualização no repositório do GitHub será refletida em <code>git.mozilla.org</code>, que por sua vez irão para os desenvolvedores que usam o HEAD dos repositórios de manifesto.</p> -</div> -<p>Os repositórios principais do Firefox OS valgrind e VEX são</p> -<ul> - <li><a href="http://github.com/mozilla-b2g/valgrind">http://github.com/mozilla-b2g/valgrind</a></li> - <li><a href="http://github.com/mozilla-b2g/vex">http://github.com/mozilla-b2g/vex</a></li> -</ul> -<p>O <em>master branch </em>é uma versão antiga do <em>trunk</em> SVN de cada um desses repos, enquanto que o <em>branch</em> Firefox OS contém correções específicas do Firefox OS baseadas no topo do <em>trunk</em>.</p> -<div class="note"> - <p><strong>Nota: SEMPRE ATUALIZE AMBOS OS REPOS NO MESMO MOMENTO</strong>. Apesar de serem dois repos separados, VEX normalmente é um submódulo do Valgrind, e o HEAD do Valgrind normalmente aponta para o HEAD do VEX.</p> -</div> -<p>Esses estão replicados no domínio <code>git.mozilla.org</code> para se usado nos manifestos B2G:</p> -<ul> - <li><a href="http://git.mozilla.org/?p=b2g/valgrind.git;a=summary">http://git.mozilla.org/?p=b2g/valgrind.git;a=summary</a></li> - <li><a href="http://git.mozilla.org/?p=b2g/valgrind.git;a=summary">http://git.mozilla.org/?p=b2g/vex.git;a=summary</a></li> -</ul> -<ol> - <li>Os repos principais são mantidos em sincronismo com o valgrind SVN com git svn. Para carregar as atualizações nos repos, clone os repos valgrind e vex do github, então execute o comando abaixo: - <pre class="brush: bash">git svn init -s [subversion repo url] -</pre> - </li> - <li>Envira as alterações para o SVN pode levar horas, mas quando for feito sua árvore deve estar sincronizada com a árvore principal do SVN.</li> - <li>Para enviar futuras atualizações, utilize o seguinte grupo de comandos: - <pre class="brush: bash">git checkout master -git svn fetch -git svn rebase -git push [github-remote-name] master -git checkout fxos -git rebase master -</pre> - </li> - <li>Existe a chance de existir conflitos entre as correções durante o <em>rebase</em> do <em>branch</em> do Firefox OS. Se não conseguir resolver os conflitos, envie um email para o autor para que ele resolva os conflitos encontrados.</li> - <li>Depois do <em>rebase</em>, execute uma compilação completa do Firefox OS com a opção <code>B2G_VALGRIND</code> para certificar-se que ainda funciona. Os consertos mais comuns são listados na seção a seguir.</li> - <li>Uma vez feito o <em>rebase</em> E TESTADA a compilação contra a árvore Firefox OS, você deve forçar um <em>push</em> para o branch Firefox OS devido à alteração do head. - <pre>git push -f [github-remote-name] fxos</pre> - </li> -</ol> -<h3 id="Scripts_de_compilação_instalação_e_execução">Scripts de compilação, instalação e execução</h3> -<p>Existem diversos scripts que fazem parte do <em>branch</em> Valgrind Firefox OS ou do repo B2Gque podem necessitar serem alterados após um <em>fetch</em> do repo.</p> -<h4 id="externalvalgrindandroid.mk">external/valgrind/android.mk</h4> -<p>Esse é um script de compilação do sistema Android. As alterações nesse script são devido ao de arquivos que são adicionados ou removidos da árvore Valgrind. Use uma compilação com <code>-j1</code> para verificar quais os alvos falham na compilação e se foi esquecido algum arquivo ou há alguma referência a um arquivo inexistente.</p> -<h4 id="externalvalgrindvalgrind.mk">external/valgrind/valgrind.mk</h4> -<p>Contém uma lista de pacotes que necessitam ser compilados e adicionados à imagem do FxOS, referenciada por <code>gonk-misc/b2g.mk</code>. Normalmente esse script não necessita ser alterado uma vez que é raro que o Valgrind inclua novos pacotes, mas se isso acontecer, informe nesse arquivo.</p> -<h4 id="run-valgrind.sh">run-valgrind.sh</h4> -<p>Script para executar o Valgrind no telefone. Se exitem novos argumentos na linha de comando necessários para rodar o Valgrind no telefone, inclua-os aqui. Isso também é utilizado quando nós copiamos a biblioteca com depuração, assim qualquer ajuste ou alteração a esse processo deve acontecer aqui.</p> diff --git a/files/pt-br/archive/b2g_os/debugging/depurando_b2g_usando_gdb/index.html b/files/pt-br/archive/b2g_os/debugging/depurando_b2g_usando_gdb/index.html deleted file mode 100644 index df386261ac..0000000000 --- a/files/pt-br/archive/b2g_os/debugging/depurando_b2g_usando_gdb/index.html +++ /dev/null @@ -1,84 +0,0 @@ ---- -title: Depurando o B2G usando gdb e ferramentas relacionadas -slug: Archive/B2G_OS/Debugging/Depurando_B2G_usando_gdb -translation_of: Archive/B2G_OS/Debugging/Debugging_B2G_using_gdb ---- -<div class="summary"> - <p><strong><code>gdb</code></strong> é um depurador de linha de comando que fornece um grande número de opções úteis para depurar aplicações Firefox OS. Outras ferramentas também estão disponíveis como <code>b2g-ps</code>, que é um empacotador da ferramanta padrão ps que mostra os nomes dos aplicativos que estão sendo executados numa instância do B2G. Esse artigo mostra como executar tarefas de depuração com essas ferramentas.</p> -</div> -<h2 id="Começando_a_depurar_no_modo_single-process">Começando a depurar no modo <em>single-process</em></h2> -<div class="note"> - <p><strong>Nota:</strong> Antes de executar o depurador você pode configurar o arquivo<code> .userconfig</code> para customizar algumas coisas. Veja o artigo <a href="/pt-BR/docs/Mozilla/Boot_to_Gecko/Customization_with_the_.userconfig_file" title="/en-US/docs/Mozilla/Boot_to_Gecko/Customization_with_the_.userconfig_file">Customização com o arquivo .userconfig</a> para maiores detalhes.</p> -</div> -<p>Para reiniciar Firefox OS e executá-lo sob o controle do gdb, simplesmente use o scritp <code>run-gdb.sh</code>:</p> -<pre>./run-gdb.sh -</pre> -<div class="note"> - <p><strong>Nota:</strong> Se você quiser depurar no emulador, certifique-se que não há telefones conectados ao computador, isso pode gerar conflitos ao gdb tentar conectar ao emulador.</p> -</div> -<p>Se o Firefox OS já estiver rodando e você quiser conectar o gdb sem reiniciá-lo, você pode fazer algo como isso:</p> -<pre>./run-gdb.sh attach -</pre> -<h2 id="Depurando_tarefas_fora_do_processo">Depurando tarefas fora do processo</h2> -<p>Devido ao fato da natureza multiprocessamento do Firefox OS, frequentemente você necessitará depurar tarefas que não a tarefa B2G. Para fazer isso, o modo mais simples é usar o comando <code>b2g-ps</code> para descobrir o PID do processo que você precisa depurar:</p> -<pre>$ adb shell b2g-ps -b2g root 106 1 189828 56956 ffffffff 40101330 S /system/b2g/b2g -Browser app_0 4308 106 52688 16188 ffffffff 400db330 S /system/b2g/plugin-container -</pre> -<p>No exemplo, Browser é um processo filho usado como "content process" para a aplicação browser. Assim se você deseja depurar o "content process", nesse exemplo, faça:</p> -<pre>$ ./run-gdb.sh attach 4308</pre> -<p>Algumas vezes, é útil ser notificado imediatamente de qualquer criação de processos filhos.</p> -<p>Isso pode ser ativado iniciando <code>run-gdb.sh</code> com a variável de ambiente<code> MOZ_DEBUG_CHILD_PROCESS</code>:</p> -<pre>MOZ_DEBUG_CHILD_PROCESS=1 ./run-gdb.sh</pre> -<p>Feito isso, lançando uma aplicação OOP no Firefox OS será mostrado o PID do "plugin-conteiner" para essa tarefa, e o processo dormirá por 30 segundos, tempo suficiente para você rodar o comando para anexar o depurador como visto abaixo:</p> -<pre>$ ./run-gdb.sh attach 4308</pre> -<p>Se você estiver tentando depurar algo que ocorre durante o boot, você tem que lançar uma instância do depurador muito rápido. Uma vez que o depurador foi iniciado, você deve imediatamente pressionar "c" para continuar a executar a nova tarefa.</p> -<h2 id="Suporte">Suporte</h2> -<h3 id="Qual_o_nível_de_funcionalidade_esperado">Qual o nível de funcionalidade esperado</h3> -<p>Os recursos de depuração a seguir ao menos devem funcionar, caso contrário, provavelmente um pequeno ajuste na configuração o fará funcionar:</p> -<ul> - <li>Símbolos para todas as bibliotecas (exceto talvez alguns drivers de alguns telefones Android)</li> - <li>Informações de <em>backtraces</em> com depuração completa (exceto para valores de argumentos <em>optimized-away</em>)</li> - <li><em>Breakpoints</em>: Você deve poder criar breakpoints num símbolo, ou em arquivo:linha, ou em endereço. Todas as opções devem funcionar.</li> - <li><em>Single-stepping </em>('s' e 'n' devem funcionar)</li> -</ul> -<p>Os serguintes recursos de depuração não são suportados. Não tente usá-los:</p> -<ul> - <li><em>Watchpoints</em>.</li> -</ul> -<h3 id="Resolução_de_problemas">Resolução de problemas</h3> -<p>Existem algumas coisas para tentar resolver caso o <code>gdb</code> não funcione como descrito acima.</p> -<h4 id="Certifique-se_que_seu_clone_B2G_está_atualizado">Certifique-se que seu clone B2G está atualizado</h4> -<p>Tenha sempre em mente que para atualizar seu clone B2G você deve executar esses <strong>dois</strong> comandos:</p> -<pre>git pull -./repo sync</pre> -<p>Ao esquecer do <code>git pull</code> poderá acontecer de você executar um antigo <code>run-gdb.sh</code> e não se beneficiar das últimas melhorias.</p> -<h4 id="Certifique-se_de_que_você_anexou_o_gdb_ao_processo_correto">Certifique-se de que você anexou o gdb ao processo correto</h4> -<p>Anexando-se a um processo errado (por exemplo, processo B2G principal versus processo Browser) pode explicar porque o depurador não para nos <em>breakpoints</em>.</p> -<h4 id="Certifique-se_de_que_os_símbolos_foram_corretamente_lidos">Certifique-se de que os símbolos foram corretamente lidos</h4> -<ol> - <li>No <code>gdb</code>, use <code>info shared</code> para checar se os símbolos foram corretamente lidos: - <pre>(gdb) info shared -From To Syms Read Shared Object Library -0xb0001000 0xb0006928 Yes out/target/product/otoro/symbols/system/bin/linker -0x40051100 0x4007ed74 Yes /hack/b2g/B2G/out/target/product/otoro/symbols/system/lib/libc.so -0x401ab934 0x401aba2c Yes /hack/b2g/B2G/out/target/product/otoro/symbols/system/lib/libstdc++.so -...</pre> - </li> - <li>A coluna <code>Syms Read</code> deve estar com <code>Yes</code> sempre. Talvez em alguns telefones Android você pode ver <code>Yes (*)</code> para algumas bibliotecas de sistema ou drivers, isso estará OK. Você somente não poderá ver um <code>No.</code></li> - <li>Se você vir um <code>No</code>, será seu primeiro problema e você deve resolvê-lo antes de procurar qualquer outra coisa.</li> - <li>Procure por alguma outra mensagem de erro na saída do terminal logo após executar o comando <code>run-gdb.sh</code>.</li> - <li>Verifique também no terminal se a saída do terminal do comando GDB está ok. Em particular, o último argumento da linha de comando deve ser o caminho para o executável <code>b2g</code>. A seguir um exemplo: - <pre>prebuilt/linux-x86/toolchain/arm-linux-androideabi-4.4.x/bin/arm-linux-androideabi-gdb -x /tmp/b2g.gdbinit.bjacob /hack/b2g/B2G/objdir-gecko/dist/bin/b2g</pre> - </li> - <li>Verifique o valor dessas variáveis GDB: <code>solib-search-path</code> e <code>solib-absolute-prefix:</code> - <pre>(gdb) show solib-search-path -The search path for loading non-absolute shared library symbol files is /hack/b2g/B2G/objdir-gecko/dist/bin:out/target/product/otoro/symbols/system/lib:out/target/product/otoro/symbols/system/lib/hw:out/target/product/otoro/symbols/system/lib/egl:out/target/product/otoro/symbols/system/bin:out/target/product/otoro/system/lib:out/target/product/otoro/system/lib/egl:out/target/product/otoro/system/lib/hw:out/target/product/otoro/system/vendor/lib:out/target/product/otoro/system/vendor/lib/hw:out/target/product/otoro/system/vendor/lib/egl. -(gdb) show solib-absolute-prefix -The current system root is "out/target/product/otoro/symbols".</pre> - </li> -</ol> -<div class="note"> - <p><strong>Nota</strong>: Se você precisar de mais ajuda, tente o canal #b2g no IRC. Se você acredita ter encontrado um bug, reporte-o <a href="https://github.com/mozilla-b2g/B2G/issues" title="https://github.com/mozilla-b2g/B2G/issues">aqui</a>.</p> -</div> -<p> </p> diff --git a/files/pt-br/archive/b2g_os/debugging/depurando_erros_falta_de_memoria/index.html b/files/pt-br/archive/b2g_os/debugging/depurando_erros_falta_de_memoria/index.html deleted file mode 100644 index cb56fef4d0..0000000000 --- a/files/pt-br/archive/b2g_os/debugging/depurando_erros_falta_de_memoria/index.html +++ /dev/null @@ -1,66 +0,0 @@ ---- -title: Depurando erros de falta de memória no Firefox OS -slug: Archive/B2G_OS/Debugging/Depurando_erros_falta_de_memoria -tags: - - B2G - - Erros - - Falta de Memória - - Firefox OS -translation_of: Archive/B2G_OS/Debugging/Debugging_OOMs ---- -<div class="summary"> - <p>Quando um dispositivo Firefox OS fica sem memória, os sistemas low-memory killer e low-memory notifications são executados para encerrar alguns processos e manter o sistema operacional funcionando. Quando o kernel encerra alguns processos que estavam rodando em segundo plano o comportamento assemelha-se a uma finalização inesperada do aplicativo que estava sendo executado. Esse artigo explica como compreender e depurar erros devido a falhas decorrentes de falta de memória.</p> -</div> -<div class="note"> - <p><strong>Nota</strong>: Se você não sabe ainda como situações com baixa memória são gerenciadas no Firefox OS, sugerimos você ler o artigo <a href="https://developer.mozilla.org/pt-BR/Firefox_OS/Platform/Out_of_memory_management_on_Firefox_OS">Gerenciamento de falha de memória no Firefox OS</a> antes de continuar a ler esse documento.</p> -</div> -<h2 id="Depurando_uma_falha_decorrente_de_Falta_de_Memória_(OOM_-_Out_Of_Memory_crash)">Depurando uma falha decorrente de Falta de Memória (OOM - Out Of Memory crash)</h2> -<p>Suponha que você tenha uma falha que possa ser reproduzida e suspeita que seja a causadora de falta de memória. Os passos a seguir farão você entender mais sobre o que está dando errado.</p> -<h3 id="Passo_1_Confirme_se_realmente_a_falha_é_devido_à_falta_de_memória">Passo 1: Confirme se realmente a falha é devido à falta de memória</h3> -<p>Primeiro, devemos garantir que a falha é devido ao fato do telefone estar sem memória disponível. Para fazer isso execute <code>adb shell dmesg</code>. Se o aplicativo for enecerrado devido a falta de memória, você verá a seguinte resposta:</p> -<pre class="brush: bash"><4>[06-18 07:40:25.291] [2897: Notes+]send sigkill to 2897 (Notes+), adj 2, size 30625</pre> -<p>Essa linha indica que o aplicativo Notes+ (ID do processo 2897) foi encerrado e possuia <code>oom_adj 2</code>. O tamanho reportado aqui é em páginas, com 4kb cada. Dessa forma, nesse caso, o aplicativo Notes+ estava usando 30625 * 4kb = 120mb de memória.</p> -<h4 id="Digressão_se_não_for_falta_de_memória_(OOM)">Digressão: se não for falta de memória (OOM)</h4> -<p>Se a saída do comando <code>dmesg</code> não for a apresentada, provavelmente a falha não é devido à falta de memória. your crash is likely not an OOM. O próximo passo na depuração da falha é utilizar o <code>gdb</code> ao processo de falha e conseguir um rastreamento, que pode ser feito dessa forma:</p> -<pre class="brush: bash">$ cd path/to/B2G/checkout -$ adb shell b2g-ps -# Note pid of the app that you're going to crash -$ ./run-gdb.sh attach <pid> -(gdb) continue -# crash the app -(gdb) bt</pre> -<p>Quando for reportar o bug, anexe o resultado obtido, bem como o resultado do comando <code>adb logcat</code>. Se a falha for devido a falta de memória, o rastreamento provavelmente não será interessante, poir a falha de falta de memória é disparada por um sinal enviado pelo kernel e não por uma falha de código que o processo executa.</p> -<h3 id="Passo_2_Coletar_relatórios_de_memória">Passo 2: Coletar relatórios de memória</h3> -<p>Depois de você ter se certificado que a falha é devido à falta de memória, o próximo passo é coletar relatório de memória do seu telefone antes da falha. Esse relatório nos ajudará a entender como a memória está sendo usada. Esta etapa é um pouco complicada, porque uma vez que aplicativo falhar, não há nenhuma maneira de coletar um relatório de memória desse processo. Também não há uma forma de disparar um relatório de memória quando o kernel tenta encerrar um processo — quando isso acontece é tarde demais.</p> -<p>Para extrair um relatório de memória do seu telefone, primeiramente atualize sua árvore de compilação a fim de obter a última versão da ferramenta que extrai o relatório. Observe que <code>repo sync</code> não será suficiente; você deve executar <code>git fetch && git merge</code> ou <code>git pull</code>:</p> -<pre class="brush: bash">$ cd path/to/B2G/checkout -$ git fetch origin -$ git merge --ff-only origin</pre> -<p>Agora execute a ferramenta para extrair o relatório:</p> -<pre class="brush: bash">$ tools/get_about_memory.py</pre> -<p>Uma vez que você conseguiu o relatório, você pode compactar o diretório (chamado <code>about-memory-N</code>) e anexá-lo a um bug. Mas novamente, isso somente será útil se você executar esse comando enquanto o aplicativo que você está monitorando estiver sendo executado e usando muita memória. Você tem algumas opções aqui:</p> -<h4 id="Passo_2_opção_1_Consiga_um_dispositivo_diferente">Passo 2, opção 1: Consiga um dispositivo diferente</h4> -<p>Geralmente a forma mais fácil é conseguir um dispositivo com mais memória. Você já sabe desde o passo 1 quanta memória o processo estava usando quando falhou, assim você pode simplesmente esperar até o processo utilizar perto desse valor e então pegar um relatório de memória. O aplicativo <code>b2g-info</code> mostrará quanta memória cada um dos diferentes processos B2G estavam usando. Você pode executar esse processo em um loop fazendo o seguinte:</p> -<pre class="brush: bash">$ adb shell 'while true; do b2g-info; sleep 1; done'</pre> -<p>Se <code>b2g-info</code> não está disponível no seu dispositivo, você pode usar <code>b2g-procrank</code>.</p> -<h4 id="Passo_2_opção_2_Dedo_mais_rápido">Passo 2, opção 2: Dedo mais rápido</h4> -<p>Se você não possui um dispositivo com mais memória RAM, você pode tentar executar <code>get_about_memory.py</code> no momento exatamente anterior ao aplicativo falhar. Você pode rodar <code>b2g-info</code> em um loop (como mostrado no item anterior) para descobrir quando executar <code>get_about_memory.py</code>. Executar um relatório de memória congela todos os processos por um pequeno momento, assim não é difícil extrair um relatório de memória antes do processo de falta de memória entrar em ação.</p> -<h4 id="Passo_2_opção_3_Use_um_pequeno_caso_de_teste">Passo 2, opção 3: Use um pequeno caso de teste</h4> -<p>Geralmente falhas de falta de memória ocorrem quando é feito algo como "carregar um arquivo de no mínimo X bytes no aplicativo".</p> -<p>Se o aplicativo falha muito rapidadmente com um caso de teste do tamanho X, você pode tentar executar um teste similar com o tamanho X/2 e capturar um relatório de memória após a execução do teste. O relatório pode nos dar valiosas dicas que definitivamente nos chamarão a atenção.</p> -<h4 id="Passo_2_opção_4_Execute_B2G_no_seu_desktop">Passo 2, opção 4: Execute B2G no seu desktop</h4> -<p>Se o que é ruim se tornar pior, você pode rodar o B2G no seu desktop, o que provavelmente possui muito mais memória que seu telefone FxOS. Isso é complicado porque B2G rodando num desktopo tem um comportamento diferente que quando roda num dispositivo.</p> -<p>Particularmente, B2G num desktop possui o multiprocessamento desabilitado por padrão. Ele realmente não funciona 100% em qualquer lugar, mas funciona de forma mais precisa no Linux e no Mac. (Verifique <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=923961">Bug 923961</a>, <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=914584">Bug 914584</a>, <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=891882">Bug 891882</a>). Você pode testar em seu desktop com o multiprocessamento desabilitado, mas em minha experiência muitos dos problemas relacionados ao uso de memória são causados por códigos de comunicação interprocessos, de modo que não vai necessariamente provocar o erro que você está vendo.</p> -<p>Também não é conveniente extrari relatórios de memória dos processos B2G no desktop. No Linux, você pode enviar o sinal 34 para o processo principal B2G que ele vai escrever relatórios no diretório <code>/tmp</code> com o seguinte nome: <code>memory-report-*.gz</code>.</p> -<p>Uma vantagem de utilizar o B2G desktop é que você pode usar suas ferramentas de depuração favoritas, como o aplicativo Instruments Activities do Mac OSX. Nós já tivemos muito sucesso no passado. Para coletar relatórios de memória usando esse utilitário do OSX, vá em "New -> Mac OS X -> Allocations". Inicie o b2g-desktop e você verá alguns processos "plugin-container" no utilitário Activity Monitor. Você necessitará de duas instâncias do Instruments: um para registrar as alocações no processo principal b2g e outro para registrar as alocações no aplicativo que você deseja analisar. Com os utiltários monitorando os processos execute o seu caso de teste.</p> -<p>Para analisar quanta memório seu aplicativo está utilizando, analise as árvores de chamadas. Marque "Invert Call Tree", o ordene por bytes usados. Isso irá mostrar qual parte do seu aplicativo usa mais memória. Abaixo uma cópia de tela de uma análise simples de uso de memória de uma aplicativo:</p> -<p> </p> -<p><img alt="Screen shot of instruments." src="https://mdn.mozillademos.org/files/6439/instrumentsScreenShot.png" style="width: 800px; height: 492px;"><br> - Para mais informações de como configurar uma compilação do B2G desktop, leia nossa página <a href="/pt-BR/docs/Mozilla/Firefox_OS/Platform/Gaia/Hacking">Modificando o Gaia</a>.</p> -<h3 id="Passo_3_Analise_o_relatório_de_memória">Passo 3: Analise o relatório de memória</h3> -<p>Quando você executa <code>get_about_memory.py</code>, será apresentado o relatório de memório no Firefox. Esse arquivo contém informações do uso de memório de todos os processos do sistema. A leitura desse relatório pode ser um tanto pesada num primeiro momento, mas não será tão ruim quando você pegar o jeito da coisa. Note que você pode passar o mouse sobre qualquer nó folha para obter uma descrição do que esse nó descreve. O que você estará procurando é algo "estranhamente grande" no processo que ocasionou a falha. Você pode ter uma ideia do que é "estranhamente grande" capturando um relatório de memória do seu aplicativo quando ele não está usando muita memória.</p> -<p>A leitura de um relatório de memória requer alguma prática, assim fique a vontade para pedir ajuda. Os especialistas no assunto costumam ficar no canal #memshrink do IRC.</p> -<h3 id="Passo_4_Recompile_com_DMD_se_necessário">Passo 4: Recompile com DMD, se necessário</h3> -<p>Um item comum presente nos relatórios de memória extraídos antes de uma falha é<code> heap-unclassified</code>. <code>heap-unclassified</code> mostra a memória alocada pelo processo que não é apresentada por nenhum outro relatório de memória. Se você tem um valor alto no <code>heap-unclassified</code>, o relatório não pode dizer dizer mais nada sobre a quem a memória pertence. Nossa ferramenta para ir mais fundo no <code>heap-unclassified</code> é chamada DMD. Ela funciona no B2G, mas você deve <a href="/pt-BR/docs/Mozilla/Firefox_OS/Building_and_installing_Firefox_OS">compilar seu próprio B2G</a> para que funcione pois DMD exige símbolos locais que são mantidos na máquina que roda a compilacão.</p> -<p>Para saber mais informações sobre o DMD e como interpretar sua saída, leia a <a href="https://wiki.mozilla.org/Performance/MemShrink/DMD">página do DMD na Wiki Mozilla</a>.<br> - </p> diff --git a/files/pt-br/archive/b2g_os/debugging/firefox_os_crash_reporting/index.html b/files/pt-br/archive/b2g_os/debugging/firefox_os_crash_reporting/index.html deleted file mode 100644 index 3d74894f76..0000000000 --- a/files/pt-br/archive/b2g_os/debugging/firefox_os_crash_reporting/index.html +++ /dev/null @@ -1,123 +0,0 @@ ---- -title: Relatórios de Travamento no Firefox OS -slug: Archive/B2G_OS/Debugging/Firefox_OS_crash_reporting -tags: - - Debugador - - Depurador - - Firefox OS - - QA - - Testes - - crash -translation_of: Archive/B2G_OS/Debugging/Firefox_OS_crash_reporting ---- -<div class="summary"> -<p>Esta página fornece detalhes sobre como lidar com relatórios de travamento no Firefox OS, incluindo a recuperação de relatórios, e forçando travamentos.</p> -</div> - -<div class="note"> -<p>Nota: A maioria dos contribuintes Firefox desktop estão acostumados a usar about: crashes para recuperar relatórios de travamento (leia <a href="https://developer.mozilla.org/pt-BR/docs/Crash_reporting">Relatórios de Travamento</a> para mais detalhes), mas isso não é suportado no Firefox OS.</p> -</div> - -<h2 id="Antes_de_tentar_qualquer_outra_coisa">Antes de tentar qualquer outra coisa</h2> - -<p>As instruções a seguir pressupõem que você já tenha seguido estas três etapas:</p> - -<ol> - <li>Tenha certeza de que o <a href="/pt-BR/Firefox_OS/Debugging/Developer_settings#Debugging_via_USB">depurador remoto</a> esteja habilitado em seu dispositivo, e o ADB esteja instalado. Isso permitirá que o seu computador comunique com seu dispositivo. </li> - <li>Conecte seu dispositivo ao seu computador via USB. </li> - <li>Instale o <a href="https://ftp.mozilla.org/pub/mozilla.org/labs/fxos-simulator/">ADB Helper Add-on</a> no desktop Firefox para lidar com qualquer encaminhamento de porta necessário. </li> -</ol> - -<h3 id="Instalando_BusyBox" style="line-height: 24px; font-size: 1.71428571428571rem;">Instalando BusyBox</h3> - -<p>Também é recomendado que você instale o BusyBox, que adiciona uma série de comandos úteis para ADB que ajudam a testar e depurar o Firefox OS.</p> - -<p>Para instalá-lo, certifique-se que o seu dispositivo esteja ligado e, em seguida:</p> - -<ol> - <li>Faça download do<a href="https://wiki.mozilla.org/images/3/32/Busybox-b2g.tar.gz"> BusyBox</a>.</li> - <li>Descompacte o tarball em um local seguro.</li> - <li>cd no diretório restante busybox-b2g.</li> - <li>Execute <code>./install.sh</code> para instalar.</li> -</ol> - -<p>Todas as funcionalidades do busybox pegam symlinks em <code>/system/bin</code>, de forma que você possa rodar comandos como ping diretamente. Aqui estão alguns exemplos de comandos:</p> - -<pre class="brush: bash">adb shell ping 8.8.8.8 => ping command - -adb shell ifconfig wlan0 => check tx/rx bytes - -adb shell cat /proc/net/route => check the default route - -adb shell iptables -t nat -nvL => check if the packets are sent from application to IP layer, check Chain OUTPUT (policy ACCEPT 2 packets, 168 bytes)</pre> - -<h2 id="Obtendo_relatórios_de_travamento_de_um_dispositivo_Firefox_OS">Obtendo relatórios de travamento de um dispositivo Firefox OS</h2> - -<p>Nós criamos o Firefox OS app para que seja possível recuperar relatórios de travamento — <a href="http://jds2501.github.io/webapi-permissions-tests/about-crashes.zip">About Crashes</a> — que funcionam na versão 1.2+.<br> - <br> - Para instalar em seu dispositivo, siga os seguintes passos:</p> - -<ol> - <li>About Crashes é um app certificado, então você precisa habilitar o depurador de aplicativos certificados (veja instruções para <a href="/pt-BR/Firefox_OS/Using_the_App_Manager#Debugging_Certified_Apps_2">App Manager</a> e <a href="/pt-BR/docs/Tools/WebIDE#Debugging_certified_apps">WebIDE</a>).</li> - <li>Faça download do arquivo zip About Crashes app do link acima e extraia localmente.</li> - <li>No Firefox desktop, abra o <a href="/pt-BR/Firefox_OS/Using_the_App_Manager">App Manager</a> e o <a href="/pt-BR/docs/Tools/WebIDE">WebIDE</a> (dependendo da versão do Firefox que você esteja usando) em Ferramentas > Web Developer.</li> - <li>Em cada ferramenta, adicione o About Crashes app como um app compactado (App Manager: clique no sinal de mais ao lado da opção <em>Adicionar App Compactado</em>, WebIDE Compactado: Abra o menu dropdown do lado esquerdo e selecione <em>Adicionar App Compactado</em> ...).</li> - <li>Conecte o seu dispositivo ao App Manager/WebIDE (App Manager: encontre listado na parte inferior da interface do usuário, WebIDE: Procure por <em>Select Runtime</em>).</li> - <li>Instale e abra o aplicativo em seu dispositivo (App Manager: Pressione o botão <em>Update</em>, WebIDE: pressione o botão "Play" (<em>Instale and execute</em>).</li> - <li>No dispositivo, pressione o botão <em>Update</em> dentro de About Crashes para visualisar as falhas mais recentes.</li> -</ol> - -<h2 id="Obtendo_crash_IDs_a_partir_de_uma_linha_de_comando">Obtendo crash IDs a partir de uma linha de comando </h2> - -<p>Você pode obter uma lista de IDs de falhas através de uma linha de comando, digitando o seguinte comando em seu terminal:</p> - -<pre class="brush: bash">adb shell ls -l /data/b2g/mozilla/Crash\ Reports/submitted/</pre> - -<p>Caso você possua uma longa lista de crashes e deseja que elas sejam ordenadas por data, use o seguinte comando:</p> - -<pre class="brush: bash">adb shell busybox ls -ltr /data/b2g/mozilla/Crash\ Reports/submitted/</pre> - -<h2 id="Obtendoverificando_o_relatório_de_travamento">Obtendo/verificando o relatório de travamento</h2> - -<p>Para verificar o relatório de travamento:</p> - -<ol> - <li>Copie o nome do arquivo sem a extensão.</li> - <li>Acesse <a href="http://crash-stats.mozilla.org">Mozilla Crash Reports</a>.</li> - <li>Cole o nome do arquivo sem a extensão na parte superior do campo de busca. </li> -</ol> - -<p>Isso deverá exibir o crash report que você enviou.</p> - -<h2 id="Como_forçar_uma_falha">Como forçar uma falha</h2> - -<p>Para acionar uma falha no sistema Firefox OS, digite o seguinte comando em seu terminal para encontrar a ID do processo root:</p> - -<pre class="brush: bash">adb shell ps | grep b2g</pre> - -<p>Você terá que encontrar a linha que tem raiz no início, e / system / B2G / B2G no final. O resultado deve parecer com isto:</p> - -<pre class="brush: bash">root 109 1 191120 66024 ffffffff 400fa330 S /system/b2g/b2g</pre> - -<p>O número no início do código é a id que você precisará para terminar o processo. Execute o seguinte comando, com a id dentro espaço [ ]:</p> - -<pre class="brush: bash">adb shell kill -11 [ENTER ID HERE]</pre> - -<p>Ao matar o processo pela, uma falha aparecerá em seu dispositivo. </p> - -<h3 id="Como_executar_o_script_GDB_para_b2g">Como executar o script GDB para b2g</h3> - -<ol> - <li>Inicie a galeria app no telefone, e em seguida execute o seguinte comando em seu terminal: </li> - <li> - <pre class="brush: bash">adb shell b2g-ps</pre> - </li> - <li>Anote o pid do app galeria, e em seguida, execute o seguinte comando:</li> - <li> - <pre class="brush: bash">./run-gdb.sh attach <pid></pre> - </li> - <li>Provoque o crash.</li> - <li>Execute o comando abaixo: - <pre class="brush: bash">(gdb) bt</pre> - </li> -</ol> diff --git a/files/pt-br/archive/b2g_os/debugging/index.html b/files/pt-br/archive/b2g_os/debugging/index.html deleted file mode 100644 index 3d57cd5dd7..0000000000 --- a/files/pt-br/archive/b2g_os/debugging/index.html +++ /dev/null @@ -1,72 +0,0 @@ ---- -title: Depuração no Firefox OS -slug: Archive/B2G_OS/Debugging -translation_of: Archive/B2G_OS/Debugging ---- -<div class="summary"> - <p><span class="seoSummary">Existe dois tipos de depuração que você pode utilizar no Firefox OS: depuração de aplicativos e depuração de outros apectos do sistema. Essa seção do site provê artigos cobrindo as diferentes ferramentas disponíveis para depurar o seu código Firefox OS.</span></p> -</div> -<h2 id="Depurando_aplicativos">Depurando aplicativos</h2> -<p>Quando depurar aplicativos web, a melhor ferramenta a sua disposição é o <a href="/pt-BR/Firefox_OS/Using_the_App_Manager">App Manager</a>, que possibilita você executar seus aplicativos diretamente em um dispositivo real ou em um simulador, atualiza qualquer alteração instantaneamente e depura diretamente no dispositivo usando as <a href="https://developer.mozilla.org/pt-BR/docs/Tools" title="en-US/docs/Tools">ferramentas de desenvolvimento da Mozilla</a>. Essa pode ser a sua primeira escolha especiamente para depurações de aplicativos e do Gaia.</p> -<dl> - <dt> - <a href="/pt-BR/Firefox_OS/Using_the_App_Manager">Usando o App Manager</a></dt> - <dd> - O App Manager é uma nova ferramenta disponível do Firefox Desktop que fornece diversas funcionalidades que o ajudarão a testar, instalar e depurar os aplicativos HTML5 nos dispositivos Firefox OS e no Simulador do Firefox OS diretamente do seu navegador</dd> - <dt> - <a href="/pt-BR/docs/Mozilla/Firefox_OS/Debugging/Debugging_OOMs">Depurando erros de falta de memória no Firefox OS</a></dt> - <dd> - Esse artigo descreve como a arquitetura multiprocesso do B2G é afetada quando ocorre um erro de falta de memória e como entender e depurar nessas situações.</dd> -</dl> -<h2 id="Depurando_o_GaiaB2G">Depurando o Gaia/B2G</h2> -<p>Se você quiser depurar o código da suíte de aplicativos Gaia ou o próprio B2G as seguintes ferramentas são úteis para você.</p> -<dl> - <dt> - <a href="/pt-BR/Firefox_OS/Using_the_B2G_desktop_client" title="/en-US/docs/Mozilla/Firefox_OS/Debugging/Debugging_using_the_desktop_B2G_client">Depurando usando o cliente B2G Desktop</a></dt> - <dd> - Você pode usar a aplicação B2G Desktop (e suas ferramentas associadas) para depurar diversos aspectos do B2G e do Gaia.</dd> - <dt> - <a href="https://developer.mozilla.org/pt-BR/Firefox_OS/Developing_Firefox_OS/Guia_rapido_desenvolvimento_Gaia">Guia rápido para desenvolvimento Gaia</a></dt> - <dd> - Esse guia fornece um guia para desenvolver e depurar aplicativos Gaia, incluindo as instruções de como rodar o Gaia a partir do Firefox Desktop e depurar o Gaia com o App Manager.</dd> - <dt> - <a href="/pt-BR/docs/Mozilla/Firefox_OS/Debugging/Debugging_B2G_using_gdb" title="/en-US/docs/Mozilla/Firefox_OS/Debugging/Debugging_B2G_using_gdb">Depurando o B2G usando gdb</a></dt> - <dd> - O depurador popular gdb pode ser utilizado para depurar o Firefox OS e os apliciativos web executados em um dispositivo ou no emulador. Esse guia mostra como fazer isso.</dd> - <dt> - <a href="/pt-BR/docs/Mozilla/Firefox_OS/Debugging/Debugging_B2G_using_valgrind" title="/en-US/docs/Mozilla/Firefox_OS/Debugging/Debugging_B2G_using_gdb">Depurando o B2G usando Valgrind</a></dt> - <dd> - Valgrind dá aos desenvolvedores acesso a informações sobre alocação de memória, threads e outras informações importantes sobre performance. Esse guia mostra como executar o Valgrind no B2G Desktop ou no dispositivo.</dd> - <dt> - <a href="/pt-BR/docs/Mozilla/Debugging/HTTP_logging#Firefox_OS_phones" title="/en-US/docs/Mozilla/Debugging/HTTP_logging#Firefox_OS_phones">Conseguindo logs do NSPR no B2G</a></dt> - <dd> - Você pode usar os logs do NSPR logs para registrar o HTTP e outras operações da rede.</dd> - <dt> - <a href="/pt-BR/docs/Mozilla/Debugging/Debugging_OpenGL" title="/en-US/docs/Mozilla/Debugging/Debugging_OpenGL">Depurando OpenGL</a></dt> - <dd> - Como depurar código OpenGL no Firefox OS.</dd> -</dl> -<h2 id="Configuração_geral_e_informações"><strong>Configuração geral e informações</strong></h2> -<p>Os artigos a seguir fornecem informações ou aspectos específicos de configurações para desenvolvimento no Firefox OS. É possível que você não precise disso, especialmente se você estiver depurando apenas aplicativos usando o App Manager. Mas estão disponíveis caso você precise.</p> -<dl> - <dt> - <a href="/pt-BR/docs/Mozilla/Firefox_OS/Debugging/Developer_settings" title="/en-US/docs/Mozilla/Firefox_OS/Debugging/Developer_settings">Configurações do desenvolvedor do Firefox OS</a></dt> - <dd> - Existe um número de configurações disponíveis para os desenvolvedores do Firefox OS. Esse guia explica quais são e como utilizá-las.</dd> - <dt> - <a href="/pt-BR/Firefox_OS/Debugging/Installing_ADB">Instalando e usando o ADB</a></dt> - <dd> - Em muitos aspectos do desenvolvimento do Firefox OS você vai precisar instalar o <code>adb</code> (Android Debug Bridge). Esse artigo explica como fazer isso e apresenta os comandos mais comuns.</dd> - <dt> - <a href="/pt-BR/docs/Mozilla/Firefox_OS/Debugging/On-device_console_logging" title="/en-US/docs/Mozilla/Firefox_OS/Debugging/On-device_console_logging">Log no console do dispositivo</a></dt> - <dd> - Como fazer um log no console de um dispositivo Firefox OS e como acessar esse registro para examiná-lo no seu computador.</dd> - <dt> - <a href="/pt-BR/docs/Mozilla/Firefox_OS/Debugging/Connecting_a_Firefox_OS_device_to_the_desktop" title="/en-US/docs/Mozilla/Firefox_OS/Debugging/Debugging_Firefox_OS_apps_in_desktop_Firefox">Conectando um dispositivo Firefox OS no seu computador</a></dt> - <dd> - Esse pequeno guia explica como configurar seu dispositivo Firefox OS e seu computador para conetctá-los através da porta USB.</dd> - <dt> - <a href="/pt-BR/docs/Mozilla/Firefox_OS/Debugging/Setting_up" title="/en-US/docs/Mozilla/Firefox_OS/Debugging/Setting_up">Configurando para depurar o código do Firefox OS</a></dt> - <dd> - Antes de você usar a maioria das ferramentas integradas ao Firefox OS para depurar o código, você precisa um pequeno trabalho de configuração. Esse artigo explica como fazer isso.</dd> -</dl> diff --git a/files/pt-br/archive/b2g_os/debugging/instalando_adb/index.html b/files/pt-br/archive/b2g_os/debugging/instalando_adb/index.html deleted file mode 100644 index b620146f02..0000000000 --- a/files/pt-br/archive/b2g_os/debugging/instalando_adb/index.html +++ /dev/null @@ -1,99 +0,0 @@ ---- -title: Instalando e Usando o ADB -slug: Archive/B2G_OS/Debugging/Instalando_ADB -translation_of: Archive/B2G_OS/Debugging/Installing_ADB ---- -<div class="summary"> -<p><span class="seoSummary">Em muitos aspectos do desenvolvimento do Firefox OS será necessário a utilização do aplicativo ADB (Android Debug Bridge). Esse artigo explica como fazer a sua instalação e apresenta algun dos seus comandos mais úteis.</span></p> -</div> - -<h2 id="Instalando_o_ADB">Instalando o ADB</h2> - -<p>Você pode baixar e instalar o <code>adb</code> como parte do pacote do Android SDK package, para Mac, Linux ou Windows - visite a página <a href="http://developer.android.com/sdk/index.html">Get the Android SDK</a>.</p> - -<p>Distribuições mais recentes do Linux já possuem o <code>adb</code> em seus repositórios. Para Ubuntu 12.10 e posteriores execute o seguinte comando:</p> - -<pre>sudo apt-get install android-tools-adb</pre> - -<p>Ou para Fedora 18/19:</p> - -<pre>sudo yum install android-tools</pre> - -<p>Ou no OSX usando <a href="http://brew.sh/">Homebrew</a>:</p> - -<pre class="language-html">brew install android-platform-tools</pre> - -<p>Se sua distribuição não possui pacotes disponíveis para <code>adb</code> (por exemplo, Ubuntu 12.04 ou Fedora 17), você precisará instalar o <a class="external" href="http://developer.android.com/sdk/index.html" title="http://developer.android.com/sdk/index.html">Android SDK starter package</a> para sua plataforma (Selecione a opção <em>ADT Bundle</em>, e não <em>SDK Tools Only</em>). Então execute o gerenciador de pacote <code>$SDK_HOME/tools/android</code>, e use o GUI para instalar "Android SDK Platform-tools".</p> - -<p>Verifique onde o <code>adb</code> foi instalado (normalmente em <code>usr/bin</code>, possivelmente dentro de <code>adt/platform-tools</code>, depdendo de como você o instalou). Certifique-se de adicionar esse diretório em seu <code>PATH</code>. Isso pode ser feito adicionando a linha</p> - -<pre>PATH=$SDK_HOME:$PATH</pre> - -<p>ao seu <code>~/.bashrc</code> ou equivalente, onde <code>$SDK_HOME</code> é o caminho de onde foi instalado o Android SDK.</p> - -<h2 id="Resolvendo_problemas">Resolvendo problemas</h2> - -<p>Se você está usando uma instalação 64-bit, e receber um erro "File not found" quando executar 'adb' mesmo ele estando presente, você precisa instalar as bibliotecas de compatibilidade para 32-bit. Para fazer isso execute:</p> - -<pre>sudo apt-get install ia32-libs</pre> - -<p>Para novas versões do ubuntu:</p> - -<pre>sudo apt-get install lib32z1 lib32ncurses5 <code>gcc-multilib</code></pre> - -<h2 id="Comandos_comuns_do_ADB">Comandos comuns do ADB</h2> - -<p>As próximas seções explicam alguns dos mais comuns e úteis comandos do <code>adb</code>.</p> - -<h2 id="Reiniciando_o_processo_b2g">Reiniciando o processo b2g</h2> - -<p>b2g é equivalente à aplicação <a href="/pt-BR/docs/XULRunner" title="/en-US/docs/XULRunner">XULRunner</a> que é executada no telefone no topo do kernel Android-based. Em algumas vezes você precisa reiniciá-la. Essa é a melhor maneira de reiniciar o ambiente de aplicações sem a necessidade de reiniciar todo o dispositivo. Você pode fazer isso executando o seguinte comando quando seu dispositivo estiver conectado ao seu computador (ou enquanto estiver executando o depurador):</p> - -<pre>adb shell killall b2g</pre> - -<h2 id="Habilitando_o_encaminhamento_de_porta_para_depuração">Habilitando o encaminhamento de porta para depuração</h2> - -<p>Para habilltar isso (por exemplo se você estiver executando o App Manager para depurar aplicativos em um dispositivo Firefox OS), entre o seguinte comando no seu terminal:</p> - -<pre class="language-html">adb forward tcp:6000 localfilesystem:/data/local/debugger-socket</pre> - -<p>Você necessitará fazer isso toda vez que o telefone for reiniciado ou for desconectado e reconectado ao computador. Você pode trocar o número do socket se necessário.</p> - -<h2 id="Encaminhando_portas_para_uma_máquina_local">Encaminhando portas para uma máquina local</h2> - -<p>Para isso, você precisará baixar os binários <a href="http://people.mozilla.org/~jmuizelaar/forward/">netcat and ssh</a>, e executar os seguintes comandos:</p> - -<pre class="brush: bash"># this is an awful hack but does in fact work... -host$ adb forward tcp:7979 tcp:6969 - -# make some named pipes so that we can make a bidirectional netcat -phone$ mknod readback p -host$ mknod readback p - -# this sets up a one time use connection to back to the host -# listen on ports 6969 and 5959 and forward all the information between them -phone$ ./netcat -l -p 6969 < readback | ./netcat -l -p 5959 > readback -# connect to port 7979 (port 6969 on the device) and the local ssh server and forward all information between them -host$ ./netcat localhost 7979 < readback | ./netcat localhost 22 > readback - -# now when we connect to port 5959 on the phone it will be like connecting to ssh server on the host - -# use the netcat reversal to set up an ssh connection back to the host and forward port 9999 on the device to 'localhost:8000' (this could be anything like 'google.com:80') -phone$ ./ssh localhost -p 5959 -L 9999:localhost:8000</pre> - -<p>No exemplo acima é direcionada a porta 9999 do dispositivo para a porta 8000 do hospedeiro.</p> - -<p>Alternativamente você pode usar um servidor ssh (<a href="http://people.mozilla.org/~jmuizelaar/forward/dropbear">dropbear</a> e <a href="http://people.mozilla.org/~jmuizelaar/forward/host_key">host_key</a>) diretamente no dispositivo, usando os seguintes comandos:</p> - -<pre class="brush: bash">phone$ DROPBEAR_PASSWORD=root ./dropbear -p 9000 -F -v -a -r host_key ./dropbear -host$ adb forward tcp:8888 tcp:9000 -# public key authentication has been hard coded to succeed (make sure you have a public key for ssh to use) -host$ ssh -vvv root@localhost -p 8888 -R 9999:people.mozilla.org:80 -</pre> - -<p>Outros recursos:</p> - -<ul> - <li><a href="http://k.japko.eu/android-dropbear.html">Instruções para compilar dropbear</a></li> - <li><a href="http://people.mozilla.org/~jmuizelaar/forward/dropbear-b2g.patch">dropbear patch</a> que desabilita a falha no esquecimento de configurar variáveis de ambiente e o "hard code" no sucesso da autenticação.</li> -</ul> diff --git a/files/pt-br/archive/b2g_os/debugging/intercepting_traffic_using_a_proxy/index.html b/files/pt-br/archive/b2g_os/debugging/intercepting_traffic_using_a_proxy/index.html deleted file mode 100644 index c273634148..0000000000 --- a/files/pt-br/archive/b2g_os/debugging/intercepting_traffic_using_a_proxy/index.html +++ /dev/null @@ -1,177 +0,0 @@ ---- -title: Interceptando tráfego de Firefox OS usando um proxy -slug: Archive/B2G_OS/Debugging/Intercepting_traffic_using_a_proxy -tags: - - Debugando - - Depuração - - Segurança - - Testes -translation_of: Archive/B2G_OS/Debugging/Intercepting_traffic_using_a_proxy ---- -<p>{{PreviousNext("Mozilla/Firefox_OS/Debugging/Debugging_and_security_testing", "Mozilla/Firefox_OS/Apps/Testing_in_a_privileged_context")}}</p> - -<div class="summary"> -<p>Nesta parte do artigo de depuração e testes de segurança olhamos para interceptar tráfego de Firefox OS usando uma ferramenta de proxy, incluindo listas brancas certificado SSL do proxy para Firefox OS não se importa com alguém interceptar e re-criptografar a comunicação HTTPS. Se você usar o B2G Área de Trabalho, na primeira parte do tutorial sobre como instalá-lo e anexar o shell de depuração Marionette JavaScript é explicado em <a href="/pt-BR/docs/Mozilla/Firefox_OS/Security/Debugging_and_security_testing" style="text-decoration: underline; font-weight: bold; background-color: rgb(244, 247, 248);" title="/en-US/docs/Mozilla/Firefox_OS/Security/Debugging_and_security_testing">Debugging e segurança de testes com o Firefox OS</a>.</p> -</div> - -<p>Trabalhando com aplicativos que não são nada mais do que HTML e JavaScript, você vai descobrir que uma grande parte do trabalho realmente interessante envolve o uso de APIs que transferem dados através da Web. Isso significa que muitas vezes é útil olhar para as solicitações HTTP que esses aplicativos executam. Ferramentas de proxy como <a href="http://portswigger.net/burp/">Burp</a> e <a href="https://www.owasp.org/index.php/OWASP_Zed_Attack_Proxy_Project" style="text-decoration: underline;">ZAP</a> tem características úteis para o monitoramento desse tráfego. Elas fornecem os manifestos que contenham informações sobre como os clientes devem configurar, incluindo os certificados de raiz para instalar para a terminação TLS etc.</p> - -<p>Combinado com o recurso do 'processo principal de debug Firefox OS' do <a href="/pt-BR/Firefox_OS/Using_the_App_Manager">app manager</a>, eles permitem que você instale a cert raiz do seu proxy para o seu dispositivo executando <a href="https://github.com/mozfreddyb/b2g-misc/blob/master/PnH-FxOS.js" style="text-decoration: underline;">algum código</a> a partir de um rascunho.</p> - -<h2 id="Depurando_o_processo_principal_do_Firefox_OS">Depurando o processo principal do Firefox OS</h2> - -<p>Então como você depura o processo principal no Firefox? Se você estiver usando o Firefox Simulator ou um dispositivo real, é possível depurar aplicativos certificados através da App Manager, <a href="https://developer.mozilla.org/pt-BR/Firefox_OS/Using_the_App_Manager#Debugging_Certified_Apps" style="text-decoration: underline;">definindo algumas prefs em seu perfil</a>. Siga estes passos em primeiro lugar, em seguida, defina o devtools.chrome.enabled pref para true no about:config, antes de reiniciar o browser.</p> - -<p>Em seguida, conecte o seu dispositivo / simulador usando o Gerenciador de App, em seguida, na tela do dispositivo, você verá um botão "PROCESSO PRINCIPAL DE DEBUG"; clique nele e você poderá depurar JSMS e executar JavaScript privilegiado no rascunho.</p> - -<div class="note"> -<p>Nota: Cuidado com o que você executa contra o processo principal: você pode acidentalmente destruir o seu dispositivo!</p> -</div> - -<h2 id="Introduzindo_ZAP">Introduzindo ZAP</h2> - -<p>Primeiro, vamos continuar o processo usando ZAP. ZAP é um proxy interceptor que intercepta e criptografa novamente o tráfego HTTPS para facilitar a depuração. Clique no botão azul grande na <a href="https://www.owasp.org/index.php/ZAP" title="https://www.owasp.org/index.php/ZAP">ZAP homepage</a> para baixá-lo. Se você optar por usar outro proxy sinta-se a vontade para fazê-lo, nossa abordagem deve funcionar com ambos.</p> - -<h3 id="Certificado_ZAP">Certificado ZAP</h3> - -<p>Agora, em qualquer proxy que você usar, deixe-o exportar seu certificado para um arquivo, como <code>owasp_zap_root_ca.cer</code> (vá em <em><code>Ferramentas > Opções > Certificados SSL dinâmicos > Salvar</code></em>). Quando ZAP inicia, ele gera um certificado válido durante um ano. Você também pode gerar um novo a partir da seção Certificados SSL dinâmico.</p> - -<h3 id="Proxy_local">Proxy local</h3> - -<p>If you're using B2G desktop, you have to make sure that ZAP does not listen on <code style="font-style: normal;">localhost</code>, but instead on your attributed IP address (ethernet or Wi-Fi). This is because B2G Desktop's <code style="font-style: normal;">localhost</code> does not point to your desktop computer, but something within the <code style="font-style: normal;">b2g</code> binary itself. For our example, we will use my IP address: <code style="font-style: normal;">10.264.1.5</code>.</p> - -<p>Se você está trabalhando com um dispositivo real, você precisa ter certeza de que o seu telefone e o seu computador estão conectados à mesma rede / VLAN e podem se comunicar entre si (se você tiver uma dúvida, tente fazer o ping do IP de um dispositivo de o outro).</p> - -<h2 id="Conectando_seu_dispositivo_ao_proxy">Conectando seu dispositivo ao proxy</h2> - -<p>Você pode extrair as prefs do seu dispositivo, mudá-los para adicionar as preferências de proxy relevantes, colocá-los de volta.</p> - -<p>You can pull the default prefs from your device, change them to add the relevant proxy prefs, put them back.</p> - -<p>Ou, você pode configurar a sua ferramenta para <a href="https://www.computerist.org/blog/2014/07/23/Transparent-HTTPS-proxying-with-ZAP/">proxy HTTP and HTTPS transparente</a> em seguida, configurar iptables no seu dispositivo para apontar para o proxy. Por exemplo, para fazer tráfego de HTTPS passar por sua ferramenta de proxy:</p> - -<div class="codehilite"> -<pre><span class="n">adb</span> <span class="n">shell</span> <span class="n">iptables</span> <span class="o">-</span><span class="n">t</span> <span class="n">nat</span> <span class="o">-</span><span class="n">A</span> <span class="n">OUTPUT</span> <span class="o">-</span><span class="n">p</span> <span class="n">tcp</span> <span class="o">--</span><span class="n">dport</span> <span class="mi">443</span> <span class="o">-</span><span class="n">j</span> <span class="n">DNAT</span> <span class="o">--</span><span class="n">to</span><span class="o">-</span><span class="n">destination</span> <span class="mf">192.168.0.14</span><span class="o">:</span><span class="mi">8443</span> -</pre> -</div> - -<p>E, para redefini-la quando estiver pronto:</p> - -<div class="codehilite"> -<pre><span class="n">adb</span> <span class="n">shell</span> <span class="n">iptables</span> <span class="o">-</span><span class="n">t</span> <span class="n">nat</span> <span class="o">-</span><span class="n">F</span> -</pre> -</div> - -<h3 id="Configurando_um_proxy_LAN">Configurando um proxy LAN</h3> - -<p>Se você está perceber que está fazendo muito esse tipo de atividade, há um caminho que é ainda mais conveniente; configurar um teste LAN onde todo o tráfego é aproximado por padrão. Dessa forma, você poderá transformar o proxy e desligar apenas mudando o que wireless LAN que você está conectado.</p> - -<p>Nós construímos um usando um raspberry pi e <a href="http://raspberry-at-home.com/hotspot-wifi-access-point/">passos semelhantes a estes</a>. Mudamos as regras do <code>iptables</code> para ficar assim:</p> - -<div class="codehilite"> -<pre class="brush: bash">*filter -:INPUT ACCEPT [49:3128] -:FORWARD ACCEPT [0:0] -:OUTPUT ACCEPT [37:3924] --A FORWARD -i eth0 -o wlan0 -m state --state RELATED,ESTABLISHED -j ACCEPT --A FORWARD -i wlan0 -o eth0 -j ACCEPT -COMMIT -*nat -:PREROUTING ACCEPT [1:72] -:INPUT ACCEPT [1:72] -:OUTPUT ACCEPT [1:148] --A PREROUTING -i wlan0 -p tcp -m tcp --dport 80 -j DNAT --to-destination <proxy_host>:<http_port> --A PREROUTING -i wlan0 -p tcp -m tcp --dport 443 -j DNAT --to-destination <proxy_host>:<https_port> -:POSTROUTING ACCEPT [0:0] --A POSTROUTING -o eth0 -j MASQUERADE -COMMIT -</pre> -</div> - -<h2 id="Criando_um_banco_de_dados_certificado">Criando um banco de dados certificado</h2> - -<p>O ato de aceitar certificados acontece em configurações, que são armazenadas nos perfis. Aqui está uma pequena cartilha sobre perfis do Firefox:</p> - -<ol start="1" style="list-style-type: decimal; margin-left: 40px;"> - <li>Inicie o gerenciador de perfil do Firefox usando a opção -P na linha de comando, e certifique-se de que o Firefox não esteja usando todas as sessões do Firefox existentes (-no-remote): - <ul style="margin-left: 40px;"> - <li>No Linux, você precisa dar o seguinte comando: - <pre class="brush: bash">firefox -P -no-remote</pre> - </li> - <li>No Mac OS X: - <pre class="brush: bash">/Applications/Firefox.app/Contents/MacOS/firefox -P -no-remote</pre> - </li> - </ul> - </li> - <li>Agora crie um novo perfil chamado "zapped". Vá para as configurações de certificado - <em>Editar > Preferências > Avançado > Criptografia > Exibir Certificados > Importar</em>. Agora selecione o arquivo <code>owasp_zap_root_ca.cer</code> criado por seu proxy e diga ao Firefox que ele deve confiar neste CA para identificar sites (isto é realmente válido apenas para este perfil).</li> - <li>Após utilizar o Firefox para criar um banco de dados certificado para nós, agora podemos usar esse banco de dados para o nosso perfil B2G. O nome do diretório do perfil do Firefox é uma seqüência aleatória que termina com zapped. A localização depende do seu sistema operacional; veja <a href="/pt-BR/docs/Runtime_Directories" title="/en-US/docs/Runtime_Directories">Diretórios Runtime</a> para obter detalhes sobre onde ele pode ser encontrado.</li> - <li><strong>Para B2G desktop</strong>, precisamos apenas do arquivo <code>cert8.db</code>, que é a base de dados certificados do perfil. Copie-o para o seu perfil B2G diretório <code>b2g/gaia/profile/</code>.</li> - <li><strong>Em um dispositivo</strong>, copie o cert9.db em seu diretório de perfil do dispositivo: - <pre>$ adb shell stop b2g -$ adb push cert9.db /data/b2g/mozilla/*.default</pre> - </li> -</ol> - -<div class="note"> -<p>Nota: Isto irá substituir o arquivo existente.</p> -</div> - -<h2 id="Configurando_B2G">Configurando B2G</h2> - -<p>O próximo passo é definir ZAP como o proxy padrão para toda a comunicação de rede. As configurações de proxy, como as definições do certificado, não estão atualmente disponíveis a partir da interface do usuário Firefox OS.</p> - -<h3 id="Em_B2G_desktop">Em B2G desktop</h3> - -<p>Você precisa anexar essas configurações personalizadas para o arquivo de preferências, <code>b2g/gaia/profile/prefs.js</code>:</p> - -<pre><code class="brush: bash">user_pref("network.proxy.backup.ftp", "10.264.1.5"); -user_pref("network.proxy.backup.ftp_port", 8080); -user_pref("network.proxy.backup.socks", "10.264.1.5"); -user_pref("network.proxy.backup.socks_port", 8080); -user_pref("network.proxy.backup.ssl", "10.264.1.5"); -user_pref("network.proxy.backup.ssl_port", 8080); -user_pref("network.proxy.ftp", "10.264.1.5"); -user_pref("network.proxy.ftp_port", 8080); -user_pref("network.proxy.http", "10.264.1.5"); -user_pref("network.proxy.http_port", 8080); -user_pref("network.proxy.no_proxies_on", ""); -user_pref("network.proxy.share_proxy_settings", true); -user_pref("network.proxy.socks", "10.264.1.5"); -user_pref("network.proxy.socks_port", 8080); -user_pref("network.proxy.ssl", "10.264.1.5"); -user_pref("network.proxy.ssl_port", 8080); -user_pref("network.proxy.type", 1);</code> -</pre> - -<div class="note"> -<p>Nota: Lembre-se de substituir o meu endereço IP 10.264.1.5 pelo seu, e se o seu proxy não escuta na porta 8080, certifique-se de alterá-lo neste arquivo também.</p> -</div> - -<p>Neste momento, você já deverá estar pronto! Inicie o B2G Desktop novamente, e tente alguma navegação. O tráfego de rede deverá aparecer na ZAP.</p> - -<h3 id="Em_um_dispositivo">Em um dispositivo</h3> - -<p>Para habilitar essa funcionalidade em um dispositivo, você precisará modificar o arquivo <code>prefs.js</code> file localizado no seu perfil do seu dispositivo. Conecte o dispositivo ao computador que tenha sido previamente configurado com as ferramentas EDA.</p> - -<p>Primeiro, você precisa saber qual é o nome do seu diretório de perfil. Você pode encontrá-lo assim:</p> - -<pre>adb shell ls /data/b2g/mozilla</pre> - -<p>Entre a saída, você verá um diretório chamado com uma série de letras e números aleatórios que terminam em ".default". Este é o seu diretório de perfil. Use este nome, onde você vê "xxxxxxxx" daqui em diante.</p> - -<p>Em seguida, pegue o arquivo <code>prefs.js</code> para que você possa editá-lo:</p> - -<pre>adb pull /data/b2g/mozilla/xxxxxxx.default/prefs.js</pre> - -<p>Abra o arquivo resultante em seu editor de texto favorito; no final do arquivo, adicione as configurações personalizadas indicadas na seção acima e salve as alterações. Agora tudo que você precisa fazer é empurrar o arquivo alterado de volta para o dispositivo e reiniciar o processo de B2G para pegar as alterações, como segue (o processo B2G já deve ser interrompido se você seguiu as instruções anteriores para empurrar cert9.db):</p> - -<pre>adb push pref.js /data/b2g/mozilla/xxxxxxxx.default -adb shell start b2g</pre> - -<p>{{PreviousNext("Mozilla/Firefox_OS/Debugging/Debugging_and_security_testing", "Mozilla/Firefox_OS/Apps/Testing_in_a_privileged_context")}}</p> - -<h3 id="Charles_Proxy">Charles Proxy</h3> - -<p>Usuários que desejam usar Charles Proxy deverão ver este post: <a href="https://muffinresearch.co.uk/proxying-connections-from-ffos/">https://muffinresearch.co.uk/proxying-connections-from-ffos/</a></p> - -<p> </p> diff --git a/files/pt-br/archive/b2g_os/debugging/log_console_no_dispositivo/index.html b/files/pt-br/archive/b2g_os/debugging/log_console_no_dispositivo/index.html deleted file mode 100644 index a0ccfe5a2f..0000000000 --- a/files/pt-br/archive/b2g_os/debugging/log_console_no_dispositivo/index.html +++ /dev/null @@ -1,62 +0,0 @@ ---- -title: Log do console no dispositivo -slug: Archive/B2G_OS/Debugging/Log_console_no_dispositivo -translation_of: Archive/B2G_OS/Debugging/On-device_console_logging ---- -<div class="summary"> - <p><span class="seoSummary">Para que você possa fazer o log do console e vê-lo usando <a href="/pt-BR/docs/Mozilla/Firefox_OS/Debugging/Using_the_Remote_Web_Console" title="/en-US/docs/Mozilla/Firefox_OS/Debugging/Using_the_Remote_Web_Console">remote web console</a>, você pode armazenar a saída do console no seu próprio dispositivo, e então recuperar os logs a partir do seu computador usando o utilitário <a href="http://developer.android.com/tools/help/logcat.html" title="http://developer.android.com/tools/help/logcat.html"><code>logcat</code></a> através de uma conexão USB. Esse artigo mostra como habilitar esse recurso, executar o log e recuperá-lo.</span></p> -</div> -<h2 id="Habilitando_a_geração_dos_logs">Habilitando a geração dos logs</h2> -<p>Nas imagens de produção do Firefox OS, a geração de log (por exemplo {{domxref("console.log()")}}) é desabilitada por padrão, então habilte essa opção nas configurações do seu dispositivo em <a href="/pt-BR/Firefox_OS/Debugging/Developer_settings">Configurações do desenvolvedor</a> opção <em>Console Ativado</em>.</p> -<h2 id="Log">Log</h2> -<p>Uma vez o registro de logs ativado, ele funciona da mesma forma que o log no desktop Firefox OS. Simplesmente use os métodos do objeto {{domxref("console")}} para criar um texto de log no console. Por exemplo:</p> -<pre class="brush: js">console.info("Starting up the foobar hardware!"); -var err = foobar.start(); -if (err) { - console.error("--Error %d starting up the foobar hardware!", err); -} -</pre> -<div class="note"> - <p><strong>Nota</strong>: Veja {{domxref("console")}} para detalhes dos recursos de log disponíveis para vocês.</p> -</div> -<h2 id="Usando_logcat">Usando logcat</h2> -<p>Devido ao fato da saída de log ser armazenada no dispositivo Firefox OS e não existir nenhuma interface de usuário para verificar os logs no dispositivo, Because the log output is stored on the Firefox OS device, and there isn't currently any user interface for viewing these logs on the device, você terá que trazê-los para um computador para que possa analisá-los. Para fazer isso use o comando <code>logcat</code> do <code>adb</code>, que faz parte do pacote Android SDK (veja <a href="/pt-BR/Firefox_OS/Debugging/Installing_ADB">Instalando o ADB</a>).</p> -<p>Felizmente o uso do <code>logcat</code> é muito simples: uma vez o <code>adb</code> instalado e o dispositivo conectado ao seu computador via USB, você pode usá-lo através do terminal:</p> -<pre class="brush: bash">adb logcat</pre> -<p>Esse comando apresenta o log do dispositivo (armazenado em <code>/dev/log/system/</code>) na saída to terminal. Por exemplo:</p> -<pre class="brush: bash">I/Vold ( 107): Vold 2.1 (the revenge) firing up -D/Vold ( 107): Volume sdcard state changing -1 (Initializing) -> 0 (No-Media) -D/Vold ( 107): Volume emmc state changing -1 (Initializing) -> 0 (No-Media) -D/Vold ( 107): Volume sdcard state changing 0 (No-Media) -> 2 (Pending) -D/Vold ( 107): Volume sdcard state changing 2 (Pending) -> 1 (Idle-Unmounted) -W/Vold ( 107): Duplicate state (1) -W/Vold ( 107): Duplicate state (1) -W/Vold ( 107): Duplicate state (1) -W/Vold ( 107): Duplicate state (1) -W/Vold ( 107): Duplicate state (1) -W/Vold ( 107): Duplicate state (1) -W/Vold ( 107): Duplicate state (1) -W/Vold ( 107): Duplicate state (1) -W/Vold ( 107): Duplicate state (1) -W/Vold ( 107): Duplicate state (1) -W/Vold ( 107): Duplicate state (1) -W/Vold ( 107): Duplicate state (1) -W/Vold ( 107): Duplicate state (1) -D/Vold ( 107): Volume emmc state changing 0 (No-Media) -> 2 (Pending) -D/Vold ( 107): Volume emmc state changing 2 (Pending) -> 1 (Idle-Unmounted) -D/VoldCmdListener( 107): volume list -D/VoldCmdListener( 107): volume mount sdcard -I/Vold ( 107): /dev/block/vold/179:20 being considered for volume sdcard -D/Vold ( 107): Volume sdcard state changing 1 (Idle-Unmounted) -> 3 (Checking) -W/Vold ( 107): Skipping fs checks -I/Vold ( 107): Device /dev/block/vold/179:20, target /mnt/sdcard mounted @ /mnt/secure/staging -D/Vold ( 107): Volume sdcard state changing 3 (Checking) -> 4 (Mounted) -D/VoldCmdListener( 107): volume mount emmc -I/Vold ( 107): /dev/block/vold/179:33 being considered for volume emmc -D/Vold ( 107): Volume emmc state changing 1 (Idle-Unmounted) -> 3 (Checking) -W/Vold ( 107): Skipping fs checks -I/Vold ( 107): Device /dev/block/vold/179:33, target /mnt/emmc mounted @ /mnt/secure/staging -D/Vold ( 107): Volume emmc state changing 3 (Checking) -> 4 (Mounted) - -etc. -</pre> diff --git a/files/pt-br/archive/b2g_os/debugging/taking_screenshots/index.html b/files/pt-br/archive/b2g_os/debugging/taking_screenshots/index.html deleted file mode 100644 index e0bc5bcff0..0000000000 --- a/files/pt-br/archive/b2g_os/debugging/taking_screenshots/index.html +++ /dev/null @@ -1,61 +0,0 @@ ---- -title: Tirar screenshots -slug: Archive/B2G_OS/Debugging/Taking_screenshots -tags: - - Firefox OS -translation_of: Archive/B2G_OS/Debugging/taking_screenshots ---- -<p>Tirar screenshots de sua aplicação poderia ser útil para mostrar seu trabalho para um cliente, para mostrar na frente dos seus amigos com o telefone FxOS, para publicar no Marketplace, entre outros.</p> -<p>Esse artigo explica como tirar screenshots com o seu Firefox OS. Os desenvolvedores Android irão facilmente assimilar as coisas, pois os passos são muito similares.</p> -<h2 id="Preparando_seu_telefone">Preparando seu telefone</h2> -<p><span style="line-height: 21px;">No telefone, entre em Configurações (Settings) > Informação do Dispositivo (Device Information) > Mais informações (More Information) > Em Desenvolvedor marque: "Depuração Remota (Remote Debugging)" e "Habilitar console (Console Enabled)"</span></p> -<p><span style="line-height: 21px;">Plug o seu celular ao computador.</span></p> -<p>Agora, você tem três escolhas: usar o Terminal, usar o DDMS no Eclipse ou usar uma combinação de botões no telefone.</p> -<h2 id="Tirando_um_screenshot">Tirando um screenshot</h2> -<h3 id="Terminal">Terminal</h3> -<p>Abra a janela do terminal.</p> -<ol> - <li>Para tirar o screenshot, nós iremos chama-lo de "screenshot.png"<br> - <code>adb shell screencap -p /sdcard/screenshot.png</code></li> - <li>Pegue a imagem no seu computador<br> - <code>adb pull /sdcard/screenshot.png</code></li> - <li>Remova o screenshot do seu telefone<br> - <code>adb shell rm /sdcard/screenshot.png</code></li> -</ol> -<p>Alternativamente, você pode usar ffmpeg:</p> -<ol> - <li>Certifique-se de ter instalado o ffmpeg: - <ol> - <li>No Mac, se você usa MacPorts, você pode usar: <code>sudo port install ffmpeg</code>. Pelo homebrew: <code>brew install ffmpeg</code>.</li> - <li>No Linux (Ubuntu/Debian), use <code>sudo apt-get install ffmpeg</code>.</li> - </ol> - </li> - <li><code>cd</code> no diretório <code>B2G/gaia</code>.</li> - <li>Use o comando <code>make screenshot</code>.</li> - <li>Você terá sua cópia de tela em <code>screenshot.png</code>.</li> -</ol> -<h3 id="DDMS">DDMS</h3> -<p>Abra o Eclipse.</p> -<ol> - <li>Abra o DDMS<br> - Window > Open Perspective > Other > DDMS</li> - <li>No painel do lado esquerdo, aba "Dispositivos (Devices)", clique no botão "Capturar tela (Screen capture)"</li> - <li>Uma nova janela aparecer com algumas opções, clique no botão "Salvar"</li> -</ol> -<div class="note"> - <p><span style="line-height: 21px;"><strong>Nota: </strong>Quer aprender mais sobre ADB? De uma olhada na </span><a href="http://developer.android.com/tools/help/adb.html" style="line-height: inherit;" title="ADB documentation">documentação</a><span style="line-height: inherit;">.</span></p> -</div> -<h3 id="Combinação_de_botões_no_telefone">Combinação de botões no telefone</h3> -<ol> - <li>A partir da versão 2.0 do Firefox OS versions up to 2.0, pressione simultaneamente os botões <em>Home</em> e <em>Power</em>.</li> - <li>A partir da versão 2.1 também funcionará pressionando os botões <em>Volume para baixo</em> e <em>Power</em> por alguns segundos.</li> -</ol> -<p>Isso vai fazer uma cópia da tela, cujo arquivo será salvo na sua Galeria. Você poderá copiar a imagem do SDCard para o seu computador utilizando o método que você preferir.</p> -<div class="note"> - <p><strong>Nota</strong>: A combinação de botões foi alterada porque muitas pessoas acham que é difícil pressionar os botões Home e Power, principalmente se utilizar uma só mão. Outro problema se dá com dispositivos que não possuem o botão Home fisicamente.</p> -</div> -<h3 id="App_ManagerSimulador">App Manager/Simulador</h3> -<ol> - <li>No <a href="https://developer.mozilla.org/pt-BR/Firefox_OS/Using_the_App_Manager">App Manager</a>, conecte seu telefone e vá para a tab <strong>Device</strong>, na esquerda.</li> - <li>Clique no botão <strong>Screenshot</strong> na parte inferior da página (no mesmo local que você inicia o simulador).</li> -</ol> diff --git a/files/pt-br/archive/b2g_os/desenvolvendo_gaia/alterando_aplicativos_empacotados_compilacao_imagem/index.html b/files/pt-br/archive/b2g_os/desenvolvendo_gaia/alterando_aplicativos_empacotados_compilacao_imagem/index.html deleted file mode 100644 index 893a07579d..0000000000 --- a/files/pt-br/archive/b2g_os/desenvolvendo_gaia/alterando_aplicativos_empacotados_compilacao_imagem/index.html +++ /dev/null @@ -1,87 +0,0 @@ ---- -title: Alterando os aplicativos empacotados durante a compilação da imagem -slug: >- - Archive/B2G_OS/Desenvolvendo_Gaia/Alterando_aplicativos_empacotados_compilacao_imagem -tags: - - Aplicativos - - Compilação - - Firefox OS - - Gaia - - Lista de aplicativos -translation_of: Archive/B2G_OS/Developing_Gaia/Customizing_build-time_apps ---- -<div class="summary"> - <p><span class="seoSummary">Como um desenvolvedor ou um fornecedor de dispositivos, você vai querer customizar os aplicativos que virão instalados em um dispositivo Firefox OS por uma variedade de razões. Esse artigo explica os diferentes mecanismos de fazer isso.</span></p> -</div> -<h2 id="Locais_dos_aplicativos_dentro_do_Gaia">Locais dos aplicativos dentro do Gaia</h2> -<p>Os aplicativos que são executados no Firefox OS estão na árvore de fontes do Gaia, em uma dos dois diretórios:</p> -<ul> - <li><a href="https://github.com/mozilla-b2g/gaia/tree/master/apps">gaia/apps/</a>: Nesse diretório ficam os aplicativos padrões do sistema, como calendário, email, configurações, etc.</li> - <li><a href="https://github.com/mozilla-b2g/gaia/tree/master/dev_apps">gaia/dev-apps</a>: Nesse diretório ficam os outros aplicativos, como aqueles incluídos no processo de customização.</li> -</ul> -<p>Se você quiser retirar ou adicionar aplicativos na sua imagem do Gaia/B2G, você pode fazer isso de algumas formas diferentes detalhadas abaixo.</p> -<h2 id="Método_de_customização_por_força_bruta">Método de customização por "força bruta"</h2> -<p>O método "força bruta" consiste-se em simplesmente apagar os aplicativos que você não quer que estejam presentes na imagem, antes da compilação.</p> -<h2 id="Editando_as_listas_de_configuração">Editando as listas de configuração</h2> -<p>O método mais refinado é editar os arquivos <code>apps-*.list</code> (encontrados nos diretórios <code>phone/</code> ou <code>tablet/</code> em <a href="https://github.com/mozilla-b2g/gaia/tree/master/build/config">gaia/build/config/</a>, dependendo do tipo do dispositivo) que contém os caminhos para incluir os aplicativos em tempo de compilação. Por exemplo, <a href="https://github.com/mozilla-b2g/gaia/blob/master/build/config/phone/apps-production.list">gaia/build/config/phone/apps-production.list</a> parece algo como:</p> -<pre class="brush: bash">apps/bluetooth -apps/bookmark -apps/browser -apps/calendar -apps/callscreen -etc.</pre> -<p>Observer que você também pode especificar que todos os aplicativos do diretório sejam incluídos na imagem, como por exemplo:</p> -<pre class="brush: bash">apps/*</pre> -<p>O mecanismo para escolher qual arquivo <code>apps-*.list</code> será utilizado durante a compilação os aplicativos disponíveis está em <a href="https://github.com/mozilla-b2g/gaia/blob/master/Makefile">gaia/Makefile</a>, e é algo como:</p> -<pre class="brush: cpp"><span class="nv">GAIA_DEVICE_TYPE</span><span class="o">?=</span>phone - ... -GAIA_APP_TARGET?=engineering - ... -ifeq ($(MAKECMDGOALS), demo) -GAIA_DOMAIN=thisdomaindoesnotexist.org -GAIA_APP_TARGET=demo -else ifeq ($(MAKECMDGOALS), dogfood) -DOGFOOD=1 -else ifeq ($(MAKECMDGOALS), production) -PRODUCTION=1 -endif - ... -ifeq ($(PRODUCTION), 1) -GAIA_OPTIMIZE=1 -GAIA_APP_TARGET=production -endif - -ifeq ($(DOGFOOD), 1) -GAIA_APP_TARGET=dogfood -endif - ... -ifndef GAIA_APP_CONFIG -GAIA_APP_CONFIG=build$(SEP)config$(SEP)apps-$(GAIA_APP_TARGET).list -endif</pre> -<p>Incialmente, a variável <code>GAIA_APP_TARGET</code> é configurada como <code>engineering</code> e a variável <code><span class="nv">GAIA_DEVICE_TYPE</span></code> como <code>phone</code>, assim, como padrão a compilação do Gaia a partir do fonte usará o arquivo <a href="https://github.com/mozilla-b2g/gaia/blob/master/build/config/phone/apps-engineering.list">gaia/config/phone/app-engineering.list</a> (que inclui todos os testes, demos, etc).</p> -<p>Para especificar o uso de uma lista diferente de aplicativos especifique opções diferentes para executar o comando <code>make</code>. Por exemplo, para compilar com a lista <a href="https://github.com/mozilla-b2g/gaia/blob/master/build/config/phone/apps-production.list">gaia/build/config/phone/apps-production.list</a>, use:</p> -<pre class="brush: bash">PRODUCTION=1 make</pre> -<p>Se você especificar com <code>DEMO=1</code>, irá usar a lista <a href="https://github.com/mozilla-b2g/gaia/blob/master/build/config/phone/apps-demo.list">apps-demo.list</a>. Se for <code>DOGFOOD=1</code> será usada a lista <a href="https://github.com/mozilla-b2g/gaia/blob/master/build/config/phone/apps-dogfood.list">apps-dogfood.list</a>.</p> -<p>Você pode alterar diretamente <code>GAIA_APP_CONFIG</code> em <a href="https://github.com/mozilla-b2g/gaia/blob/master/Makefile">gaia/Makefile</a>, e fornecer seu próprio arquivo <code>apps-*.list</code>.</p> -<p><a href="https://github.com/mozilla-b2g/gaia/blob/master/Android.mk#L24-L28">gaia/Android.mk</a> contém essas linhas:</p> -<pre class="brush: cpp">ifneq ($(filter user userdebug, $(TARGET_BUILD_VARIANT)),) -GAIA_MAKE_FLAGS += PRODUCTION=1 -B2G_SYSTEM_APPS := 1 -endif</pre> -<p>Quando você compilar, se <code>VARIANT=user</code> ou <code>VARIANT=userdebug</code> (acabam se refletindo na variável <code>TARGET_BUILD_VARIANT</code>), a variável <code>PRODUCTION</code> recebe o valor 1 (<code>PRODUCTION=1</code>) quando o Gaia é compilado.</p> -<div class="note"> - <p><strong>Nota</strong>: Descubra outras opções disponíveis do make no artigo <a href="/pt-BR/Firefox_OS/Developing_Gaia/make_options_reference">referência de opções make</a>.</p> -</div> -<h2 id="Usando_customizações_de_mercado">Usando customizações de mercado</h2> -<p>O terceiro, e mais refinado método (porém o mais complexo) é usar customizações. Isso possibilita especificar instruções de customizações em tempo de compilação em diferentes diretórios sem a necessidade de alterar o repositório principal do Gaia. Você pode lincluir suas próprias customizações em diretórios distintos, ou usar diretórios pré-existentes que vêm com o fonte.</p> -<p>Por exemplo, especificando a localização do modelo de customização com a variável de ambiente <code>GAIA_DISTRIBUTION_DIR</code>:</p> -<pre class="brush: bash">GAIA_DISTRIBUTION_DIR=distribution_tablet make</pre> -<p>Mais exemplos de customizações para mecanismo de distribuição podem ser encontrados em <a href="https://github.com/mozilla-b2g/gaia/tree/master/customization">https://github.com/mozilla-b2g/gaia/tree/master/customization</a></p> -<p>Customizações possuem seu próprio artigo, leia nosso <a href="/en-US/Firefox_OS/Developing_Firefox_OS/Market_customizations_guide">Guia de customizaçõe do mercado</a>.</p> -<div class="note"> - <p><strong>Nota</strong>: Se você quiser incluir aplicativos externos customizados como parte da sua imagem do Gaia, você precisa compilar de uma forma específica e colocá-los no diretório <code>gaia/dev-apps/</code>. Leia o artigo <a href="https://developer.mozilla.org/pt-BR/Firefox_OS/Developing_Firefox_OS/Market_customizations_guide#Building_Prebundled_web_apps">Compilando aplicativos web pré-empacotados</a> para saber mais a respeito.</p> -</div> -<div class="warning"> - <p><strong>Important</strong>e: Se você é um fornecedor de dispositivos e deseja criar uma imagem customizada do B2G/Gaia para distribuição, você precisa satisfazer certos critérios antes de poder incluir o aplicativo Firefox Marketplace no seu telefone/tablet/etc. Contacte a Mozilla para maiores detalhes.</p> -</div> -<p> </p> diff --git a/files/pt-br/archive/b2g_os/desenvolvendo_gaia/diferente_formas_executar_gaia/index.html b/files/pt-br/archive/b2g_os/desenvolvendo_gaia/diferente_formas_executar_gaia/index.html deleted file mode 100644 index 025687af1e..0000000000 --- a/files/pt-br/archive/b2g_os/desenvolvendo_gaia/diferente_formas_executar_gaia/index.html +++ /dev/null @@ -1,79 +0,0 @@ ---- -title: Diferentes formas de executar o Gaia -slug: Archive/B2G_OS/Desenvolvendo_Gaia/Diferente_formas_executar_Gaia -tags: - - Desenvolvimento - - Emulador - - Gaia -translation_of: Archive/B2G_OS/Developing_Gaia/Different_ways_to_run_Gaia ---- -<div class="summary"> - <p><span class="seoSummary">Você pode executar o Gaia em um simulador via App Manager, diretamente do Firefox Desktop, como um binário dedicado (B2G Desktop), em um emulador, ou em um dispositivo móvel compatível. Esse artigo fornece um resumo de como fazer com cada uma das opções, com links para maiores informações.</span></p> -</div> -<h2 id="O_quão_próximo_cada_opção_está_de_uma_coisa_real">O quão próximo cada opção está de uma coisa real?</h2> -<p dir="ltr" id="docs-internal-guid-46d8bd5f-ac65-2c23-a6c9-cc3bc3dc3cd5">Algumas das soluções para executar o Gaia nesse artigo está mais próxima da experiência em um dispositivo real do que em outras. A ordem do quão fácil é executar cada uma é a seguinte:</p> -<ol dir="ltr"> - <li>Gaia no simulador</li> - <li>Gaia no Desktop Firefox</li> - <li>Gaia no B2G Desktop</li> - <li>Gaia no Emulador</li> - <li><em>Flashing</em> do Gaia no telefone</li> - <li><em>Flashing</em> do Gaia+Gecko no telefone</li> -</ol> -<p>A ordem de "O quão próximo cada opção está de um produto comercializado" é exatamente a oposta da mostrada acima. Dependendo do recurso no qual você está trabalhando, você terá que encontrar o ambiente adequado à resolução do problema.</p> -<h2 id="Usando_o_Gaia_no_Simulador_App_ManagerFirefox_OS">Usando o Gaia no Simulador App Manager/Firefox OS</h2> -<p>A forma mais rápida de experimentar o Gaia é via o <a href="/pt-BR/Firefox_OS/Using_the_App_Manager">Firefox App Manager</a>.<br> - <br> - App Manager é uma ferramenta de desenvolvimento disponível no Firefox Desktop. Fornece diversas ferramentas úteis que o ajudarão a testar, instalar e depurar Aplicativos web HTML5 nos dispositivos Firefox OS e no Simulador diretamente do seu navegador.<br> - <br> - No navegador Firefox versões 26 e superiores, abra o App Manager usando <em>Tools > Web Developer > App Manager</em>. Clique em Iniciar Simulador (uma vez que esteja instalado) e você está pronto para testar o Firefox OS.</p> -<h2 id="B2G_Desktop">B2G Desktop</h2> -<p>B2G Desktop é um binário para executar no desktop do <em>app runtime</em> utilizado nos dispositivos Firefox OS que você pode usar para executar o Gaia no seu computador.</p> -<p>Você pode baixá-lo diretamente em <a href="http://nightly.mozilla.org/#Desktop%20Boot2Gecko">versão nightly do B2G desktop</a> do <a href="http://nightly.mozilla.org/">site do Firefox Nightly</a>. Dependendo de qual versão você está trabalhando, você querer uma versão específica do latest-mozilla-b2g18. Existem binários para Linux (32 bit and 64 bit), Mac OS X e Windows.</p> -<p>Os binários Nightly vêm com a versão mais recente do Gaia. Uma vez que você tenha baixado o arquivo, tudo o que você precisa fazer é descompactá-lo em um diretório e executar o binário b2g.</p> -<pre class="brush: bash">$ cd b2g -$ ./b2g</pre> -<p>Para executar o B2G com sua própria versão do Gaia para fins de desenvolvimento, antes você precisa compilar um perfil a partir do seu clone:</p> -<pre class="brush: bash">$ cd /path/to/gaia -$ DEBUG=1 DESKTOP=0 make</pre> -<p>Isso irá gerar um subdiretório no seu diretório <code>gaia</code> chamado <code>profile</code>. O parâmetro <code>DEBUG</code> executa o Gaia como aplicativos hospedados em um servidor web interno, ao invés do padrão que são os aplicativos empacotados, que devem ser reempacotados a cada alteração. Você vai saber qual o diretório criado observando a última linha da saída do comando acima, que vai se paracer como:</p> -<pre class="brush: bash">Profile Ready: please run [b2g|firefox] -profile /path/to/gaia/profile</pre> -<p>Então, você pode executar o B2G Desktop com o seu perfil compilado executando:</p> -<pre class="brush: bash">$ ./b2g /path/to/gaia/profile</pre> -<p>Você também pode criar o seu próprio binário do B2G desktop a partir do fonte.</p> -<div class="note"> - <p><strong>Nota:</strong> No Mac OS X, o binário <code>b2g</code> fica em um subdiretório do B2G.app. Para executar o B2G Desktop nessa plataforma, execute o seguinte comando:<br> - <code>./B2G.app/Contents/MacOS/b2g /path/to/gaia/profile</code></p> -</div> -<h2 id="Usando_o_Gaia_no_Firefox_Desktop">Usando o Gaia no Firefox Desktop</h2> -<p>Também é possível executar o Gaia no navegador Firefox. A grande vantagem é que você terá um ciclo de desenvolvimento rápido bem como ferramentas com padrões abertos para o desenvolvimento e depuração. Veja o artigo <a href="/pt-BR/Firefox_OS/Developing_Gaia/Running_the_Gaia_codebase">Executando o codebase do Gaia</a> para detalhes de como fazer isso.</p> -<div class="note"> - <p><strong>Nota</strong>: FoxBox é um binário do Firefox OS executado em uma VM (Virtual Machine), is a Firefox OS build environment contained in a VM (Virtual Machine), executado pelo Vagrant and VirtualBox. Isso traz diversas vantagens, dentro das quais a prinicipal é que diversas configurações já vêm prontas, o que faz com que você se preocupe apenas com o trabalho de desenvolvimento. Para instruções completas, leaia <a class="external external-icon" href="https://github.com/gasolin/foxbox">o arquivo README no repositório do FoxBox no GitHub</a>.</p> -</div> -<h2 id="Fazendo_um_Flashing_do_Gaia_em_um_dispositivo_real">Fazendo um <em>Flashing</em> do Gaia em um dispositivo real</h2> -<p dir="ltr" id="docs-internal-guid-46d8bd5f-ac6a-0884-5265-76e0fe740fa6">Para o flash do Gaia no dispositivo real:</p> -<ol dir="ltr"> - <li>Certifique-se de ter clonado o repo do Gaia no seu computador e ter o <a href="/pt-BR/Firefox_OS/Debugging/Installing_ADB">ADB</a> instalado.</li> - <li>Habilite a opção de <a href="/pt-BR/Firefox_OS/Debugging/Developer_settings#Debugging_via_USB">Depuração via USB</a>.</li> - <li>Conecte o dispositivo ao computador via USB.</li> - <li>Se houver um dispositivo conectado, você pode executar os seguintes comendos. Se o seu sistema operacional for Windows ou Linux você pode precisar verificar os drivers do USB para configurar corretamente a conexão no seu computador.</li> - <li>Execute o seguinte comando no repo Gaia para atualizar o código fonte do Gaia: - <pre class="brush: bash">$ make reset-gaia</pre> - </li> - <li>Para testar os aplicativos que não forem do sistema, você pode instalá-los sem a necessidade de reinicializar o dispositivo usando o seguinte comando: - <pre class="brush: bash" dir="ltr">$ make install-gaia</pre> - </li> - <li>Se você quiser instalar apenas um aplicativo específico, você pode usar a variável APP, como o exemplo seguir: - <pre class="brush: bash">$ make install-gaia APP=browser</pre> - </li> -</ol> -<div class="note"> - <p dir="ltr"><strong>Nota</strong>: Para copiar o Gaia para o seu dispositivo use <code>make install-gaia</code> / <code>make reset-gaia</code> para compilar o Gaia com resolução 1x por padrão. Para especificar resoluções mais altas, você precisa usar a opção do make <code>GAIA_DEV_PIXELS_PER_PX</code> ou <code>GAIA_DPPX</code> (veja <a href="https://developer.mozilla.org/pt-BR/Firefox_OS/Developing_Gaia/make_options_reference#High_resolution_image_assets">Opção de Imagens de alta resolução</a> para maiores detalhes dessa opção) Quando copiar o Gaia para o seu dispositivo dessa forma, você deve especificar a opção que mais se adeque ao seu dispositivo, por exemplo, <code>make install-gaia GAIA_DEV_PIXELS_PER_PX=1.5</code> para o dispositivo Flame (ou 2, or 2,5, etc, veja os valores na tabela "<a href="https://developer.mozilla.org/en-US/Apps/Build/Icon_implementation_for_apps#512_icon_for_device_display">512 icon for device display</a>".)</p> -</div> -<p dir="ltr">Para verificar se o seu dispositivo está corretamente conecatado ao seu computador via USB, você pode executar:</p> -<pre class="brush: bash" dir="ltr">$ adb devices</pre> -<p dir="ltr">Que apresentará um resultado como esse:</p> -<pre class="brush: bash" dir="ltr">List of devices attached -emulator-5554 device</pre> -<h2 id="Compilando_o_Gecko_e_o_Gaia_usando_em_um_emulador_ou_num_dispositivo_real">Compilando o Gecko e o Gaia usando em um emulador ou num dispositivo real</h2> -<p>Se você tem um dispositivo compatível, você pode<a href="/pt-BR/docs/Mozilla/Firefox_OS/Building_and_installing_Firefox_OS" title="Mozilla/Firefox_OS/Building_and_installing_Firefox_OS"> compilar ou instalar sua própria versão do Firefox OS</a> e então executá-lo no Emulador ou copiá-lo para seu dispositivo.</p> diff --git a/files/pt-br/archive/b2g_os/desenvolvendo_gaia/entendendo_codebase_gaia/index.html b/files/pt-br/archive/b2g_os/desenvolvendo_gaia/entendendo_codebase_gaia/index.html deleted file mode 100644 index 7621c0ec99..0000000000 --- a/files/pt-br/archive/b2g_os/desenvolvendo_gaia/entendendo_codebase_gaia/index.html +++ /dev/null @@ -1,102 +0,0 @@ ---- -title: Entendendo o codebase do Gaia -slug: Archive/B2G_OS/Desenvolvendo_Gaia/Entendendo_codebase_gaia -tags: - - Codebase do Gaia - - Desenvolvimento - - Gaia - - Verificação de Estilo -translation_of: Archive/B2G_OS/Developing_Gaia/Understanding_the_Gaia_codebase ---- -<div class="summary"> - <p><span class="seoSummary">Antes de começar a fazer suas próprias modificações no <a href="https://github.com/mozilla-b2g/gaia/">codebase do Gaia</a>, você deve entender os conceitos básicos de sua estrutura, e quais as convenções de código são utilizadas. Esse artigo cobre ambos os pontos.</span></p> -</div> -<h2 id="Estrutura_do_codebase_do_Gaia">Estrutura do codebase do Gaia</h2> -<p>A seção a seguir descreve partes mais importantes do codebase Gaia.</p> -<h3 id="apps">apps/</h3> -<p>Esse diretório contem todos os aplicativos principais do Gaia que aparecem na tela inicial — como o calendário e câmera — e os aplicativos básicos — como system, tela incial e teclado.<br> - <br> - Os aplicativos funcionam de maneiras ligeiramente diferentes, mas todos têm uma série de características comuns, tais como:</p> -<ul> - <li><code>index.html</code>: o arquivo central do aplicativo</li> - <li><code>manifest.webapp</code>: o arquivo de manifesto que define o aplicativo</li> - <li><code>locales</code>: as strings de localização do aplicativo</li> - <li><code>test</code>: testes unitários e integrados próprios do aplicativo</li> - <li><code>js</code>, <code>style</code>: scripts e estilos do aplicativo</li> - <li><code>resources</code>: imagens, sons e outros arquivos</li> -</ul> -<div class="note"> - <p><strong>Nota</strong>: Você pode encontrar mais informações sobre como os aplicativos realmente funcionam no <a href="/pt-BR/Firefox_OS/Platform/Gaia/Gaia_apps">guia de aplicativos Gaia</a>.</p> -</div> -<h3 id="build">build/</h3> -<p>Esse diretório contem os scripts de compilação.</p> -<h3 id="dev_apps">dev_apps/</h3> -<p>Esse diretório contem outros aplicativos que são incluídos por customização. Por exemplo, você quiser incluir aplicativos na sua própria compilação, devem ser armazenados nesse diretório.</p> -<div class="note"> - <p><strong>Nota</strong>: Para mais informações sobre customização do Gaia, leia nosso <a href="/pt-BR/Firefox_OS/Developing_Firefox_OS/Market_customizations_guide">Guia de customização</a>.</p> -</div> -<h3 id="keyboard">keyboard/</h3> -<p>Esse diretório contem dicionários e layouts para diferentes idiomas.</p> -<h3 id="locales">locales/</h3> -<p>Esse diretório contém o arquivo JSON <code>languages_all.json</code>, que define os idiomas suportados no Gaia. Para mais informações sobre como os aplicativos são localizados, leia <a href="/pt-BR/Apps/Build/Localization/Getting_started_with_app_localization">Primeiros passos com a localização de aplicativos</a>.</p> -<h3 id="shared">shared/</h3> -<p>Esse diretório contém diversos recursos que muitos aplicativos podem usar, os mais comuns são:</p> -<ul> - <li><code>gaia/shared/js</code>: bibliotecas JavaScript que executam funções comuns</li> - <li><code>l10n.js</code>: Biblioteca de localização que detecta o idioma do seu dispositivo a partir do local, e substitui as strings "localizáveis" do seu aplicativo com as strings referentes ao idioma armazenadas nos diretórios de localização. As strings "localizáveis" são identificadas nos elementos que possuem atributos <code>data-l10n-id</code>.</li> - <li><code>gaia/shared/locales</code>: Recursos localizados para diferentes idiomas.</li> - <li><code>gaia/shared/resources</code>: Itens comuns como ícones, sons de toque do telefone e alarmes.</li> - <li><code>gaia/shared/style</code>: páginas de estilos e outros recursos como botões, barras de ferramentas, tabs, etc.</li> - <li><code>gaia/shared/style_unstable</code>: recursos instáveis ou experimentais.</li> - <li><code>gaia/shared/test</code>: JavaScript para definir os testes unitários e integrados.</li> -</ul> -<h3 id="tools">tools/</h3> -<p>Esse diretório contém ferramentas para scripts de compilação e testes.</p> -<h2 id="Estilo_de_codificação_Gaia">Estilo de codificação Gaia</h2> -<p>O Gaia segue <a href="http://google-styleguide.googlecode.com/svn/trunk/javascriptguide.xml">o estilo de codificação em JavaScript do Google</a>.</p> -<p>Informações gerais:</p> -<ul> - <li>Estilo de codificação: <a href="/pt-BR/docs/Mozilla/Developer_guide/Coding_Style#General_practices">Práticas gerais</a></li> - <li>Estilo de codificação: <a href="/pt-BR/docs/Mozilla/Developer_guide/Coding_Style#JavaScript_practices">Práticas de JavaScript</a></li> - <li>Estilo de codificação: <a href="/pt-BR/docs/Mozilla/Developer_guide/Coding_Style#Naming_and_Formatting_code">Nomeando e formatando o código</a></li> -</ul> -<h3 id="Regras_específicas">Regras específicas</h3> -<ol> - <li>Certifique-se que os arquivos HTML possuem a declaração <code><!DOCTYPE html></code> (ou seja, documentos HTML5). Se não fizer a declaração o Internet Explorer 9 e anteriores irão carregá-lo no modo de compatibilidade..</li> - <li>Inclua o comando <code>"use strict"</code> (exatamente como descrito, incluindo as aspas) no início dos arquivos JavaScript para colocá-los em <em>strict mode</em>.</li> - <li>Sempre utilize dois espaços para identação ao invés de tabulação.</li> - <li>Por favor use quebras de linha para separar blocos lógicos do código!</li> - <li>Ao criar nomes de arquivos com mais de uma palavra use o caracter "sublinha" para separar as palavras, por exemplo: <code>like_this.js</code>.</li> - <li>Use plics (') ao invés de aspas (") para strings.</li> - <li>Use estruturas expandidas: - <pre class="brush: js">Bad -if (expression) doSomething(); - -Correct -if (expression) { - doSomething(); -}</pre> - </li> - <li>Se você estiver trabalhando no <a href="/pt-BR/Firefox_OS/Platform/Gaia/Gaia_apps/System">aplicativo System</a>, verifique <a href="https://groups.google.com/forum/#!msg/mozilla.dev.gaia/rEhSrw6XmT4/UNvE7qW9pgYJ">esse guia</a>.</li> -</ol> -<h3 id="Verificação_do_estilo_de_codificação_por_commit">Verificação do estilo de codificação "por commit"</h3> -<p>Gaia usa <a href="http://www.jshint.com/">jshint</a> para verificar automaticamente estilos JS antes de cada commit. Uma vez que você submete um Pull Request ao repositório Gaia, o servidor Trevis (Github Continuous Integration) executará essa verificação para indicar se todos os estilos estão corretos.</p> -<p>O script de precommit está em <a href="https://github.com/mozilla-b2g/gaia/blob/master/tools/pre-commit">gaia/tools/pre-commit</a> e será copiado para o diretório do projet <code>.git/hooks</code> uma vez que o comando <code>make</code> é executado.</p> -<div class="note"> - <p><strong>Nota</strong>: Nós estamos acostumados a usar <a href="https://developers.google.com/closure/utilities/docs/linter_howto">gjslint</a> para verificar os estilos de codificação, mas já está obsoleta e o uso do jshing é mais rigoroso e produz resultados melhores. Estamos usando JSHint desde o Firefox 1.4 e o gjslint somente é recomendado para o legado que não foi migrado para o JSHint.</p> -</div> -<h3 id="Executando_verificações_manuais_via_Gaia">Executando verificações manuais via Gaia</h3> -<p>Antes de submeter uma correção, nós recomendamos que você execute JSHint manualmente para verificar algum erro de estilo.<br> - <br> - Você deve olhar no diretório <a href="https://github.com/mozilla-b2g/gaia/tree/master/build/jshint">gaia/build/jshint</a> para maiores detalhes sobre o jshint no Gaia. É fornecido um script para você:</p> -<pre class="brush: bash">$ make lint</pre> -<p>para executar automaticamente os verificadores de estilo gjslint e jshint. Ou voc&e pode executar:</p> -<pre class="brush: bash">$ make hint</pre> -<p>para executar somente o verificador de estilo jshint.</p> -<div class="note"> - <p><strong>Nota</strong>: Se você quiser instalar o jshint sem usar o Gaia, use os seguintes comandos:</p> - <pre class="brush: bash">npm install jshint -g -jshint myfile.js -</pre> -</div> -<p> </p> diff --git a/files/pt-br/archive/b2g_os/desenvolvendo_gaia/executando_codebase_gaia/index.html b/files/pt-br/archive/b2g_os/desenvolvendo_gaia/executando_codebase_gaia/index.html deleted file mode 100644 index bbe3d64508..0000000000 --- a/files/pt-br/archive/b2g_os/desenvolvendo_gaia/executando_codebase_gaia/index.html +++ /dev/null @@ -1,82 +0,0 @@ ---- -title: Executando o codebase do Gaia -slug: Archive/B2G_OS/Desenvolvendo_Gaia/Executando_codebase_Gaia -tags: - - Desenvolvimento - - Gaia - - codebase -translation_of: Archive/B2G_OS/Developing_Gaia/Running_the_Gaia_codebase ---- -<div class="summary"> -<p><span class="seoSummary">Esse artigo trata em detalhes como executar o codebase do Gaia localmente e quais ferramentas estão disponíveis para a configuração.</span></p> -</div> - -<p>Para começar, nós avisamos que você NÃO PRECISA compilar o Gecko ou o B2G para contribuir com o Gaia. Basta você baixar o código fonte do Gaia e de alguma forma conseguir executar e editar.<br> - <br> - Existem formas diferentes de executar o Gaia:</p> - -<ul> - <li>Fazer um <em>flashing</em> de uma compilação atualizada do Gaia no seu telefone</li> - <li>Executar o seu Gaia no B2G Desktop</li> - <li>Executar o seu Gaia através do App Manager/Simulador Firefox OS/WebIDE</li> - <li>Executar o Gaia dentro da ferramenta Firefox <span id="result_box" lang="pt"><span class="hps">Mulet para a execução do Gaiano </span></span>Desktop</li> -</ul> - -<p>Você pode encontrar informações concisas de como executar o Gaia nessas diferentes formas na página <a href="/pt-BR/Firefox_OS/Developing_Gaia/Different_ways_to_run_Gaia">As diferentes formas de executar o Gaia</a>, juntamente com links para informações detalhadas. Em geral ordenadas das mais complexas (porém com experimentos mais realísticos) para as mais simples (porém com experimentos menos realísticos).</p> - -<p>Nesse artigo, nós concentrarmos na execução do Gaia dentro do Firefox Mulet ou da WebIDE — para a maioria das alterações que você fizer no codebase do Gaia, essas formas oferecem os mecanismos mais rápidos para testar atualizações, mas obviamente existem alguns recursos (como APIs de testes do dispositivo ou interação com o hardware do telefone) que necessitará um dispositivo real.</p> - -<div class="note"> -<p><strong>Nota</strong>: Se quiser mais ajuda com o Gaia, os melhores locais para ir são o canal #gaia do IRC (veja <a href="https://wiki.mozilla.org/IRC">Mozilla IRC</a> para maiores informações) e <a href="https://lists.mozilla.org/listinfo/dev-gaia">a lista de emails dev-gaia</a>.</p> -</div> - -<h2 id="Executando_o_Gaia_no_Firefox_Desktop"><a name="Running_Gaia_in_Desktop_Firefox"></a>Executando o Gaia no Firefox Desktop</h2> - -<ol> - <li>Primeiro, faça um fork do <a href="https://github.com/mozilla-b2g/gaia">repo principal do Gaia no Github</a>.</li> - <li>Depois, clone seu fork localmente: - <pre class="brush: bash">git clone https://github.com/your-username/gaia.git</pre> - </li> - <li>Adicione o upstream dessa forma: - <pre class="brush: bash">cd gaia -git remote add upstream https://github.com/mozilla-b2g/gaia</pre> - </li> - <li>Instale <a href="http://www.fontsquirrel.com/fonts/fira-sans">Fira Sans font</a> no seu sistema: essa é a fonte que o Gaia utiliza nos dipositivos reais, então é útil ter disponível quando executar o Gaia no Desktop, especialmente se você estiver tentando depurar problemas relacionados com tamanhos de fonte ou textos que não caibam nos espaços destinados para tal.</li> - <li>Agora você precisa criar um perfil de depuração do Gaia. Executando <code>DEBUG=1 make</code> dentro do diretório deo seu repo cria um perfil no diretório <code>profile-debug</code>, que é configurado para otimizar a depuração. Isso cria versões desempacotadas (versões hospedadas) dos aplicativos Gaia que podem ser servidos diretamente via o servidor local HTTPD empacotado com o Firefox Desktop como uma extensão. Quando você faz uma alteração basta apenas recarregar a janela do navegador para ver o resultado (como você verá mais tarde), ao invés de recompilar o perfil, enviar para o dispositivos, etc. Isso é realmente bom para um rápido <em>hacking</em> do CSS/JS/HTML.</li> - <li>Com o seu perfil de depuração, execute no seu Firefox Desktop (nós recomendamos usar a versão <a href="http://nightly.mozilla.org/">Firefox Nightly</a>) a partir da linha de comando com a seguinte estrutura: - <pre class="brush: bash">/path/to/firefoxnightly -profile /path/to/B2G/gaia/profile-debug -no-remote</pre> - Por exemplo, no OS X, nós executamos o seguinte comando: - - <pre class="brush: bash">/Applications/FirefoxNightly.app/Contents/MacOS/firefox -profile /Users/bob/git/gaia/profile-debug -no-remote</pre> - </li> -</ol> - -<p>Isso deve carregar o seu pefil do Gaia em uma tab do Firefox Desktop, como mostrado abaixo (repare que na URL: <code>http://system.gaiamobile.org:8080/</code>):</p> - -<p><img alt="A screenshot of Firefox OS Gaia being run inside a desktop Firefox nightly build." src="https://mdn.mozillademos.org/files/7925/gaia-desktop-smaller.png" style="display: block; height: 495px; margin: 0px auto; width: 640px;"></p> - -<div class="note"> -<p><strong>Nota</strong>: Se você abrir uma tab na janela onde o Gaia estiver sendo executado no Firefox Desktop, entre <code>about:config</code>, e procure por "gaia", você encontrará um número de preferfências <code>extensions.gaia</code>.* — que a extensão <code>httpd.js</code> está usando. Você também poderá encontrar a preferência <code>network.dns.localDomains</code>, que é um truque que faz <code>http://system.gaiamobile.org:8080</code> conectar no seu localhost.</p> -</div> - -<div class="note"> -<p><strong>Nota</strong>: O comando <code>make</code> é executado dentro do diretório Gaia para criar um perfil (incluindo aplicativos, configurações, etc) que pode ser carregado no telefone, ser executados no emulador, etc. O comando <code>make</code> tem <a href="/pt-BR/Firefox_OS/Developing_Gaia/make_options_reference">diversas opções</a> para criar diferentes tipos de compilações. Executando somente <code>make</code> cria um perfil de produção padrão dentro de gaia/make, com aplicativos empacotdos, que não é configurado para modificações para otimização nem depuração.</p> -</div> - -<h2 id="Ferramentas_disponíveis">Ferramentas disponíveis</h2> - -<p>Você verá que há diversas ferramentas disponíveis, incluindo:</p> - -<ul> - <li>Visão de design responsivo no canto superior esquerdo.</li> - <li>Todas as ferramentas de depuração padrão da Caixa de Ferramentas do Firefox disponível à direita da tela (por padrão; pode ser movida para a parte de baixo da tela caso deseje, mas à direita faz mais sentido quando depurar a tela da esquerda).</li> - <li>Um tab de ferramentas especiais para o Firefox OS que fornece algumas ferramentas específicas para depurar o Firefox OS nesse modo: - <ul> - <li><strong>Notification</strong>: Dispara um teste de notificação do sistema.</li> - <li><strong>Reload application</strong>: Recarrega o aplicativo atual.</li> - <li><strong>Take screenshot</strong>: Faz uma cópia da tela e salva no diretório padrão de imagens do seu sistema, por exemplo<code>[HOME-FOLDER]/Pictures/screenshots</code> em um Mac.</li> - <li><strong>Import workload</strong>: Copia um grande número de dados para algums aplicativos, para teste de stress, por exemplo, envia 2000 contatos para o aplicativo Contacts ou 2000 mensagens para o aplicativo email.<br> - </li> - </ul> - </li> -</ul> diff --git a/files/pt-br/archive/b2g_os/desenvolvendo_gaia/fazendo_alteracoes_codigo_gaia/index.html b/files/pt-br/archive/b2g_os/desenvolvendo_gaia/fazendo_alteracoes_codigo_gaia/index.html deleted file mode 100644 index 70f10bdfa7..0000000000 --- a/files/pt-br/archive/b2g_os/desenvolvendo_gaia/fazendo_alteracoes_codigo_gaia/index.html +++ /dev/null @@ -1,78 +0,0 @@ ---- -title: Fazendo alterações no código do Gaia -slug: Archive/B2G_OS/Desenvolvendo_Gaia/Fazendo_alteracoes_codigo_Gaia -tags: - - Alterações - - Desenvolvimento - - Gaia -translation_of: Archive/B2G_OS/Developing_Gaia/Making_Gaia_code_changes ---- -<div class="summary"> -<p><span class="seoSummary">Agora que você tem o Gaia rodando no seu Desktop e já entende de alguma forma o funcionamento do codebase, você deve estar pronto para começar a contribuir com o projeto. Esse artigo descreve como fazer alterações e como descobrir bugs e trabalhar para resolvê-los.</span></p> -</div> - -<h2 id="Melhores_práticas_para_trabalhar_com_Git">Melhores práticas para trabalhar com Git</h2> - -<ol> - <li>Quando fizer alterações no Gaia, você deve primeiro baixar a última versão do branch master: - <pre class="brush: bash">cd path/to/gaia -git checkout master -git pull upstream master</pre> - </li> - <li>Depois, faça um <em>chekcout</em> de um novo <em>branch</em> para criar suas correções: - <pre class="brush: bash">git checkout -b my-code-fix</pre> - </li> - <li>Finalmente, vá para o seu diretório <code>gaia/apps</code> e faça nesse diretório as alterações nos aplicativos.</li> -</ol> - -<div class="note"> -<p><strong>Nota</strong>: No seu diretório <code>gaia/profile-debug/</code> você encontrará <code>webapps/</code>, mas lá somente contém os arquivos de manifesto apontando para os aplicativos a serem executados, que na verdade estão armazenados em <code>gaia/apps/</code>.</p> -</div> - -<h2 id="Exemplo_simples_de_alteração_de_código"><a name="Simple_code_change_example"></a>Exemplo simples de alteração de código</h2> - -<p>Você pode fazer as alterações desejadas no código, salvá-las e recarregar a tab que está executando o Gaia no seu Firefox Desktop para ver o resultado. Vamos então, fazer algo simples como trocar a cor do texto do relógio na tela bloqueada:</p> - -<p><img alt="Gaia lockscreen showing the clock display in white text" src="https://mdn.mozillademos.org/files/7929/gaia-lockscreen-clock.png" style="width: 369px; height: 623px; margin: 0px auto; display: block;"></p> - -<ol> - <li>A melhor forma de descobrir como esse estilo é definido é usando a ferramenta de desenvolvimento. Clique no relógio no Firefox Desktop e ao mesmo tempo pressione a tecla Ctrl da direita e selecione <em>Inspect Element</em> no menu de contexto.</li> - <li>Você pode descobrir qual o arquivo CSS você deve editar — Nesse caso, <code>gaia/apps/system/style/lockscreen.css</code> — e então fazer suas alterações nos estilos no lado direito da tela para ficar da forma que você quiser.</li> - <li>Quando estiver satisfeito com a alteração, altere diretamente o arquivo.</li> - <li>A seguir, recarregue a tab (ou use o botão Reload Application) e o servidor HTTP vai mostrar a alteração instantaneamente:</li> -</ol> - -<p><img alt="Gaia lockscreen showing the clock display modified from white to red text" src="https://mdn.mozillademos.org/files/7931/gaia-lockscreen-clock-modified.png" style="width: 366px; height: 622px; margin: 0px auto; display: block;"><br> - <br> - <br> - Limitações de renderização do Gaia Desktop:</p> - -<ul> - <li>Os aplicativos são bastante precisos em relação a como eles funcionam em um telefone real, mas você pode notar algumas diferenças aqui e ali..</li> - <li>Nem todas as APIs específicas de dispositivos são suportadas no Firefox Desktop; você pode encontrar uma lista das que são habilitadas em <a href="https://github.com/mozilla-b2g/gaia/blob/master/build/preferences.js#L106">preferences.js</a>.</li> -</ul> - -<h2 id="Onde_encontrar_bugs_para_trabalhar">Onde encontrar bugs para trabalhar</h2> - -<p>A melhor maneira de encontrar bugs do Firefox OS é consultando o <a href="http://www.joshmatthews.net/bugsahoy/?b2g=1">aplicativo Bugs Ahoy desenvolvido por Josh Matthews</a> — que pega os bugs diretamente do Bugzilla e mostra de uma forma fácil e com forma simples de busca. Uma vez que tenha encontrado um bug no qual queira trabalhar, vá para a página do Bugzilla, faça seu logon, entre com o seu nome em "assigned to" e comece o trabalho como indicado acima.</p> - -<h3 id="Dicas_úteis">Dicas úteis</h3> - -<ul> - <li>Quando você trabalha em bugs com mentor ("mentored bugs"), alguém do time principal do Gaia irá monitorar seu progresso e fornecer ajuda com o código e o processo. Se você é um iniciante no processo de contribuição do Firefox OS, inscrever-se em um desses bugs pode ser útil. Eles são identificados na página do Bugzilla com o campo "Mentors" preenchido. O sistema Bugs Ahoy lista os bugs com mentor.</li> - <li>Se você é um usuário novato do Bugzilla, talvez você não consiga atribuir o bug a você próprio. Se esse for o caso, peça a um mentor para atribuir o bug a você ou simplesmente peça para alguém o atribuir no campo de comentários.</li> - <li>Depois de adquirir um pouco mais de experiência, você pode pedir a alguém uma permissão no sistema que possibilite você atribuir um bug a si próprio.</li> - <li>Se você é novato e quer começar com algo simples, procure no campo whiteboard por <code>[good first bug]</code>. Você pode listar apenas "good first bugs" usando <a href="http://www.joshmatthews.net/bugsahoy/?b2g=1&simple=1">http://www.joshmatthews.net/bugsahoy/?b2g=1&simple=1</a>.</li> - <li>Você pode salvar uma pesquisa para projetos que você deseje contribuir. Por exemplo, o link abaixo pesquisa por bugs no aplicativo Clock do Gaia:</li> -</ul> - -<p><a href="https://bugzilla.mozilla.org/buglist.cgi?columnlist=product%2Ccf_blocking_b2g%2Cbug_status%2Cresolution%2Cshort_desc&resolution=---&query_based_on=CLOCK&query_format=advanced&bug_status=UNCONFIRMED&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&component=Gaia%3A%3AClock&product=Boot2Gecko&known_name=CLOCK&list_id=10497922">https://bugzilla.mozilla.org/buglist.cgi?columnlist=product%2Ccf_blocking_b2g%2Cbug_status%2Cresolution%2Cshort_desc&resolution=---&query_based_on=CLOCK&query_format=advanced&bug_status=UNCONFIRMED&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&component=Gaia%3A%3AClock&product=Boot2Gecko&known_name=CLOCK&list_id=9776392</a></p> - -<h2 id="Veja_também">Veja também</h2> - -<ul> - <li><a href="https://mozilla.app.box.com/s/wzgsb3lkqglv0dnfdgzs">Documentos de especificação visual/interação do Gaia</a></li> - <li><a href="https://etherpad.mozilla.org/gaia-meeting-notes">Etherpad do encontro semanal do Gaia</a></li> - <li><a href="https://datazilla.mozilla.org/">Datazilla</a>: Utilitário de teste de performance da Mozilla<br> - </li> -</ul> diff --git a/files/pt-br/archive/b2g_os/desenvolvendo_gaia/ferramentas_gaia/index.html b/files/pt-br/archive/b2g_os/desenvolvendo_gaia/ferramentas_gaia/index.html deleted file mode 100644 index bdb535f6a4..0000000000 --- a/files/pt-br/archive/b2g_os/desenvolvendo_gaia/ferramentas_gaia/index.html +++ /dev/null @@ -1,13 +0,0 @@ ---- -title: Referência de ferramentas Gaia -slug: Archive/B2G_OS/Desenvolvendo_Gaia/Ferramentas_Gaia -translation_of: Archive/B2G_OS/Developing_Gaia/Gaia_tools_reference ---- -<p>{{ draft() }}</p> -<div class="summary"> - <p><span class="seoSummary">Existem diversas ferramentas úteis no diretório <a href="https://github.com/mozilla-b2g/gaia/tree/master/tools">gaia/tools/</a>. Esse artigo verifica cada uma.</span></p> -</div> -<h2 id="png_recompress.sh">png_recompress.sh</h2> -<p>Essa ferramenta é um compressor de imagem. Você pode executá-la com o seguinte comando:</p> -<pre class="brush: bash">$ ./tools/png_recompress.sh -v bg.png</pre> -<p>Essa ferramenta remove metadados desnecessários e comprime o png. Pode economizar 99,5% do tamanho que é um grande impacto no tamanho dos aplicaitivos compactados (Zip) e no consumo de memória.</p> diff --git a/files/pt-br/archive/b2g_os/desenvolvendo_gaia/index.html b/files/pt-br/archive/b2g_os/desenvolvendo_gaia/index.html deleted file mode 100644 index 9568d3a0e5..0000000000 --- a/files/pt-br/archive/b2g_os/desenvolvendo_gaia/index.html +++ /dev/null @@ -1,49 +0,0 @@ ---- -title: Desenvolvendo no Gaia -slug: Archive/B2G_OS/Desenvolvendo_Gaia -tags: - - Desenvolvimento - - Firefox OS - - Gaia -translation_of: Archive/B2G_OS/Developing_Gaia ---- -<div class="summary"> -<p><span class="seoSummary">Gaia é a interface de usuário do Firefox OS e uma suíte de aplicativos padrão: inclui o bloqueio de tela, tela inicial, discador e outras aplicações. Essencialmente, o Gaia é um conjunto de aplicativos web complexos que são executados no topo da plataforma do Firefox OS. Esse conjunto de artigos cobre tudo o que você precisa saber para contribuir para o projeto Gaia.</span></p> -</div> - -<p>Neste guia nós levaremos você a um fluxo de trabalho para contribuir com o <em>Gaia</em> — o que significa adicionar recursos no código fonte do <em>Gaia</em> e trabalhar para resolver bugs. O primeiro conjunto de artigos podem ser lidos em ordem, ou você pode ir direto a uma seção relevante se você precisar rever um aspecto específico do processo.</p> - -<p>Depois disso, nós fornecemos material de referência e informação cobrindo tópicos adicionais.</p> - -<p><img alt="" src="https://mdn.mozillademos.org/files/7951/gaia-2.0-screen.png" style="float: right; height: 533px; padding: 0px 0px 30px 30px; width: 320px;"></p> - -<h2 id="O_Básico">O Básico</h2> - -<ol> - <li><a href="https://developer.mozilla.org/pt-BR/Firefox_OS/Developing_Gaia/Running_the_Gaia_codebase">Executando o code base do Gaia</a></li> - <li><a href="https://developer.mozilla.org/pt-BR/Firefox_OS/Developing_Gaia/Understanding_the_Gaia_codebase">Entendendo o codebase do Gaia</a></li> - <li><a href="https://developer.mozilla.org/pt-BR/Firefox_OS/Developing_Gaia/Making_Gaia_code_changes">Alterando o código do Gaia</a></li> - <li><a href="https://developer.mozilla.org/pt-BR/Firefox_OS/Developing_Gaia/Test_Gaia_code_changes">Testando as alterações no Gaia</a></li> - <li><a href="https://developer.mozilla.org/pt-BR/Firefox_OS/Developing_Gaia/Submitting_a_Gaia_patch">Submetendo uma correção no Gaia</a></li> -</ol> - -<h2 id="Referências_para_compilação_do_Gaia">Referências para compilação do Gaia</h2> - -<ul> - <li><a href="https://developer.mozilla.org/pt-BR/Firefox_OS/Platform/Gaia/Build_System_Primer">Compilação primária do Sistema Gaia</a></li> - <li><a href="https://developer.mozilla.org/pt-BR/Firefox_OS/Developing_Gaia/Customizing_build-time_apps">Customizando aplicativos em tempo de compilação</a></li> - <li><a href="https://developer.mozilla.org/pt-BR/Firefox_OS/Developing_Gaia/make_options_reference">Referência de opções Make</a></li> - <li><a href="https://developer.mozilla.org/pt-BR/Firefox_OS/Developing_Gaia/Gaia_tools_reference">Referência de ferramentas Gaia</a></li> -</ul> - -<h2 id="Veja_também">Veja também</h2> - -<ul> - <li><a href="https://developer.mozilla.org/pt-BR/Firefox_OS/Developing_Firefox_OS/Filing_bugs_against_Firefox_OS">Registrando bugs do Firefox OS</a></li> - <li><a href="/pt-BR/Firefox_OS/Platform/Gaia/Gaia_apps">Guia de aplicativos Gaia</a></li> - <li><a href="/pt-BR/Firefox_OS/Developing_Gaia/Different_ways_to_run_Gaia">Maneiras diferentes de executar o Gaia</a></li> - <li><a href="https://developer.mozilla.org/pt-BR/Firefox_OS/Developing_Gaia/Market_customizations_guide">Guia de customização de imagem do Firefox OS</a></li> - <li><a href="https://developer.mozilla.org/pt-BR/Firefox_OS/Developing_Gaia/Customizing_the_keyboard">Personalizando o teclado nos aplicativos do Firefox OS</a></li> - <li><a href="https://developer.mozilla.org/pt-BR/Firefox_OS/Developing_Gaia/Localizing_Firefox_OS">Localizando o Firefox OS (guia para tradutores)</a></li> - <li><a href="/en-US/Firefox_OS/Developing_Gaia/L10n_Best_Practices">L10n Boas Práticas (para desenvolvedores)</a></li> -</ul> diff --git a/files/pt-br/archive/b2g_os/desenvolvendo_gaia/melhores_praticas_localizacao_gaia/index.html b/files/pt-br/archive/b2g_os/desenvolvendo_gaia/melhores_praticas_localizacao_gaia/index.html deleted file mode 100644 index add77e9617..0000000000 --- a/files/pt-br/archive/b2g_os/desenvolvendo_gaia/melhores_praticas_localizacao_gaia/index.html +++ /dev/null @@ -1,378 +0,0 @@ ---- -title: Melhores práticas de código para localização Gaia -slug: Archive/B2G_OS/Desenvolvendo_Gaia/melhores_praticas_localizacao_gaia -tags: - - Apps - - B2G - - Firefox OS - - Gaia - - Localização - - l10n -translation_of: Archive/B2G_OS/Firefox_OS_apps/Localization/Localization_code_best_practices ---- -<div class="summary"> -<p>Neste artigo nós reunimos as melhores práticas para escrever apps Gaia localizáveis. Se você estiver fazendo o trabalho de desenvolvimento do projeto Gaia, estas práticas devem ser consideradas, sempre que possível. Elas também são úteis para quem cria seus próprios apps para o Firefox OS.</p> -</div> - -<div class="note"> -<p><strong>Nota</strong>: Se você precisar ler sobre os fundamentos para utilização de qualquer um dos recursos descritos abaixo, o conteúdo no link <a href="/pt-BR/Apps/Build/Localization/Localizing_Firefox_OS_Apps">localização de apps para o Firefox OS</a> fornece um bom guia de referência.</p> -</div> - -<div class="note"> -<p><strong>Nota</strong>: Existe também um outro documento que você deveria reservar um tempo para a leitura: <a href="/pt-BR/docs/Mozilla/Localization/Localization_best_practices">Boas práticas de localização de conteúdo</a>. Este é mais genérico (não específico para o Firefox OS), e abrange as melhores práticas para tornar as strings de conteúdo o mais localizáveis possíveis, enquanto que o seguinte é mais sobre como implementar aquelas strings em seu código.</p> -</div> - -<h2 id="Localização_de_UI">Localização de UI</h2> - -<p>A melhor maneira de escrever código localizável é movendo o máximo de lógica l10n para HTML declaratível possível. Você deve sempre tentar marcar seus Elementos HTML com <code>data-l10n-id</code> e-<code>data-l10n-args</code> e apenas definir/remover/atualizar aqueles que usam JavaScript se necessário. Você também não precisa colocar mais o conteúdo original em HTML.</p> - -<h3 id="Utilizando_a_API_declarativa">Utilizando a API declarativa</h3> - -<p>Abaixo está um exemplo de uma UI bem localizada com alguma localização do tipo JavaScript-driven. O código não é robusto, não necessita de guardas, irá trabalhar em qualquer local e reagir adequadamente à mudanças linguísticas. Observe que o HTML não tem qualquer conteúdo em Inglês. O L10n.js usa seu próprio mecanismo de retorno e qualquer conteúdo definido no HTML fonte será substituído de qualquer maneira no tempo de execução.</p> - -<pre class="brush: html"><h1 data-l10n-id="appName" /> -<h2 data-l10n-id="summary" /> -<article> - <p id="author" /> - <button id="actionButton" /> -</article> -</pre> - -<pre class="brush: js">actionButtonElem.setAttribute('data-l10n-id', newArticle ? 'saveBtnLabel' : 'updateBtnLabel'); - -navigator.mozL10n.setAttributes(authorElem, 'articleAuthor', { - 'name': 'John Smith' -}); -</pre> - -<pre class="brush: java">appName = My App -saveBtnLabel = Save -updateBtnLabel = Update -articleAuthor = The author of this article is \{{ name }}</pre> - -<h3 id="Revertendo_a_tradução">Revertendo a tradução</h3> - -<p>Se você precisar de parar a tradução/reversão, você precisa remover o l10nId a partir do elemento.</p> - -<pre>document.getElementById('node').removeAttribute('data-l10n-id');</pre> - -<p>Uma limitação da abordagem atual é que não temos uma boa maneira de limpar o nó, por isso contamos com usuários removendo manualmente a tradução dos atributos de valor e localizados:</p> - -<pre>document.getElementById('node').textContent = null; -document.getElementById('node').removeAttribute('placeholder'); -</pre> - -<p>No futuro, esperamos ser capazes de remover automaticamente a tradução de valor e os atributos quando o l10nId é desativado.</p> - -<h3 id="Não_defina_l10n-id_em_elementos_com_elementos_filho">Não defina l10n-id em elementos com elementos filho</h3> - -<p>Uma das considerações importantes é que quando você definir a l10n-id em um elemento, o L10n.js assume a renderização deste elemento, de maneira que todos os nós filho serão sobrescritos em strings localizadas. No futuro, poderemos até ter algo semelhante à Shadow DOM, para renderizar as versões localizadas de um elemento.</p> - -<p>Caso você precise localizar o Fragmento DOM, veja como fazer abaixo. </p> - -<h3 id="Não_utilize_o_mozL10n.get">Não utilize o mozL10n.get</h3> - -<p>Um dos anti-padrões habitualmente utilizados de antigos paradigmas é um método síncrono utilizado para recuperar strings l10n de um pacote. Recomendamos evitar a utilização de mozL10n.get uma vez que este é síncrono e exige que você proteja o seu código com mozL10n.once ou mozL10n.ready; ele também não funciona com re-tradução. No futuro, uma vez que resolvermos os casos descritos na seção seguinte, planejamos remover este método completamente.</p> - -<p>Ao invés de escrever isto:</p> - -<pre class="brush: js">// BAD - -var elem1 = document.createElement('p'); -elem1.textContent = navigator.mozL10n.get('helloMsg'); - -var elem2 = document.createElement('input'); -elem2.placeholder = navigator.mozL10n.get('msgPlaceholder'); - -var elem3 = document.createElement('button'); -elem3.ariaLabel = navigator.mozL10n.get('volumeLabel'); - -// .properties -helloMsg = Hello World -msgPlaceholder = Enter password -volumeLabel = Switch volume -</pre> - -<p>Use isto:</p> - -<pre class="brush: js">// GOOD - -var elem1 = document.createElement('p'); -elem1.setAttribute('data-l10n-id', 'helloMsg'); - -var elem2 = document.createElement('input'); -elem2.setAttribute('data-l10n-id', 'passwordInput'); - -var elem3 = document.createElement('button'); -elem3.setAttribute('data-l10n-id', 'volumeButton'); - -// .properties -helloMsg = Hello World -passwordInput.placeholder = Enter password -volumeButton.ariaLabel = Switch volume -</pre> - -<p>Em casos raros quando você não pode utilizar o setAttribut nem o mozL10n.setAttributes, você pode utilizar o método assíncrono não-robusto {{ domxref("L10n.formatValue()") }}.</p> - -<h3 id="mozL10n.ready_irá_causar_vazamentos_de_memória">mozL10n.ready irá causar vazamentos de memória</h3> - -<p>Quando você fornece uma função de chamada de retorno para mozL10n.ready (), a função não teráo lixo coletado devidamente, se não for explicitamente removido. Mais importante, se é um método que está vinculado a um objeto, a instância do objeto não irá embora. Consulte {{bug (1135256)}} para obter mais detalhes. Por exemplo, se você tem um objeto JavaScript representando um item widget da lista e anexar um método como um callback com mozL10n.ready (), o objeto JavaScript nunca terá o lixo coletado. Um padrão que poderia ajudar a mitigar esse problema, é ter um ouvinte singleton em seu script que lida com mudanças de localidade para todas as instâncias de objetos com uma WeakMap, aqui está um exemplo parcial:</p> - -<pre class="brush: js">var instances = new WeakMap(); - -function MyThing(container) { - // used for finding this instance in the DOM - container.classList.add('my-thing'); - instances.set(container, this); - if (navigator.mozL10n.readyState === 'complete') { - this.localize(); - } -} - -MyThing.prototype.localize = function() { /* ... */ }; - -navigator.mozL10n.ready(function() { - // Look for all the containers of this object type, and retrieve instances. - for (var container of document.querySelectorAll('.my-thing')) { - var obj = instances.get(container); - if (obj) obj.localize(); - } -});</pre> - -<h3 id="Exceções_quando_a_utilização_de_mozL10n.get_é_justificada">Exceções quando a utilização de mozL10n.get é justificada</h3> - -<p>Existem três casos nos quais a utilização do mozL10n.get é neste momento necessária:</p> - -<h4 id="Exceção1_Passando_strings_fora_do_app">Exceção1: Passando strings fora do app</h4> - -<p>Quando o seu código precisa de enviar uma string para uma API externa — por exemplo <code>alert()</code>, <code>confirm()</code>, ou para <code>navigator.mozMobileMessage</code> — é melhor resolver a string o mais tarde possível. Então ao invés de escrever: </p> - -<pre class="brush: js">// BAD -function sendText(msg) { - navigator.mozMobileMessage.send(number, msg); -} - -sendText(navigator.mozL10n.get('confirmationMessage')); -</pre> - -<p>Escreva isto:</p> - -<pre class="brush: js">// GOOD -function sendText(l10nId) { - var msg = navigator.mozL10n.get(l10nId); - navigator.mozMobileMessage.send(number, msg); -} - -sendText('confirmationMessage'); -</pre> - -<p>Isto tornará a sua API mais garantida no futuro, extensível e mais fácil de depurar (ver a seção {{anch ("Escrevendo APIs que operam em L10nIDs")}} deste artigo).</p> - -<h4 id="Exceção_2_Localizando_Fragmentos_DOM">Exceção 2: Localizando Fragmentos DOM</h4> - -<p>Uma área que ainda não é coberta por programação declarativa é a localização do Fragmento DOM. Imagine que você tenha um código como este:</p> - -<pre class="brush: html"><p>See our <a href="http://www.mozilla.org">website</a> for more information!</p></pre> - -<p>A melhor maneira de tornar este código localizável é criar uma string l10n como esta:</p> - -<pre class="brush: html">.properties: -seeLink = See our <a href="\{{ url }}">website</a> for more information! - -html: -<p data-l10n-id="seeLink" data-l10n-args='{"url": "http://www.mozilla.org"}'></p></pre> - -<p>Isto irá funcionar, desde que você não tenha mais a marcação no fragmento. Considere este exemplo:</p> - -<pre class="brush: html"><p>See our <a href="http://www.mozilla.org" class="external big" id="foo">website</a> for more information!</p></pre> - -<p>Neste exemplo, movendo-se atributos como <code>class</code> ou <code>id</code> para um l10n string não é o ideal, porque qualquer mudança para esta marcação vai exigir uma atualização para a string, em todas as traduções. Dividir a string em várias partes e concatená-las em JavaScript é um erro porque localizações podem ter que manipular a ordem dos elementos no Fragmento DOM.</p> - -<p>No futuro o L10n.js irá fornecer uma estratégia de interpolação chamada <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=994357">sobreposições de DOM </a>que fundem Fragmentos DOM fornecidos pelo desenvolvedor com suas traduções. Até que isso esteja disponível, precisamos de abrir mão de utilizar o mozL10n.get.</p> - -<pre class="brush: java">seeLink = See our \{{ link }} for more information! -linkText = website -</pre> - -<pre class="brush: html"><p data-l10n-id="seeLink"></p> -</pre> - -<pre class="brush: js">navigator.mozL10n.setAttributes(elem, 'seeLink', { - 'link': '<a href="http://www.mozilla.org" class="external big" id="foo">' + navigator.mozL10n.get('linkText') + '</a>' -}); -</pre> - -<p>O fato deste código usar <code>mozL10n.get</code> tem que ser garantido para ser executado após os recursos l10n forem carregados, por isso use um invólucro <code>mozL10n.once</code> sobre este código.</p> - -<h4 id="Exceção_3_Data_Formatação_do_tempo">Exceção 3: Data / Formatação do tempo</h4> - -<p>Para Data/Formatação do tempo nós utilizamos atualmente um padrão como este: </p> - -<pre class="brush: js">var currentDate = new Date(); -var f = new navigator.mozL10n.DateTimeFormat(); -var format = navigator.mozL10n.get('shortTimeFormat'); -elem.textContent = f.localeFormat(currentDate, format);</pre> - -<p>Mais uma vez, pelo fato de ele utilizar <code>mozL10n.get</code>, certifique-se de proteger o seu código com o <code>mozL10n.once</code> para evitar condições de corrida.</p> - -<p>No futuro pretendemos expor data e hora formatados como macros. Isto permitirá que localizadores decidam como formatar datas em string l10n e remover este caso de uso juntamente.</p> - -<h2 id="Como_escrever_código_que_opera_em_strings_fornecidas_pelo_usuário_ou_l10nIDs">Como escrever código que opera em strings fornecidas pelo usuário ou l10nIDs</h2> - -<p>Neste exemplo, podemos ter um título da canção que não é localizável, ou uma string de "Unknown Track" que vem de nossos recursos de localização.</p> - -<p>Existem dois padrões para abordar esta questão:</p> - -<h4 id="Padrão_1">Padrão 1:</h4> - -<pre class="brush: html"><h1 id="titleElement /></pre> - -<pre class="brush: js">function updateScreen(track) { - var titleElement = document.getElementById('titleElement'); - if (track.title) { - navigator.mozL10n.setAttributes(titleElement, 'trackTitle', { - 'title': track.title - }); - } else { - navigator.mozL10n.setAttributes(titleElement, 'trackTitleUnknown'); - } -} -</pre> - -<pre class="brush: java">trackTitle = \{{ title }} -trackTitleUnknown = Unknown Track</pre> - -<h4 id="Padrão_2">Padrão 2:</h4> - -<pre class="brush: html"><h1 id="titleElement /></pre> - -<pre class="brush: js">function updateScreen(track) { - var titleElement = document.getElementById('titleElement'); - if (track.title) { - titleElement.removeAttribute('data-l10n-id'); - titleElement.textContent = track.title; - } else { - titleElement.setAttribute('data-l10n-id', 'trackTitleUnknown'); - } -} -</pre> - -<pre class="brush: java">trackTitleUnknown = Unknown Track</pre> - -<p>Essas abordagens são semelhantes, mas, no futuro, o Padrão 1 poderá se tornar o padrão à medida que avançamos em direção a árvores HTML totalmente localizáveis.</p> - -<p>Em ambos os padrões, note que nós não definimos o <code>l10n-id</code> ou <code>l10n-args</code> em HTML porque nós só iremos definir o valor quando nós carregarmos primeiro a faixa em JavaScript. Então definindo isto em HTML é um desperdício de recursos (l10n.js tentará traduzí-lo caso você o adicione lá).</p> - -<p>Também é importante notar que atualmente não fazemos nenhuma limpeza mágica quando você remove estes atributos, então você precisa limpá-los você mesmo. Isso deverá mudar no futuro.</p> - -<h3 id="Escrevendo_código_que_itera_sobre_várias_strings_l10n">Escrevendo código que itera sobre várias strings l10n</h3> - -<p>Se você tiver várias strings (por exemplo, códigos de erro), pode ser tentador utilizar <code>mozL10n.get</code> para testar se houver uma tradução para a cadeia e se não for definida alguma resposta genérica. Isso não é um bom padrão, porque primeiro ele usa <code>mozL10n.get</code>, e segundo, ele confunde strings em falta com as strings que não deveriam estar lá, criando bugs e casos extremos difíceis de reproduzir.</p> - -<p>Em vez disso, você deve criar uma lista de strings localizadas e testá-la assim:</p> - -<pre class="brush: js">var l10nCodes = [ - 'ERROR_MISSING', - 'ERROR_UNKNOWN', - 'ERROR_TIMEOUT' -]; - -if (l10nCodes.indexOf(code) !== -1) { - elem.setAttribute('data-l10n-id', code); -} else { - elem.setAttribute('data-l10n-id', 'ERROR_UNKNOWN'); -} -</pre> - -<h3 id="Escrevendo_APIs_que_operam_em_L10nIDs">Escrevendo APIs que operam em L10nIDs</h3> - -<p>Um dos casos mais interessantes para lidar é quando você escreve uma API que supostamente recebe L10nIDs. No caso mais simples, ela se assemelha a essa:</p> - -<pre class="brush: js">function updateTitle(titleL10nId) { - document.getElementById('titleElement').setAttribute('data-l10n-id', titleL10nId); -} -</pre> - -<p>mas se você tem um caso onde também pode precisar de l10nArgs e/ou strings de caracteres simples para casos como o exemplo acima, ou mesmo fragmentos de HTML para injetar (no futuro isso será substituído por Sobreposições DOM), o padrão completo que recomendamos é este:</p> - -<pre class="brush: js">// titleL10n may be: -// a string -> l10nId -// an object -> {id: l10nId, args: l10nArgs} -// an object -> {raw: string} -// an object -> {html: string} -function updateTitle(titleL10n) { - if (typeof(titleL10n) === 'string') { - elem.textContent = ''; // not needed if you're not adding line 25-29 [1] - elem.setAttribute('data-l10n-id', titleL10n); - return; - } - - if (titleL10n.id) { - elem.textContent = ''; // not needed if you're not adding line 25-29 [1] - navigator.mozL10n.setAttributes(elem, titleL10n.id, titleL10n.args); - return; - } - - if (titleL10n.raw) { - elem.removeAttribute('data-l10n-id'); - elem.textContent = titleL10n.raw; - return; - } - - if (titleL10n.html) { - elem.removeAttribute('data-l10n-id'); - elem.innerHTML = titleL10n.html; - return; - } -} -</pre> - -<p>[1] Se o seu código suporta fragmentos de HTML e um fluxo em que primeiro o nó pode receber <code>{html: string}</code> e, posteriormente, deve ser transferido para tradução baseada em l10nId, você precisa limpar o textContent. Caso contrário L10n.js vai reclamar sobre a configuração l10nId em um nó com nós filhos. Consulte a seção "Untranslation" neste artigo para saber mais a fundo.</p> - -<p>Claro que você não precisa de fornecer suporte a casos que você não precise. O caso HTML raramente é necessário, e o l10nArgs ou cru pode não ser necessário também. Mas seguindo este esquema para parâmetros l10n lhe permite fazê-lo funcionar e, posteriormente, estender os casos apoiados sem alterar a API.</p> - -<p>Uma das conseqüências de nossas limitações atuais sobre desativação dp l10nId é que não temos uma maneira limpa para limpar o fragmento DOM a partir da tradução de idade. Se o API tem potencial para ter</p> - -<h3 id="Testando">Testando</h3> - -<p>Ao escrever testes, não recomendamos testar os valores dos nós. Isto torna o teste inútil em outros locais, não funcionando com tradução assíncrona, e no futuro não funcionando se alterarmos a forma como apresentamos a localização dos elementos DOM.</p> - -<p>Gaia fornece <a href="https://github.com/mozilla-b2g/gaia/blob/master/shared/test/unit/mocks/mock_l10n.js">um mock_l10n compartilhado</a> que você poderá utilizar.</p> - -<p>A melhor estratégia é isolar o seu teste para se certificar de que ele defina de acordo os atributos <code>l10n-id</code> e <code>l10n-args</code>:</p> - -<pre class="brush: js">assert.equal(elem.getAttribute('data-l10n-id'), 'myExpectedId'); -</pre> - -<p>ou:</p> - -<pre class="brush: js">var l10nAttrs = navigator.mozL10n.getAttributes(elem); -assert.equal(l10nAttrs.id, 'myExpectedId'); -assert.deepEqual(l10nAttrs.args, {'name': 'John'});</pre> - -<h3 id="Notificação_de_API">Notificação de API</h3> - -<p>Então, você deseja enviar uma notificação. A API W3C espera que você passe o título e o corpo como uma string. Gaia oferece-lhe uma NotificationHelper que funciona com o mozL10n.</p> - -<p>Ao invés de:</p> - -<pre>var title = navigator.mozL10n.get('notification_title'); -var body = navigator.mozL10n.get('notification_body', {user: "John"}); - -var notification = new Notification(title, { - body: body, -}); - -// set onclick handler for the notification -notification.onclick = myCallback;</pre> - -<p>você deve escrever:</p> - -<pre>NotificationHelper.send('notification_title', { - bodyL10n: {id: 'notification_body', args: {user: "John"}} -}).then(function(notification) { - notification.addEventListener('click', myCallback); -}); -</pre> - -<p>O NotificationHelper lida com título e bodyL10n da mesma maneira como descrito em "Escrevendo APIs que operam em L10nIDs" deste artigo, para que possa passar uma string ou um objeto.</p> diff --git a/files/pt-br/archive/b2g_os/desenvolvendo_gaia/referencia_opcoes_make/index.html b/files/pt-br/archive/b2g_os/desenvolvendo_gaia/referencia_opcoes_make/index.html deleted file mode 100644 index a0aca8fac7..0000000000 --- a/files/pt-br/archive/b2g_os/desenvolvendo_gaia/referencia_opcoes_make/index.html +++ /dev/null @@ -1,195 +0,0 @@ ---- -title: Guia de referência para opções make -slug: Archive/B2G_OS/Desenvolvendo_Gaia/referencia_opcoes_make -tags: - - B2G - - Debug make - - Depuração - - Dogfooding - - Firefox OS - - Gaia - - Make - - opções -translation_of: Archive/B2G_OS/Developing_Gaia/make_options_reference ---- -<div class="summary"> - <p><span class="seoSummary">O comando <code>make</code> é usado no repo Gaia para criar perfis Gaia que podem ser carregados no seu dispositivo ou ser executado no <a href="/pt-BR/Firefox_OS/Using_the_B2G_desktop_client">B2G Desktop</a>. Esse artigo detalha as diversas opções disponíveis.</span></p> -</div> -<div class="note"> - <p><strong>Nota</strong>: Existem muitas variáveis de ambiente no Makefile. Não fique dependente delas, pois podem ser removidas no futuro.</p> -</div> -<p>Os perfis criados normalmente são criadas no diretório raiz do gaia, por exemplo <code>/gaia/profile</code>, e contém os seguintes itens:</p> -<ul> - <li><code>defaults/</code>: Diretório que contém as configurações padrão a serem recarregadas após um reset do telefone.</li> - <li><code>extensions/</code>: Diretório que contém extensões.</li> - <li><code>settings.json</code>: Arquivo de configuração.</li> - <li><code>user.js</code>: Outro arquivo que contém mais configurações e preferências.</li> - <li><code>webapps/</code>: Diretório que contém aplicativos web que serão instalados no telefone.</li> -</ul> -<div class="note"> - <p><strong>Nota</strong>: Quando você já fez um perfil e quer compilar um novo, você deve apagar o diretório existente do perfil antes de tentar gerar um novo.</p> -</div> -<h2 id="Default">Default</h2> -<pre class="brush: bash">make</pre> -<p>Simplemente gera um binário sem a marca oficial da Mozilla e sem a opção de depuração. Para compilar um binário com a marca da Mozilla você precisa usar essa <a href="#official_mozilla_branding">opção</a>. Para um binário de compilação, você precisa da opção de <a href="#debug_make">depuração</a>.</p> -<h2 id="Copia_para_o_dispositivo">Copia para o dispositivo</h2> -<pre class="brush: bash">make install-gaia - -make reset-gaia -</pre> -<p>Com a configuração do <a href="/en-US/Firefox_OS/Debugging/Installing_ADB">ADB</a> (Android Debug Bridge) <code>install-gaia</code> simplesmente copia as atualizações do Gaia do seu diretório de trabalho para o dispositivo. <code>reset-gaia</code> apagará toda a configuração existente, os perfis, aplicativos e os dados (um novo conjunto de banco de dados será inicializado) antes de copiar o Gaia.</p> -<h2 id="Compilando_aplicativos_específicos">Compilando aplicativos específicos</h2> -<pre class="brush: bash">APP=system make - -APP=system make install-gaia</pre> -<p>Quando um perfil já existe, <code>APP</code> permite que você esepcifique qual aplicativo será reempacotado, ao invés de copiar novamente todos os aplicativos Gaia.</p> -<h2 id="Especificando_um_diretório_de_perfil_customaizado">Especificando um diretório de perfil customaizado</h2> -<p>Você pode especificar um diretório para compilar o seu perfil, usando <code>PROFILE_FOLDER</code>, por exemplo:</p> -<pre class="brush: bash">PROFILE_FOLDER=profile-b2g-desktop make</pre> -<h2 id="Compilando_para_dispositivos_diferentes">Compilando para dispositivos diferentes</h2> -<p>Existem algumas opções que criam binários para diferentes dispositivos, com diferentes propósitos.</p> -<h3 id="Criar_um_binário_do_Gaia_para_telefone">Criar um binário do Gaia para telefone</h3> -<pre class="brush: bash">GAIA_DEVICE_TYPE=phone make</pre> -<p>Esse binário pega os aplicativos listados em <code>/gaia/build/config/phone/apps-engineering.list</code>.</p> -<h3 id="Criar_um_binário_do_Gaia_para_tablet">Criar um binário do Gaia para tablet</h3> -<pre class="brush: bash">GAIA_DEVICE_TYPE=tablet make</pre> -<p>Esse binário pega os aplicativos listados em <code>/gaia/build/config/tablet/apps-engineering.list</code>.</p> -<h2 id="Tipos_diferentes_de_compilação">Tipos diferentes de compilação</h2> -<p>Opções que criam binários com diversos propósitos.</p> -<h3 id="Produção">Produção</h3> -<pre class="brush: bash">PRODUCTION=1 make</pre> -<p>Cria um binário produtivo do Gaia:</p> -<ul> - <li>Gaia é executado com os aplicativos empacotados, que é difícil de depurar, mas é a melhor forma para os aplicativos em termos de permissões de API, etc.</li> - <li>Aplicativos de testes não são incluídos no binário.</li> - <li>Depuração remota é desligada por padrão.</li> - <li>Bloqueio de tela é habilitado por default (a conexão USB é derrubada quando a tela é bloqueada).</li> - <li>Marionette está desligado.</li> - <li>A experiência de primeiro uso está habilitada.</li> - <li>É utilizado cache offline.</li> -</ul> -<div class="note"> - <p><strong>Nota</strong>: Você tamém pode usar o alias <code>make production</code>.</p> -</div> -<h3 id="Depuração"><a name="debug_make"></a>Depuração</h3> -<pre class="brush: bash">DEBUG=1 make</pre> -<p>A variável <code>DEBUG</code> executa o Gaia um um aplicativo hospedado num servidor interno numa porta específica (<code>GAIA_PORT</code>), ao invés do aplicativo empacotado que deve ser reempacotado depois de cada alteração. Isso fica fácil para realizar os testes. Lançando esse perfil com a última versão do Firefox Nightly vai lhe proporcionar bons painéis do B2G nas ferramentas de desenvolvimento do Firefox.</p> -<p>Adicionalmente:</p> -<ul> - <li>Aplicativos de testes são incluídos no binário.</li> - <li>Depuração remota é habilitada por padrão.</li> - <li>A tela de bloqueio está desabilitada (conexões USB não serão interrompidas).</li> - <li><a href="/pt-BR/docs/Mozilla/QA/Marionette">Marionette</a> é habiltado, pois é utilizado para executar os <a href="https://developer.mozilla.org/pt-BR/Firefox_OS/Platform/Automated_testing/Gaia_unit_tests" title="/en-US/docs/Mozilla/Firefox_OS/Platform/Testing/Gaia_unit_tests">testes unitários</a>.</li> - <li>A experiência de primeiro uso é desligada.</li> - <li>O cache offline não é utlizado, mesmo se for gerado.</li> -</ul> -<h3 id="Depuração_do_dispositivo">Depuração do dispositivo</h3> -<pre class="brush: bash">DEVICE_DEBUG=1 make</pre> -<p>Desabilita a tela de bloqueio no dispositivo e habilita a depuração com a ferramenta ADB, que é útil para a depuração do dispositivo.</p> -<p>Nas versões do Firefox OS 1.2 e superiores, especifique esse parâmetro quando você quiser depurar os aplicativos Firefox OS com o <a href="/pt-BR/Firefox_OS/Using_the_App_Manager">App Manager</a>.</p> -<h3 id="Depuração_do_B2G_Desktop">Depuração do B2G Desktop</h3> -<pre class="brush: bash">DEBUG=1 DESKTOP=0 make</pre> -<p>Cria uma versão de depuração para ser executada no <a href="/pt-BR/Firefox_OS/Using_the_B2G_desktop_client">B2G desktop</a>.</p> -<h3 id="Imagem_da_marca_oficial_da_Mozilla"><a name="official_mozilla_branding"></a>Imagem da marca oficial da Mozilla</h3> -<pre class="brush: bash">MOZILLA_OFFICIAL=1 make</pre> -<h3 id="Imagem_de_Dogfood">Imagem de Dogfood</h3> -<pre class="brush: bash">DOGFOOD=1 make</pre> -<div class="note"> - <p><strong>Nota</strong>: <em>Dogfooding</em> é um termo em inglês muito usado em empresas de tecnologia, que significa fazer os usuários usarem produtos e serviços da empresa.</p> -</div> -<p>Nessa imagem são disponibilizadas opções e utilitários para o Dogfooding. Como exemplo, temos o aplicativo Feedback que permite aos <em>dog fooders</em> submeter feedbacks sobre o sistema operacional.</p> -<h3 id="Aplicativos_do_sistema">Aplicativos do sistema</h3> -<pre class="brush: bash">B2G_SYSTEM_APPS=1 make</pre> -<p>A variável de ambiente permite você copiar um aplicativo para o diretório <code>/system/b2g</code> ao invés de <code>/data/local</code>. Você deve usar isso quando você trabalhar com um binário do usuário. Essa variável é automaticamente definida quando executar <code>make production</code>. Isso pode ser utilizado para <code>install-gaia</code> ou <code>reset-gaia</code>.</p> -<h3 id="Compilação_para_distribuição_customizada_ou_comercial">Compilação para distribuição customizada ou comercial</h3> -<pre class="brush: bash">GAIA_DISTRIBUTION_DIR=./dir</pre> -<div class="note"> - <p><strong>Nota</strong>: Leia <a href="https://developer.mozilla.org/pt-BR/Firefox_OS/Desenvolvendo_no_Firefox_OS/Guia_customizacao_imagem_Firefox_OS">Customizações Comerciais</a> para maiores detalhes.</p> -</div> -<h2 id="Opções_para_desenvolvimentodepuração">Opções para desenvolvimento/depuração</h2> -<p>Existem também opções para adicionar ou remover recursos com propósitos de depuração e suporte à programação.</p> -<h3 id="Habilitar_depuração_remota">Habilitar depuração remota</h3> -<pre class="brush: bash">REMOTE_DEBUGGER=1</pre> -<p>Habilita a depuração remota no dispositivo. Verificar o artigo <a href="/pt-BR/Firefox_OS/Debugging/Developer_settings#Remote_debugging">Configurações para desenvolvedor</a>.</p> -<h3 id="Otimização_do_JavaScript">Otimização do JavaScript</h3> -<pre class="brush: bash">GAIA_OPTIMIZE=1 make</pre> -<p>Habilita uma etapa no Gaia que concatena e comprime os arquivos JavaScript. Essa opção é automaticamente definida quando é executado <code>make production</code>. Isso pode ser utilizado para <code>install-gaia</code> ou <code>reset-gaia</code>.</p> -<h3 id="Imagens_de_alta_resolução">Imagens de alta resolução</h3> -<pre class="brush: bash">GAIA_DEV_PIXELS_PER_PX=1.5 make</pre> -<p>Ou com o alias:</p> -<pre class="brush: bash language-html"><code class="language-html">GAIA_DPPX=1.5 make</code></pre> -<p>Ao empacotar o aplicativo, essa opção substitui as imagens com os arquivos equivalentes em <code>*@1.5x.(gif|jpg|png)</code> se existirem. Você precisa usar as opções abaixo como parte do comando <code>make</code> padrão:</p> -<pre class="brush: bash">GAIA_DEV_PIXELS_PER_PX=1.5 make reset-gaia - -GAIA_DEV_PIXELS_PER_PX=1.5 make install-gaia</pre> -<p>Atualmente o Gaia possui as seguintes resoluções de tela:</p> -<ul> - <li>qHD: ~540×960; device pixel ratio = 1.6875</li> - <li>WVGA: ~480×800; device pixel ratio = 1.5</li> - <li>HBGA (320x240); device pixel ratio = 1</li> -</ul> -<p>utilize <code>GAIA_DEV_PIXELS_PER_PX</code> para certificar-se que as imagens não apareçam deformadas nos dispostivos com telas qHD e WVGA. Veja o artigo <a href="https://developer.mozilla.org/pt-BR/docs/Mozilla/Mobile/Viewport_meta_tag#A_pixel_is_not_a_pixel" title="https://developer.mozilla.org/en-US/docs/Mozilla/Mobile/Viewport_meta_tag#A_pixel_is_not_a_pixel">Um pixel não é um pixel</a> para maiores informações sobre pixels do dispositivo e pixels do CSS.</p> -<h3 id="Compilação_para_dispositivos_com_pouca_memória">Compilação para dispositivos com pouca memória</h3> -<pre class="brush: bash">GAIA_MEMORY_PROFILE=low make</pre> -<p>Essa variável gera um perfil adequado para dispositivos com pouca memória, adequados para aparelhos como, por exemplo, o Tarako.</p> -<h3 id="Desabilitar_a_Experiência_de_Primeiro_Uso_-_First_time_use_experience_(FTU)">Desabilitar a Experiência de Primeiro Uso - First time use experience (FTU)</h3> -<pre class="brush: bash">NOFTU=1 -</pre> -<h3 id="Desabilitar_tela_de_bloqueio">Desabilitar tela de bloqueio</h3> -<p>Você pode desabilitar a tela de bloqueio usando a opçãoNO_LOCK_SCREEN:</p> -<pre class="brush: bash">NO_LOCK_SCREEN=1 make</pre> -<h3 id="Workloads">Workloads</h3> -<p>As opções "<code>reference-workload"</code> possibilitam aos desenvolvedores e testadores instalar rapidamente uma grande quanitdade de dados em diversos aplicativos em um aparelho que tenha recebido uma imagem recentemente.</p> -<p>Os comandos são (executador a partir do diretório gaia):</p> -<pre class="brush: bash">make reference-workload-light</pre> -<ul> - <li>200 contatos</li> - <li>200 menssagens SMS</li> - <li>Histórico de 50 ligações</li> - <li>20 imagens na galeria</li> - <li>20 músicas</li> - <li>5 vídeos</li> -</ul> -<pre class="brush: bash">make reference-workload-medium</pre> -<ul> - <li>500 contatos</li> - <li>500 menssagens SMS</li> - <li>Histórico de 100 ligações</li> - <li>50 imagens na galeria</li> - <li>50 músicas</li> - <li>10 vídeos</li> -</ul> -<pre class="brush: bash">make reference-workload-heavy</pre> -<ul> - <li>1000 contatos</li> - <li>1000 menssagens SMS</li> - <li>Histórico de 200 ligações</li> - <li>100 imagens na galeria</li> - <li>100 músicas</li> - <li>20 vídeos</li> -</ul> -<pre class="brush: bash">make reference-workload-x-heavy</pre> -<ul> - <li>2000 contatos</li> - <li>2000 menssagens SMS</li> - <li>Histórico de 500 ligações</li> - <li>250 imagens na galeria</li> - <li>250 músicas</li> - <li>50 vídeos</li> -</ul> -<p>Essas opções podem ser usadas com a variável <code>APP</code>, ou com a variável<code> APPS</code> que deve conter os nomes dos aplicativos separados por espaço:</p> -<pre class="brush: bash">APP=sms make reference-workload-light -APPS="sms communications/contacts" make reference-workload-heavy -</pre> -<p>Exemplo da variável <code>APPS</code>:</p> -<pre class="brush: bash">APPS="gallery music video communications/contacts sms communications/dialer"</pre> -<p>Para instalar as músicas, o utiliário mid3v2 deve ser instalado. Esse utilitário deve ser instalado com o seguinte comando:</p> -<pre class="brush: bash">sudo apt-get install python-mutagen</pre> -<p>Se sua distro for o Fedora ou RHEL utilize:</p> -<pre class="brush: bash">sudo yum install python-mutagen</pre> -<h3 id="Documentação">Documentação</h3> -<p>Documentos do Gaia podem ser compilados via jsdoc3. Para gerá-los, use o seguintes comando:</p> -<pre class="brush: bash">make docs</pre> -<h3 id="Habilitando_layout_IME_e_dicionários">Habilitando layout IME e dicionários</h3> -<p>Para habilitar layout de teclado layout e os dicionários, use o seguinte comando:</p> -<pre class="brush: bash">GAIA_KEYBOARD_LAYOUTS=en,zh-Hant-Zhuyin,el,de,fr,zh-Hans-Pinyin make</pre> diff --git a/files/pt-br/archive/b2g_os/desenvolvendo_gaia/submetendo_correcao_gaia/index.html b/files/pt-br/archive/b2g_os/desenvolvendo_gaia/submetendo_correcao_gaia/index.html deleted file mode 100644 index 237272acb3..0000000000 --- a/files/pt-br/archive/b2g_os/desenvolvendo_gaia/submetendo_correcao_gaia/index.html +++ /dev/null @@ -1,76 +0,0 @@ ---- -title: Submetendo uma correção do Gaia -slug: Archive/B2G_OS/Desenvolvendo_Gaia/Submetendo_correcao_Gaia -tags: - - B2G - - Correção - - Desenvolvimento - - Firefox OS - - Gaia - - GitHub - - checkout - - git - - master branch - - patch - - rebase -translation_of: Archive/B2G_OS/Developing_Gaia/Submitting_a_Gaia_patch ---- -<div class="summary"> - <p><span class="seoSummary">Até agora você pode fazer uma alteração do código e verificar que está funcionando no Gaia. O próximo passo é submeter sua correção para o repositório central e como fazer isso é o objetivo desse artigo.</span></p> -</div> -<h2 id="Submissão_de_correção">Submissão de correção</h2> -<p>Siga essas etapas para submter sua correção do Gaia:</p> -<ol> - <li>Primeiramente, submeta um bug no bugzilla para indicar o que você está fazendo se ainda não existir uma correção em andamento. Você deve submeter o bug em <a href="https://bugzilla.mozilla.org/enter_bug.cgi?product=Firefox%20OS">Firefox OS product</a>, e fornecer um título que descreva bem o que o seu código faz.</li> - <li>Agora é hora de <a href="https://help.github.com/articles/creating-a-pull-request">criar uma pull request</a> para sua correção. Se você está seguindo nosso guia desde o início, você deve ter suas alterações realizadas num <em>fork</em> local do repositório do Gaia. Depois, <code>git add .</code> suas alterações, então <code>git commit -m 'my commit message'</code>.</li> - <li><code>'my commit message'</code> precisa ser substituído por uma string contendo o número e o título do bug no Bugzilla, mais alguma informação descrevendo o que a correção faz e quem realizou o commit. Por exemplo - <pre class="brush: bash">Bug 9999999 - Fix that annoying bug R=johndoe</pre> - </li> - <li>Envie o código para o seu fork do Gaia no Github, então crie o PR para oferecer o código para inclusão.</li> - <li>Inclua a URL da PR no histórico do Bug no Bugzilla (na seção <em>Add an attachment</em>).</li> - <li>No bug, solicite que alguém revise sua correção. Você deve fazer isso incluindo a flag <code>review: ?</code>, então inclua o proprietário do módulo que sua correção está atualizando (veja o <a href="https://wiki.mozilla.org/Modules/FirefoxOS">página de proprietários dos módulos</a> para maiores detalhes).</li> - <li>Espere que o seu bug seja atribuído a um revisor e que seja revisado. Neste ponto serão incluídos alguns comentários solicitando alterações/correções no PR do Github, e relacioná-los no Bugzilla.</li> - <li>Verifique os comentários dos revisores, faça as alterações necessárias, em seguida envie as alterações para o mesmo PR, anexando o flag <code>review: ?</code>.</li> - <li>Uma vez que os comentários dos revisores foram atendidos e eles deram o flag <code>r+</code> (significando que a correção foi revista e aprovada), você deve <a href="https://github.com/ginatrapani/todo.txt-android/wiki/Squash-All-Commits-Related-to-a-Single-Issue-into-a-Single-Commit">juntar todos os commits em um único commit</a> (leia também <a href="#Tips_on_gaia_rebasing">dicas do rebase do Gaia</a>).</li> - <li>Adicione uma palavra-chave <code>checkin-needed</code> no campo de palavras-chave. Nesse ponto, você precisa esperar alguém colocar sua correção no fonte do Gaia.</li> - <li>Parabéns! Seu código agora é parte do Firefox OS!</li> -</ol> -<div class="note"> - <p><strong>Nota</strong>: Nós recomendamos fazer um commit por revisão.</p> -</div> -<div class="note"> - <p><strong>Nota</strong>: Mais instruções de submissão de correções podem ser encontradas em <a href="https://github.com/mozilla-b2g/gaia/blob/master/CONTRIBUTING.md">contributing.md</a>.</p> -</div> -<h2 id="Dicas_no_Rebase_do_Gaia"><a name="Tips_on_gaia_rebasing"></a>Dicas no <em>Rebase</em> do Gaia</h2> -<p>O <em>branch</em> master do Gaia muda constantemente (muitas, muitas vezes no dia). Depois de criar uma correção que leva 2 horas, você pode descobrir que o branch master foi alterado desde a última vez que você baixou os fontes para trabalhar.<br> - <br> - A partir do seu branch de trabalho (por exemplo <code>my-code-fix</code>), sua primeira tentativa de fazer um <em>rebase</em> será parecido com isso:</p> -<pre class="brush: bash">git checkout -b my-code-fix-r1 -git pull --rebase upstream master</pre> -<p>Se não houver conflitos, você pode continuar:</p> -<pre class="brush: bash">git checkout my-code-fix -git pull --rebase upstream master -git branch -D my-code-fix-r1</pre> -<p>Se você encontrar conflitos, entre em contato com os desenvolvedores responsáveis por resolver os conflitos e repita o procedimento de <em>rebase</em> descrito acima.</p> -<h2 id="Qual_a_diferença_entre_status_tracking_e_bugs_da_engenharia">Qual a diferença entre status <em>tracking</em> e bugs da engenharia?</h2> -<p>Mozilla possui um perfil especial chamado <a class="new" href="https://developer.mozilla.org/pt-BR/docs/Mozilla/Developer_guide/Committing_Rules_and_Responsibilities">Sheriff</a>. Sheriffs são encarregados do <em>merge</em> de códigos e são responsáveis por manter os status dos <em>branches</em>. Uma vez que nós temos um número limitado de Sheriffs para testes de falhas nas equipes do Firefox OS, fica difícil para eles voltarem o processo de todas as correções imperfeitas.</p> -<p>Portanto, no Firefox OS, ao examinar se uma correção funciona ou não, preferimos abrir um novo bug para lançar novas correções para consertar o novo problema. Do contrário pode trazer problemas no status de rastreamento para as equipes de QA e de gerenciamento de projetos.</p> -<p>Assim, nós separamos os bugs em dois status: <em>tracking</em> bugs e <em>engineering</em> bugs.</p> -<ul> - <li>Bugs com Status <em>tracking</em> devem ser identificados com a palavra-chave "meta". O bug pode ser reaberto se ele não cumprir os critérios de aceitação ou falhou durante os passos para reproduzir.</li> - <li>Um bug "<em>engineering</em>" pode ser reaberto <strong>somente</strong> se falhou nos testes automáticos ou a correção não funciona como um todo. Se um patch corrige um <em>engineering bug</em> parcialmente, você deve clonar o bug e usar o campo "See also" para referenciar o bug original descrevendo o ponto de falha.</li> -</ul> -<div class="note"> - <p><strong>Nota</strong>: Se também for um bug "story bug", o gerente de projeto deve regsitrar o campo user story com o histórico e o critério de aceitação.</p> -</div> -<h3 id="Como_eu_recupero_se_acidentalmente_lançar_uma_correçaão_no_bug_com_status_tracking">Como eu recupero se acidentalmente lançar uma correçaão no bug com status <em>tracking</em>?</h3> -<p>Não entre em pânico! Se você acidentalmente lançou uma correção, tem um review+, lançou no tunk ou tem reportado como nada corrigido, a seguir o que você precisa fazer:</p> -<ol> - <li>Pressione "Clone this bug" no canto inferior direito da tela para criar um novo bug, clonando a maioria dos campos originais. Verifique os os campos: witheboard, keyword e STR/User Story foram copiados para o novo bug.</li> - <li>Marque o novo bug como bloqueado pelo bug anterior. O novo bug terá o novo status <em>tracking bug</em>.</li> - <li>Use a flag <em>needinfo</em> para alertar o gerente de projeto. Você pode pode <a class="external external-icon" href="https://wiki.mozilla.org/FirefoxOS/Teams">encontrar os endereços de e-mail dos gerentes de projeto do Firefox OS </a>na nossa Wiki.</li> - <li>Crie um novo <em>engineer bug</em> para descrever o passo com a falha ou o critério de aceitação. Também use o novo bug para bloquear o status <em>tracking bug</em>.</li> - <li>Tente consertar o novo bug.</li> -</ol> -<h2 id="Promovendo_correções_para_branches_antigos">Promovendo correções para branches antigos</h2> -<p>Você pode encontrar versões diferentes de tags nos bugs. Se você deseja promover correções para branches antigos do Firefox OS, certifique-se que preencham as regras para lançamento de uma correção. Maiores detalhes nessa <a class="external external-icon" href="https://wiki.mozilla.org/Release_Management/B2G_Landing">página</a>.</p> diff --git a/files/pt-br/archive/b2g_os/desenvolvendo_gaia/testando_alteracoes_gaia/index.html b/files/pt-br/archive/b2g_os/desenvolvendo_gaia/testando_alteracoes_gaia/index.html deleted file mode 100644 index a50d5bd1ae..0000000000 --- a/files/pt-br/archive/b2g_os/desenvolvendo_gaia/testando_alteracoes_gaia/index.html +++ /dev/null @@ -1,115 +0,0 @@ ---- -title: Testando as alterações no Gaia -slug: Archive/B2G_OS/Desenvolvendo_Gaia/Testando_alteracoes_gaia -tags: - - Gaia - - Integração - - Testes -translation_of: Archive/B2G_OS/Developing_Gaia/Testing_Gaia_code_changes ---- -<div class="summary"> - <p><span class="seoSummary">Quando você terminar de fazer as alterações no codebase do Gaia e parecer que tudo funciona bem, o seu próximo passo será executar um procedimento de testes para certificar-se de que tudo realmente funciona — e está funcionando com o restante do Gaia — antes de submeter a correção para o projeto. Esse artigo explica como fazer isso.</span></p> -</div> -<p>O procedimento de teste geralmente consiste-se de:</p> -<ul> - <li>Procedimento padrão de depuração</li> - <li>Execução de testes automatizados</li> -</ul> -<p>Vamos examinar essas áreas agora.</p> -<h2 id="Depuração_padrão">Depuração padrão</h2> -<p>Se você é um desenvolvedor web experiente, então depurar um código Gaia pode ser um processo bem familiar. Nós já discutimos como <a href="/pt-BR/Firefox_OS/Developing_Gaia/Running_the_Gaia_codebase#Running_Gaia_in_Desktop_Firefox">executar o Gaia no Firefox Desktop</a>, e como <a href="/pt-BR/Firefox_OS/Developing_Gaia/Making_Gaia_code_changes#Simple_code_change_example">fazer uma alteração básica</a>. Para alterações mais complexas, você deve fazer muito mais uso das ferramentas de depuração do Firefox disponíveis no Firefox Desktop.</p> -<div class="note"> - <p><strong>Nota</strong>: Para instruções de como usar essas ferramentas, consulte <a href="/pt-BR/docs/Tools">a seção de Ferramentas</a>.</p> -</div> -<h2 id="Testes_automatizados">Testes automatizados</h2> -<p>Você também pode executar as suites padrões de testes automatizados antes de submeter uma correção, para certificar-se que as alterações no código não afetarão as funcionalidades essenciais do telefone. Os testes que podem ser executados são:</p> -<ul> - <li>testes unitário</li> - <li>teste de performance</li> - <li>testes da interface do usuário</li> -</ul> -<p>Nós geralmente pedimos que esses testes sejam executados antes de submeter uma correção, se essa é sua primeira contribuição então você pode submeter sem os testes, mas você deve pedir ajuda para executar os testes no futuro. Você deve atualizar o repo do Gaia antes de executar os testes, para certificar-se que você tem a última versão.</p> -<div class="note"> - <p><strong>Nota</strong>: Você encontra mais informações de como funcionam os testes no artigo <a href="/pt-BR/Firefox_OS/Platform/Automated_testing">Testes automatizados do Firefox OS</a>.</p> -</div> -<div class="note"> - <p><strong>Nota</strong>: Você deve considerar executar cada conjunto de testes num dispositivo real se disponível (algumas características de hardware não são suportadas pelo emulador), ou no emulador B2G Destop, ou no Firefox Nightly caso não possua o dispositivo real.</p> -</div> -<h3 id="Testes_unitários">Testes unitários</h3> -<p>Testes unitários são testes em unidades individuais do código em uma aplicação maior — no caso do Gaia, aplicativos individuais. O Gaia usa para os testes:</p> -<ul> - <li><a href="http://visionmedia.github.io/mocha/">mocha</a> para seus testes de framework</li> - <li><a href="http://chaijs.com/api/assert/">chai</a> como uma biblioteca assert</li> - <li><a href="http://sinonjs.org/">sinon.js</a> para uma biblioteca <em>mock & stub</em></li> - <li><a href="http://blanketjs.org/">blanket.js</a> como uma ferramenta de teste de cobertura</li> -</ul> -<p>Você pode executar o seguinte comando para baixar, instalar e hospedar o servidor unittest (sua execução leva alguns minutos, portanto pode ser um bom momento para uma xícara de café ou chá):</p> -<pre class="brush: bash">make test-agent-server</pre> -<p>A seguir, abra um novo terminal e carregue o aplicativo <code>test-agent</code> no Nightly:</p> -<ol> - <li>Execute esses comandos, se você ainda não completou essa etapa enquanto o comando anterior está sendo executado: - <pre class="brush: bash">make DEBUG=1 -/Applications/FirefoxNightly.app/Contents/MacOS/firefox -profile /Users/bob/git/gaia/profile-debug -no-remote</pre> - </li> - <li>Clique no Aplicativo Test Agent na tela inicial</li> -</ol> -<p>Agora você pode executar todos os testes com o seguinte comando:</p> -<pre class="brush: bash">make test-agent-test</pre> -<div class="note"> - <p><strong>Nota</strong>: Isso pode levar muito tempo, uma vez que existem muitos testes para serem executados (possivelmente uma hora ou mais), porém, provavelmente você vai querer executar os testes apenas para o aplicaitvo que você modificou. Você pode fazer isso incluindo <code>APP=<app folder name></code> no comando, por exemplo <code>APP=settings</code>.</p> -</div> -<div class="note"> - <p><strong>Nota</strong>: Você também pode ler<a href="/pt-BR/Firefox_OS/Platform/Automated_testing/Gaia_unit_tests"> Testes unitários do Gaia</a> para mais informações sobre testes unitários.</p> -</div> -<h3 id="Testes_integrados">Testes integrados</h3> -<p>Testes integrados envolvem testes de diferentes unidades agrupadas para verificar como elas trabalham em conjunto e esse é o próximo passo após o teste unitário. Os testes de integração no Gaia são conduzidas pelo script marionette escrito em JavaScript e com um servidor baseado em python. Ele pode comunicar-se com o Gecko assim é possível controlar tanto o navegador como o dispositivo Firefox OS e fazê-los interagir um com o outro.</p> -<p>Você pode executar o seguinte comando para iniciar os testes integrados:</p> -<pre class="brush: bash">make test-integration</pre> -<div class="note"> - <p><strong>Nota</strong>: Da mesma forma que nos testes unitários, a execução completa dos testes integrados pode consumir muito tempo, então você pode incluir <code>APP=<app folder name></code> no comando acima para testar um único aplicativo, por exemplo <code>APP=calendar</code>.</p> -</div> -<div class="note"> - <p><strong>Nota</strong>: para saber mais sobre testes integrados, leia <a href="https://developer.mozilla.org/pt-BR/Firefox_OS/Platform/Automated_testing/Gaia_integration_tests">Testes integrados do Gaia</a>.</p> -</div> -<h3 id="Testes_de_performance">Testes de performance</h3> -<p>Os testes de performance Gaia dispara o B2G Desktop, que por sua vez lança aplicativos diversas vezes e calcula uma média de tempo de carga dos aplicativos. Depois de executar um teste, o framework também coleta a utilização de memória do aplicativo e do sistema (<code>b2g</code>).</p> -<p>Para executar os testes, você precisa ter o B2G Desktop instalado e executar o seguinte comando:</p> -<pre class="brush: bash">make test-perf</pre> -<div class="note"> - <p><strong>Nota</strong>: Assim como nos outros tipos de testes, você pode incluir <code>APP=<app folder name></code> ao comando acima para testar um único aplicativo, por exemplo<code> APP=settings</code>.</p> -</div> -<p>A média geral será apresentada como um valor de <code>mozPerfDurationsAverage</code>:</p> -<pre class="brush: json">"mozPerfDurationsAverage": 225.5</pre> -<p>Isso indica a média do tempo de carga de um aplicativo em milisegundos, para um bom resultado o valor deve ser inferior a 1 segundo. Os testes de performance também retorna alguns detalhes da utilização de memória:</p> -<pre class="brush: json">{ - "app": { - "name": "Settings", - "uss": 16.6, - "pss": 19.5, - "rss": 32.9, - "vsize": 73.3 - }, - "system": { - "name": "b2g", - "uss": 50.1, - "pss": 53.2, - "rss": 67, - "vsize": 148.1 - } -},</pre> -<p>A regra de ouro para os testes de performance é: "Números baixos são melhores". Abaixo o significado de cada um:</p> -<ul> - <li><code>uss</code>: unique set size</li> - <li><code>pss</code>: proportional set size</li> - <li><code>rss</code>: resident set size</li> - <li><code>vsize</code>: virtual set size</li> -</ul> -<p>Geralmente <code>vsize</code> >= <code>rss</code> >= <code>pss</code> >= <code>uss</code> . <code>vsize</code> e <code>rss</code> não reflete com precisão a utilização de um processo quando compartilhado com outros. Então, os dois números que irão interessar são: <code>pss</code> and <code>uss</code>.<br> - <br> - <code>uss</code> é a memória que é completamente destinada àquele processo. É a quantidade de memória que deve ser liberada se o aplicativo for terminado nesse momento. É um valor chave para ser avaliado.<br> - <br> - <code>pss</code> é o tamanho proporcional das bibliotecas compartilhadas do processo. Essa é a quantidade de memória que deve ser liberada se o processo for terminado.</p> -<div class="note"> - <p><strong>Nota</strong>: Para saber mais sobre testes de performance, leia <a href="https://developer.mozilla.org/pt-BR/Firefox_OS/Platform/Automated_testing/Gaia_performance_tests">Testes de Performance do Gaia</a>.</p> -</div> -<p> </p> diff --git a/files/pt-br/archive/b2g_os/developing_firefox_os/customizando_script_b2g.sh/index.html b/files/pt-br/archive/b2g_os/developing_firefox_os/customizando_script_b2g.sh/index.html deleted file mode 100644 index f46705eed5..0000000000 --- a/files/pt-br/archive/b2g_os/developing_firefox_os/customizando_script_b2g.sh/index.html +++ /dev/null @@ -1,45 +0,0 @@ ---- -title: Customizando o script b2g.sh -slug: Archive/B2G_OS/Developing_Firefox_OS/Customizando_script_b2g.sh -translation_of: Archive/B2G_OS/Developing_Firefox_OS/Customizing_the_b2g.sh_script ---- -<div class="summary"> - <p>No telefone o aplicativo <code><a href="/en-US/docs/Mozilla/Firefox_OS/Architecture#The_userspace_process_architecture" title="/en-US/docs/Mozilla/Firefox_OS/Architecture#The_userspace_process_architecture">b2g</a></code> (que fornece as APIs do Firefox OS entre outras coisas) é iniciado através do script<code> /system/bin/b2g.sh</code>. Você pode customizar o script alterando o comportamento do Firefox OS, e esse artigo explica como.</p> -</div> -<h2 id="Configurar_variáveis_de_ambiente">Configurar variáveis de ambiente</h2> -<p>Se você quiser configurar uma variável de ambiente para uma simples execução do B2G, você pode fazer o seguinte:</p> -<pre class="brush: bash">adb shell stop b2g -adb shell "export ENV_VAR=value && /system/bin/b2g.sh" -</pre> -<p>If you want to use the same environment variables all of the time, then you can edit <code>b2g.sh</code>, as described in the next section.</p> -<h2 id="Editando_o_b2g.sh">Editando o b2g.sh</h2> -<p>Para depuração, você pode querer configurar variáveis de ambiente para conseguir informações através de log ou outras formas de alterar como o programa <code>b2g</code> é executado. Você pode fazer isso editando o script <code>b2g.sh</code>. Não há nenhuma ferramenta no telefone para editar o arquivo, assim você precisa copiá-lo para o seu computador para editá-lo.</p> -<ol> - <li>Conecte o telefone no seu computador, abra um terminal e execute o seguinte comando para editar o script: - <pre>adb pull /system/bin/b2g.sh</pre> - </li> - <li>Edite o script alterando o que deseja. Por exemplo, suponha que você queira verificar alguns logs (que requer uma imagem preparada para depuração), então você pode adicionar algo como isso: - <pre>export NSPR_LOG_FILE=/data/local/tmp/mylog.txt -export NSPR_LOG_MODULES=Layers:5 -</pre> - </li> - <li>Execute os seguinte comandos para salvar o seu script editado <code>b2g.sh</code> o telefone e reiniciar o <code>b2g</code>: - <pre>adb shell stop b2g -adb remount -adb push b2g.sh /system/bin -adb shell chmod 0755 /system/bin/b2g.sh -adb shell start b2g -</pre> - </li> -</ol> -<div class="note"> - <p><strong>Nota:</strong> <code>/data/local/tmp</code> é o único local no sistema de arquivos que que pode ser gravado por um processo de conteúdo.</p> -</div> -<h2 id="Veja_também">Veja também</h2> -<ul> - <li><a href="/pt-BR/docs/Mozilla/Boot_to_Gecko/Building_and_installing_Boot_to_Gecko" title="/en-US/docs/Mozilla/Boot_to_Gecko/Building_and_installing_Boot_to_Gecko">Compilando e Instalando o Firefox OS</a></li> - <li><a href="/pt-BR/docs/Mozilla/Firefox_OS/Architecture" title="/en-US/docs/Mozilla/Firefox_OS/Architecture">Visão geral da arquitetura do Firefox OS</a></li> - <li><a href="/pt-BR/docs/Mozilla/Boot_to_Gecko/Debugging_on_Boot_to_Gecko" title="/en-US/docs/Mozilla/Boot_to_Gecko/Debugging_on_Boot_to_Gecko">Depurando o Firefox OS</a></li> -</ul> -<p><br> - </p> diff --git a/files/pt-br/archive/b2g_os/developing_firefox_os/firefox_os_bugwork/index.html b/files/pt-br/archive/b2g_os/developing_firefox_os/firefox_os_bugwork/index.html deleted file mode 100644 index 76736f7ede..0000000000 --- a/files/pt-br/archive/b2g_os/developing_firefox_os/firefox_os_bugwork/index.html +++ /dev/null @@ -1,153 +0,0 @@ ---- -title: Registrando bugs do Firefox OS -slug: Archive/B2G_OS/Developing_Firefox_OS/Firefox_OS_bugwork -tags: - - Bugs - - Bugzilla - - Firefox OS -translation_of: Archive/B2G_OS/Developing_Firefox_OS/Filing_bugs_against_Firefox_OS ---- -<div class="summary"> - <p><span class="seoSummary">Este artigo fornece um gua para apresentação e manipulação de bugs relacionados com o projeto Firefox OS.</span></p> -</div> -<h2 id="Bugzilla">Bugzilla</h2> -<p>Assim como a maioria dos projetos na Mozilla, nós usamos o <a href="/pt-BR/docs/Mozilla/Bugzilla">Bugzilla</a> para rastrear o status de bugs e outras questões relacionadas a problemas encontrados. Você pode registrar os bugs que você encontrar no <a href="https://bugzilla.mozilla.org/">bugzilla</a> -- Nós temos um <a href="https://bugzilla.mozilla.org/enter_bug.cgi?product=Firefox%20OS">projeto separado para o Firefox OS</a>, que contém componentes abrangendo o <a href="https://developer.mozilla.org/pt-BR/Firefox_OS/Platform/Gaia">Gaia</a>, <a href="https://developer.mozilla.org/pt-BR/Firefox_OS/Platform/Gonk">Gonk</a> e o <a href="https://developer.mozilla.org/pt-BR/docs/Mozilla/Gecko">Gecko</a> do Firefox OS.</p> -<div class="note"> - <p><strong>Observação</strong>: A página da <a href="https://wiki.mozilla.org/B2G/QA">Wiki B2G QA</a> também tem alguns recursos úteis para manipular bugs no Firefox OS. As páginas mais úteis são <a href="https://wiki.mozilla.org/B2G/QA/Bugzilla">O uso do Bugzilla</a>, e <a href="https://wiki.mozilla.org/Bugmasters/Projects/FirefoxOS">Triagem de erros de entrada para o Firefox OS</a>.</p> -</div> -<h3 id="Registrando_bugs">Registrando bugs</h3> -<p>Para arquivar um bug de forma eficaz, você pode seguir as instruões em <a href="/en-US/docs/Mozilla/QA/Bug_writing_guidelines">Diretrizes para o registro de Bugs</a>.</p> -<h3 id="Campos_obrigatórios_e_opcionais">Campos obrigatórios e opcionais</h3> -<p>Ao criar um bug, alguns campos são obrigatórios:</p> -<table class="standard-table"> - <thead> - <tr> - <th scope="col"><strong>Campo</strong></th> - <th scope="col"><strong>Descrição</strong></th> - </tr> - </thead> - <tbody> - <tr> - <td>Component</td> - <td>Escolha a categoria a qual o bug deve pertencer. Se você não tem ideia de qual categoria este problema pertence, inclua em "General".</td> - </tr> - <tr> - <td>Summary</td> - <td>Escreva um resumo para descrever brevemente o bug.</td> - </tr> - <tr> - <td>Description</td> - <td>Descreva a situação claramente. Um bom bug deve conter: STR (Passos para Reproduzir ou Step to reproduce - em inglês), Resultado esperado, Resultado Atual, e número de Versão. Um número de versão pode ser um commit do Gaia/Gecko ou uma identificação do Build (disponível em servidores privados de compilação ou versões públicas).</td> - </tr> - </tbody> -</table> -<p>Os campos a seguir são opcionais:</p> -<table class="standard-table"> - <thead> - <tr> - <th scope="col"><strong>Campo</strong></th> - <th scope="col"><strong>Descrição</strong></th> - </tr> - </thead> - <tbody> - <tr> - <td>Attachment (Anexos)</td> - <td>Qualquer anexo pode ajudar a analisar o problema. Vídeo, imagens, testcases ou logs são bons para analisar.</td> - </tr> - <tr> - <td>Depends/Block</td> - <td>Exibe as dependencias entre bugs.</td> - </tr> - <tr> - <td>Keywords</td> - <td>Palavras chave para o bugzilla. Isso ajudará ao grupo específico rastrear bugs semelhantes.</td> - </tr> - <tr> - <td>Whiteboard</td> - <td>Contém tags. Adicione qualquer tag para o bug para rastreá-lo. Você não deve remover outras tags de outras pessoas sem permissão.</td> - </tr> - <tr> - <td>See Also</td> - <td>As vezes, dois problemas estão relacionados e você pode especificar isto nesta área.</td> - </tr> - <tr> - <td>Flags</td> - <td>Flags para rastrear o status; A flag mais usada nos bugs do FireFox OS é a blocking-b2g. Isso significa que nós devemos dar mais atenção a ele, uma vez que ameaça a liberação do release.</td> - </tr> - <tr> - <td>Security</td> - <td>Se um bug está relacionado a segurança de dados pessoais, If a bug is related to personal data security, perda de rendimento, e outras questões desse cunho, você deve marcar este checkbox e este será visivel somente às pessoas diretamente envolvidas.</td> - </tr> - </tbody> -</table> -<p>Para saber mais sobre os campos do bugzilla, consulte essaa <a href="https://bugzilla.mozilla.org/page.cgi?id=fields.html">página</a>.</p> -<h3 id="Palavras-chave_comuns">Palavras-chave comuns</h3> -<p>A tabela a seguir fornece informações sobre as palavras-chave mais comuns utilizadas nos bugs do Firefox OS.</p> -<table class="standard-table"> - <thead> - <tr> - <th scope="col"><strong>Palavra-chave</strong></th> - <th scope="col"><strong>Descrição</strong></th> - </tr> - </thead> - <tbody> - <tr> - <td>meta</td> - <td>Indica que o bug está num status de "tracking". Mozilla usa essa tag para rastrear múltiplos bugs ou o histórico de status de implementação. Uma vez marcado como meta, desenvolvedores não devem lançar patches (correções) desses bugs. Por favor, tenha em mente que os gerentes de projeto e as equipes de qualidade usam meta bugs para rastreamento.</td> - </tr> - <tr> - <td>qablocker</td> - <td>Use essa palavra-chave para bugs que impedem o prosseguimento de testes (testes manuais ou automáticos de um recurso) e precisam ser corrigidos para o próximo marco Beta ou RC.</td> - </tr> - <tr> - <td>qawanted</td> - <td>Use essa palavra-chave para bugs que necessitam de maiores informações, requerem ser reproduzidos ou de casos de testes, ou são duplicados (mas você não consegue encontrar o bug original). Requisição do trabalho da equipe de QA é registrado no whiteboard, você deve remover essa palavra-chave quando o trabalho de QA foi finalizado.</td> - </tr> - <tr> - <td>regression</td> - <td> - <p>Essa palavra-chave indica que o problema foi corrigido, mas por uma regressão e o bug em questão é um novo bug, registrado para rastrear a regressão. Também pode se referir a problemas que não os identificados nos testes <em>pre-checked </em>ou <em>smoke tests</em>, que foram encontrados em compilações correntes e que são conhecidos em versões anteriores. Rastrear esses bugs nos ajuda a identificar áreas mais frágeis propensos à ruptura e são bons candidatos para adoção de smoke tests e pré-check.</p> - </td> - </tr> - <tr> - <td>regressionwindow-wanted</td> - <td>Indica que o bug é uma regressão e é utilizado para qualquer um identificar o período no qual ocorreu. Ideal para verificações específicas.</td> - </tr> - <tr> - <td>steps-wanted</td> - <td>Identifica um bug que deve ter um passo-a-passo para reproduzi-lo.</td> - </tr> - <tr> - <td>verifyme</td> - <td> - <p>Significa que esse bug está pronto para ser verificado com o a última compilação B2G por alguém que não seja o representante indicado do time de QA. O bug tem o detalhamento de uma configuração específica de máquina para verificar a correção. Você pode tentar reproduzir a falha e se você concordar que a resolução do problema está correta, altere o <em>Status</em> como <em>Verified</em>.<br> - <br> - Você sempre deve indicar nos comentários o build/OS/plataforma(s) utilizados, antes de alterar o status para <em>Verified</em>. Se o bug foi reportado em todas as tres plataformas e você somente possui uma plataforma para verificar a correção, vá em frente e anote isso no bug, mas não altere o bug como <em>Verified.</em> Todas as plataformas devem ser verificadas antes de alterar o staus para <em>Verified</em>.<br> - <br> - Finalmente, se outros bugs foram marcados como duplicatas do bug que você está analisando, certifique-se de mencionar isso também. Geralmente desenvolvedores marca bugs relacionados — mas não identicos — como duplicados e esses serão revistos se não for marcado.</p> - </td> - </tr> - </tbody> -</table> -<h2 id="Qual_a_diferença_entre_status_tracking_e_bugs_da_engenharia">Qual a diferença entre status <em>tracking</em> e bugs da engenharia?</h2> -<p>Mozilla possui um perfil especial chamado <a href="https://developer.mozilla.org/pt-BR/docs/Mozilla/Developer_guide/Committing_Rules_and_Responsibilities">Sheriff</a>. Sheriffs têm a responsabilidade do <em>merge</em> de códigos e manter os status dos <em>branches</em>. Uma vez que nós temos um número limitado de Sheriffs para testes de falhas nas equipes do Firefox OS, fica difícil para eles are in charge of merging code and maintaining branch status. Since we have limited sheriffs scouting for test failures in Firefox OS teams, voltar o processo de todas as correções imperfeitas.</p> -<p>Portanto, no Firefox OS, ao examinar se uma correção funciona ou não preferimos abrir um novo bug para lançar novas correções para consertar o novo problema. Do contrário pode trazer problemas no status de rastreamento para as equipes de QA e de gerenciamento de projetos.</p> -<p>Assim, nós separamos os bugs em dois status: <em>tracking</em> bugs e <em>engineering</em> bugs.</p> -<ul> - <li>Bugs com Status <em>tracking</em> devem ser identificados com a palavra-chave "meta". O bug pode ser reaberto se ele não cumprir os critérios de aceitação ou falhou durante os passos para reproduzir.</li> - <li>Um bug "<em>engineering</em>" pode ser reaberto <strong>somente</strong> se falhou nos testes automáticos ou a correção não funciona como um todo. Se um patch corrige um <em>engineering bug</em> parcialmente, você deve clonar o bug e use o campo "See also" para referenciar o bug original descrevendo o ponto de falha.</li> -</ul> -<div class="note"> - <p><strong>Nota</strong>: Se também for um bug "story bug", o gerente de projeto deve regsitrar o campo user story com o histórico e o critério de aceitação.</p> -</div> -<h3 id="Como_eu_recupero_se_acidentalmente_lançar_uma_correçaão_no_bug_com_status_tracking">Como eu recupero se acidentalmente lançar uma correçaão no bug com status <em>tracking</em>?</h3> -<p>Não entre em pânico! Se você acidentalmente lançou uma correção, tem um review+, lançou no tunk ou tem reportado como nada corrigido, a seguir o que você precisa fazer:</p> -<ol> - <li>Pressione "Clone this bug" no canto inferior direito da tela para criar um novo bug, clonando a maioria dos campos originais. Verifique os os campos: witheboard, keyword e STR/User Story foram copiados para o novo bug.</li> - <li>Marque o novo bug como bloqueado pelo bug anterior. O novo bug terá o novo status <em>tracking bug</em>.</li> - <li>Use a flag <em>needinfo</em> para alertar o gerente de projeto. Você pode pode <a href="https://wiki.mozilla.org/FirefoxOS/Teams">encontrar os endereços de e-mail dos gerentes de projeto do Firefox OS </a>na nossa Wiki.</li> - <li>Crie um novo <em>engineer bug</em> para descrever o passo com a falha ou o critério de aceitação. Também use o novo bug para bloquear o status <em>tracking bug</em>.</li> - <li>Tente consertar o novo bug.</li> -</ol> -<h2 id="Promovendo_correções_para_branches_antigos">Promovendo correções para branches antigos</h2> -<p>Você pode encontrar versões diferentes de tags nos bugs. Se você deseja promover correções para branches antigos do Firefox OS, certifique-se que preencham as regras para lançamento de uma correção. Maiores detalhes nessa <a href="https://wiki.mozilla.org/Release_Management/B2G_Landing">página</a>.</p> diff --git a/files/pt-br/archive/b2g_os/developing_firefox_os/guia_customizacao_imagem_firefox_os/index.html b/files/pt-br/archive/b2g_os/developing_firefox_os/guia_customizacao_imagem_firefox_os/index.html deleted file mode 100644 index 776b1399f9..0000000000 --- a/files/pt-br/archive/b2g_os/developing_firefox_os/guia_customizacao_imagem_firefox_os/index.html +++ /dev/null @@ -1,1044 +0,0 @@ ---- -title: Guia de customização comercial do Firefox OS -slug: Archive/B2G_OS/Developing_Firefox_OS/Guia_customizacao_imagem_Firefox_OS -tags: - - Customização Imagem - - Desenvolvimento - - Firefox OS - - Gaia -translation_of: Archive/B2G_OS/Developing_Gaia/Market_customizations_guide ---- -<div class="summary"> -<p><span class="seoSummary">Customizações comerciais de imagem permitem especificar instruções de customização em tempo de compilação (por exemplo, quais aplicativos devem pertencer à imagem) em diretórios separados, sem modificar o repositório principal do Gaia. Você pode incluir suas próprias customizações em diretórios distintos ou usar diretórios pré-existentes que vêm com o fonte. Essas customizações são especificadas com as opções de compilação. Nesse artigo veremos em detalhe como criar e usar essas customizações.</span></p> -</div> - -<h2 id="Visão_geral">Visão geral</h2> - -<p>Desde a versão 1.0.1, o Firefox OS usa o mesmo mecanismo que o Firefox para customizações. Todos os recursos mencionados nesse artigo funcionam no Firefox 1.0.2, salvo indicação em contrário.<br> - <br> - Nós criamos um <a href="https://github.com/mozilla-b2g/gaia/tree/master/customization">exemplo completo de customização do Gaia</a> como parte do repositório Gaia. Estude isso para aprender em primeira-mão o que pode ser feito com a customização em tempo de compilação. Isso também pode ser referenciado no artigo abaixo. Se você precisa criar sua própria imagem de produção, você deve criar um outro repositório, copiar o modelo de customização dentro dele e fazer suas próprias alterações. Compile sua distribuição de produção com o comando:</p> - -<p><code>make production GAIA_DISTRIBUTION_DIR=./<em>your-customization-directory-name</em></code>.</p> - -<div class="note"> -<p><strong>Nota</strong>: Envie um "pull request" para o repo do Github acima se você tem alguma sugestão para melhorar o exemplo, ou se vir algo que foi alterado nesse artigo mas não atualizado no código.</p> -</div> - -<p>Abaixo a estrutura do exemplo de customização:</p> - -<pre> customize-sample - ├── power - │ ├── carrier_power_on.png - │ └── carrier_power_off.png - ├── ringtones - │ ├── list.json - │ └── ringer_dream_theme.ogg - ├── wallpapers - │ ├── customize.png - │ └── list.json - ├── browser.json - ├── calendar.json - ├── contacts.json - ├── costcontrol.json - ├── homescreens.json - ├── network.json - ├── sensors.json - ├── settings.json - ├── sms-blacklist.json - ├── support.json - ├── wapuaprof.json - └── apps.list</pre> - -<div class="note"> -<p><strong>Nota</strong>: Todos os arquivos são opcionais. Se você não fornecer o arquivo, será retornado aos padrões.</p> -</div> - -<p>Nós discutiremos todas as customizações opcionais nas seções seguintes, mas primeiramente vamos ver como aplicar uma customização no Gaia.</p> - -<h2 id="Etapas_para_aplicar_uma_customização">Etapas para aplicar uma customização</h2> - -<p>Para aplicar o exemplo de customização no Gaia:</p> - -<ol> - <li>Clone o código fonte do Gaia do <a href="https://github.com/mozilla-b2g/gaia">https://github.com/mozilla-b2g/gaia</a>.</li> - <li>Você pode copiar o diretório <code>gaia/customization/</code> para um novo diretório ou fazer sua customização diretamente no diretório <code>gaia/customization/</code>. O caminho para esse diretório é referenciado nesse artigo como <code><DISTRIBUTION_PATH></code>, obviamente altere isso para o caminho do seu diretório.</li> - <li>Conecte o dispositivo Firefox OS ao seu computador via USB e verifique se ele é reconhecido pelo ADB.</li> - <li>Compile o Gaia, especificando o local da customização com a variável de ambiente <code>GAIA_DISTRIBUTION_DIR</code> como por exemplo: - <pre class="brush: bash">GAIA_DISTRIBUTION_DIR=<DISTRIBUTION_PATH> make production</pre> - </li> - <li>Você deve agora ter o Gaia compilado no seu dispositivo Firefox OS com as customizações aplicadas.</li> -</ol> - -<p>Se você copiar o diretório de customização para <code>gaia/distribution/</code>, basta executar o comando <code>make</code> sem especificar a variável de ambiente:</p> - -<pre class="brush: bash">make production</pre> - -<div class="note"> -<p><strong>Nota</strong>: Algumas customizações são feitas pelos scripts de compilação do Gaia. Verifique o artigo <a href="https://developer.mozilla.org/pt-BR/Firefox_OS/Developing_Gaia/make_options_reference">opções do Make</a> para saber sobre customizações de scripts de compilação.</p> -</div> - -<div class="note"> -<p><strong>Nota</strong>: Customizações específicas de SIM card são incluídas em tempo de compilação, mas aplicadas em tempo de execução durante o procedimento de Primeira utilização.</p> -</div> - -<h2 id="Customizações_em_tempo_de_compilação">Customizações em tempo de compilação</h2> - -<p>Veremos agora as diferentes opções disponíveis no modelo.</p> - -<h3 id="power">power/</h3> - -<p>Customiza as animações (ou imagens estáticas) durante o procedimento de ligar e desligar o dispositivo. Os arquivos podem ser animações MP4 ou imagens estáticas PNG.</p> - -<p>Nomes de arquivos válidos são:</p> - -<ul> - <li><code>carrier_power_on.png</code></li> - <li><code>carrier_power_on.mp4</code></li> - <li><code>carrier_power_off.png</code></li> - <li><code>carrier_power_off.mp4</code></li> -</ul> - -<h3 id="ringtones">ringtones/</h3> - -<p>Toques customizados são incluídos aqui. <code>list.json</code> devem conter os nomes de arquivos dos toques, como isso:</p> - -<pre class="brush: js"> { - "ringer_classic_courier.opus": "", - "ringer_dream_theme.ogg": "", - "ringer_loud_windchimes.opus": "", - "ringer_bitbounce.opus": "" - }</pre> - -<p>Toques customizados são selecionados no aplicativo de configuração em <em>Sound > Ringer</em>. O toque padrão deve ser configurado em <code>settings.json</code>, usando DataURI, você pode usar o comando <strong>datauri</strong> disponível em node/npm, instale-o digitando <code>npm install datauri -g</code> e converta o arquivo para DataURI: <code>datauri <FILE></code></p> - -<h3 id="wallpapers">wallpapers/</h3> - -<p>Papeis de parede customizados (arquivos PNG) devem ser incluídos aqui e listados em <code>list.json</code>, que podem ser selecionados no aplicativo de configuração em<em> Display > Wallpaper</em>.</p> - -<p>O papel de parede padrão deve ser selecionado em <code>settings.json</code>, usando a seguinte linha:</p> - -<pre class="brush: js">"wallpaper.image": "image location"</pre> - -<div class="note"> -<p><strong>Nota</strong>: A imagem pode ser especificada como um caminho de arquivo, ou codificado em Base 64 URI.</p> -</div> - -<h3 id="browser.json">browser.json</h3> - -<p>Esse arquivo permite adicionar customizações no aplicativo Browser, como favoritos e motor de busca padrão. Veja a seção <a href="#Browser_bookmarks">Favoritos do navegador e motor de busca</a> para mais detalhes de como fazer.</p> - -<h3 id="calendar.json">calendar.json</h3> - -<p>Esse arquivo permite usar seu próprio calendário customizado no aplicativo Calendário do Firefox OS. Você precisará especificar suas credenciais Google Oauth credentials. Adicionalmente, é necessário o acesso à API CalDav: para gerar a chave requerida pela API, você precisa ir na página do Google <a href="https://developers.google.com/google-apps/calendar/caldav/v2/guide#creating_your_client_id">criando sua ID de cliente</a> e seguir as seguintes instruções:</p> - -<ol> - <li>Abra o <a href="https://code.google.com/apis/console/b/0">console API</a>.</li> - <li>Crie um projeto e habilite <em>Calendar CalDav API</em> em <em>APIs & auth > APIs</em>.</li> - <li>Clique em <em>Credentials</em>.</li> - <li>Clique em <em>Create new client ID</em></li> - <li>Selecione <em>Installed application </em>na opção <em>Application type</em> e <em>Other</em> na opção <em>Installed application type</em>, enão pressione <em>Create Client ID</em>. Será fornecido um <em>Client ID</em> e <em>Client secret</em>.</li> - <li>Abra o arquivo <code>calendar.json</code>, altere o <code>client_id</code> e <code>client_secret</code> com <em>Client ID</em> e <em>Client secret</em> fornecidos no console do Google API console</li> - <li>Salve e feche o arquivo.</li> -</ol> - -<div class="note"> -<p><strong>Nota</strong>: O uso da API é limitado a 1,000,000 de requisições por dia</p> -</div> - -<h3 id="camera.json_(Tamanhos_das_imagens_nos_aplicativos_Camera_e_Galeria)">camera.json (Tamanhos das imagens nos aplicativos Camera e Galeria)</h3> - -<div class="code-body highlight"> -<pre class="line"><span class="p">{</span> - <span class="nt">"maxImagePixelSize"</span><span class="p">:</span> <span class="mi">6000000</span><span class="p">,</span> - <span class="nt">"maxSnapshotPixelSize"</span><span class="p">:</span> <span class="mi">4000000</span><span class="p">,</span> - <span class="nt">"requiredEXIFPreviewSize"</span><span class="p">:</span> <span class="p">{</span> - <span class="nt">"width"</span><span class="p">:</span> <span class="mi">1200</span><span class="p">,</span> - <span class="nt">"height"</span><span class="p">:</span> <span class="mi">1222</span> - <span class="p">}</span> -<span class="p">}</span></pre> -</div> - -<p><code>maxImagePixelSize</code> e <code>maxSnapshotPixelSize</code> são os tamanhos máximos em pixels permitidos para visualização de uma imagem na Galeria e na Camera. O padrão é 5 mega-pixels (5*2<sup>20</sup> pixels; 5mp).</p> - -<p>Opcionalmentem, você pode definir variáveis para especificar o tamanho mínimo da visualização EXIF (<u><strong>Ex</strong></u>changeable <u><strong>I</strong></u>mage <u><strong>F</strong></u>ile) que será apresentada na visualização de tela cheia incluindo a propriedade<code> requiredEXIFPreviewSize</code>. Se você não especificar essa propriedade a visualização EXIF somente será utilizada se for grande o suficiente para preencher a tela na largura e altura nas duas orientações (retrato ou paisagem).</p> - -<h3 id="contacts.json">contacts.json</h3> - -<p>Os contatos listados nesse arquivo serão incluídos no banco de dados do aplicativo Contatos assim que o Gaia for compilado.</p> - -<p>A seguir um exemplo do arquivo <code>contacts.json</code>:</p> - -<pre class="brush: js">[ - { - "name": ["John Doe"], - "givenName": ["John"], - "familyName": ["Doe"], - "nickname": ["Johnny"], - "category": ["Work", "Racing Team"], - "email": [ - { - "type": ["personal"], - "value": "john.doe@example.org", - "pref": true - }, - { - "type": ["work"], - "value": "jdoe@example.com" - } - ], - "adr": [ - { - "type": ["personal"], - "streetAddress": "123 Foopy St.", - "locality": "San Francisco", - "region": "Downtown", - "postalCode": "94030", - "countryName": "US" - } - ] - }, - { - "name": ["CarrierX"], - "email": [ - { - "type": ["work"], - "value": "support@carrierx.com" - } - ], - "url": [ - { - "type": ["work"], - "value": "https://www.carrierx.com" - } - ] - } - ]</pre> - -<div class="note"> -<p><strong>Nota</strong>: Veja a <a href="https://developer.mozilla.org/pt-BR/docs/WebAPI/Contacts">página da API Contacts</a> para detalhes do layout dos objetos.</p> -</div> - -<div class="note"> -<p><strong>Nota</strong>: Para customizações dependentes do SIM-Card, veja a seção <a href="#Browser_bookmarks">Favoritos do navegador e motor de busca</a>.</p> -</div> - -<h3 id="homescreens.json">homescreens.json</h3> - -<p><a href="https://github.com/mozilla-b2g/gaia/blob/master/customization/homescreens.json">homescreens.json</a> define os aplicativos que ficam na dock e página inicial do Firefox OS e em que ordem. Por padrão o arquivo parece com:</p> - -<pre class="brush: js">{"homescreens": [ - [ - ["apps", "communications", "dialer"], - ["apps", "sms"], - ["apps", "browser"], - ["apps", "camera"] - ] - ]}</pre> - -<p>No exemplo aparecem quatro aplicativos na dock. Se for incluído outro array, o conjunto de aplicativos aparecem na página 1 da tela inicial, o próximo conjunto na página 2 e assim por diante.</p> - -<pre class="brush: js">{"homescreens": [ - [ // We're in the dock! - ["apps", "communications", "dialer"], - ["apps", "sms"], - ["apps", "browser"], - ["apps", "camera"] - ], - [ // We're on Page 1 of the homescreen - ["apps", "email"], - ["apps", "settings"], - ["apps", "clock"], - ["apps", "calendar"] - ], - [ // We're on Page 2 of the homescreen - ["external-apps", "customapp1"], - ["external-apps", "customapp2"], - ["external-apps", "customapp3"], - ["external-apps", "customapp4"] - ] - ]}</pre> - -<p>O primeiro item de cada sub-array é a pasta dentro da qual o aplicativo aparece, o segundo item é o nome do diretório do aplicativo.</p> - -<h4 id="Collections">Collections</h4> - -<div class="note"> -<p><strong>Nota</strong>: No Firefox 2.0, o diretório <code>collections</code> foi movido para dentro do aplicativo <code>homescreen</code> para ficar dentro do seu próprio aplicativo <code>collections</code>. Observer também que alguns campos do manifesto mudaram (veja <a href="https://github.com/mozilla-b2g/gaia/blob/master/apps/collection/collections/funny/manifest.collection">funny collection manifest</a> para um exemplo): <code>provider_id</code> foi alterado para <code>categoryId</code>, e <code>apps</code> foi alterado para <code>pinned</code>.</p> -</div> - -<p>Collections (coleção) são grupos de aplicativos que têm seus próprios ícones que aparecem na tela inicial. Quando o ícone é tocado, uma nova tela aparece contendo os ícones dos aplicativos da coleção. Veja <a href="https://github.com/mozilla-b2g/gaia/tree/master/apps/homescreen/collections">diretório collections no código fonte</a> para ver quais coleções estão disponíveis por padrão:</p> - -<ul> - <li><code>funny</code>: Aproveite os últimos aplicativos de diversão.</li> - <li><code>games</code>: Jogos online.</li> - <li><code>local</code>: O que está acontecendo a sua volta?</li> - <li><code>music</code>: Escute suas músicas favoritas.</li> - <li><code>news</code>: Mantenha-se atualizado com as fontes mundiais de notícias.</li> - <li><code>shopping</code>: Seguindo as tendências das compras.</li> - <li><code>showbiz</code>: Encontre aplicativos para entretenimento.</li> - <li><code>social</code>: Siga sua rede social em qualquer lugar.</li> - <li><code>sports</code>: Os melhores aplicativos sobre esportes.</li> - <li><code>tv</code>: Aplicativos relacionados à TV.</li> -</ul> - -<p>Em cada um desses diretórios você encontrará arquivos de ícones com resoluções diferentes, mais um arquivo de manifesto que define o metadado sobre a coleção como nome, papel e caminhos para os ícones.</p> - -<p>No arquivo <a href="https://github.com/mozilla-b2g/gaia/blob/master/customization/homescreens.json"><code>homescreens.json</code></a> é possível definir quais coleções devem ser carregadas, quais páginas devem aparecer e em qual ordem. Por exemplo, se nós quisermos especificar que apareçam as coleções <code>shopping</code>, <code>social</code>, <code>sports</code> e <code>tv</code>, devemos escrever:</p> - -<pre class="brush: js">{"homescreens": [ - [ - ["apps/homescreen/collections", "social"], - ["apps/homescreen/collections", "games"], - ["apps/homescreen/collections", "music"], - ["apps/homescreen/collections", "showbiz"] - ], [ - ["apps", "communications", "dialer"], - ["apps", "sms"], - ["apps", "browser"], - ["apps", "camera"] - ] - ]}</pre> - -<p>Cada posição no nível mais alto do arry refe-se à página da tela inicial. Aqui, as coleções devem aparecer na dock, e os aplicativos individuais aparecerão na página um da tela inicial.</p> - -<div class="note"> -<p><strong>Nota</strong>: Por padrão, quatro coleções são pré-preenchidas na primeira página da tela inicial do Gaia: <em>Social</em>, <em>Games</em>, <em>Music</em>, and <em>Entertainment</em>.</p> -</div> - -<div class="note"> -<p><strong>Nota</strong>: Nomes de coleção são escritos em minúsculas.</p> -</div> - -<h5 id="O_que_contém_nas_coleções">O que contém nas coleções</h5> - -<p>Coleções são compostas por dois tipos de aplicativos.<br> - <br> - <strong>Aplicativos locais</strong> são definidos em tempo de compilação por meio de arquivos de manifesto, armazenados em <code>/apps/homescreen/collections/<collectionName>/manifest.collection</code>. Os aplicativos locais contidos em cada coleção são definidos no arquivo manifesto. Por exemplo, o manifesto da coleção social (contém os aplicativos discador, sms, contatos e email) The local apps contained within each collection are defined in the mainfest file. For example, the social collection (contains dialer, sms, contacts and email apps) parece com:</p> - -<pre class="brush: js">{ - "name": "Social", - "role": "collection", - "provider_id": "289", // adaptive search identifier - "apps": [ - ["apps", "communications", "dialer"], - ["apps", "sms"], - ["apps", "communications", "contacts"], - ["apps", "email"] - ], - "default_locale": "en-US", - "icons": { - "60": "/collections/social/icon.png", - "90": "/collections/social/icon@1.5x.png", - "120": "/collections/social/icon@2x.png" - } - }</pre> - -<p><strong>Aplicativos remotos são </strong>fornecidos pela busca adaptativa em tempo de execução quando o dispositivo está online.</p> - -<h5 id="Como_traduzir_coleções">Como traduzir coleções</h5> - -<p>Traduções de coleções devem ser definidas nos arquivos de localização no aplicativo tela inicial, no diretório <code>apps/homescreen/locales/</code>. Cada arquivo de localização tem a seguinte estrutura de nome <code>collections.<langCode>.properties</code> — onde <code><langCode></code> é por exemplo <code>fr</code> para francês — e contém linhas simples contendo a string em inglês e sua versão traduzida. Um exemplo de arquivo de localização em francês:</p> - -<pre><span class="c1"># Add bookmark to homescreen</span><span class="na"> -add-to-home-screen</span><span class="o">=</span><span class="s">Ajouter à l’écran d’accueil</span><span class="na"> -add-to-home-screen-header</span><span class="o">=</span><span class="s">Ajouter un lien</span><span class="na"> -website-name</span><span class="o">=</span><span class="s">Nom du site web</span><span class="na"> -address</span><span class="o">=</span><span class="s">Adresse</span><span class="na"> -added-to-home-screen</span><span class="o">=</span><span class="s">Ajouté à l’écran d’accueil</span></pre> - -<h5 id="Coleções_customizadas">Coleções customizadas</h5> - -<p>Assim como no Firefox OS 1.3, você pode definir suas próprias coleções. Simplesmente crie-as no <a href="https://github.com/mozilla-b2g/gaia/tree/master/apps/homescreen/collections">diretório <code>collections</code></a>, e faça a referência ao diretório no arquivo <code>collections.json</code>, como mostrado acima.</p> - -<h4 id="Propriedades_da_tela_inicial_vertical">Propriedades da tela inicial vertical</h4> - -<p>A partir do Firefox 2.0, você pode escolher mostrar a tela inicial vertical ao invés do padrão na horizontal. As propriedades da tela inicial vertical são definidas em <a href="https://github.com/mozilla-b2g/gaia/blob/master/apps/verticalhome/build/default-homescreens.json">default-homescreens.json</a>, incluindo quais aplicativos e coleções devem aparecer, quantas colunas a tela inicial deve ter e quais favoritos devem aparecer.</p> - -<h3 id="network.json_(não_na_pasta_de_customização)">network.json (não na pasta de customização)</h3> - -<div class="warning"> -<p><strong>Importante</strong>: Isso não é mais suportado no Firefox OS 1.4.</p> -</div> - -<p>Nas versões anteriores à Firefox OS esse arquivo pode ser criado em <code>gaia/apps/settings/resources</code>, e possibilita configurar os tipos de rede suportadas pelo dispositivo. Firefox OS suporta os seguintes tipos:</p> - -<ul> - <li>'wcdma/gsm' (preferência WCDMA)</li> - <li>'gsm'</li> - <li>'wcdma'</li> - <li>'wcdma/gsm-auto' (preferência GSM)</li> - <li>'cdma/evdo' (preferência CDMA)</li> - <li>'cdma'</li> - <li>'evdo'</li> - <li>'wcdma/gsm/cdma/evdo' (Automático)</li> -</ul> - -<p>A seguir um exemplo:</p> - -<pre class="brush: js">{ - "types": [ - "cdma/evdo", - "cdma", "evdo" - ] -}</pre> - -<h3 id="sensors.json">sensors.json</h3> - -<p>Define as capacidade do dispositivo com sensores. Por padrão contém:</p> - -<pre class="brush: js">{ "ambientLight": true }</pre> - -<p>Você pode configurar o valor para <code>false</code> caso deseje desabilitar o sensor.</p> - -<h3 id="settings.json">settings.json</h3> - -<ul> - <li>Configurações gerais: 1.0.1</li> - <li>Provedor de busca do padrão do Rocketbar: 2.0</li> -</ul> - -<p>Esse arquivo possibilita configurar os valores padrões da configuração como papel de parede, bloqueio de tela habilitado/desabilitado, bluetooth ligado/desligado, etc. Você pode consultar <a href="https://github.com/mozilla-b2g/gaia/blob/master/build/config/common-settings.json">build/config/common-settings.json</a> para verificar o que pode ser configurado em <code>settings.json</code>, por exemplo, você pode configurar <code><span class="nt">"wifi.enabled"</span><span class="p">:</span> <span class="kc">false</span></code> para desabilitar o WiFi por padrão.</p> - -<p>Você coloca suas configurações customizadas em <a href="https://github.com/mozilla-b2g/gaia/blob/master/customization/settings.json">customization/settings.json</a> e então pode compilar usando <code>make production GAIA_DISTRIBUTION_DIR=customization</code> (ou outro diretório que você decida para fazer seu próprio prefil customizado).</p> - -<p>No Firefox OS 2.0 e superiores, você pode definir as seguintes configurações adicionais no arquivo <code>settings.json</code>:</p> - -<pre class="language-html">"search.urlTemplate": "https://www.google.com/search?q={searchTerms}", -"search.suggestionsUrlTemplate": "https://www.google.com/complete/search?client=firefox&q={searchTerms}", -"search.iconUrl": "data:image/x-icon;base64,AAABAAIAEBAAAAAAAAB9AQAAJ [TRUNCATED FOR BREVITY] -</pre> - -<h3 id="Customização_do_provedor_de_busca">Customização do provedor de busca</h3> - -<p>No Firefox 2.0+, existe uma lista padrão de provedores de busca e seus arquivos de ícones em <a href="https://developer.mozilla.org/en-US/docs/https://github.com/mozilla-b2g/gaia/blob/master/apps/settings/resources/search/providers.json">apps/settings/resources/search/providers.json</a>. Você pode configurar isso em tempo de compilação modificando <a href="https://github.com/mozilla-b2g/gaia/blob/master/customization/search/providers.json">customization/search/providers.json</a> e adicionando os arquivos de ícones apropriados no mesmo diretório. O conteúdo desse diretório irá sobrescrerver o diretório <code>app/settings/resources/search</code> se for encontrado no momento da compilação e se você copiar com o comando:</p> - -<p><code>make production GAIA_DISTRIBUTION_DIR=customization</code>.</p> - -<h3 id="Customizar_o_aplicativo_Homescreen_padrão">Customizar o aplicativo Homescreen padrão</h3> - -<p>homescreen.appName possibilita especificar o aplicativo de tela de início padrão.</p> - -<div class="code-body highlight"> -<pre class="line"><span class="p">{</span> <span class="nt">"homescreen.appName"</span><span class="p">:</span> <span class="s2">"homescreen-stingray"</span> <span class="p">}</span></pre> -</div> - -<h3 id="sms-blacklist.json">sms-blacklist.json</h3> - -<p>Esse arquivo contem uma lista negra customizada de SMS: não é possível enviar SMS para os números especificados nessa lista. Ela sobrescreve a lista descrita no arquivo <code>blacklist.json</code> que fica no aplicativo SMS. Os números devem ser descritos em um array como o exemplo abaixo:</p> - -<pre>["11223344", "55667788"]</pre> - -<h3 id="cellbroadcast">cellbroadcast</h3> - -<p>Canais de escuta:</p> - -<ul> - <li>availability: runtime: Settings — <code>ril.cellbroadcast.searchlist</code></li> - <li>type: string</li> - <li>valid format: <code>\d(-\d)?(,\d(-\d))*</code></li> -</ul> - -<p>Desabilitar reporte de eventos:</p> - -<ul> - <li>availability: - <ul> - <li>run time: Settings — <code>ril.cellbroadcast.disabled</code></li> - <li>build time: Preference — <code>ril.cellbroadcast.disabled</code></li> - </ul> - </li> - <li>type: boolean</li> - <li>meaning: true to completely shutdown Cell Broadcast reporting.</li> -</ul> - -<div class="note"> -<p><strong>Nota</strong>: Configurações padrão disponíveis em <a href="https://mxr.mozilla.org/gaia/source/shared/resources/apn/operator_variant.xml">operator_variant.xml</a>.</p> -</div> - -<h3 id="support.json">support.json</h3> - -<p>Esse arquivo contém contatos de suporte incluindo suporte online e suporte telefônico. Quando incluído, esse arquivo sobrescreve o arquivo <code>support.json</code> no aplicativo Settings. Uma vez que a customização irá sobrescrever as configurações padrão, se você quiser manter as configurações padrão e adicionar alguns recursos extras, você deve copiar essas configurações dos aplicativos do dispositivo e adiconar suas próprias customizações neles.</p> - -<p>Abaixo um exemplo de como o JSON deve parecer:</p> - -<pre class="brush: js">{ - "onlinesupport": { - "href": "http://support.mozilla.org/", - "title": "Mozilla Support" - }, - "callsupport": [ - { - "href": "tel:12345678", - "title": "Call Support 1" - }, - { - "href": "tel:87654321", - "title": "Call Support 2" - } - ] - }</pre> - -<h3 id="perfil_user_agent_WAP_(wapuaprof.json)">perfil user agent WAP (wapuaprof.json)</h3> - -<p>O perfil user agent WAP sobrescreve as informações do user agent quando envia pacotes WAP.</p> - -<h3 id="apps.list">apps.list</h3> - -<p>Isso permite que você especifique quais aplicativos você deseja carregar em tempo de execução (similar ao <code>variant.json</code>, como explicado na seção <a href="#Applications">Aplicativos</a> abaixo.</p> - -<pre class="brush: bash">apps/* -external-apps/* -outoftree_apps/*</pre> - -<p>Você pode especificar aplicativos individuais ao invés de todo o diretório:</p> - -<pre class="brush: bash">apps/email -apps/settings</pre> - -<div class="note"> -<p><strong>Nota</strong>: Se você quiser incluir aplicativos externos como parte da sua imagem do Gaia, você precisa compilá-los numa forma específica e colocá-los no diretório <code>gaia/external-apps/</code>. Leia <a href="#Building_Prebundled_web_apps">Compilando aplicativos pré-empacotados</a> para saber como.</p> -</div> - -<div class="warning"> -<p><strong>Important</strong>e: Aplicativos que você incluir como parte de uma imagem customizada precisa ser incluída no acordo com a Mozilla's Distribution Agreement.</p> -</div> - -<h2 id="Outras_opções_de_customização">Outras opções de customização</h2> - -<p>Existem muitas outras customizações que podem ser feitas. Vamos vê-las agora.</p> - -<div class="note"> -<p><strong>Nota</strong>: O script de compilação utilizado em muitas das seções abaixo pode ser encontrado em <a href="https://github.com/mozilla-b2g/gaia/blob/master/build/applications-data.js">gaia/build/applications-data.js</a>. O scrtip é copiado num arquivo <code>init.json</code> no aplicativo browser em tempo de compilação.</p> -</div> - -<h3 id="Favoritos_do_navegador_e_motor_de_busca_padrão"><a name="Browser_bookmarks"></a>Favoritos do navegador e motor de busca padrão</h3> - -<p>Favoritos: 1.0.1</p> - -<p>Motor de busca padrão: 1.2</p> - -<p>Motor de busca padrão para Rocketbar em providers.json: 2.0</p> - -<p>Podem ser customizados em tempo de compilação com diferentes variantes por cada país e rede em uma compilação. Os dados customizados são inseridos no aplicativo do navegador na primeira vez que é executado, baseado nos códigos <a href="http://en.wikipedia.org/wiki/Mobile_country_code">MCC e MNC</a> do SIM Card presente no dispositivo.</p> - -<div class="note"> -<p><strong>Nota</strong>: Favoritos podem ser customizados nas versões do Firefox OS 1.0.1 e superiores. Motor de busca padrão nas versões Firefox OS 1.2 e superiores.</p> -</div> - -<p>O exemplo abaixo (<code>browser.json</code>) mostra uma configuração para a operadora Vivo no Brasil (724006, onde 724 é o código do Brasil e 006 código da Vivo de acordo com a codificação MCC e MNC), com um fallback padrão (000000) no caso de não coincidir o SIM card ou o mesmo não estiver presente.</p> - -<pre class="brush: js">content = { - '000000': { - 'bookmarks': [ - { 'title': 'Mozilla', - 'uri': 'http://mozilla.org', - 'iconUri': - 'data:image/png;base64,AAABAAIAEBAAAAEAIABo[truncated]' - }, - { 'title': 'Firefox OS', - 'uri': 'http://mozilla.org/firefoxos', - 'iconUri': - 'data:image/png;base64,AAABAAIAEBAAAAEA[truncated]' - } - ], - 'searchEngines' : [ - { - 'title': 'Google', - 'uri': 'http://www.google.com/search?q={searchTerms}', - 'iconUri': - 'data:image/png;base64,AAABAAIAEBAAAAEAIABoBAA[truncated]' - } - ], - 'settings' : { - 'defaultSearchEngine': 'http://www.google.com/search?q={searchTerms}' - } - }, - - '724006': { - "bookmarks": [ - { "title": "Vivo Busca", - "uri": "http://www.google.com.br/m/search", - "iconUri": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAC[truncated]" - }, - { "title": "Serviços e Downloads", - "uri": "http://vds.vivo.com.br", - "iconUri": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACA[truncated]" - }, - { - "title": "Site Vivo", - "uri": "http://www.vivo.com.br/conteudosmartphone", - "iconUri": "data:image/jpg;base64,/9j/4AAQSkZJRg[truncated]" - } - ], - 'searchEngines' : [ - { - 'title': 'Yahoo', - 'uri': 'http://search.yahoo.com/search?q={searchTerms}', - 'iconUri': - 'data:image/png;base64,AAABAAIAEBAAAAEAIABoBAA[truncated]' - } - ], - 'settings' : { - 'defaultSearchEngine': 'http://search.yahoo.com/search?q={searchTerms}' - } - } - };</pre> - -<p>No exemplo, se um SIM Card da Vivo estiver presente na primeira vez que for executado, o usuário verá os favoritos da Vivo e o Yahoo como o motor de busca. Se estiver um outro SIM Card ou nenhum, você verá os favoritos da Mozilla e o Google como motor de busca padrão. Existem algumas partes importantes a serem observadas:</p> - -<ul> - <li>A propriedade <code>defaultSearchEngine</code> <em>deve</em> conicidir com a propriedade <code>uri</code> do motor de busca especificado. Essa string atua como um modelo para <code>{searchTerms}</code> placeholder, o qual será substituíro com a pesquisa do usuário em tempo de execução. Outros valores como strings de busca devem ser adicionadas à pesquisa do usuarío no template da URL.</li> - <li>O favicon das URLs mostrados são dados da URLs codificados em base64 dos dados da imagem (truncados para abreviar) ao invés de URLs de HTTP. Isto é recomendado para que os ícones apareçam na primeira vez que o navegador é executado, mesmo se o usuário não esteja conectado à Internet.</li> - <li>Observe que diversas customizações podem ser aplicadas para diferentes países e diferentes redes numa mesma imagem, com diferentes códigos de 6 dígitos representando cada variante. O código de 6 dígitos é construído com o código MCC mais o código MNC, completados com zeros à direita para garantir que tenham o tamanho de 3 dígitos cada.</li> - <li>Quanto popular os dados padrão o navegador primeiro verificará a exata coincidência com os códigos MCC e MNC, se não coincidir vai tentar MCC+000 e finalmente não havendo coincidência fará o <em>fallback</em> para 000+000.</li> - <li>Ao atualizar entre versões do Gaia, novas customizações somente serão aplicadas se o tipo de customização é um novo recurso em uma nova versão do Gaia para a qual está se atualizando. Customizações anteriores não serão sobrescritas.</li> -</ul> - -<div class="note"> -<p><strong>Nota</strong>: O navegador mostrará os favoritos na ordem reversa, ou seja, o primeiro favorito no arquivo json será o último na lista do navegador e assim por diante.</p> -</div> - -<h3 id="Customização_única_da_variante_para_sobrescrever_a_lista_de_provedores_e_o_provedor_de_busca_do_Rocketbar">Customização única da variante para sobrescrever a lista de provedores e o provedor de busca do Rocketbar</h3> - -<ol> - <li>O provedor de busca padrão do Rocketbar e a lista de provedores pode ser customizada por MCC/MNC — dados adicionados na primeira vez que um SIM card é inserido no telefone — especificando-o nos arquivos JSON em seu diretório de distribuição. Por exemplo: - <ul> - <li>A lista de provedores por MCC/MNC é especificada em <a href="https://github.com/mozilla-b2g/gaia/blob/master/customization/mobizilla/mobizilla_search.json">mobizilla_search.json</a> no nosso exemplo de customização.</li> - <li>O provedor padrão do Rocketbar é especificado em <a href="https://github.com/mozilla-b2g/gaia/blob/master/customization/mobizilla/mobizilla_default_search.json">mobizilla_default_search.json</a> no nosso exemplo de customização.</li> - </ul> - </li> - <li><a href="https://github.com/mozilla-b2g/gaia/blob/master/customization/variant.json">variant.json</a> então define qual arquivo <code>.json</code> é utilizado para especificar as configurações para cada par MCC/MNC pair; veja <a href="https://github.com/mozilla-b2g/gaia/blob/master/customization/variant.json#L47-L48">as linhas 47–48</a> no nosso exemplo: - <pre class="brush: json language-json"><code class="language-json"><span class="key token">"search":</span> <span class="string token">"mobizilla/mobizilla_search.json"</span><span class="punctuation token">,</span> -<span class="key token">"default_search":</span> <span class="string token">"mobizilla/mobizilla_default_search.json"</span><span class="punctuation token">,</span></code></pre> - </li> - <li><code>variant.json</code> é colocado no diretório raiz da nossa distribuição.</li> - <li>Para aplicar a configuração da variante única você deve definir a variável <code>GAIA_DISTRIBUTION_DIR</code> como o caminho para o diretório da sua distribuição quando compilar o Gaia.</li> -</ol> - -<h3 id="Configurações_de_dados_e_mensagens">Configurações de dados e mensagens</h3> - -<p>As configurações são customizadas em tempo de execução.</p> - -<p>Para aplicar configurações específicas, altere<code> gaia/shared/resources/apn/apns_conf_local.xml</code>, simplesmente adicionando ou editando os blocos:</p> - -<pre class="brush: xml"> <apn carrier="Test Network" - mcc="001" - mnc="01" - apn="internet" - user="user" - password="password" - proxy="127.0.0.1" - port="8080" - mmsc="http://127.0.0.1" - mmsproxy="127.0.0.1" - mmsport="8080" - authtype="0" - type="default,supl,mms" - /></pre> - -<h3 id="Configurações_de_correio_de_voz_e_broadcasting">Configurações de correio de voz e broadcasting</h3> - -<p>Para aplicar as configurações, altere <code>gaia/shared/resources/apn/operator_variant.xml</code>. Incluindo ou editando os atributos conforme necessário:</p> - -<pre class="brush: xml"> <operator carrier="Test Network with Operator Variant Settings" - mcc="001" - mnc="01" - cellBroadcastSearchList="0,1,2,3" - voicemail="999999" - /></pre> - -<h3 id="Perfil_user_agent_WAP">Perfil user agent WAP</h3> - -<p>O perfil user agent WAP é outra aplicação que permite customização em tempo de execução. Ele sobrescreve as informação do user agent quando envia pacotes WAP, baseado no MCC/MNC O perfil que sobrescreve possui as partes <code>url</code> e <code>tagname</code>, mas nós somente suportamos <code>url</code> em nossa implementação atual.</p> - -<p>O user agent WAP usa o mesmo estilo de codificação que o navegador, embora "000000" é usado como perfil padrão. Um exemplo a seguir:</p> - -<pre class="brush: js"> { - "000000": { - "url": "http://example.url/default.xml" - }, - "123001": { - "url": "http://example.url/custom123001.xml" - } - }</pre> - -<p>Nesse exemplo, a <code>url</code> do perfil padrão é <code>http://example.url/default.xml</code>, para mcc = 123 e mnc = 001, a <code>url</code> é<code> http://example.url/custom123001.xml</code>. Se existir outro ic card com mcc = 123 e mnc=100, a seria <code>http://example.url/default.xml</code>.</p> - -<p>Se o 000000 for removido desse exemplo:</p> - -<pre class="brush: js"> { - "123001": { - "url": "http://example.url/custom123001.xml" - } - }</pre> - -<p>A <code>url</code> do perfil UA do ic card com mcc = 123, mnc = 001 é agora sobrescrito por <code>http://example.url/custom123001.xml</code>. Nenhum outro será sobrescrito.</p> - -<p>Se nós tivermos o "000000" como antes, mas também "123001" com nenhuma <code>url</code> dentro:</p> - -<pre class="brush: js"> { - "000000": { - "url": "http://example.url/default.xml" - }, - "123001": {} - }</pre> - -<p>Todos os perfis UA agora são sobrescritos por <code>http://example.url/default.xml</code></p> - -<h3 id="Aplicativos"><a name="Applications"></a>Aplicativos</h3> - -<p>As aplicações instaladas no Firefox OS podem ser customizadas em tempo de execução de diversas formas (veja também <a href="https://developer.mozilla.org/pt-BR/Firefox_OS/Desenvolvendo_Gaia/Alterando_aplicativos_empacotados_compilacao_imagem">esse artigo</a>). Porém a melhor forma é editando o arquivo de configuração <code>variant.json</code> que permite os aplicativos serem seletivamente instalados e colocados na posição desejada na tela inicial, dependendo da codificação MCC/MNC. As aplicações customizadas podem ser incluídas à lista de aplicações padrão.</p> - -<p>A parte relevante do arquivo <code>variant.json</code> tipicamente parece com:</p> - -<pre class="brush: js"> { - "apps": { - "puzzle": - { - "manifestURL": "https://owd.tid.es/store/packages/fe8e4a866c518a42db9d2041568684c1.webapp" - }, - "store": - { - "manifestURL": "https://owd.tid.es/store/manifest.webapp", - "installOrigin": "https://www.openwebdevice.com" - } - }, - "operators": [ - { - "id": "movistar-co", - "mcc-mnc": [ - "214-01", - "214-02" - ], - "apps": [ - { - "id": "store", - "screen": 0, - "location": 2 - } - ] - }, - { - "id": "movistar-mx", - "mcc-mnc": [ - "215-23" - ], - "apps": [ - { - "id": "store", - "screen": 0, - "location": 2 - }, - { - "id": "puzzle" - } - ] - } - ] - }</pre> - -<ul> - <li>O primeiro objeto do JSON é chamado<code> apps</code>, e define os aplicativos a serem copiados durante a compilação. O exemplo usa dois aplicativos, um hospedado (store) e outro empacotado (puzzle). Observer que enquanto os aplicativos empacotados somente pecisam do <code>manifestURL</code>, os hospedados também precisam do <code>installOrigin</code> para que possam ser baixados.</li> - <li>O segundo objeto, chamado <code>operators</code>, é responsável pela configuração baseada no MCC/MNC. O objeto contém um array de objetos para cada par MCC/MNC. Esses objetos definem o <code>id</code> da operadora, uma lista MCC/MNC para a configuração e uma lista de objetos <code>apps</code> definindo quais aplicativos serão instalados em cada caso.</li> - <li>Cada objeto <code>apps</code> requer uma propriedade <code>id</code> e tem dois argumentos opcionais para configurar a posição na tela de inívio: - <ul> - <li>A propriedade <code>screen</code> indica o número da tela.</li> - <li>A propriedade <code>location</code> indica a posição na tela.</li> - </ul> - </li> -</ul> - -<h3 id="Contatos_de_suporte_contatos_padrão_papel_de_parede_e_toque_do_telefone">Contatos de suporte, contatos padrão, papel de parede e toque do telefone</h3> - -<p>O mesmo arquivo <code>variant.json</code> — usado para configurar os aplicativos em tempo de execução dependendo do par MCC/MNC — também serve para configurar recursos específicos adicionando alguns atributos em cada operadora. Assim uma operadora pode ter as seguintes configurações:</p> - -<pre class="brush: js"> { apps: ... - "operators": [ - { - "id": "movistar-co", - "mcc-mnc": [ - "214-01", - "214-02" - ], - "apps": [ - { - "id": "store", - "screen": 0, - "location": 2 - } - ], - "support_contacts": "resources/support_contacts_movistar.json", - "default_contacts": "resources/contacts_movistar.json", - "ringtone": { - "path": "resources/Movistar_Mid_ABR_128kbps.ogg", - "name": "Tono Movistar" - }, - "wallpaper": "resources/customize.jpg" - }, - ... - }</pre> - -<p>Para cada operadora:</p> - -<ol> - <li><code>support_contacts</code> especifica o caminho para um arquivo contendo os contatos a serem exibidos na tela de ajuda (<code>Settings > Help</code>), oferecendo a mesma funcionalidade que {{ anch ("support.json") }}. O formato do arquivo é: - - <pre class="brush: js"> { - "onlinesupport": { - "title": "Mozilla Support", - "href": "http://test.mozilla.org/support" - }, - "callsupport1": { - "title": "Call Support (Primary)", - "href": "tel:14155550001" - }, - "callsupport2": { - "title": "Call Support (Secondary)", - "href": "tel:14155550002" - } - }</pre> - </li> - <li><code>default_contacts</code> contém o caminho para um arquivo que contém contatos que serão pré-carregados no aplicativo Contatos, dependendo do par MCC/MNC presente em tempo de execução. O nome das seções são os pares MCC/MNC, e o conteúdo da seção deve ser um array de contatos seguindo o mesmo formato que {{ anch("contacts.json") }}. Por examplo: - <pre class="brush: js"> { - "123123": - [ - {name: ["John Doe"]}, - // etc - ], - } -</pre> - </li> - <li><code>ringtone</code> configura o toque padrão e contém dois atributos, ambos obrigatórios: - <ul> - <li>path: O caminho para o arquivo de audio.</li> - <li>name: O nome a ser mostrado quando o toque for mostrado no aplicativo de configurações.</li> - </ul> - </li> - <li><code>wallpaper</code> contém o caminho para o arquivo de imagem (PNG) que será configurado como o papel de parede padrão.</li> -</ol> - -<h2 id="Compilando_aplicativos_pré-empacotados"><a name="Building_Prebundled_web_apps">Compilando aplicativos pré-empacotados</a></h2> - -<p>Mais cedo, nós discutimos sobre o arquivo {{ anch("apps.list") }}, e agora ele pode ser usado para incluir aplicativos em sua imagem. Esses aplicativos precisam ser compilados de uma certa maneira, então adicionado no diretório <code>gaia/external-apps</code>.<br> - <br> - Para compilar aplicativos web pré-empacotados você pode utilizar o script <a href="https://github.com/yurenju/gaia-preload-app">gaia-preload-app</a>, que compila um webapp pré-empacotado a partir de uma URL <code>.webapp</code> URL. Ele pode aceitar manifestos de aplicativos hospedados, ou mini-manifestos de aplicativos empacotados.</p> - -<h3 id="Para_empacotar_um_único_aplicativo_web">Para empacotar um único aplicativo web</h3> - -<p>Informe a URL <code>.webapp</code> que você deseja empacotar e execute o seguinte comando:</p> - -<pre>python preload.py http://<webapp url></pre> - -<p>Isso irá gerar um diretório com o mesmo nome do aplicativo, por exemplo <code>accuweather</code>.</p> - -<h3 id="Processamento_batch_para_empacotar_vários_aplicativos_web">Processamento batch para empacotar vários aplicativos web</h3> - -<p>Você pode criar um arquivo chamado <code>list</code>, contendo todos os nomes de aplicativos e locais <code>.webapp</code> que você deseja empacotar em um processo batch. O formato desse arquivo é:</p> - -<pre> myFirstApp,https://www.firstapp.com/manifest.webapp - mySecondApp,https://www.secondapp.com/manifest.webapp - etc.</pre> - -<p>Você precisa salvar esse arquivo <code>list</code> no mesmo diretório do script <code>preload.py</code>, e então executar o seguinte comando:</p> - -<pre> $ python preload.py</pre> - -<p>O script <code>preload.py</code> irá fazer um parse da lista e fazer a conversão para você.</p> - -<h3 id="metadata.json_para_aplicativo_web_pré-empacotado">metadata.json para aplicativo web pré-empacotado</h3> - -<p>Todo aplicativo web pré-empacotado deve ter um arquivo <code>metadata.json</code> no seu diretório raiz. O <a href="https://marketplace.firefox.com/">Firefox Marketplace</a> conta com esse arquivo <code>metadata.json</code> para a atualização automática. Esse arquivo é gerado automaticamente pelo script preload.py.<br> - <br> - Para um aplicativo hospedado, as propriedades do arquivo <code>metadata.json</code> são:</p> - -<ul> - <li><code>origin</code>: O nome do domínio da URL do aplicativo.</li> - <li><code>manifestURL</code>: O local do manifesto para o aplicativo hospedado.</li> - <li><code>installOrigin(hosted)</code>: O local do aplicativo instalado numa customização. Para customizações deve ser sempre <code>https://marketplace.firefox.com</code>.</li> - <li><code>etag</code>: isso é usado para verificar atualizações. O valor do <code>etag</code> é recuperado pelo header <code>parse</code> <code>html</code> quando o arquivo <code>.webapp</code> é baixado do servidor.</li> - <li><code>"removable": false</code>; Defina isso como <code>true</code> para fazer com que o aplicativo não possa ser removido da tela inicial.</li> - <li><code>"type": "hosted"</code>; Defina o <code>type</code> como <code>hosted</code> para permissões padrão para seu aplicativo. Tipos <code>privileged</code> e <code>certified</code> não são permitidos para aplicativos hospedados.</li> -</ul> - -<p>Para um aplicativo empacotado, as propriedades do arqvuivo <code>metadata.json</code> são:</p> - -<ul> - <li><code>origin</code>: A origem será <code>app://<app name></code>, por exemplo: <code>app://poppit</code>.</li> - <li><code>manifestURL</code>: Deve ser o local do mini-manifeseto. Para customizações, o <code>manifestURL</code> sempre será um mini-manifesto do <code>marketplace.firefox.com</code>.</li> - <li><code>installOrigin(hosted)</code>: O local do aplicativo instalado de uma customização, sempre deve ser <code>https://marketplace.firefox.com</code>.</li> - <li><code>etag</code>: isso é usado para verificar atualizações. O valor do <code>etag</code> é recuperado pelo header <code>parse</code> <code>html</code> quando o arquivo <code>.webapp</code> é baixado do servidor.</li> - <li><code>packageEtag</code>: Esse é o <code>etag </code>do aplicativo empacotado<code>,</code> recuperado pelo header <code>parse html</code> quando o pacote é baixado do servidor na primeira vez que uma atualização é detectada.</li> - <li><code>"removable": false</code>; Defina isso como <code>true</code> para fazer com que o aplicativo não possa ser removido da tela inicial.</li> - <li><code>"type": "privileged"</code>; Defina o <code>type</code> para <code>privileged</code> para conseguir premissões extras, defina <code>type</code> como <code>certified</code> para conseguir o maior nível de permissionamento para os recursos de sistema do Firefox OS.</li> -</ul> - -<h3 id="Formato_do_arquivo_update.webapp">Formato do arquivo update.webapp</h3> - -<p>Aplicativos empacotados têm um arquivo chamado <code>update.webapp</code>, que é utilizado para atualizações automáticas. O formato é similar ao do arquivo <code>manifest.webapp</code>, mas você deve incluir alguns atributos:</p> - -<ul> - <li><code>package_path</code> é o caminho para o arquivo compactado (zip).</li> - <li><code>size</code> é o tamanho do pacote em bytes.</li> -</ul> - -<pre class="brush: js"> { - "name": "Game Pack", - "icons": {"60": "/icon-60.png", "128": "/icon-128.png"}, - "version": "1.1.2", - "package_path": "/application.zip", - "developer": {"url": "http://abc.com", "name": "abc Inc."}, - "release_notes": "2nd release", - "locales": {"es": {"launch_path": "/index-es.html", "description": "show me customization."}}, - "size": 5460141 - }</pre> - -<h3 id="Formato_do_aplicativo_pré-empacotado">Formato do aplicativo pré-empacotado</h3> - -<h3 id="AppCache.">AppCache.</h3> - -<p>Se o arquivo <code>manifest.webapp</code> do seu aplicativo tem um <code>appcache_path</code> incluído nele, o script <code>preload.py</code> irá trazer o arquivo AppCache indicado e preparar a busca de todos os recursos descritos no arquivo AppCache. O aplicativo pré-empacotado AppCache é um pouco diferente já que o Gecko reconhece um formato diferente, mas é gerado automaticamente pelo script <code>preload.py</code>.</p> - -<p>A estrutura do arquivo é:</p> - -<pre> <app name> - ├── manifest.webapp - └── cache - ├── manifest.appcache - └── <resources> -</pre> - -<div class="note"> -<p><strong>Nota</strong>: Se for indicado um nome diferente para o arquivo AppCache em <code>appcache_path</code>, deve ser renomeado em <code>manifest.appcache</code> e salvo no diretório <code>cache</code>.</p> -</div> - -<h2 id="Perguntas_Frequentes">Perguntas Frequentes</h2> - -<p>A seguir uma lista de perguntas comuns sobre customizações comerciais.</p> - -<h3 id="O_que_pode_ser_customizado">O que pode ser customizado?</h3> - -<ul> - <li>Marca - <ul> - <li>Animações de inicialização e desligamento do dispositivo.</li> - <li>Nome da rede na tela bloqueada e na bandeja de utilitários.</li> - <li>Logos no procedimento de primeiro uso.</li> - </ul> - </li> - <li>Localização - <ul> - <li>Localizações instaladas (shared/locales)</li> - <li>Localização padrão (<code>GAIA_DEFAULT_LOCALE</code>)</li> - <li>Layout padrão do teclado (Vários teclados podem ser habilitados, não vinculados ao local)</li> - </ul> - </li> - <li>Aplicativos - <ul> - <li>Aplicativos de terceiros pré-instalados (Gerenciado por <code>customize.py</code>)</li> - <li>Localização dos aplicativos na tela de início (Gerenciado por <code>customize.py</code>)</li> - <li>Licença</li> - <li>Configuração do provedor do processo de pagamento no aplicativo</li> - </ul> - </li> - <li>Configurações - <ul> - <li>Brilho da tela padrão</li> - <li>Informação do dispositivo — Modelo (nome ou código)</li> - <li>Informação do dispositivo — Conteúdo ou link para informações legais</li> - <li>Ajuda — Link para suporte online</li> - <li>Ajuda — Número telefônico do suporte</li> - <li>Ajuda — Link para guia do usuário</li> - <li>APN</li> - <li>Limitação do tamanho da mensagem MMS</li> - <li>Modo de recuperação de mensagem MMS</li> - </ul> - </li> - <li>Mídias pré-carregadas - <ul> - <li>Papeis de parede</li> - <li>Música</li> - <li>Vídeos</li> - <li>Galeria</li> - </ul> - </li> - <li>Sons - <ul> - <li>Início e desligamento do dispositivo</li> - <li>Toques do celular</li> - <li>Som das mensagens</li> - </ul> - </li> - <li>Everything.me - <ul> - <li>Opção para habilitar ou desabilitar essa funcionalidade</li> - <li>Conjutno de categorias padrão e aplicativos</li> - </ul> - </li> - <li>Navegador - <ul> - <li>Favoritos padrão</li> - <li>Motor de busca padrão</li> - </ul> - </li> -</ul> - -<h3 id="Como_e_onde_definir_o_layout_customizado_do_grid_de_aplicativos">Como e onde definir o layout customizado do grid de aplicativos?</h3> - -<p>Atualmente é definido em <code>gaia/apps/homescreen/js/init.json</code>. <code>customize.py.</code> Seja cuidadoso com o formato desse arquivo.</p> - -<h3 id="É_possível_definir_se_um_aplicativo_é_removível_da_tela_de_início">É possível definir se um aplicativo é removível da tela de início?</h3> - -<p>Não. Todos os aplicativos em <code>/system/b2g</code> são não removíveis, os que estão em <code>/data</code> são removíveis. Uma vez que todos os aplicativos pré-carregados vêm do diretório <code>/system</code>, nós precisamos movê-los para o diretório <code>/data</code> se quisermos que sejam removíveis.</p> - -<h3 id="Como_adicionar_um_aplicativo_empacotado_ou_hospedado_na_imagem">Como adicionar um aplicativo empacotado ou hospedado na imagem?</h3> - -<p>Ambos devem ser incluídos em <code>gaia/external-apps</code>. <code>customize.py</code> vai permitir a entrada do URL do manifesto de um aplicativo hospedado ou empacotado, baixá-lo no local correto e criar o arquivo<code> metadata.json</code>. Isso funcionará como a "etapa de compilação".</p> - -<p>Nós temos metadados diferentes para aplicativos empacotados e hospedados para que seja possível distinguí-los.</p> - -<p>Veja <a href="#Building_Prebundled_web_apps">compilando aplicativos pré-empacotados</a> para mais detalhes.</p> - -<h3 id="Como_preparar_um_aplicativo_hospedado_pré-carregado_para_o_suporte_inicial_offline">Como preparar um aplicativo hospedado pré-carregado para o suporte inicial offline?</h3> - -<p>Você precisa fornecer todos os arquivos para o cache no diretório <code>external-apps/MY_APP/cache</code>, juntamente com o manifesto AppCache.</p> - -<p>Novamente, veja <a href="#Building_Prebundled_web_apps">compilando aplicativos pré-empacotados</a> para mais detalhes.</p> - -<h3 id="Quais_customizações_do_Marketplace_são_possíveis">Quais customizações do Marketplace são possíveis?</h3> - -<ul> - <li>No dispositivo - <ul> - <li>A customização do dispositivo em relação a pagamentos se limita a preencher uma whitelist de provedores de pagamento. Há um conjunto de preferências para isso, documentados em <a href="https://wiki.mozilla.org/WebAPI/WebPayment#Testing">Pagamentos Web</a>.</li> - <li>Por exemplo, os telefones Mozilla B2G são enviados com <a href="https://github.com/mozilla/webpay#readme">nossa implementação do provedor de pagamento</a> numa whitelist que é acessível ao Marketplace e aplicativos de terceiros para compras a partir do aplicativo via {{ domxref("navigator.mozPay") }}. Encontre mais informações sobre provedores de pagamento em <a href="https://wiki.mozilla.org/WebAPI/WebPaymentProvider">Provedores de pagamento via Web</a>.</li> - <li>Se alguma empresa quiser implementar seu próprio processamento de pagamento e colocá-la na whitelist, está livre para isso. Porém, por enquanto, o <a href="https://marketplace.firefox.com/">Firefox Marketplace</a> está configurado somente para habilitar compras através dos provedores de pagamento da Mozilla.</li> - </ul> - </li> - <li>No servidor - <ul> - <li>O aplicativo que comercializa produtos/serviços define o preço para o produto e o processador de pagamentos da Mozilla seleciona a moeda baseado na rede do usuário. Nada, como moeda, taxas ou impostos regionais ou L10N são controlados por configurações no dispositivo (ainda).</li> - <li>Categorias específicas no Firefox Marketplace para a empresa com o logo/nome da operadora na região.</li> - <li>Aplicativos em destaque / promoções no Firefox Market Place, especificados pela operadora.</li> - </ul> - </li> -</ul> - -<p>Existem muitas outras considerações quando incluir uma região ou operadora. Veja <a href="https://wiki.mozilla.org/Marketplace/AddingRegionsAndCarriers">Incluindo Regiões e Operadoras</a> para mais detalhes.</p> - -<h3 id="Como_fazer_para_empacotar_e_armazenar_alterações_nas_customizações_comerciais">Como fazer para empacotar e armazenar alterações nas customizações comerciais?</h3> - -<p>Armazene somente os arquivos alterados, atualmente estão em vários locais no sistema de arquivos. No B2G v2, estamos considerando isso num único local, similar aos diretórios de marcas que temos hoje no Gecko.</p> - -<h3 id="Como_compilar_o_produto_com_uma_configuração_comercial_específica">Como compilar o produto com uma configuração comercial específica?</h3> - -<p>Copie seus arquivos alterados em um <em>checkout</em> do Gaia. <code>customize.py</code> fornecerá uma interface para definir o que for relevante, criar arquivos apropriados em locais apropriados no <em>checkout</em> do Gaia, então compile o perfil desse Gaia.</p> - -<h3 id="Como_customizar_a_animação_da_inicialização_desligamento">Como customizar a animação da inicialização / desligamento?</h3> - -<ul> - <li>Essa animação usa <a href="http://www.droidforums.net/forum/droid-hacks/33932-bootanimation-zip-file-explained.html">o formato do Android <code>bootanimation.zip</code>/<code>desc.txt</code></a>.</li> - <li>Isso nos faz criar uma sequência de animação <em>multi-part</em> na qual nós podemos especificar coisas como tamanho, framerate e número de vezes que cada parte da animação se repete.</li> - <li>Existe também transições animada de arquivos PNG que preenche o espaço entre a sequência <code>bootanimation.zip</code> e a transição para a tela de bloqueio, que é executada pelo Gaia.</li> - <li>O tamanho no disco da animação padrão é de 8.2MB (looping) + 3.6MB (transição do frame 18) = Total de 11.8MB.</li> - <li>Atualmente, a animação de desligamento é uma animação customizada de css baseado num design específico em {{ Bug("809342") }}.</li> -</ul> diff --git a/files/pt-br/archive/b2g_os/developing_firefox_os/guia_rapido_desenvolvimento_gaia/index.html b/files/pt-br/archive/b2g_os/developing_firefox_os/guia_rapido_desenvolvimento_gaia/index.html deleted file mode 100644 index 9f2bafcd84..0000000000 --- a/files/pt-br/archive/b2g_os/developing_firefox_os/guia_rapido_desenvolvimento_gaia/index.html +++ /dev/null @@ -1,140 +0,0 @@ ---- -title: Guia rápido para desenvolvimento Gaia -slug: Archive/B2G_OS/Developing_Firefox_OS/Guia_rapido_desenvolvimento_Gaia -tags: - - B2G - - Desenvolvimento Firefox OS - - Firefox OS - - Gaia -translation_of: Firefox_OS/Developing_Gaia ---- -<div class="summary"> - <p><span class="seoSummary">Este guia fornece um rápido tutorial para desenvolver e depurar aplicativos Gaia, incluindo rodar o Gaia dentro do Firefox e do gerenciador de aplicativos do Firefox OS. Este guia assume que você conhece a tecnologia HTML5, tem conhecimentos sobre padrões MVC e um grande interesse no Firefox OS. Ao final, você terá um entendimento básico sobre a estrutura de um aplicativo Gaia e como testar seu trabalho.</span></p> -</div> -<h2 id="O_que_você_precisa">O que você precisa?</h2> -<p>Há duas opções para criar um ambiente de desenvolvimento Gaia/B2G. Você pode construi o seu próprio, ou pode usar o ambiente de construção virtual FoxBox.</p> -<h3 id="Criando_seu_próprio_ambiente">Criando seu próprio ambiente</h3> -<ol> - <li>Primeiramente você precisa ter <a href="http://git-scm.com/book/en/Getting-Started-Installing-Git">o Git instalado</a>. Se você prefere trabalhar em um ambiente visual, você deve considerar instalar o cliente Github (<a href="http://mac.github.com/">Github para Mac</a> / <a href="http://windows.github.com/">Github para Windows</a>). O Git é essencial para atualizar o código, promover suas alterações, e ver no que os outros desenvolvedores estão trabalhando.</li> - <li>Na sequenicia, você precisa clonar o repositório do Mozilla Gaia em seu computador:<br> - <a href="https://github.com/mozilla-b2g/gaia">https://github.com/mozilla-b2g/gaia</a>. A melhor maneira é criar um fork e clonar este no seu computador local utilizando <code>git clone https://github.com/<Seu nome de usuário no Github>/gaia.git</code>. Isso pode levar um tempo, pois o repositório é grande: Aproximadamente 700MB.</li> - <li>Depois de ter feito isto, você pode usar o terminal para chegar ao repositório (<code>cd gaia</code>) e então rodar o comando <code>DEBUG=1 make</code> para construir (compilar) e configurar o Gaia corretamente em modo de depuração. Este download <a href="/en-US/docs/Mozilla/Projects/XULRunner">XULRunner</a> - pacote em tempo de execução para instalar, atualizar e desinstalar - e usar para executar o procedimento de construção.<br> - <div class="note"> - <strong>Nota</strong>: Leia mais detalhes das <a href="/en-US/Firefox_OS/Platform/Gaia/Hacking#Make_options">opções do Make para o Gaia </a>se você quiser saber mais sobre.</div> - </li> - <li>Depois que você terminar de configurar seu espaço de trabalho, você precisa instalar <a href="http://nightly.mozilla.org/">Versão Nightly do Firefox</a>.</li> - <li>Nesta versão de testes, você poderá também escolher a Extensão do Simulador Firefox e a Extensão do Gerenciador de Aplicativos, dependendo do seu ambiente preferido (os dois serão abordados a seguir). a Extensão do Gerenciador de Aplicativos (App Manager) poderá vir pré-instalada na versão diária, mas você terá que instalar o <a href="https://ftp.mozilla.org/pub/mozilla.org/labs/fxos-simulator/">Simulador do Firefox OS</a>, caso não tenha um aparelho real para fazer os testes.</li> - <li>Você precisara instalar o <a href="https://ftp.mozilla.org/pub/mozilla.org/labs/fxos-simulator/">ADB helper</a> para depurar em um aparelho remoto, AKA, seu smartphone.</li> - <li>Você deve querer ter um smartphone com o Firefox OS. Ele irá mostrar informações interessantes relacionadas ao tempo de início dos aplicativos, frame rates, etc. Também, uma vez que você tem um OS atual rodando em um aparelho, você será capaz de testar facilmente todas as APIs suportadas pelo aparelho.</li> -</ol> -<h3 id="Configurando_o_ambiente_virtual_FoxBox">Configurando o ambiente virtual FoxBox</h3> -<p>FoxBox é um ambiente do Firefox em uma máquina virtual (VM), composto por Vagrant e o Virtualbox. Isto tem muitas vantagens, mas a principal é que faz muitas configurações para você, deixando-o ir direto ao trabalho de desenvolvimento. Para instruções completas, leia o <a href="https://github.com/gasolin/foxbox">README do FoxBox no repositório do Github</a>.</p> -<p>Agora que você tem o ambiente de trabalho básico configurado, vamos aos aplicativos!</p> -<h2 id="Os_aplicativos_instalados_por_padrão_no_Firefox_OS">Os aplicativos instalados por padrão no Firefox OS</h2> -<p>Os aplicativos HTML5 instalados por padrão fornecidos no código fonte do Gaia são:</p> -<ul> - <li>Bluetooth</li> - <li>Navegador</li> - <li>Calendário</li> - <li>Câmera</li> - <li>Relógio</li> - <li>Contatos</li> - <li>Controle de Custos</li> - <li>Discador</li> - <li>FL</li> - <li>FM</li> - <li>Galeria</li> - <li>Homescreen</li> - <li>Teclado</li> - <li>Music</li> - <li>PDF.js</li> - <li>Ringtones</li> - <li>Busca</li> - <li>Setringtone</li> - <li>Configurações</li> - <li>SMS</li> - <li>Sistema</li> - <li>Video</li> - <li>Papel de Parede</li> - <li>WAPPush</li> -</ul> -<p>O primeiro aplicativo executado quando o aparelho inicia é o aplicativo Sistema (System). Este aplicativo é responsável por abrir e gerenciar a tela inicial (Homescreen). A partir da tela inicial (Homescreen) você pode executar outros aplicativos para realizar várias funções. Por exemplo, o Discador (Dialer) é executado pela Tela Inicial quando o usuário clica no ícone do telefone. Este discador pode executar o aplicativo Contatos quando o usuário queira ver a lista de contatos para discar.</p> -<h2 id="Vamos_explorar_alguns_aplicativos">Vamos explorar alguns aplicativos</h2> -<p>Os aplicativos instalados por padrão estão em uma pasta dentro de <code>gaia/apps/</code>. Cada pasta de aplicativos Gaia contem os seguintes componentes:</p> -<ul> - <li>Arquivo <code>manifest.webapp:</code> Para armazenar metadados sobre o aplicativo.</li> - <li>Diretório <code>style</code>: Que armazena os arquivos CSS.</li> - <li>Diretório <code>js</code>: Para armazenar os arquivos JavaScript.</li> - <li>Diretório <code>locales</code>: Este armazena o texto (em linhas) traduzidos para diferentes linguas.</li> - <li>Um arquivo HTML: Geralmente (mas não se limitando a) <code>index.html</code>.</li> -</ul> -<p>Alguns aplicativos também podem ter:</p> -<ul> - <li>Diretório <code>elements</code>: Para armazenar outras pontos de vista em arquivos HTML.</li> - <li>Diretório <code>test</code>: Para executar testes relacionados ao aplicativo.</li> - <li>Diretório <code>resources</code>:Contém otros recursos como vídeos, áudios, etc.</li> - <li>Diretório <code>build</code>.</li> -</ul> -<div class="warning"> - <p><strong>Importante</strong>: Também pode haver alguns arquivos adicionais como LazyLoaders e Motores de Modelagem Customizados e outros utilitários para a execução de um aplicativo no Firefox OS. Você pode notar padrões JavaScript em aplicativos divergentes ou arquivos <code>.js</code>. Lembre-se, estes Aplicativos, incluindo o Sistema Operacional, são <em>open source</em>, o que indica que foram codificados por muitas pessoas. Portanto, os aplicativos são muitas vezes criados de acordo com diferentes padrões de codificação e estilos.</p> - <p><strong>Observação</strong>: Este é o layout geral dos aplicativos Gaia. Para que seu aplicativo funciona, é necessário apenas o arquivo <code>manifest.webapp</code>; os demais são opcionais.</p> -</div> -<p>Se você tem experiência em desenvolvimento web, você já tem o que precisa para fazer algumas modificações nestes aplicativos. Vamos melhorá-los?</p> -<h2 id="Vamos_executar_alguns_aplicativos">Vamos executar alguns aplicativos</h2> -<p>Depois de você ter feito as modificações nestes aplicativos, você pode querer ver as alterações em ação. Você pode executá-los dentro da versão Nightly do Firefox, transferindo diretamente para seu aparelho físico, ou executá-lo através do Gerenciador de Aplicativos do Firefox OS (em um simulador ou um aparelho não real).</p> -<h3 id="Rodando_a_versão_Nightly_do_Firefox">Rodando a versão Nightly do Firefox</h3> -<p>Para rodar o Gaia e ver os aplicativos no na versão de testes (Nightly), você precisa executar um comando com a seguinte estrutura:</p> -<pre class="brush: bash">/path/to/firefoxnightly -profile /path/to/B2G/gaia/profile-debug -no-remote</pre> -<p>Por exemplo, no Mac OS X, nós executamos o seguinte comando:</p> -<pre class="brush: bash">/Applications/FirefoxNightly.app/Contents/MacOS/firefox -profile /Users/bob/git/gaia/profile-debug -no-remote</pre> -<div class="note"> - <p><strong>Observação:</strong> <code><em>-no-remote</em></code> é necessário para impedir a reutilização de uma instancia do Firefox já executando em vez de criar uma nova e rodar o perfil Gaia customizado. <code>profile-debug</code> significa que nós estamos rodando o perfil de depuração do Gaia que configuramos anteriormente com a opção <code>DEBUG=1</code> no comando <code>make</code>, configurando o ambiente para depuração.</p> - <p>Leva um tempo para iniciar, mas eventualmente você irá terminar com uma instância Gaia, além de diversos controles rodando em uma nova janela do navegador.</p> -</div> -<p><img alt="A UI screen showing the Gaia user interface running in Firefox nightly: a phone screen and number of tool bar controls." src="https://mdn.mozillademos.org/files/7161/Screen%20Shot%202014-02-13%20at%2012.48.png" style="width: 800px; height: 467px; display: block; margin: 0px auto;"></p> -<p>Alternativamente, se você quiser rodar um único aplicativo no navegador, uma técnica muito mais rápida e simples seria abrir o arquivo HTML raiz no navegador via file://URL (i.e. abrindo o index.hml no navegador). Você pode então usar a ferramenta <a href="/en-US/docs/Tools/Responsive_Design_View">Modo responsivo de design </a><a href="/en-US/docs/Tools/Responsive_Design_View">(Responsive Design View)</a> para ver como ficará a aparência em telas pequenas e com pouca resolução. É um método útil se você quer fazer algum desenvolvimento/depuração de IU e ter a maioria das vantagens da recarga instantânea. As ferramentas de desenvolvimento do Firefox podem ser útil neste aspecto, como por exemplo para testar otimização de CSS.</p> -<div class="note"> - <p><strong>Observação</strong>: Esta abordagem não irá acessar o hardware do equipamento, então várias funcionalidades não irão funcionar, além de você não conseguir ver o aplicativo iniciando, ver seu ícone na tela inicial e etc. Executar em um aparelho físico é a melhor abordagem de todas, veja abaixo:</p> -</div> -<h3 id="Rodando_em_um_aparelho_físico">Rodando em um aparelho físico</h3> -<p>Para enviar seu Gaia modificado para um aparelho físico com o Firefox OS:</p> -<ol> - <li>Tenha certeza que você tem o <a href="/en-US/Firefox_OS/Debugging/Installing_ADB"><code>adb</code></a> instalado, ou instale o <a href="https://ftp.mozilla.org/pub/mozilla.org/labs/fxos-simulator/">ADB helper</a> como descrito anteriormente.</li> - <li>Verifique se o seu aparelho está conectado ao seu computador sobre <code>adb</code> executando o comando <code>adb devices</code> no terminal.</li> - <li>Execute o comando <code>make reset-gaia</code> a partir do seu diretório Gaia para enviar ao seu aparelho via <code>adb.</code></li> -</ol> -<p>Isto pode levar um tempo, mas existe um meio mais rápido e fácil - Usando o Gerenciador de Aplicativos.</p> -<h3 id="Executando_através_do_Gerenciador_de_Aplicativos_(App_Manager)">Executando através do Gerenciador de Aplicativos (App Manager)</h3> -<p>Enquanto seu aparelho estiver executando o Firefox 1.2+, você pode rodar aplicativos modificados a partir do Gerenciador de Aplicativos, como descrito na próxima sessão.</p> -<h2 id="Depurando_com_o_Gerenciador_de_Aplicativos_(App_Manager)">Depurando com o Gerenciador de Aplicativos (App Manager)</h2> -<p>Depois que você terminar de modificar os aplicativos (ou <a href="/en-US/docs/Web/API/Apps">criar um próprio</a>), você pode querer depurá-lo.</p> -<p>Para fazer isso, primeiramente precisa fazer o Gerenciador de Aplicativos e seu aparelho físico se comunicarem, ou usar o simulador do Firefox OS, se você não tem um aparelho físico. Isso tudo é explicado em <a href="/en-US/Firefox_OS/Using_the_App_Manager">Usando o App Manager</a>.</p> -<p>Agora selecione o aplicativo que você quer depurar - use o aplicativo de controle <em>Add Packaged</em> dentro do Gerenciador de Aplicativos e selecione o diretório do seu aplicativo para depurar. Quando o aplicativo aparecer você terá que pressionar o botão "Início" para instalar no aparelho/simulador e então iniciá-lo. A partir de então, você pode pressionar "Atualizar" para enviar mais atualizacões ao aparelho/simulador, e deprurá-lo utilizando as <a href="/pt-BR/docs/Tools">ferramentas do desenvolvimento</a> da Mozilla diretamente em um aparelho.</p> -<p>Por exemplo, abaixo você pode ver o aplicativo Contacs rodando no Gerenciador de Aplicativos.</p> -<p><img alt="A card showing details of the Gaia contacts app: a simple contacts application." src="https://mdn.mozillademos.org/files/7135/contacts-app-screenshot.png" style="width: 868px; height: 358px; display: block; margin: 0px auto;"></p> -<p>Teste outros recursos de depuração, rodando por exemplo alguns comandos no console, ou modificando propriedades CSS.</p> -<p><img alt="A screenshot of the Mozilla App Manager" src="https://mdn.mozillademos.org/files/7137/debugger.png" style="width: 700px; height: 357px; display: block; margin: 0px auto;"></p> -<h2 id="Contribuindo_com_o_projeto">Contribuindo com o projeto</h2> -<p>Uma vez que você está satisfeito com as alterações que você fez no repositório do Gaia, você pode enviar <em>pull requests</em> para o repo no Github. Se você não sabe como fazer isso, leia <a href="https://help.github.com/articles/using-pull-requests">Using Pull Requests</a> na página de ajuda do Github.</p> -<p>Na prática, seu <em>pull request</em> não tem muita chance de ser aceito pelo time de desenvolvimento do Gaia sem uma prévia discussão e acordo. O primeiro passo seria discutir as ações que você quer fazer com o time de desenvolvimento. Eles podem ser encontrados na lista dev-gaia@lists.mozilla.org mailing list, ou no canal #gaia do IRC em <a href="https://wiki.mozilla.org/IRC">Mozilla IRC</a>.</p> -<p>Outra ação possível é registrar bugs no sistema <a href="https://bugzilla.mozilla.org/">Mozilla Bugzilla</a>, usando o <a href="https://bugzilla.mozilla.org/enter_bug.cgi?product=Firefox%20OS">formulário Firefox OS project</a> (escolha Gaia — ou um subset apropriado — como componente). Mas antes de tudo, faça uma busca no Bugzilla para verificar se o problema já não foi reportado por alguém. Se não foi, considere os pontos a seguir:</p> -<ul> - <li>Se trata-se de um erro óbvio — um bug no real sentido da palavra — então você deve registrá-lo.</li> - <li>Se o bug for na realidade um pedido de melhoria, então o melhor é discutir na lista de emails ou no IRC.</li> -</ul> -<div class="note"> - <p><strong>Nota</strong>: Se você não está certo no que trabalhar e apenas gostaria de encontrar bugs relevantes para contribuir, o aplicativo do Josh Matthews <a href="http://www.joshmatthews.net/bugsahoy/?b2g=1">Bugs Ahoy</a> é bastante útil.</p> -</div> -<h2 id="Perguntas_frequentes">Perguntas frequentes</h2> -<p>As seguintes seções responde algumas das pergutnas mais comuns sobre como depurar aplicativos usando o Gaia no seu desktop.</p> -<div class="note"> - <p><strong>Nota</strong>: Veja o artigo <a href="https://developer.mozilla.org/pt-BR/docs/Mozilla/Firefox_OS/Platform/Gaia/Hacking#make_options" title="https://developer.mozilla.org/en-US/docs/Mozilla/Firefox_OS/Platform/Gaia/Hacking#High_resolution_image_assets">Modificando o Gaia</a> para mais opções do make que podem ser úteis para a depuração do Gaia.</p> - <p>Posso emular dispositivos de alta resolução dentro do navegador Firefox Desktop?</p> - Sim.</div> -<ol> - <li>Primeiro, use o comando - <pre class="language-html">GAIA_DEV_PIXELS_PER_PX=1.5 DEBUG=1 make</pre> - para certificar-se que as imagens aparecerão corretametne em dispositivos qHD e WVGA.</li> - <li>Depois, você pode trocar a densidade do navegador abrindo a página <a href="https://developer.mozilla.org/about:config" title="/about:config">about:config</a> no Firefox e configurar a opção <code>layout.css.devPixelsPerPx</code> para <code>1.5</code> .</li> - <li>Por último, você pode usar <a href="/pt-BR/docs/Tools/Responsive_Design_View">Visão de design responsivo</a> para 320 x 533 px (que é o equivalente em pixels CSS para dispositivos 480 x 800)</li> -</ol> diff --git a/files/pt-br/archive/b2g_os/developing_firefox_os/index.html b/files/pt-br/archive/b2g_os/developing_firefox_os/index.html deleted file mode 100644 index a93d004c63..0000000000 --- a/files/pt-br/archive/b2g_os/developing_firefox_os/index.html +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: Desenvolvendo no Firefox OS -slug: Archive/B2G_OS/Developing_Firefox_OS -translation_of: Archive/B2G_OS/Developing_Firefox_OS ---- -<div class="summary"> - <p>Essa sessão fornece uma documentação cobrindo diferentes formas de como a experiência de uso do Firefox OS pode ser modificada/personalizada durante a compilação ou criação de aplicativos e como você pode ajudar a desenvolver no baixo nível da plataforma em áreas como <a href="https://developer.mozilla.org/pt-BR/docs/Mozilla/Gecko">Gecko</a> e <a href="https://developer.mozilla.org/pt-BR/Firefox_OS/Platform/Gonk">Gonk</a>.</p> -</div> -<div class="note"> - <p><strong>Nota</strong>: Se você estiver especialmente interessado em desenvolver no Gaia, a interface de usuário do Firefox OS, você deve consultar nossa página <a href="https://developer.mozilla.org/pt-BR/Firefox_OS/Developing_Gaia">Desenvolvendo no Gaia</a>.</p> -</div> -<dl> - <dt> - </dt> - <dt> - <a href="https://developer.mozilla.org/pt-BR/Firefox_OS/Developing_Firefox_OS/Filing_bugs_against_Firefox_OS">Registrando bugs do Firefox OS</a></dt> - <dd> - Esse artigo fornece um guia de como registrar os bugs de qualquer aspecto no Firefox OS.</dd> - <dt> - <a href="https://developer.mozilla.org/pt-BR/docs/Mozilla/Firefox_OS/Tips_and_tricks/modifying_hosts_file" title="/en-US/docs/Mozilla/Firefox_OS/Tips_and_tricks/modifying_hosts_file">Modificando o arquivo hosts</a></dt> - <dd> - Um guia do que pode se pode conseguir modificando o arquivo hosts do Firefox OS.</dd> - <dt> - <a href="/pt-BR/docs/Mozilla/Firefox_OS/Customizacao_com_o_arquivo_.userconfig_file" title="https://developer.mozilla.org/en-US/docs/Mozilla/Firefox_OS/Customization_with_the_.userconfig_file">Customização com o arquivo .userconfig</a></dt> - <dd> - Como customizar a compilação e execução do Firefox OS alterando o arquivo<code>.userconfig</code>.</dd> - <dt> - <a href="https://developer.mozilla.org/pt-BR/Firefox_OS/Developing_Firefox_OS/Customizing_the_b2g.sh_script">Customizando o script b2g.sh</a></dt> - <dd> - Uma explicação de como customizar o script b2g.sh que executa a aplicação b2g e controla diversos aspectos do sistema.</dd> -</dl> diff --git a/files/pt-br/archive/b2g_os/developing_firefox_os/localizando_firefox_os/index.html b/files/pt-br/archive/b2g_os/developing_firefox_os/localizando_firefox_os/index.html deleted file mode 100644 index 8fac6a219f..0000000000 --- a/files/pt-br/archive/b2g_os/developing_firefox_os/localizando_firefox_os/index.html +++ /dev/null @@ -1,106 +0,0 @@ ---- -title: Localizando o Firefox OS -slug: Archive/B2G_OS/Developing_Firefox_OS/Localizando_Firefox_OS -translation_of: Archive/B2G_OS/Developing_Gaia/Localizing_B2G_OS ---- -<div class="summary"> - <p><span class="seoSummary">Nesse guia, nós mostraremos o quão fácil é localizar o Firefox OS, especificamente a interface Gaia e seus aplicativos. Nós começaremos ajudando a configurar seu computador, localizar as strings Gaia e finalmente como executar o teste l10n no seu trabalho.</span></p> -</div> -<h2 id="Reunindo_as_ferramentas">Reunindo as ferramentas</h2> -<p><span id="result_box" lang="pt"><span class="hps">A fim de</span> <span class="hps">ser capaz de obter</span> <span class="hps">os arquivos fonte </span><span class="hps">do Gaia</span> <span class="hps">e</span> <span class="hps">testar a sua</span> <span class="hps">localização</span> <span class="hps">no desktop</span><span>, você</span> <span class="hps">precisa certificar-se que possui os </span><span class="hps">seguintes utilitários</span> <span class="hps">instalados</span><span>:</span></span></p> -<dl> - <dt> - GNU make</dt> - <dd> - make é uma pequena ferramenta útil para criar binários a partir do código fonte. Ele virá bem a calhar quando você estiver pronto para testar seu trabalho no l10n. Baixar e instalara o make é fácil e pode ser feito <a href="http://www.gnu.org/software/make/" title="http://www.gnu.org/software/make/">diretamente do site do GNU</a>. Se você estiver usando o OSX, você precisa instalar o XCode e a ferramenta do XCode para linha de comando a partir do site da <a href="https://itunes.apple.com/us/app/xcode/id497799835?mt=12" title="https://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=7&cad=rja&ved=0CFQQFjAG&url=https%3A%2F%2Fitunes.apple.com%2Fus%2Fapp%2Fxcode%2Fid497799835%3Fmt%3D12&ei=6ZItUeDqDeejiAK90IDYCA&usg=AFQjCNGrxKmVtXUdvUU3MhqZhP4MHT6Gtg&bvm=bv.42965579,d.cGE">App Store</a>.</dd> - <dt> - git</dt> - <dd> - git é um sistema de controle de versão usado para armazenar o código fonte do Gaia. Para baixar e instalar acesse o <a href="http://git-scm.com/" title="http://git-scm.com/">site</a>.</dd> - <dt> - Python</dt> - <dd> - Python é uma linguagem de programação que também ajuda a criar imagens Firefox OS para testes do l10n. Para baixar e instalar acesse o <a href="http://www.python.org/getit/" title="http://www.python.org/getit/">site.</a></dd> - <dt> - Mercurial (hg)</dt> - <dd> - Mercurial (hg) é outro sistema de controle de versão que armazena versões estáveis do Gaia usado pelo l10n, bem como os repositórios locais. Para baixar e instalar acesse o <a href="http://mercurial.selenic.com/downloads/" title="http://mercurial.selenic.com/downloads/">site.</a></dd> - <dt> - compare-locales</dt> - <dd> - compare-locales é um script Python que ajuda aos localizadores avaliar seu trabalho e separar novos conteúdos a localizar do material já localizado (o que chamamos de diff). Para baixar e instalar acesse a <a href="https://developer.mozilla.org/en-US/docs/Compare-locales" title="https://developer.mozilla.org/en-US/docs/Compare-locales">wiki page</a>. Observer que isso somente é necessário se você está localizando o Gaia usando somente ferramentas de linha de comando ou um editor de texto. Se você estiver usando outros tipos de ferramente como Pootle, Transifex, ou Pontoon, você não precisa disso.</dd> -</dl> -<h2 id="Configurando_um_repo_local">Configurando um repo local</h2> -<p>Uma vez que você baixou e instalou todos os softwares listados acima, é hora de pegar os fontes e localizar as strings no seu computador.</p> -<ol> - <li>Na sua linha de comando, navege no diretório onde estão armazenados os fontes do Gaia e as strings a serem localizadas.</li> - <li>Usando hg, clone o repo en-US (inglês americano) no localização padrão com o seguinte comando:<br> - <pre>hg clone https://hg.mozilla.org/gaia-l10n/en-US -</pre> - </li> - <li>Agora, clone seus repositórios locais usando o comando com a estrutura abaixo. No exemplo, a segunda linha faz a clonagem do repositório Chinês Tradicional em um diretório adequado.<br> - <pre>hg clone https://hg.mozilla.org/gaia-l10n/your-locale-code -hg clone https://hg.mozilla.org/gaia-l10n/zh-TW/ B2G/gaia/locales/zh-TW</pre> - </li> - <li>Agora execute o seguinte comando: - <pre class="brush: json">LOCALE_BASEDIR=locales/ LOCALES_FILE=locales/languages_mine.json make</pre> - </li> -</ol> -<p>Arquivos locais devem ser listados no arquivo <code>languages_mine.json</code>, que adotará uma estrutura como essa:</p> -<pre class="brush: json">{ - "en-US" : "English (US)", - "fr" : "Français (fr)" -}</pre> -<p>Nesse arquivo você deve ter uma lista de strings prontas para você traduzir! Por favor observe que se você estiver iniciando uma nova localização do Firefox OS, você não precisa criar um diff já que todas as strings ainda não foram traduzidas</p> -<div class="note"> - <p><strong>Nota</strong>: Verifique <a href="https://gist.github.com/timdream/7716684">esse gist</a> para construir um script automatizado.</p> -</div> -<h2 id="Traduzindo_strings_Gaia">Traduzindo strings Gaia</h2> -<p>O workflow de tradução do Gaia depende fortemente de quais ferramentas você está usando para o trabalho. Essa parte do trabalho é similar à fase de tradução para outros produtos Mozilla. O artigo <a href="https://developer.mozilla.org/pt-BR/docs/Localization_Quick_Start_Guide/Translation_phase" title="https://developer.mozilla.org/en-US/docs/Localization_Quick_Start_Guide/Translation_phase">Guia rápido de localização - fase de tradução</a> contém uma lista de todas as ferramentas usadas para traduzir strings nos produtos Mozilla com tutoriais de como utilizá-las para o trabalho de tradução. Essa página será útil para você caso você faça parte de uma equipe tentando decidir qual ferramenta utilizar para traduzir as strings Gaia ou se você estiver procurando um tutorial para sua equipe utilizar.</p> -<h2 id="Teste_l10n_para_Firefox_OS">Teste l10n para Firefox OS</h2> -<p>Existem dois métodos principais para executar testes l10n no Firefox OS: compilações para desktop ou para dispositivos móveis. Atualmente o método desktop é o mais utilizado para teste l10n.</p> -<h3 id="Teste_Desktop_l10n">Teste Desktop l10n</h3> -<ol> - <li>Baixe e instale o último boot2gecko nightly desktop em <a href="http://ftp.mozilla.org/pub/mozilla.org/b2g/nightly/latest-mozilla-b2g18/" title="http://ftp.mozilla.org/pub/mozilla.org/b2g/nightly/latest-mozilla-b2g18/"><code>http://ftp.mozilla.org/pub/mozilla.org/b2g/nightly/latest-mozilla-b2g18/</code></a>e baixe o pacote correspondente ao seu sistema operacional. Procure por pacotes que contém a palavra<em> localizer</em>. Isso indica que a compilação tem os locais listados em <a href="https://github.com/mozilla-b2g/gaia/blob/master/locales/languages_all.json" title="https://github.com/mozilla-b2g/gaia/blob/master/locales/languages_all.json"><code>languages-all.json</code></a> habilitados.</li> - <li>Clone a última versão do Gaia navegando no diretório em seu desktop onde você gostaria de baixar e execute esse comando: <code>git clone git://github.com/mozilla-b2g/gaia.git</code></li> - <li>Se sua equipe está localizando o Firefox OS pela primeira vez, você precisa habilitar seu local. Se não, pegue uma bebida enquanto os outros habilitam o local para você. - <ol> - <li>Na linha de comando, navegue dentro do seu clone do Gaia e execute esse comando para clonar seu repo local: <code>hg clone ssh://hg.mozilla.org/gaia-l10n/your-locale-code</code></li> - <li>Abra o arquivo <code>languages.json</code> no diretório <code>shared/resources</code> no repositório Gaia que você acabou de clonar.</li> - <li>Inclua a informação do seu local seguindo esse formato: "en-US" : "English (US)", e salve o arquivo.</li> - <li>Finalmente, execute o comando <code>make multilocale. </code>Isso habilita seu local no desktop.</li> - </ol> - </li> - <li>Crie seu perfil Gaia executando o comando: <code>DEBUG=1 make -C gaia profile</code></li> - <li>Finalmente, você pode executar o Firefox OS com seu perfil local e começar os testes. Faça isso com o comando: <code>b2g/b2g -profile gaia/profile</code>. Se você estiver usando OSX, execute esse comando: <code>/Applications/B2G.app/Contents/MacOS/b2g -profile gaia/profile</code></li> - <li>Para atualizar sua compilação desktop, simplesmente navege no seu repo Gaia clonado e execute o comando: <code>git pull</code></li> -</ol> -<h3 id="Teste_no_l10n_mobile">Teste no l10n mobile</h3> -<p> - <i> - Essa seção crescerá assim que mais dispositivos que suportam o Firefox OS fiquem disponíveis aos localizadores.</i> -</p> -<h3 id="O_que_verificar_quando_testar_l10n">O que verificar quando testar l10n</h3> -<p>Testes de localização para um sistema operacional móvel possui algumas similaridades com testes para aplicações desktop. A seguir um guia do que deve ser verificado quando for fazer os testes:</p> -<ol> - <li>Verifique se suas traduções cabem dentro dos elementos de texto da interface do usuário.</li> - <li>Verifique se o tom, estilo e terminologia é consistente em todo o produto.</li> - <li>Procure por termos não traduzidos na inteface. Esses podem ser termos embutidos no código no Gaia ou pode ter sido causado por erros de identificação dos elementos.</li> - <li>Certifique-se de que os formatos de data e hora estão de acordo com os padrões regionais.</li> -</ol> -<h2 id="Encontrando_bugs_específicos_de_localização">Encontrando bugs específicos de localização</h2> -<p>Aqui alguns links para o bugzilla para mostrar alguns exemplos de bugs encontrados durante a utilização dos telefones. Isso lhe dá uma ideia de onde verificar bugs bem como um exemplo de como preencher esses tipos de bugs.</p> -<ul> - <li><a class="moz-txt-link-freetext" href="http://bit.ly/100bcsC">http://bit.ly/100bcsC</a> - Uma lista geral de bugs l10n B2G</li> - <li><a class="moz-txt-link-freetext" href="https://bugzilla.mozilla.org/show_bug.cgi?id=846060">https://bugzilla.mozilla.org/show_bug.cgi?id=846060</a></li> - <li><a class="moz-txt-link-freetext" href="https://bugzilla.mozilla.org/show_bug.cgi?id=852739">https://bugzilla.mozilla.org/show_bug.cgi?id=852739</a></li> -</ul> -<p>Regras gerais para registrar um bug relacionado à Localização:</p> -<ul> - <li>Se um bug é específico de um idioma, registre-o como Mozilla Localization (abaixo de outros produtos) e inclua o localizador na cópia (cc). Não se esqueça de sinalizar seu bug adequadamente.</li> - <li>Se não for específico de um idioma, registre-o sob o produto FirefoxOS, e inclua o localizador em cópia (cc). Não se esqueça de sinalizar seu bug adequadamente.</li> - <li>Se você está em dúvida, registre-o sob o produto FirefoxOS, e inclua o localizador em cópia (cc). Não se esqueça de sinalizar seu bug adequadamente.</li> -</ul> -<p>Para aqueles que usarem <a href="http://moztrap.mozilla.org/" title="http://moztrap.mozilla.org/">Moztrap</a>, procure casos de teste existentes nas tags FirefoxOS localization e veja se você pode usá-los. Isso também é uma boa forma de testar as localizações do Firefox OS.</p> -<h2 id="E_agora">E agora?</h2> -<p>Você está pronto para iniciar a localização! Abra sua ferramenta favorita l10n e mãos a obra! Como sempre, se você tiver dúvidas que não foram cobertas nesse documento, por favor envie-a para <a href="http://www.mozilla.org/about/forums/#dev-l10n" title="http://mailto:_dev-l10n@lists.mozilla.org">mozilla.dev.l10n newsgroup</a>.</p> diff --git a/files/pt-br/archive/b2g_os/developing_firefox_os/personalizando_teclado_aplicativos_firefoxos/index.html b/files/pt-br/archive/b2g_os/developing_firefox_os/personalizando_teclado_aplicativos_firefoxos/index.html deleted file mode 100644 index 248199b27f..0000000000 --- a/files/pt-br/archive/b2g_os/developing_firefox_os/personalizando_teclado_aplicativos_firefoxos/index.html +++ /dev/null @@ -1,129 +0,0 @@ ---- -title: Personalizando o teclado nos aplicativos Firefox OS -slug: >- - Archive/B2G_OS/Developing_Firefox_OS/Personalizando_teclado_aplicativos_FirefoxOS -tags: - - Firefox OS - - Gaia - - Guía - - keyboard -translation_of: Archive/B2G_OS/Developing_Gaia/Customizing_the_keyboard ---- -<div class="summary"> - <p>Esse documento explica como incluir o layout de um teclado personalizado contendo sua própria linguagem/script no Firefox 1.2 e superiores.</p> -</div> -<h2 id="Status_do_aplicativo_Teclado_interno_do_Gaia_e_arquitetura_do_sistema">Status do aplicativo Teclado interno do Gaia e arquitetura do sistema</h2> -<p>As duas principais funcionalidades do teclado foram implementadas no Firefox OS em outubro de 2013.</p> -<ul> - <li>Uma opção de compilação para ativar/desativar dicionários no teclado/corretor ortográfico no aplicativo de teclado padrão (veja {{Bug("884752")}}).</li> - <li>Um recurso no nível do sistema operacional que possibilita aos usuários instalar teclado de terceiros adquiridos no Firefox Marketplace. Disponível a partir do Firefox OS 2.0. Veja {{Bug("816869")}} e {{Bug("964670")}} para detalhes.</li> -</ul> -<p>Para incluir um novo layout de teclado no seu celular, você pode colocar arquivo de layout customizado no Gaia e fazer o aplicativo do teclado usando as configurações ou desenvolvendo seu próprio aplicativo de teclado e instalando no seu dispositivo. Vamos dar uma olhada de como fazer cada um destes. </p> -<h2 id="Como_criar_o_aplicativo_de_teclado">Como criar o aplicativo de teclado</h2> -<p>Você pode usar o aplicativo de teclado que vem no Gaia como um modelo, ou fazer um fork do seu repositório. As ideias básicas são:</p> -<ul> - <li>No arquivo de manifesto, declare seu aplicativo como <code>input</code> na propriedade <code>role.</code></li> - <li>Certifique-se que você tem a permissão de <code>input</code> especificada.</li> -</ul> -<p>Depois disso, você pode instalar seu teclado, e ele será mostrado na metade inferior da tela toda vez que o usuário focar em um campo de entrada de dados. O problema do espaço que surge disto pode ser resolvido da seguinte forma:</p> -<ul> - <li>Usando o velho e clássico <code>window.resizeTo</code> para atualizar a área que o seu aplicativo deve ocupar.</li> - <li>Usando a nova API <code>navigator.mozInputMethod</code> para transformar o conteúdo da entrada; veja na Mozilla Wiki a <a href="https://wiki.mozilla.org/WebAPI/KeboardIME">página da API KeyboardIME</a> para detalhes. Muitos destes métodos retornam os mesmos caracteres, mas geram diferentes eventos (<a href="https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent">KeyboardEvent</a>, <a href="https://developer.mozilla.org/en-US/docs/Web/API/CompositionEvent">CompositionEvent</a>, etc), então verifique se você está <a href="https://wiki.mozilla.org/WebAPI/KeboardIME#Use_cases_for_each_of_the_methods">utilizando o método certo para o seu caso</a>.</li> -</ul> -<div class="note"> - <p><strong>Nota: </strong>O demo do <a href="https://github.com/mozilla-b2g/gaia/tree/master/dev_apps/test-keyboard-app">LOL Keyboard</a> deve te ajudar a entender melhor como os aplicativos de teclado são construídos, e servir como template para seus próprios aplicativos.</p> -</div> -<p>Talvez você ache em <a href="https://github.com/mozilla-b2g/gaia/tree/master/dev_apps/test-keyboard-app">LOL Keyboard</a> um exemplo mais fácil de compreender.</p> -<h2 id="Como_criaradicionar_um_layout_no_aplicativo_de_teclado_do_Gaia">Como criar/adicionar um layout no aplicativo de teclado do Gaia</h2> -<ol> - <li>Veja <a href="https://github.com/mozilla-b2g/gaia/blob/master/apps/keyboard/CONFIGURE">os detalhes de configuração do teclado</a> para maiores informações. Dependendo do idioma em que você quer incluir um dicionário, ou incluir um IME interativo (para idiomas asiáticos).</li> - <li>Se você adicionar layouts para um novo idioma suportado, você pode querer adicioná-los como layouts padrões do idioma em <a href="https://github.com/mozilla-b2g/gaia/blob/master/build/config/keyboard-layouts.json">build/config/keyboard-layouts.json</a>.</li> -</ol> -<h3 id="Asian_IME">Asian IME</h3> -<p>Idiomas orientais (<a href="http://pt.wikipedia.org/wiki/Caracteres_CJK">Chinês, Japonês, e Coreano</a>) usam um script bastante complexo que envolve milhares de caracteres. Como não há como colocar milhares de teclas em um teclado, os usuários contam com um programa de indexação chamado editor de <a href="http://pt.wikipedia.org/wiki/Input_Method_Editor">método de entrada</a>, ou IME (sigla em inglês para Input Method Editor) para facilitar, que converte uma série de símbolos em uma seleção de caracteres.<br> - <br> - Como os símbolos devem ser convertidos a o quão "esperto" o IME deve ser depende do método escolhido, da própria implementação e muitas vezes da <a href="http://pt.wikipedia.org/wiki/Processamento_de_linguagem_natural">ciência do PLN</a> (que está fora do escopo desse documento). A fim de economizar memória, é recomendável que os dados sejam compilados em um blob binário e consultados em um array buffer; estruturas JSON complexas não funcionarão nos dispositivos atuais.</p> -<h4 id="Interface_com_IM_Engine_no_aplicativo_de_teclado_do_Gaia">Interface com IM Engine no aplicativo de teclado do Gaia</h4> -<p>Assumindo que você tem uma biblioteca IME disponível para converter símbolos em caracteres (''IM Engine'' na nossa terminologia), você necessitará de uma interface definida com o aplicativo de teclado para receber os símbolos do layout e gerar os caracteres. <a href="https://github.com/mozilla-b2g/gaia/blob/master/apps/keyboard/js/keyboard/input_method_manager.js">A API atual está documentada no Github</a>.</p> -<p>Nós convidamos aos implementadores a realizar alguns refinamentos nessa API.</p> -<h4 id="Faça_sua_IM_engine_funcionar_com_o_seu_layout">Faça sua "IM engine" funcionar com o seu layout</h4> -<p>Para fazer sua IM engine funcionar com o seu layout de teclado:</p> -<ol> - <li>Coloque o novo layout em layout.js como descrito na seção anterior.</li> - <li>Referencie o IM engine com a propriedade <code>imEngine</code>. Quando o seu layout for habilitado, o aplicativo de teclado carregará o script localizado em <code>keyboard/js/imes/<imEngine>/<imEngine>.js</code>.</li> - <li>Configure as APIs para receber e enviar teclas/caracteres quando o script for carregado e inicializado <code>(init)</code>.</li> - <li>Faça o que quiser em resposta à entrada do usuário. Quando o usuário tocar qualquer tecla, deve tipicamente enviar o comando para o IM engine.</li> -</ol> -<h4 id="Implementações_conhecidas">Implementações conhecidas</h4> -<ul> - <li><a href="https://github.com/timdream/jszhuyin">JSZhuyin</a> é a primeira implementação do teclado Gaia com Asian IM engine, para chinês tradicional, incorporando Zhuyin IME.</li> - <li><a href="https://github.com/mozilla-b2g/gaia/tree/master/apps/keyboard/js/imes/jskanji">JSKanji</a> é um protótipo de IM engine escrito para japonês.</li> - <li><a href="https://github.com/mozilla-b2g/gaia/tree/master/apps/keyboard/js/imes/jspinyin">JSPinyin</a> escrito para chinês simplificado e funciona com símbolos Pinyin .</li> - <li>Como uma demonstração, <a href="http://chewing.csie.net/">Chewing</a>, um Zhuyin IME em código aberto C/C++ para chinês tradicional, foi <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=845685">cross-compilado com emscripten</a> e conectado ao teclado Gaia.</li> - <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=835261">JSHangul</a> é um prototipo de IM engine para coreano e está atualmente em desenvolvimento.</li> -</ul> -<h3 id="Novas_localizações_sob_a_perspectiva_dos_localizadores">Novas localizações sob a perspectiva dos localizadores</h3> -<div class="note"> - <p><strong>Nota: </strong>Esta seção se aplica principalmenta a scripts alfabéticos, scripts utilisando um abugida (como Amárico) ou um sistema ideográfico (como chinês) são mais complexos.</p> -</div> -<p><span style="line-height: 1.5;">Geralmente duas coisas são necessárias: um </span><strong style="line-height: 1.5;">teclado</strong><span style="line-height: 1.5;"> e um </span><strong style="line-height: 1.5;">dicionário</strong><span style="line-height: 1.5;"> (para a função de texto preditivo).</span></p> -<h4 id="Criando_um_layout">Criando um layout</h4> -<p>O layout do teclado fica em um arquivo JavaScript e define quais teclas estão no teclado e quais letras ou símbolos são resultados das opções disponíveis através do pressionamento longo. O caminho mais fácil é pegar um teclado existente no <a href="https://github.com/mozilla-b2g/gaia/tree/master/apps/keyboard/js/layouts">GitHub</a>, renomeá-lo e então ajustá-lo.</p> -<p>Primeiramente, você precisa alterar o header. Vamos supor que o seu teclado é similar ao en-US e a localização que você deseja é o Escocês Gaélico (gd). Então você altera (usando um editor simples como Notepad++) de:</p> -<pre class="language-html">Keyboards.en = { - label: 'English', - shortLabel: 'En', - imEngine: 'latin', - types: ['text', 'url', 'email', 'number', 'password'], - autoCorrectLanguage: 'en_us', - menuLabel: 'English',</pre> -<p>para:</p> -<pre class="language-html">Keyboards.gd = { - label: 'Scottish Gaelic', - shortLabel: 'gd', - imEngine: 'latin', - types: ['text', 'url', 'email', 'number', 'password'], - autoCorrectLanguage: 'gd_gb', - menuLabel: 'Gàidhlig',</pre> -<p>o campo <span style="font-family: 'Courier New', 'Andale Mono', monospace; line-height: 1.5;">label</span><span style="line-height: 1.5;"> deve conter o nome do seu idioam em inglês, o campo </span><span style="line-height: 1.5; font-family: 'Courier New', 'Andale Mono', monospace;">shortLabel</span><span style="line-height: 1.5;"> deve conter três caracteres no máximo; é uma abreviação que irá aparecer na tela do teclado, para o usuário saber que idioma ele está atualmente usando. Você pode usar a codificação ISO, mas você deve usar outra coisa mais apropriada. O campo </span><span style="font-family: 'Courier New', 'Andale Mono', monospace; line-height: 1.5;">menuLabel</span><span style="line-height: 1.5;"> é o nome do seu idioma escrito no seu idioma: é o que irá aparecer no menu de opções.</span></p> -<p>Agora, a única coisa que provavelmente você vai querer mexer são os caracteres alternativos (aquele que você acessa via a interface do usuário através de um toque longo):</p> -<pre class="language-html">alt: { - a: 'áàâäåãāæ', - c: 'çćč', - e: 'éèêëēę€ɛ', - i: 'ïíìîīį', - o: 'öõóòôōœøɵ', - u: 'üúùûū', - s: 'ßśš$', - S: 'ŚŠ$', - n: 'ñń', - l: 'ł£', - y: 'ÿ¥', - z: 'žźż', - '.': ',?!;:' -},</pre> -<p>Você pode alterar tanto a ordem como a quantidade dos caracteres alternantivos. No nosso caso, devido ao fato do Gaélico utilizar o acento grave mais vezes que o agudo, nós trocamos a ordem para:</p> -<pre class="language-html">a: 'àáâäåãāæ',</pre> -<p>Nós também podemos querer dar a opção de consoantes com trema, então podemos adicionar novas linhas como:</p> -<pre class="language-html"><span class="nx">b</span><span class="o">:</span> <span class="s1">'ḃ'</span><span class="p">,</span></pre> -<p>Você provavelmente também vai querer verificar o layout alternativo (o que fornece números, pontuação, etc) e se o símbolo da moeda aparece corretamente.</p> -<h4 id="Criando_um_dicionário">Criando um dicionário</h4> -<p>É bom ter um dicionário também para não seja necessário que o usuário insira todas as palavras, e que ele ainda tenha alguma precisão sobre elas. Para isso você precisa (idealmente) classificar as palavras de acordo com a frequência. Por exemplo, é mais provável que o usuário queira digitar <em>quando</em> ao digitar <em>qua</em> que <em>quasar</em>, então a palavar <em>quando</em> será sugerida antes de <em>quasar</em>.</p> -<p>Isso é feito atribuindo números de 1 (menos frequente) até 255 (mais frequente) para cada palavra (ou linha) no dicionário (um arquivo xml; você pode verificar um já existente <a href="https://github.com/mozilla-b2g/gaia/tree/master/apps/keyboard/js/imes/latin/dictionaries">aqui</a>). Isso é o que você precisa criar:</p> -<pre class="language-html"><wordlist locale="gd" description="Gàidhlig" date="1401554807" version="1"> - <w f="255" flags="">a</w> - <w f="254" flags="">an</w> - <w f="247" flags="">agus</w></pre> -<p>Mesmo um conjunto pequeno (por exemplo, utilizar um texto grante e verificar a frequencia de cada palavra) pode ajudar. Caso seja difícil encontrar textos digitais no seu idioma, use seu conhecimento e classifique as palavras manualmente.</p> -<h4 id="Compilando_os_arquivos">Compilando os arquivos</h4> -<p>Uma vez que você tenha o js e o arquivo do dicionário, vá para <a href="https://github.com/mozilla-b2g/gaia/tree/master/apps/keyboard/js/imes/latin/dictionaries">esse diretório Gaia</a> e abra o <em>Makefile</em>. Inclua o nome do seu dicionário à lista (por exemplo, se o nome do arquivo for <em>gd_wordlist.xml</em>), coloque:</p> -<pre class="language-html">ga.dict \ -gd.dict \</pre> -<p>Certifique-se que o arquivo <code>gd_worldlist.xml</code> esteja no diretório e execute <code>$ make gd.dict</code></p> -<p>Se você chegou até aqui mas não conseguiu criar o arquivo <em>.dict</em>, <a href="https://bugzilla.mozilla.org/enter_bug.cgi?product=Firefox%20OS">registre um bug</a> (<strong>Component: Gaia Keyboard</strong>) e anexe seu arquivo explicando qual o problema encontrado. Alguém o ajudará. <strong>Certifique-se de enviar a correção como um pull request, e marcar para a revisão de alguém, de outra forma, provavelmente o bug não irá ser verificado.</strong></p> -<h4 id="Testando_sua_nova_localização">Testando sua nova localização</h4> -<p>Uma vez que você (ou alguém) compilou os arquivos para a nova localização, a forma mais rápida de testar o novo teclado e dicionário é em uma página demo on-line e web-based que executa o aplicativo app, que pode ser acessada <a href="https://github.com/timdream/gaia-keyboard-demo">aqui</a>. Clique em En para navegar pelos idiomas. Se você não encontrar o seu, clique no ícone da chave (canto superior direito) e selecione quais teclados você deseja testar.</p> -<h2 id="Discussões_Perguntas_e_Respostas">Discussões, Perguntas e Respostas</h2> -<p>Por favor visite a lista de emails <a href="https://lists.mozilla.org/listinfo/dev-gaia">dev-gaia</a> ou o canal #gaia no irc.mozilla.org (veja <a href="https://wiki.mozilla.org/IRC">Mozilla IRC</a>). #mozilla-taiwan é o canal "de-facto" em chinês para esse tópico.<br> - <br> - </p> diff --git a/files/pt-br/archive/b2g_os/developing_firefox_os/quickstart_guide_to_b2g_development/index.html b/files/pt-br/archive/b2g_os/developing_firefox_os/quickstart_guide_to_b2g_development/index.html deleted file mode 100644 index 6de4fc5f2f..0000000000 --- a/files/pt-br/archive/b2g_os/developing_firefox_os/quickstart_guide_to_b2g_development/index.html +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: Guia de início rápido para desenvolvimento do B2G -slug: Archive/B2G_OS/Developing_Firefox_OS/Quickstart_guide_to_B2G_development -translation_of: Archive/B2G_OS/Developing_Firefox_OS ---- -<p>{{ draft() }}</p> -<p>Para fazer:</p> -<p>Provavelmente você queira:</p> -<div id="magicdomid190"> - <span class="author-g-frc9o9ihh5c9qyd0"> * Trabalhar em um ambiente de trabalho;</span></div> -<div id="magicdomid192"> - <span class="author-g-frc9o9ihh5c9qyd0"> * repo no ambiente;</span></div> -<div> - <span class="author-g-frc9o9ihh5c9qyd0"> * git nos diretórios de trabalho;</span></div> -<div id="magicdomid193"> - <span class="author-g-frc9o9ihh5c9qyd0"> * Referenciar os diretórios de trabalho;</span></div> -<div id="magicdomid197"> - <span class="author-g-frc9o9ihh5c9qyd0"> * Como contribuir: Gaia, Gecko/Gonk, Gonk, Docs, link para os bugs para trabalhar;</span></div> -<div> - </div> -<div> - Também vai querer conectar em</div> -<div> - </div> -<div> - Trabalho em bug (como times diferentes comprometem-se a trabalhar juntos no Bugzilla )</div> -<div> - <a href="/en-US/Firefox_OS/Quickstart_guide_to_B2G_development/Bug_Work_to_Firefox_OS">Trabalho nos bugs do Firefox OS [en-US]</a></div> -<div> - </div> -<p> </p> diff --git a/files/pt-br/archive/b2g_os/dual_boot_b2g_android_sgs2/index.html b/files/pt-br/archive/b2g_os/dual_boot_b2g_android_sgs2/index.html deleted file mode 100644 index a07090f37d..0000000000 --- a/files/pt-br/archive/b2g_os/dual_boot_b2g_android_sgs2/index.html +++ /dev/null @@ -1,73 +0,0 @@ ---- -title: Dual Boot do B2G e Android no SGS2 -slug: Archive/B2G_OS/Dual_Boot_B2G_Android_SGS2 -translation_of: Archive/B2G_OS/Building ---- -<div class="blockIndicator warning"> - <p><strong>Warning:</strong> Esse procedimento não funciona mais. Ele somente funciona com Android 4 (Ice Cream Sandwich) e Siyah Kernel v 5.0.1. Em versões posteriores não funcionará. Considere esse guia arquivado, e use-o sob seu próprio risco.</p> -</div> -<p>If you want to test B2G from time to time but continue using Android as your main OS and you have a Samsung Galaxy S2, you can choose to install B2G in a separate partition (which is already present on the phone) and choose where to boot into when your device starts.</p> -<h2 id="Prerequisites">Prerequisites</h2> -<p>In order to dual boot Android and B2G, you have to meet these prerequisites:</p> -<ul> - <li>You have to have built B2G for the Galaxy S2</li> - <li>You have to download the <a href="http://d-h.st/AEZ" title="http://d-h.st/users/siyah/s2">Siyah kernel</a> v. 5.0.1 for the Galaxy S2</li> - <li>You need the tool simg2img, that you get automatically if you build B2G following the guide on MDN</li> - <li>You need the heimdall tool, best if version 1.3.1 as you may encounter problems with version 1.3.2</li> -</ul> -<h2 id="One-time_operations">One-time operations</h2> -<p>There are several operations to do in order to get a working dual boot. The following ones need to be done the first time only.</p> -<p>In order to use heimdall without requiring root access, you should create a file called android.rules (the portion of the name before the .rules extension is arbitrary) and place it in /etc/udev/rules.d. The file should contain a line line the following:</p> -<pre>SUBSYSTEM=="usb", ATTRS{idVendor}=="04e8", MODE="0666"</pre> -<p>In order to activate this rule, you should restart udev:</p> -<pre>sudo service udev restart</pre> -<p>and then unplug and replug in the phone. The above rule will also allow adb to access the SGS2 without requiring root privlidges.</p> -<h3 id="Flashing_the_Siyah_kernel">Flashing the Siyah kernel</h3> -<p>The Siyah kernel is mandatory for the dual boot, because it is this kernel that manages it. Once you have downloaded and decompressed the tar file, you'll be left with a file named zImage. In order to flash it on your phone you have to follow these steps:</p> -<ol> - <li>Switch off your phone</li> - <li>Reboot in download mode (press together volume down + home + power buttons and then, when asked, volume up button)</li> - <li>Use heimdall to flash the kernel with the following command (your phone needs to be connected to your PC): - <pre>heimdall flash --kernel /path/to/zImage</pre> - </li> -</ol> -<p>Once the kernel is flashed the phone will reboot.</p> -<h3 id="Preparing_the_B2G_rom_environment">Preparing the B2G rom environment</h3> -<p>Once you've installed the Siyah kernel, it's time to use its functions to prepare the environment to install your B2G image in the secondary partition. Follow these steps:</p> -<ol> - <li>Switch off your phone</li> - <li>Reboot in recovery mode (press together volume up + home + power buttons)</li> - <li>In the CWMR Touch interface, go to dual-boot options -> Wipe 2ndROM data/cache -> Yes - Wipe. This operation will take some time</li> -</ol> -<p>Once the operation is finished, select Go Back and then reboot system now to reboot your phone. If you check, inside the internal SD card of your phone you'll now have a .secondrom directory with inside two files named cache.img and data.img.</p> -<h2 id="B2G_update_operations">B2G update operations</h2> -<p>The following operations need to be done every time you build a new version of B2G.</p> -<p>In order to simplify command line instructions, it's advised to copy all needed files in a same folder of your choice. These are the files that need to be copied inside the folder:</p> -<ul> - <li>simg2img, found in B2G/out/target/product/galaxys2/system/bin/</li> - <li>system.img, found in B2G/out/target/product/galaxys2/</li> - <li>userdata.img, found in B2G/out/target/product/galaxys2/</li> -</ul> -<p>Once you have all the files in one place, do the following:</p> -<ol> - <li>Create a data.img file out of the sparse file userdata.img. You can do it with the following command: - <pre>simg2img userdata.img data.img</pre> - </li> - <li>Put the data.img file on your phone's .secondrom folder. You can do this either by enabling file storage mode on your phone and connecting it to your PC or, if you have USB Debug active, you can use adb: - <pre>adb push /path/to/data.img /sdcard/.secondrom/data.img</pre> - </li> - <li>Switch off your phone</li> - <li>Reboot in download mode (press together volume down + home + power buttons and then, when asked, volume up button)</li> - <li>Use heimdall to flash B2G firmware inside the second partition: - <pre>heimdall flash --hidden system.img</pre> - </li> -</ol> -<p>Once the flash is finished, your phone will reboot and at boot time you can boot into your second rom (the B2G one) by pressing the home button during the bootloader countdown. If everything has gone right, once you've finished booting B2G you'll have a black screen on your phone. You now have to install Gaia.</p> -<div class="note"> - <strong>Note:</strong> Depending on how you want to test B2G, you may not want to put a new data.img file on the phone every time you update B2G, as it will wipe all of your preferences, installed applications and in general pretty much everything you've done while using B2G.</div> -<h2 id="Boot_operations">Boot operations</h2> -<p>The following operations need to be done every time you boot inside B2G.</p> -<p>Unfortunately, there's no simple way to put Gaia inside the system.img B2G image, and it get lost when you switch off your phone, so you'll need to install Gaia again every time you boot inside B2G. To install Gaia, type the following on a console after you've booted your phone inside B2G (so you have a black screen) and have connected your phone to your PC:</p> -<pre>cd B2G/gaia -GAIA_DOMAIN=foo.org make install-gaia</pre> -<p>After the upload of Gaia is completed, on your phone's screen the B2G interface will appear.</p> diff --git a/files/pt-br/archive/b2g_os/escolhendo_como_executar_gaia_ou_b2g/index.html b/files/pt-br/archive/b2g_os/escolhendo_como_executar_gaia_ou_b2g/index.html deleted file mode 100644 index bd8d0c8bf5..0000000000 --- a/files/pt-br/archive/b2g_os/escolhendo_como_executar_gaia_ou_b2g/index.html +++ /dev/null @@ -1,72 +0,0 @@ ---- -title: Escolhendo como executar o Gaia ou B2G -slug: Archive/B2G_OS/Escolhendo_como_executar_Gaia_ou_B2G -translation_of: Archive/B2G_OS/Choosing_how_to_run_Gaia_or_B2G ---- -<p>Dependendo das suas necessidades específicas, você tem uma variedade de opções a considerar quando experimentar Firefox OS ou a interface do usuário Gaia. Você pode escolher entre as seguintes opções, cada um tem suas vantagens e desvantagens a considerar, e algumas são mais flexíveis do que as outras.</p> - -<h2 id="Executando_o_B2G_em_um_desktop">Executando o B2G em um desktop</h2> - -<p>É possível compilar um simulador Firefox OS e executar o Gaia nele. Esse software é baseado no Firefox mas o seu comportamenteo é muito simlar à experiência que o usuário tem em um dispositivo físico com o Firefox OS. A Mozilla fornece uma <a href="/pt-BR/docs/Mozilla/Firefox_OS/Platform/Gaia/Hacking">compilação na versão nightly (Versão de desenvolvimento mais recente) dessa aplicação</a> para desenvolvedores. Se você está acostumado com processo de compilação do Firefox ou projetos em C++, você conseguirá compilar essa apliacação.</p> - -<h3 id="Vantagens">Vantagens</h3> - -<ul> - <li>O simulador fornece uma janela com o tamanho do celular</li> - <li>A experiência é similar a um aparelho móvel em muitos aspectos</li> - <li>Muitos (mas não todas) APIs de dispositivos estão disponíveis</li> -</ul> - -<h3 id="Desvantagens">Desvantagens</h3> - -<ul> - <li>Você precisa ter um sistema de compilação C/C++ instalado</li> - <li>Você próprio precisa compilar o Gecko e o simulador</li> - <li>As ferramentas de desenvolvimento Firefox não estão disponíveis</li> -</ul> - -<h3 id="Por_que_executar_o_simulador_B2G">Por que executar o simulador B2G</h3> - -<p>É uma boa solução de meio-termo de teste e desenvolvimento. É uma boa forma de se ter uma ideia de como sua aplicação ou outro código funcionará num dispositivo real sem realmente ter que copiar para um telefone toda as vezes que você precisar testar algo.</p> - -<div class="note"><strong>Nota:</strong> Antes de lançar um aplicativo certamente você vai querer testar em um hardware real!</div> - -<h3 class="note" id="Os_diversos_simuladores">Os diversos simuladores</h3> - -<p>Existe uma variedade de simuladores de Firefox OS disponíveis:</p> - -<dl> - <dt><a href="/pt-BR/docs/Tools/Simulador_Firefox_OS" title="/en-US/docs/Mozilla/Boot_to_Gecko/Using_Firefox_OS_Simulator">Extensão do navegador Firefox: Simulador Firefox</a></dt> - <dd>Essa extensão é a principal ferramenta para testar aplicativos a serem executados no Firefox OS, e é a solução recomendada para a maioria dos usuários. Inclui suporte de ferramentas de desenvolvimento, adicionando aplicativos para o ambiente de teste, e assim por diante.</dd> - <dt><em>Developer desktop builds</em></dt> - <dd>Estas versões do simulador são aplicações stand-alone que são destinados principalmente para ajudar os desenvolvedores do núcleo Firefox OS para verificar características técnicas.</dd> - <dt><em>Localizer desktop builds</em></dt> - <dd>Muito úteis principalmente para as equipes responsáveis pela localização do Firefox OS e seus aplicativos.</dd> -</dl> - -<h2 id="Executando_o_B2G_em_um_dispositivo_móvel">Executando o B2G em um dispositivo móvel</h2> - -<p>A maneira mais completa para testar o seu trabalho de desenvolvimento B2G ou Gaia, ou o seu aplicativo web, é compilar e instalar o Firefox OS em um dispositivo móvel real. Este é também o processo mais complicado.</p> - -<h3 id="Vantagens_2">Vantagens</h3> - -<ul> - <li>Você consegue uma experiência completa de mobilidade.</li> - <li>Todas as APIs do dispositivo estão disponíveis.</li> - <li>Você pode testar a performance de suas aplicações em um dispositivo real.</li> -</ul> - -<h3 id="Desvantagens_2">Desvantagens</h3> - -<ul> - <li>Você precisa de um sistema completo de compilacão C/C++.</li> - <li>Você próprio precisa compilar o Gecko e o Gaia.</li> - <li>Você precisa de um dispositivo móvel para instalar o B2G.</li> - <li>Você precisa copiar o B2G em seu dispositivo, removendo qualquer outro sistema operacional que esteja instalado.</li> -</ul> - -<h3 id="Por_que_rodar_o_B2G_em_um_dispositivo_móvel">Por que rodar o B2G em um dispositivo móvel</h3> - -<p>Esta é, obviamente, a maneira mais precisa para testar qualquer código ou projeto web no B2G ou Gaia.</p> - -<p>Ao executar em um dispositivo móvel real, você pode garantir que seu projeto funciona bem e parece ser bom, usando todas as APIs do dispositivo corretamente. Além disso, você deve sempre testar em hardware real antes de enviar qualquer código. Ao não fazê-lo pode ter efeitos que podem ser difíceis de prever.</p> diff --git a/files/pt-br/archive/b2g_os/faq_firefox_os/index.html b/files/pt-br/archive/b2g_os/faq_firefox_os/index.html deleted file mode 100644 index fac4d58a7a..0000000000 --- a/files/pt-br/archive/b2g_os/faq_firefox_os/index.html +++ /dev/null @@ -1,22 +0,0 @@ ---- -title: Firefox OS - Perguntas Frequentes -slug: Archive/B2G_OS/FAQ_Firefox_OS -translation_of: Archive/B2G_OS/Introduction ---- -<dl> - <dt> </dt> - <dt>O que é o Firefox OS?</dt> - <dd>É um novo sistema operacional móvel construído inteiramente utilizando os padrões da web aberta. Ele permite que todas as funções do dispositivo (chamadas, mensagens, navegação etc.) sejam desenvolvidas como uma aplicação HTML 5 que pode acessar os recursos subjacentes de um telefone (disponível somente para aplicações nativas em outros ecossistemas).</dd> - <dt>Como faço para obter um telefone para desenvolvedores?</dt> - <dd>Você pode comprar o telefone de referência para desenvolvedor <a href="https://developer.mozilla.org/Firefox_OS/Developer_phone_guide/Flame">Flame</a> no site <a href="http://www.everbuying.com/product549652.html">everbuying</a>.</dd> - <dt>Se eu não quiser comprar um telefone, eu ainda posso desenvolver um app para Firefox OS?</dt> - <dd>Claro! Você pode testar seu app no Android (usando <a href="https://hacks.mozilla.org/2012/10/firefox-marketplace-aurora/">Marketplace para Firefox</a>) ou em seu desktop usando o <a href="/en-US/docs/Tools/Firefox_OS_Simulator">Firefox OS simulator</a>.</dd> - <dt>Onde posso baixar o Firefox OS para testar em meu próprio telefone?</dt> - <dd>Veja <a href="https://developer.mozilla.org/pt-BR/Firefox_OS/Construindo_e_instalando_o_Firefox_OS">Compilando e Instalando o Firefox OS.</a></dd> - <dt>Como posso testar meu aplicativo no Firefox OS?</dt> - <dd>No Android ou usando o Firefox OS simulator.</dd> - <dt>Qual é a lista completa de APIs do dispositivo? Você planejam padronizá-las?</dt> - <dd>Uma lista completa pode ser encontrada em<a href="https://wiki.mozilla.org/WebAPI#APIs"> https://wiki.mozilla.org/WebAPI#APIs</a>. <a href="https://hacks.mozilla.org/2012/01/mozilla-joins-the-w3c-dap-webapi-progress/">Padronização está em andamento</a>.</dd> - <dt>Suas APIs do dispositivo estão sendo padronizadas para uso multiplataforma?</dt> - <dd>Sim, as APIs são o resultado de trabalho com diversos parceiros e vendedores e alguns deles já acabaram em outras plataformas. Quase toda compania de tecnologia tem o problema ao ativar o acesso ao hardware por Web Apps que o usuário final tem e as nossas implementações são um bom ponto de partida para fazer isso acontecer para outras plataformas.</dd> -</dl> diff --git a/files/pt-br/archive/b2g_os/firefox_os_build_prerequisites/index.html b/files/pt-br/archive/b2g_os/firefox_os_build_prerequisites/index.html deleted file mode 100644 index 2832238b34..0000000000 --- a/files/pt-br/archive/b2g_os/firefox_os_build_prerequisites/index.html +++ /dev/null @@ -1,657 +0,0 @@ ---- -title: Pré-requisitos para compilar o Firefox OS -slug: Archive/B2G_OS/Firefox_OS_build_prerequisites -translation_of: Archive/B2G_OS/B2G_OS_build_prerequisites ---- -<p>Antes de adquirir o código para compilar o Firefox OS, você precisa de um <a href="https://developer.mozilla.org/pt-BR/docs/Developer_Guide/Intrucoes_Build" title="https://developer.mozilla.org/en-US/docs/Developer_Guide/Build_Instructions">sistema de desenvolvimento</a> configurado — esse artigo mostra a você como fazer isso. Você pode construí-los em uma distribuição Linux 64-bit e OS X.</p> - -<div class="note"> -<p><strong>Nota</strong>: Para compilar o Firefox OS para um telefone, comece com seu telefone SEM CONECTÁ-LO ao seu computador. Nós o avisaremos quando tiver que plugá-lo.</p> -</div> - -<h2 id="Tenha_um_dispositivoemulador_compatível">Tenha um dispositivo/emulador compatível</h2> - -<p>Você precisa ter um dispositivo compatível ou usar um emulador. Embora muitos telefones são suportados, existem variações. Atualmante nós suportamos variações específicas e alguns aparelhos tem um suporte melhor que outros.</p> - -<div class="note"> -<p><strong>Nota</strong>: <a href="https://github.com/mozilla-b2g/B2G">O código fonte do B2G</a> efetivamente é a referência na implementacão do B2G, mas fabricantes estão livres para adicionar patches ou fazer alterações. Quando você compra um Alcatel One Touch, por exemplo, ele contém a versão do fabricante. Isso não faz diferença para os aplicativos instalados, mas pode fazer a diferença no nível da plataforma. A portabilidade do Nexus 4 é mantida diretamente pela Mozilla, por isso são muito mais propensos a trabalhar com a nossa versão do Gecko do que outros dispositivos no Nível 3.</p> -</div> - -<h3 id="Nível_1">Nível 1</h3> - -<p>Os aparelhos do nível 1 são aqueles que estão sendo ativamente suportados como foco primario para o desenvolvimento. Funcionalidades irão chegar com mais frequência, e problemas serão corrigidos, primeiramente nestes aparelhos.</p> - -<dl> - <dt>Keon</dt> - <dd>Keon é desenvolvido pela <a href="http://www.geeksphone.com/" title="http://www.geeksphone.com/">Geeksphone</a>, que é um dos telefones de desenvolvimento de entrada. Observe que a compilação para esse dispositivo é fornecediro pela Geeksphone.</dd> - <dt>Inari</dt> - <dd>Inari é um outro dispositivo de teste. Use essa configuração para compilar para um dispositivo ZTE Open. <strong>Atenção</strong>: compilações mais recentes do Firefox OS pode apresentar problemas na inicialização na partição de boot padrão do ZTE Open.</dd> - <dt>Flame</dt> - <dd>Flame é o novo padrão da Mozilla de um telefene de referência para Firefox OS, você pode usar a configuração do Flame se você está compilando uma imagem para o ZTE Open C, uma vez que o Flame e o Open C são baseados no Android JellyBean.</dd> - <dt>Unagi</dt> - <dd>Unagi é um telefone sendo utilizando para testes e desenvolvimento da plataforma, como um smartphone de baixo-medio custo. Vários dos desenvolvedores principais do Firefox OS estão trabalhando com um Unagi.</dd> - <dt><a href="/en-US/docs/Mozilla/Boot_to_Gecko/Pandaboard" title="/en-US/docs/Mozilla/Boot_to_Gecko/Pandaboard">Pandaboard</a></dt> - <dd>O Pandaboard é uma placa de desenvolvimento baseada na arquitetura OMAP 4, utilizada para desenvolvimento em plataformas mobile.</dd> - <dt><a href="https://developer.mozilla.org/pt-BR/docs/Mozilla/Boot_to_Gecko/Using_the_B2G_emulators" title="/en-US/docs/Mozilla/Boot_to_Gecko/Using_the_B2G_emulators">Emulador (ARM and x86)</a></dt> - <dd>Existem dois emuladores disponíveis: um emula código ARM e outro executa qualquer coisa em código x86.</dd> - <dt><a href="https://developer.mozilla.org/pt-BR/docs/Mozilla/Boot_to_Gecko/Using_the_B2G_desktop_client" title="/en-US/docs/Mozilla/Boot_to_Gecko/Using_the_B2G_desktop_client">Desktop</a></dt> - <dd>Você também pode compilar uma versão desktop do Firefox OS, ela roda o <a href="https://developer.mozilla.org/pt-BR/docs/Mozilla/Gecko" title="/en-US/docs/Gecko">Gecko</a> em uma aplicação <a href="https://developer.mozilla.org/pt-BR/docs/XULRunner" title="/en-US/docs/XULRunner">XULRunner</a>, e você então usa a experiência do usuário <a href="/pt-BR/docs/Mozilla/Boot_to_Gecko/Introduction_to_Gaia" title="/en-US/docs/Mozilla/Boot_to_Gecko/Introduction_to_Gaia">Gaia</a>.</dd> -</dl> - -<dl> - <dt>Flatfish</dt> - <dd>Flatfish é o primeiro programa de tablet do Firefox OS, embora algumas das funcionalidades de telefonia não funcionem no flatfish. Você vai precisar de algumas <a href="https://github.com/flatfish-fox/flatfish-kernel">configurações extras</a> para compilar o código.</dd> -</dl> - -<p>Você também pode, é claro, compilar no <a href="https://developer.mozilla.org/pt-BR/docs/Mozilla/Boot_to_Gecko/Using_the_B2G_desktop_client" title="en-US/docs/Mozilla/Boot_to_Gecko/Using_the_B2G_desktop_client">cliente desktop</a> ou em algum dos <a href="https://developer.mozilla.org/pt-BR/docs/Mozilla/Boot_to_Gecko/Using_the_B2G_emulators" title="en-US/docs/Mozilla/Boot_to_Gecko/Using_the_B2G_emulators">emuladores</a> sem necessitar de um telefone.</p> - -<h3 id="Nível_2">Nível 2</h3> - -<p>Os aparelhos do Nível 2 são geralmente funcionais e usados por muitos desenvolvedores de aplicativos, porém esses aparelhos recebem as atualizações em um segundo momento.</p> - -<dl> - <dt><a class="link-https" href="https://en.wikipedia.org/wiki/Nexus_S#Variants" title="https://en.wikipedia.org/wiki/Nexus_S#Variants">Samsung Nexus S</a></dt> - <dd>Os números de modelos conhecidos dos telefones Nexus S são GT-I9020A e GT-I9023. Outros códigos podem funcionar.</dd> - <dt>Samsung Nexus S 4G</dt> - <dd>O modelo SPH-D720 é suportado como um telefone nível 2.</dd> -</dl> - -<h3 id="Nível_3">Nível 3</h3> - -<p>Esses dispositivos são aqueles que podem ter o Firefox OS compilado mas não são trabalhados ativamente por uma base de desenvolvedores do núcleo do sistema, por isso sua confiabilidade e conjunto de recursos fica atrás dos telefones nível 1 e até mesmo dos aparelhos do Nível 2.</p> - -<dl> - <dt>Samsung Galaxy S2</dt> - <dd>O único modelo que roda o Firefox OS é o i9100, nenhuma outra variante é oficialmente compatível. (i9100P deve funcionar, uma vez que a única diferença é o acréscimo de um chip NFC - <em>Near Field Communication</em>).</dd> - <dt>Samsung Galaxy Nexus</dt> - <dd>Nós não temos informações de alguma variação que não seja compatível.</dd> - <dt>Nexus 4</dt> - <dd>Alguns usuários no IRC testaram com sucesso. Pode ou não fazer o flash para o Android 4.3 primeiro se estiver rodando o 4.4 (<a href="https://developers.google.com/android/nexus/images#occamjwr66y">imagens do Android disponíveis para download no Google</a>)</dd> - <dt>Nexus 5</dt> - <dd>Alguns usuários no IRC testaram com sucesso.</dd> - <dt>Tara</dt> - <dd>Tara é outro dispositivo de teste. O manifesto do Tara está somente no branch master. O script para conseguir o código do Tara é "BRANCH=master ./config.sh tara".</dd> - <dt>Unagi</dt> - <dd>Unagi é um telefone usado como uma plataforma de teste e desenvolvimento de smartphones low-to-midrange. Muitos desenvolvedores do core do Firefox OS trabalham no Unagi.</dd> - <dt><a href="https://developer.mozilla.org/pt-BR/docs/Mozilla/Firefox_OS/Pandaboard" title="/en-US/docs/Mozilla/Firefox_OS/Pandaboard">Pandaboard</a></dt> - <dd>O Pandaboard é uma placa de desenvolvimento baseado na arquitetura OMAP 4</dd> -</dl> - -<div class="warning"><span style="color: #ffffff;"><strong>Important</strong>e: Somente dispositivos rodando o <strong>Android</strong> versão 4 (também conhecida como <strong>Ice Cream Sandwich</strong>) ou superior são suportados. Se seu telefone estiver na lista acima mas esteja rodando uma versão anterior do android, atualize-a antes de fazer qualquer coisa.</span></div> - -<div> -<h3 id="Requisitos_para_Flame_e_Nexus_5_libxml2-utils">Requisitos para Flame e Nexus 5 libxml2-utils</h3> - -<p>Se você está compilando para o dispositivo de referência <a href="https://developer.mozilla.org/pt-BR/Firefox_OS/Developer_phone_guide/Flame">Flame</a> ou para o Nexus 5, antes de iniciar você deve executar o seguinte comando no terminal:</p> - -<pre class="brush: bash language-html"><code class="language-html">sudo apt-get install libxml2-utils</code></pre> - -<h3 id="Botão_Home_botão_físico_versus_botão_por_software_versus_gesto">Botão Home: botão físico versus botão por software versus gesto</h3> - -<p>Todos os dispositivos nível 1 possuem um botão home físico que leva o usuário para a tela de início. Muitos dispositivos baseados no Android ICS usam botões de toque na tela para a navegação. Nós temos um botão home virtual para os dispositivos que não possuem um botão físico. Se não estiver habilitado automaticamente, vá para o aplicativo Preferências em <a href="https://developer.mozilla.org/pt-BR/Firefox_OS/Debugging/Developer_settings">Configurações do desenvolvedor</a> e ative a opção <a href="https://developer.mozilla.org/pt-BR/Firefox_OS/Debugging/Developer_settings#Enable_software_home_button">Botão home por software</a>.</p> - -<p>Dispositivos do nível 2 e 3 possuem botão home por software.</p> - -<p>A partir da versão 1.4 do Firefox OS existe também a opção de "Habilitar Gesto para Home", ao habilitar essa opção o botão home será removido da tela e para ir para a tela de início o usuário deve deslizar o dedo na tela de baixo para cima.</p> -</div> - -<h2 id="Requisitos_para_GNULinux">Requisitos para GNU/Linux</h2> - -<p>Para compilar no Linux, você precisará de um sistema com a seguinte configuração:</p> - -<ul> - <li>Uma distribuição <strong>GNU/Linux</strong> <strong>de 64 bits </strong>(nós recomendamos o Ubuntu 12.04).</li> - <li>Pelo menos <strong>4GB</strong> de ram/swap.</li> - <li>Pelo menos <strong>30GB</strong> de espaço em disco.</li> -</ul> - -<p>Isso é mais que o mínimo necessário, mas algumas vezes a compilação pode falhar exatamente por falta de recursos.</p> - -<p>É possível utilizar outras distribuições, mas nós recomendamos Ubuntu uma vez que é a distro mais comumente utilizada com sucesso. Distribuições que <strong>não devem funcionar:</strong> <strong>distros 32 bits</strong> e distros recentes por causa do gcc 4.7 (<strong>Ubuntu 12.10, Fedora 17/18, Arch Linux</strong>).</p> - -<p>Você também vai necessitar das seguintes ferramentas instaladas:</p> - -<ul> - <li><strong>autoconf 2.13</strong></li> - <li><strong>bison</strong></li> - <li><strong>bzip2</strong></li> - <li><strong>ccache</strong></li> - <li><strong>curl</strong></li> - <li><strong>flex</strong></li> - <li><strong>gawk</strong></li> - <li><strong>git</strong></li> - <li><strong>gcc / g++ / g++-multilib</strong> <strong>(4.6.3 or older)</strong></li> - <li><strong>make</strong></li> - <li><strong>OpenGL headers</strong></li> - <li><strong>X11 headers</strong></li> - <li><strong>32-bit ncurses</strong></li> - <li><strong>32-bit zlib</strong></li> -</ul> - -<h3 id="Problemas_na_compilação_do_Emulador"><strong>Problemas na compilação do Emulador </strong></h3> - -<p>Se você está compilando um emulador, você precisa prestar atenção a esses problemas:</p> - -<div class="note"> -<p><strong>Primeiro, note que você não deve usar o emulador x86 — é difícil de instalar e não é bem suportado.</strong></p> -</div> - -<p>Observe também que o sistema de compilação para o emulador compila ambas as versões do emulador: 32bit e 64bit. Como o emulador depende do OpenGL, isso significa que você precisa ter as versões 32bit e 64bit das bibliotecas do OpenGL instaladas no seu sistema. Veja a discussão no <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=897727" title="https://bugzilla.mozilla.org/show_bug.cgi?id=897727">bug 897727</a>.</p> - -<p>Existem duas formas de resolver esse problema:</p> - -<h4 id="1ª_Solucão_Ter_as_bibliotecas_OpenGL_nas_versões_32bit_e_64bit_instaladas_com_os_links_simbólicos_corretos">1ª Solucão: Ter as bibliotecas OpenGL nas versões 32bit e 64bit instaladas, com os links simbólicos corretos</h4> - -<p>Se sua distro tem pacotes <em>multilib</em> para OpenGl, você pode tentar instalá-las. Você deve, nesse caso, criar alguns links simbólicos manualmente.</p> - -<p>Por exemplo, há uma situação no Ubuntu 12.04 LTS x86-64. Nessa distribuição, o pacote <code>libgl1-mesa-dev</code> não pode ser instalado simultaneamente nas versões x86-64 e i386, mas você pode ter a seguinte combinação de pacotes simultaneamente instalados:</p> - -<pre class="bz_comment_text language-html" id="comment_text_12">sudo apt-get install libgl1-mesa-dev libglapi-mesa:i386 libgl1-mesa-glx:i386</pre> - -<p>Após executar esse comando, você ainda tem que criar alguns links simbólicos manualmente para que a compilação do emulador funcione:</p> - -<pre class="note language-html">sudo ln -s /usr/lib/i386-linux-gnu/libX11.so.6 /usr/lib/i386-linux-gnu/libX11.so -sudo ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1 /usr/lib/i386-linux-gnu/libGL.so</pre> - -<h4 id="2ª_Solução_aplicar_uma_correção_(patch)_para_que_o_emuladodr_somente_compile_em_64bit">2ª Solução: aplicar uma correção (<em>patch</em>) para que o emuladodr somente compile em 64bit</h4> - -<p>Aplicando <a href="https://bug897727.bugzilla.mozilla.org/attachment.cgi?id=786280" title="https://bug897727.bugzilla.mozilla.org/attachment.cgi?id=786280">essa correção</a> no sdk/ repositório git abaixo do repositório B2G. Isso fará com que o emulador B2G somente tentar compilar o emulador 64bit se você estiver num sistema 64bit, evitando assim quaisquer problemas relacionados com <code>multlib</code>. Dessa forma, o emulador de 32 bits não é usado em um sistema de 64 bits. Esta é a solução mais simples, até que, eventualmente, essa correção pare de funcionar.</p> - -<h3 id="Requisitos_de_instalação_de_64_bit">Requisitos de instalação de 64 bit</h3> - -<p>Essa seção lista os comandos que você precisa executar para instalar todos os requisitos necessários para compilar o Firefox OS.</p> - -<h4 id="Ubuntu_12.04_Linux_Mint_13_Debian_6">Ubuntu 12.04 / Linux Mint 13 / Debian 6</h4> - -<p>Execute os seguintes comandos no terminal:</p> - -<pre class="language-html">sudo apt-get updatesudo apt-get install autoconf2.13 bison bzip2 ccache curl flex gawk gcc g++ g++-multilib git ia32-libs lib32ncurses5-dev lib32z1-dev libgl1-mesa-dev libx11-dev make zip</pre> - -<p>Se você vai compilar para o <a href="https://developer.mozilla.org/pt-BR/Firefox_OS/Developer_phone_guide/Flame">"Flame"</a> ou Nexus 5, execute o seguinte comando:</p> - -<pre class="language-html">sudo apt-get install libxml2-utils </pre> - -<p>E veja os comentários acima sobre problemas na compilação do emulador!</p> - -<h4 id="Ubuntu_12.10_Debian_7">Ubuntu 12.10 / Debian 7</h4> - -<p>Execute o seguinte comando no terminal:</p> - -<pre class="language-html">sudo apt-get install autoconf2.13 bison bzip2 ccache curl flex gawk gcc g++ g++-multilib gcc-4.6 g++-4.6 g++-4.6-multilib git ia32-libs lib32ncurses5-dev lib32z1-dev libgl1-mesa-dev libx11-dev make zip</pre> - -<p>Adicionalmente aos problemas do emulador discutidos acima, o compilador tem como padrão o <code>gcc-4.7</code>, o que não permitirá a compilação gerando o seguinte erro:</p> - -<p>"<code>KeyedVector.h:193:31: error: indexOfKey was not declared in this scope, and no declarations were found by argument-dependent lookup at the point of instantiation"</code></p> - -<p>Para resolver esse problema, você deve especificar o <code>gcc 4.6</code> como o compilador padrão depois de baixar os arquivos fontes do B2G. Leia <a href="https://developer.mozilla.org/en-US/docs/Mozilla/Firefox_OS/Customization_with_the_.userconfig_file#Changing_the_default_host_compiler">Modificando o compilador padrão</a> para descobrir como fazer isso.</p> - -<p class="note">Em uma recente instalação Ubuntu 12.10, você receberá um erro relacionado com dependências não encontradas para <code>ia32-libs</code>. Os comandos a seguir resolvem esse problema:</p> - -<pre class="language-html">sudo dpkg --add-architecture i386 -sudo apt-get update -sudo apt-get install ia32-libs</pre> - -<h4 id="Ubuntu_13.04">Ubuntu 13.04</h4> - -<p>Execute o seguinte comando no terminal:</p> - -<pre class="language-html">sudo apt-get install --no-install-recommends autoconf2.13 bison bzip2 ccache curl flex gawk gcc g++ g++-multilib gcc-4.6 g++-4.6 g++-4.6-multilib git ia32-libs lib32ncurses5-dev lib32z1-dev zlib1g:amd64 zlib1g-dev:amd64 zlib1g:i386 zlib1g-dev:i386 libgl1-mesa-dev libx11-dev make zip</pre> - -<p>Adicionalmente aos problemas do emulador discutidos acima, o compilador tem como padrão o <code>gcc-4.7</code>, o que não permitirá a compilação gerando o seguinte erro:</p> - -<p>"<code>KeyedVector.h:193:31: error: indexOfKey was not declared in this scope, and no declarations were found by argument-dependent lookup at the point of instantiation"</code></p> - -<p>Para resolver esse problema, você deve especificar o <code>gcc 4.6</code> como o compilador padrão depois de baixar os arquivos fontes do B2G. Leia <a href="https://developer.mozilla.org/en-US/docs/Mozilla/Firefox_OS/Customization_with_the_.userconfig_file#Changing_the_default_host_compiler">Modificando o compilador padrão</a> para descobrir como fazer isso.</p> - -<h4 id="Ubuntu_13.10">Ubuntu 13.10</h4> - -<p>Com o Ubuntu 13.10, os pacotes multiarquitetura são agora a principal maneira de suportar diferentes arquiteturas (por exemplo, versão 32bit numa instalação 64bit). Você deve informar ao sistema que deseja também suportar pacotes 32bit:</p> - -<pre class="language-html">sudo dpkg --add-architecture i386 -sudo apt-get update</pre> - -<p>Uma vez que você executou esse comando, você pode instalar os pacotes necessários:</p> - -<pre class="language-html" style="font-family: 'Open Sans', sans-serif; line-height: 21px;"><code>sudo apt-get install --no-install-recommends autoconf2.13 bison bzip2 ccache curl flex gawk gcc g++ g++-multilib gcc-4.6 g++-4.6 g++-4.6-multilib git lib32ncurses5-dev lib32z1-dev zlib1g:amd64 zlib1g-dev:amd64 zlib1g:i386 zlib1g-dev:i386 libgl1-mesa-dev libx11-dev make zip libxml2-utils - -sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.6 1 - -sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.8 2 - -sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.6 1 - -sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.8 2 - -sudo update-alternatives --set gcc "/usr/bin/gcc-4.6" - -sudo update-alternatives --set g++ "/usr/bin/g++-4.6" </code></pre> - -<h4 id="sect1"> </h4> - -<h4 id="Ubuntu_14.04">Ubuntu 14.04</h4> - -<p>Siga as mesmas instruções do Ubuntu 13.10.</p> - -<h4 id="Fedora_1920">Fedora 19/20</h4> - -<p>Execute o seguinte comando no terminal:</p> - -<pre class="note language-html">sudo yum install autoconf213 bison bzip2 ccache curl flex gawk gcc-c++ git glibc-devel glibc-static libstdc++-static libX11-devel make mesa-libGL-devel ncurses-devel patch zlib-devel ncurses-devel.i686 readline-devel.i686 zlib-devel.i686 libX11-devel.i686 mesa-libGL-devel.i686 glibc-devel.i686 libstdc++.i686 libXrandr.i686 zip perl-Digest-SHA wget</pre> - -<p>O projeto deve compilar corretamente com o compilador padrão do Fedora, mas se ocorrer algum erro de compilação você deve instalar o GCC 4.6.x:</p> - -<ul> - <li><a href="http://people.mozilla.org/%7Egsvelto/gcc-4.6.4-fc19.tar.xz">GCC 4.6.x pré-compilado para o Fedora 19/20</a></li> -</ul> - -<p>Baixe o tarball e instale-o no diretório <code>/opt,</code> com o seguinte comando no Fedora 19/20:</p> - -<pre class="note language-html">curl -O http://people.mozilla.org/~gsvelto/gcc-4.6.4-fc19.tar.xz -sudo tar -x -a -C /opt -f gcc-4.6.4-fc19.tar.xz -</pre> - -<p>Para usar o GCC 4.6.x como o compilador padrão você deve configurá-lo explicitamente depois de baixar os fontes do B2G: leia o artigo <a href="https://developer.mozilla.org/pt-BR/docs/Mozilla/Firefox_OS/Customization_with_the_.userconfig_file#Changing_the_default_host_compiler">Alterando o compilador padrão</a> para saber como fazer isso.</p> - -<h4 id="Arch_Linux"><strong>Arch Linux</strong></h4> - -<p>Execute o seguinte comando no terminal:</p> - -<pre class="note language-html">sudo <span><span>pacman -S --needed </span></span><span><span>alsa-lib </span></span><span><span>autoconf2.13</span></span><span><span> bison</span></span><span><span> ccache</span></span><span><span> </span></span><span><span>curl firefox </span></span><span><span>flex </span></span><span><span>gcc-multilib </span></span><span><span>git </span></span><span><span>gperf </span></span><span><span>libnotify </span></span><span><span>libxt </span></span><span><span>libx11 mesa multilib-devel </span></span><span><span>wget wireless_tools </span></span><span><span>yasm</span></span><span><span> zip </span></span><span><span>lib32-mesa </span></span>lib32-mesa-libgl <span><span>lib32-ncurses lib32-readline</span></span><span><span> </span></span><span><span>lib32-zlib</span></span></pre> - -<p>Para instalar os pacotes <code>lib32-*</code> você precisa um repositóririo <code>multilib</code> habilitado.</p> - -<p>B2G <a href="https://developer.mozilla.org/pt-BR/docs/Mozilla/Firefox_OS/Compilando_O_Firefox_OS">somente pode ser compilado com gcc 4.6.4</a>, e como o Arch Linux possui softwares com tecnologia de ponta é necessário instalar <a href="https://aur.archlinux.org/packages/gcc46-multilib">gcc46-multilib from AUR</a>. Observe que deve-se editar o arquivo PKGBUILD e adicionar <code>staticlibs</code> ao <em>array</em> <code>options</code>, do contrário o gcc não conseguirá compilar o B2G and apresentará o erro: <code>cannot find -lgcc</code>. Será necessário também, incluir as seguintes linhas ao arquivo <code>.userconfig</code>:</p> - -<pre class="language-html">export CC=gcc-4.6.4 -export CXX=g++-4.6.4</pre> - -<p>O Arch Linux utiliza como padrão o Python3. Mas você deverá forçar o uso do Python2. Você pode fazer isso criando um link simbólico, mas não é recomendável por ser propenso a erros. Mesmo porque desabilita o uso do Python 3 se estiver instalado no sistema. Uma melhor forma é usar<code> virtualenv</code>/<code>virtualenvwrapper</code>:</p> - -<pre class="language-html"><span><span>sudo pacman -S python-virtualenvwrapper -</span></span>source /usr/bin/virtualenvwrapper.sh -mkvirtualenv -p `which python2` firefoxos -workon firefoxos -</pre> - -<p>Android exige que seja utilizado make 3.81 ou make 3.82 ou invés da versão 4.0. Você pode baixar o <a href="https://aur.archlinux.org/packages/make-3.81/">make 3.81 do AUR</a>. Isso vai instalar o binário <code>make-3.81</code> no seu <em>path</em>, você precisa criar um link simbólico chamado makem numa localização no início da variável <code>PATH</code> para compilar a versão correta.</p> - -<pre class="language-html">mkdir -p ~/bin -ln -s `which make-3.81` ~/bin/make -export PATH=~/bin:$PATH -</pre> - -<p>Android também necessita Java6 SDK e Arch somente tem Java7. Você pode baixar o <a href="http://www.oracle.com/technetwork/java/javasebusiness/downloads/java-archive-downloads-javase6-419409.html#jdk-6u45-oth-JPR">Java 6 SDK</a> e instalá-lo manualmente. Você precisa colocá-lo no seu <em>path</em>.</p> - -<pre class="language-html">cp ~/Downloads/jdk-6u45-linux-x64.bin /opt -su -cd /opt -chmod +x jdk-6u45-linux-x64.bin -./jdk-6u45-linux-x64.bin -exit -ln -s /opt/jdk1.6.0_45/bin/java ~/bin/java -</pre> - -<h4 id="Gentoo_Linux"><strong>Gentoo Linux</strong></h4> - -<h5 id="Installing_ccache">Installing ccache</h5> - -<p>É necessário instalar <strong><a href="http://www.gentoo.org/doc/en/handbook/handbook-x86.xml?part=2&chap=3#doc_chap3">ccache</a></strong>, uma ferramenta para fazer cache de compilações parciais.</p> - -<pre class="language-html"><span><span># emerge -av ccache</span></span> -</pre> - -<p>Devido ao fato de ccache ser conhecido como frequente causador de problemas, Gentoo encoraja a usá-lo explicitamente e com moderação.</p> - -<p>Para habilitar o uso do ccache, na etapa subsequente desse guia onde o script <code>./build.sh</code> é chamado, os usuários do Gentoo devem executar o comando com o <em>path</em> explicitamente estendido, ou seja:</p> - -<pre class="language-html"><span><span><strong>PATH=/usr/lib64/ccache/bin:$PATH</strong> ./build.sh</span></span> -</pre> - -<h5 id="Gerando_imagens_de_partições">Gerando imagens de partições</h5> - -<p>Se você está compilando o B2G para um hardware físico real, então em algum momento você pode querer gerar algumas imagens de partições para instalar no seu dispositivo. (Por exemplo, para restaurar os arquivos de <em>backup</em> do aparelho via o utilitário <em><strong>fastboot</strong></em>).</p> - -<p>A imagem do sistema de arquivos usada nesse caso é YAFFS2 (Yet Another Filesystem 2). Gentoo tem suporte para o pacote mais recente do <code>yaffs2-utils </code>(ou seja, git HEAD).</p> - -<div class="note"> -<p><strong>Nota:</strong> Você necessitará correções do kernel se for montar imagens YAFFS2, mas não é realmente exigido uma vez que é possível desconstruir e recompilar.</p> -</div> - -<pre class="language-html"># emerge --autounmask-write yaffs2-utils; etc-update; emerge -av yaffs2-utils</pre> - -<p><span id="result_box" lang="pt"><span class="hps">Para gerar</span> <span class="hps">essa</span> <span class="hps">imagem, basta</span> <span class="hps">mudar para o</span> <span class="hps">diretório principal da árvore do</span> <span class="hps">sistema de arquivos</span> <span class="hps">que você deseja</span> <span class="hps">empacotar</span> <span class="hps">e executar</span> <span class="hps">esse comando</span><span>:</span></span></p> - -<pre class="language-html">mkyaffs2image system/ system.img</pre> - -<h2 id="Requisitos_para_Mac_OS_X"><a name="Requirements_for_Mac_OS_X">Requisitos para Mac OS X</a></h2> - -<p>Para compilar o Firefox OS no OS X, existe uma série de pré-requisitos que deve ser atendidos que serão detalhados a seguir. Também serão discutidos erros comuns <span id="result_box" lang="pt"><span class="hps">que você pode</span> <span class="hps">se deparar</span> <span class="hps">em situações particulares</span><span>,</span> <span class="hps">e</span> <span class="hps">suas soluções</span><span class="hps">.</span></span></p> - -<div class="note"> -<p><strong>Nota: Configuração e Compilação para Keon NÃO FUNCIONA no Mac. </strong>Para isso é necessário utilizar o Linux para compilar o B2G para esse aparelho.</p> -</div> - -<h3 id="Compatibilidade_de_versões">Compatibilidade de versões</h3> - -<p>O XCode 4.2 não está mais disponível para OS X 10.9 (também conhecido como "Mavericks"), então você pode se surpreender ao encontrar falhas ao compilar o Firefox OS. Basicamente não conseguir compilar emulador ICS no Mavericks e superiores e também não compilar flatfish com a série do XCode 5.x.</p> - -<table class="standard-table"> - <caption>Compatibilidade de versões do OS X 10.9.x</caption> - <tbody> - <tr> - <td> </td> - <td>emulador (ICS)</td> - <td>emulador-jb (JB-4.2)</td> - <td>emulador-kk (KitKat-4.4)</td> - <td>flatfish (JB-4.2)</td> - </tr> - <tr> - <td>XCode 4.3.3</td> - <td style="text-align: center;">X</td> - <td style="text-align: center;">X</td> - <td style="text-align: center;">X</td> - <td style="text-align: center;">X</td> - </tr> - <tr> - <td>XCode 4.4.1</td> - <td style="text-align: center;">X</td> - <td style="text-align: center;">O</td> - <td style="text-align: center;">O</td> - <td style="text-align: center;">O</td> - </tr> - <tr> - <td>XCode 4.5.2</td> - <td style="text-align: center;">X</td> - <td style="text-align: center;">O</td> - <td style="text-align: center;">O</td> - <td style="text-align: center;">O</td> - </tr> - <tr> - <td>XCode 4.6.3</td> - <td style="text-align: center;">X</td> - <td style="text-align: center;">O</td> - <td style="text-align: center;">O</td> - <td style="text-align: center;">O</td> - </tr> - <tr> - <td>XCode 5.0.2</td> - <td style="text-align: center;">X</td> - <td style="text-align: center;">O</td> - <td style="text-align: center;">O</td> - <td style="text-align: center;">X</td> - </tr> - <tr> - <td>XCode 5.1.1</td> - <td style="text-align: center;">X</td> - <td style="text-align: center;">O</td> - <td style="text-align: center;">O</td> - <td style="text-align: center;">X</td> - </tr> - </tbody> -</table> - -<ol> - <li>Você deve configurar a variável de ambiente BUILD_MAC_SDK_EXPERIMENTAL=1 exportada para compilar o flatfish.</li> -</ol> - -<h3 id="Instalação_do_Utilitário_de_Linha_de_Comando"><strong>Instalação do Utilitário de Linha de Comando </strong></h3> - -<p>Para compilar o Firefox OS no OS X você precisa instalar o Utilitário de Linha de Comando do XCode. É possível baixar apenas o Utilitário na <a href="https://developer.apple.com/downloads/" title="https://developer.apple.com/downloads/">página de desenvolvedores da Apple</a> para sua versão do OS X, ou <a class="external" href="http://itunes.apple.com/us/app/xcode/id497799835?mt=12" style="line-height: 1.572;" title="http://itunes.apple.com/us/app/xcode/id497799835?mt=12">instalar</a> a suíte completa do XCode pelo Mac AppStore.</p> - -<p>Xcode 4.3.1 (OS X 10.7 "Lion") e versões posteriores como a 4.4.1+ (that is, OS X 10.8 "Mountain Lion"), não vêm com o Utilitário de Linha de Comando. Quando você instalar o XCode, certifique-se de ir em Preferências, Painel Downloads e instala "Command Line Utilities". Deve ter pelo menos 20GB de espaço disponível no seu disco.</p> - -<p><img alt="Screenshot of Xcode Downloads Command Line Tools" src="https://developer.mozilla.org/files/4557/xcode_downloads_command_line_tools.png" style="height: 528px; width: 750px;"></p> - -<div class="note"><strong>Nota: </strong>O emulador do Firefox OS exige pelo menos um processador Core 2 Duo, ou seja, um sistema compatível com OS X 10.7 "Lion". Na verdade você não precisa rodar no Lion, basta ser compatível. Assim, você pode compilar o Firefox OS em diversos Macs mais antigos.</div> - -<div class="note"> -<p><strong>Nota:</strong> O XCode 4.2.x ou anteriores não é compatível com OS X 10.9 ou superior, e XCode 4.3.x não possui plataforma SDK para 10.8. Instale uma nova versão. Se você está trabalhando no flatfish, certifique-se de ter disponível XCode 4.4, 4.5, ou 4.6.</p> -</div> - -<h3 id="Instalando_o_Bootstrap_do_Firefox_OS_no_Mac">Instalando o Bootstrap do Firefox OS no Mac</h3> - -<pre class="brush: bash">curl -fsSL https://raw.github.com/mozilla-b2g/B2G/master/scripts/bootstrap-mac.sh | bash</pre> - -<p>Rode o comando acima no terminal. Isso vai baixar e rodar o script do bootstrap e certificar-se de que o seu ambiente atende todos os pré-requisitos.</p> - -<p>Isso vai checar se você possui todas as coisas que você precisa para compilar o emulador, e ao longo do script solicitará permissão para instalar algo que não tenha encontrado.</p> - -<p>Os itens que o script irá checar se estão instalados na sua máquina são os seguintes:</p> - -<ul> - <li><code>git</code></li> - <li><code>gpg</code></li> - <li><code>ccache</code></li> - <li><code>yasm</code></li> - <li><code>autoconf-213</code></li> - <li><code>gcc-4.6</code></li> - <li><code>homebrew</code></li> -</ul> - -<div> -<h4 id="Disputas_do_Xcode"><strong>Disputas do Xcode</strong></h4> - -<p>Se você já tiver atualizado para o Xcode 4.4 + e aparecer a mensagem de que o Xcode está desatualizado, verificar o caminho (<em>path</em>) Xcode com:</p> - -<pre>xcode-select -print-path</pre> - -<p>Se o resultado mostrar <code>/Developer</code> você pode alterar o caminho (<em>path</em>) com:</p> - -<pre>sudo xcode-select -switch /Applications/Xcode.app</pre> - -<h4 id="Tornando_o_OS_X_10.6_SDK_disponível">Tornando o OS X 10.6 SDK disponível</h4> - -<p>O SDK necessário está disponível em:</p> - -<pre class="language-html">/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/</pre> - -<p>Se não for encontrado você precisa extrair e copiá-lo do Xcode 4.3. Para fazer isso:</p> - -<ol> - <li>Baixe o arquivo XCode 4.3 .dmg file do portal <a class="external external-icon" href="https://developer.apple.com/downloads/index.action">Apple Developer</a> (você vai precisar de uma <a href="https://developer.apple.com/register/index.action" title="https://developer.apple.com/register/index.action">conta de desenvolvedor Apple</a>).</li> - <li>Baixe o utilitário <a href="http://www.charlessoft.com/" title="http://www.charlessoft.com/">Pacifist</a> e use-o para extrai o SDK 10.6 SDK do arquivo XCode 4.3 .dmg. Clique no botão "Open Package", encontre do SDK procurando pela string 10.6 no campo de procura, selecione o diretório "MacOSX10.6.sdk" e extraia-o para um local adequado com o botão "Extract To...".</li> - <li>Adicione um link simbólico no diretório <code>/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/</code> para o local do 10.6 SDK. Por exemplo, se você copiar o 10.6 SDK no seu desktop o comando para criar o link simbólico será:</li> -</ol> - -<pre class="language-html">ln -s /Users/<em><yourusername></em>/Desktop/MacOSX10.6.sdk /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/</pre> - -<div class="note"> -<p><strong>Nota:</strong> Isso não é necessário no OS X 10.9 ou superior, uma vez que 10.6 SDK é para o ICS e ICS não suporta OS X 10.9.</p> -</div> - -<h3 id="Atenção_com_o_sistema_de_arquivos_do_Mac_Não_é_case_sensitivity">Atenção com o sistema de arquivos do Mac: <strong>Não é <em>case sensitivity</em></strong></h3> - -<p>Como padrão, o OS X vem com o sistema de arquivos <em>case insensitive</em><em>. </em>Isso é um problema porque o kernel do Linux tem diversos arquivos com o mesmo nome porém com diferenças nas maiúsculas e minúsculas. Por exemplo, os arquivos cabeçalhos <code>xt_CONNMARK.h</code> e <code>xt_connmark.h</code> são distintos. Essa situação causa diversos transtornos.</p> - -<p>Em muitos casos você compila e aparentemente tudo correu bem, mas você pode encontrar o seguinte erro:</p> - -<pre class="language-html"><span class="quote">ERROR: You have uncommited changes in kernel -You may force overwriting these changes -with |source build/envsetup.sh force| - -ERROR: Patching of kernel/ failed.</span></pre> - -<p><span class="quote">Veja o <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=867259" title="https://bugzilla.mozilla.org/show_bug.cgi?id=867259">bug 867259</a></span> com discussões sobre o tema e possíveis soluções para esse problema.</p> - -<p>Uma outra forma de compilar sem problema num sistema de arquivos <em>case sensitive</em> é criar uma imagem de disco separada com o <em>case sensitivity </em>habilitado. Pode-se usar a aplicação Utilitário de Disco ou a partir da linha de comando:</p> - -<pre class="language-html">hdiutil create -volname 'firefoxos' -type SPARSE -fs 'Case-sensitive Journaled HFS+' -size 40g ~/firefoxos.sparseimage</pre> - -<p>Montar o drive com:</p> - -<pre class="language-html">open ~/firefoxos.sparseimage</pre> - -<p>Acessar o drive montado com:</p> - -<pre class="language-html">cd /Volumes/firefoxos/</pre> - -<p>Feito isso é possível baixar o código e compilar a partir desse diretório sem se preocupar com problemas decorrentes do <em>case sensivity</em>.</p> - -<h3 id="Mountain_Lion">Mountain Lion</h3> - -<div> -<p>Se você estiver compilando no OS X 10.8 "Mountain Lion" (Xcode 4.4.1 ou posterior) e encontrar o seguinte erro:</p> - -<pre style="font-size: 14px;">external/qemu/android/skin/trackball.c:130:25: error: 'M_PI' undeclared (first use in this function)</pre> -Edite o arquivo: <code style="font-size: 14px;">B2G/external/qemu/makefile.android</code> e adicione na linha 78: - -<pre style="font-size: 14px;">MY_CFLAGS += -DM_PI=3.14159265358979323846264338327950288 #/* B2G_fix: not finding M_PI constant */ -</pre> - -<div> -<h3 id="Pegadinha_do_homebrew_no_Mountain_Lion">Pegadinha do homebrew no Mountain Lion</h3> -</div> - -<div>Se você estiver no Mountain Lion e receber um erro durante a instalação de dependências no homebrew como:</div> -</div> -</div> - -<div> -<pre>clang: error: unable to execute command: Segmentation fault: 11</pre> -... tente reinstalar as dependências manualmente adicionando o parâmetro --use-gcc, por exemplo: - -<pre>brew install mpfr --use-gcc</pre> -</div> - -<h3 id="Samsung_Galaxy_S2">Samsung Galaxy S2</h3> - -<p>Se você planeja compilar para o Samsung Galaxy S2, será necessário instalar o aplicativo heimdall. Veja {{ anch("Instalando heimdall") }} para maiores detalhes. Esse procedimento não é realizado pelo script bootstrap!</p> - -<div class="note"><strong>Note:</strong> Se você tem o aplicativo <a class="external" href="http://www.samsung.com/us/kies/" title="http://www.samsung.com/us/kies/">Samsung Kies</a> instalado na sua máquina, que é utilizado para gerenciar o conteúdo de muitos telefones Samsung, você precisará removê-lo antes de copiar o Firefox OS no seu telefone. Você pode usar o aplicativo padrão de remoção de programas no Windows. No Mac, a imagem de instalação do Kies tem um aplicativo que remove completamente o Kies do seu computador. A cópia do Sistema (Flashing)<strong> não funcionará</strong> se o Kies estiver instalado. Se você esquecer de remover o Kies, o procedimento de compilação detectará e o avisará para desinstalá-lo. Observer também que o utilitário de desinstalação não remove corretamente o diretório <code>~/Library/Application Support/.FUS</code>, e deixa uma referência para um utilitário na lista de inicialização do usuário. Será necessário remover isso manualmente.</div> - -<h3 class="note" id="Como_consertar_a_dependência_da_biblioteca_libmpc">Como consertar a dependência da biblioteca <code>libmpc</code></h3> - -<p>O gcc 4.6 foi compilado com libmpc 0.9. Se você usou o homebrew para atualizar os pacotes o <code>libmpc</code> foi atualizado para a versão 1.0, mas o homebrew não recompila o gcc 4.6 depois da atualização da biblioteca. Assim, você precisa criar um link simbólico para fazer as coisas funcionarem novamente dessa forma:</p> - -<pre>cd /usr/local/lib/ -ln -s libmpc.3.dylib libmpc.2.dylib</pre> - -<h3 id="Opcional_Instalação_do_HAX">Opcional: Instalação do HAX</h3> - -<p>A Intel fornece um driver especial que permite que o emulador B2G execute seu código nativamente no seu Mac ao invés de ser emulado, quando você usa o emulador x86. Se vocie deseja usá-lo você pode <a class="external" href="http://software.intel.com/en-us/articles/intel-hardware-accelerated-execution-manager/" title="http://software.intel.com/en-us/articles/intel-hardware-accelerated-execution-manager/">baixar e instalar nesse link</a>. Não é obrigatório, mas pode melhorar a performance e estabilidade.</p> - -<h2 class="note" id="Instalação_do_adb">Instalação do adb</h2> - -<p>O processo de compilação necessita copiar BLOBS (<strong>B</strong>inary <strong>L</strong>arge <strong>OB</strong>ject<strong>S</strong>) da instalação do Android para o telefone antes de compilar o B2G (a menos, é claro, que você esteja utilizando o emulador). Para isso você necessita do <code>adb</code>, o <em>Android Debug Bridge</em>. Nosso arigo <a href="https://developer.mozilla.org/pt-BR/Firefox_OS/Debugging/Installing_ADB">Instalando o ADB</a> explica como instalar o <code>adb</code>.</p> - -<div class="warning"> -<div class="warning"> -<p>Observação para quando você for usar o adb: o adb necessita que a tela esteja desbloqueada para você ver o telefone (ao menos nas versões mais recentes do Firefox OS). Você provavelmente irá preferir desabilitar o bloqueio de tela (nós veremos mais tarde como fazer isso nas instruções de compilação).</p> -</div> -</div> - -<h2 class="note" id="Instalação_do_heimdall">Instalação do heimdall</h2> - -<p>Heimdall é um utilitério para copiar (<em>flashing</em>) o Samsung Galaxy S2. É usado ppara substituir o conteúdo do telefone pelo Firefox OS bem como copiar (<em>flash</em>) versões atualizadas do B2G e Gaia para o aparelho. Você precisará dele se desejar instalar o Firefox OS no Galaxy S2. <strong>Não</strong> é necessário para outro aparelho.</p> - -<p>Para outros aparelhos nós compilamos e usamos o utilitário <code>fastboot</code>.</p> - -<div class="note"><strong>Nota:</strong> Novamente, é importante frisar que isso <strong>somente é necessário para instalação do Firefox OS no Samsung Galaxy S2</strong>.</div> - -<p>Existem duas formas de instalar o heimdall:</p> - -<ul> - <li><a class="link-https" href="https://github.com/Benjamin-Dobell/Heimdall" title="https://github.com/Benjamin-Dobell/Heimdall">Baixar o código</a> no GitHub e compilar você mesmo.</li> - <li>Usar um gerenciador de pacote para instalá-lo. - <ul> - <li>No Linux: <code>sudo apt-get install libusb-1.0-0 libusb-1.0-0-dev</code></li> - <li>No Mac, basta <a class="link-https" href="https://github.com/downloads/Benjamin-Dobell/Heimdall/heimdall-suite-1.3.2-mac.dmg" title="https://github.com/downloads/Benjamin-Dobell/Heimdall/heimdall-suite-1.3.2-mac.dmg">baixar o instalador</a> e usá-lo.</li> - </ul> - </li> -</ul> - -<h2 id="Configuração_do_ccache">Configuração do ccache</h2> - -<p>O processo de compilação do B2G usa ccache. O tamanho de cache padrão para o ccache é 1GB, mas o B2G satura esse falor facilmente, então 10GB é o valor recomendado. Você pode configurar seu cache executando o seguinte comando no terminal:</p> - -<pre class="language-html"><code class="language-html">$ ccache --max-size 10GB</code></pre> - -<h2 id="Para_o_Linux_configure_a_regra_do_serviço_udev_para_seu_telefone"><a name="udev_rule"></a>Para o Linux: configure a regra do serviço <em>udev</em> para seu telefone</h2> - -<div class="note"> -<p><strong>Nota</strong>: Essa seção é específica para Linux; OS X tem as permissões de acesso ao dispositivo já configuradas.</p> -</div> - -<p>A seguir, você precisa configurar a regra udev para o seu telefone.</p> - -<p>Você consegue a <a href="https://developer.android.com/tools/device.html#VendorIds">identificação USB do fabricante</a> executando <code>lsusb</code> com o seu telefone conectado para porta USB. Alguns exemplos de <em>USB vendor ID</em>: Google <code>18d1,</code> Samsung <code>04e8</code>, ZTE <code>19d2</code>, Geeksphone/Qualcomm <code>05c6</code>.</p> - -<p>Com o código, inclua essa linha no arquivo <code>/etc/udev/rules.d/android.rules</code> (substituindo <code>XXXX</code> com o ID do seu aparelho):</p> - -<pre class="language-html">SUBSYSTEM=="usb", ATTR{idVendor}=="XXXX", MODE="0666", GROUP="plugdev"</pre> - -<p>Usando o ZTE como exemplo, o conteúdo no arquivo <code>android.rules</code> será:</p> - -<pre class="language-html" style="font-size: 14px;">SUBSYSTEM=="usb", ATTR{idVendor}=="19d2", MODE="0666", GROUP="plugdev"</pre> - -<p>No Firefox Flame, deve ser</p> - -<pre class="language-html" style="font-size: 14px;">S<code>UBSYSTEM=="usb", ATTR{idVendor}=="05c6", MODE="0666", GROUP="plugdev</code>"</pre> - -<p>Por favor, observe que o dispositivo fastboot device (que é usado quando você faz o flashing) deve ter uma Identificação do fabricante, e que você deve ter uma regra para ele. Por exemplo, o Firefox Flame também precisa do Identificador do Fabricante Google.</p> - -<pre class="language-html" style="font-size: 14px;">S<code>UBSYSTEM=="usb", ATTR{idVendor}=="18d1", MODE="0666", GROUP="plugdev</code>"</pre> - -<div class="note"> -<p><span style="line-height: 1.572;">Se o arquivo não existir, crie-o. O diretório <code>rules.d</code> normalmente possui permissão apenas de leitura como padrão, então você deve usar <code>chmod</code> para alterar a permissão do diretório, do arquivo ou ambos.</span></p> -</div> - -<p><span style="line-height: 1.572;">Uma vez editado e salvo, altere a permissão do arquivo:</span></p> - -<pre class="language-html">sudo chmod a+r /etc/udev/rules.d/android.rules -</pre> - -<p>Agora que a regra foi alterada, reinicie o serviço <code>udev</code>.\</p> - -<p><strong>Ubuntu</strong></p> - -<p><code>sudo service udev restart</code></p> - -<p><strong>Fedora 20</strong></p> - -<p><code>sudo systemctl restart systemd-udevd.service</code></p> - -<p>Por último, desconecte o cabo USB e <strong>não reconecte</strong> até habilitar o modo de depuração remota no aparelho.</p> - -<h2 id="Habilitando_a_depuração_remota">Habilitando a depuração remota</h2> - -<p>Antes de conectar o telefone à porta USB, coloque o aparelho no modo desenvolvedor. Isso possibilita depurar e copiar o sistema operacional para o telefone (<em>flash</em>). Para habilitar o modo desenvolvedor habilite <a href="https://developer.mozilla.org/en-US/Firefox_OS/Debugging/Developer_settings#Remote_debugging">Depuração Remota </a> em <a href="https://developer.mozilla.org/en-US/Firefox_OS/Debugging/Developer_settings">Configurações de Desenvolvedor</a> (nas versões antigas era chamado Modo Desenvolvedor). Uma vez que a opção esteja marcada, a depuração remota está habilitada e você está pronto para seguir adiante.</p> - -<p>Feito isso, conecte seu telefone ao computador usando o cabo USB (se antes foi criada a regra para o <code>udev</code>, o serviço detectará o telefone e criará um nó do dispositivo com as permissões corretas). Nesse momento é possível checar se o dispositivo foi reconhecido através do comando <code>adb devices</code>. Se tudo estiver funcionando perfeitamente, você verá algo semelhante a isso (o exemplo a seguir é de um Geeksphone Keon):</p> - -<pre class="language-html" style="font-size: 14px;">$ adb devices -List of devices attached -full_keon device</pre> - -<p>Se o telefone não aparecer como o esperado, verifique se o nome do arquivo e o script estão corretos (veja seção anterior), então reinicie o computador e digite o comando novamente. Observe também que se o dispositivo utiliza <em>fastboot</em>, o <em>bootloader </em>pode identificar como um ID do fabricante diferente <span id="result_box" lang="pt"><span class="hps"> do que</span> <span class="hps">você vê quando</span> <span class="hps">o dispositivo é inicializado</span> <span class="hps">normalmente.</span></span></p> - -<h2 id="Faça_uma_cópia_de_segurança_da_partição_de_sistema_do_telefone"><a name="Backup_the_phone_system_partition"></a>Faça uma cópia de segurança da partição de sistema do telefone</h2> - -<div class="note"> -<p><strong>Nota</strong>: Você deve fazer isso antes de compilar seu dispositivo caso você nnao tenha uma cópia de segurança do sistema. Algumas bibliotecas são referenciadas em tempo de compilação, essas bibliotecas podem ser proprietárias e nós não podemos fornecer seu código fonte.</p> -</div> - -<p>É altamente recomendado que você tenha uma cópia de segurança completa da partição do sistema Android do seu telefone.</p> - -<p>Você pode usar a cópia dos BLOBs do Android caso a árvore do B2G seja apagada. Para fazer isso, execute:</p> - -<pre class="language-html">adb pull /system <diretório de backup>/system -</pre> - -<p>Dependendo do telefone, pode ser necessário copiar os diretórios <code>/data</code> e/ou <code>/vendor</code>:</p> - -<pre class="language-html">adb pull /data <diretório de backup>/data -adb pull /vendor <diretório de backup>/vendor -</pre> - -<p>Se os comandos acima falharem com a mensagem "<em>insufficient permission</em>" tente o seguinte:</p> - -<ul> - <li>pare e reinicie o serviço adb, ou se isso não funcionar,</li> - <li>certifique-se de que você concedeu permissões de <em>root</em> à ferramenta <code>adb</code> na ROM customizada (por exemplo, em CyanogenMod, altere <em>Settings > System > Developer Options > Root Access</em> to <em>Apps and ADB</em> or <em>ADB only</em>).</li> - <li>Verifique se você configurou a regra do serviço udev corretamente (veja {{ anch("Para o Linux: configure a regra do serviço udev para seu telefone") }}.</li> -</ul> - -<h2 id="Para_a_próxima_etapa">Para a próxima etapa</h2> - -<p>Nesse ponto você deve estar preparado para <a href="/pt-BR/docs/Mozilla/Firefox_OS/Preparando_sua_primeira_compilacao_do_B2G" title="en-US/docs/Mozilla/Boot_to_Gecko/Preparing_for_your_first_B2G_build">sua primeira compilação do Firefox OS</a>!</p> diff --git a/files/pt-br/archive/b2g_os/firefox_os_usage_tips/index.html b/files/pt-br/archive/b2g_os/firefox_os_usage_tips/index.html deleted file mode 100644 index 9d588d9d83..0000000000 --- a/files/pt-br/archive/b2g_os/firefox_os_usage_tips/index.html +++ /dev/null @@ -1,26 +0,0 @@ ---- -title: Dicas de uso do Firefox OS -slug: Archive/B2G_OS/Firefox_OS_usage_tips -tags: - - NeedsTranslation - - TopicStub -translation_of: Archive/B2G_OS/Firefox_OS_usage_tips ---- -<dl> - <dt> - A ser feito</dt> - <dd> - Explicar todos os recursos de desenvolvimento e o que é possível fazer (Settings > Device information > More information > Developer)</dd> - <dt> - <a href="https://developer.mozilla.org/pt-BR/docs/Mozilla/Firefox_OS/Firefox_OS_usage_tips/Remote_debugging" title="/en-US/docs/Mozilla/Firefox_OS/Hacking_Firefox_OS/Remote_debugging">Depuração remota</a></dt> - <dd> - Como configurar seu telefone para depuração remota.</dd> - <dt> - <a href="https://developer.mozilla.org/pt-BR/Firefox_OS/Firefox_OS_usage_tips/Unlocking_your_phone">Desbloquear seu telefone</a></dt> - <dd> - Instruções básicas de como desbloquear seu telefone</dd> - <dt> - <a href="https://developer.mozilla.org/pt-BR/docs/Mozilla/Firefox_OS/Firefox_OS_usage_tips/taking_screenshots" title="/en-US/docs/Mozilla/Firefox_OS/Tips_and_tricks/taking_screenshots">Screenshots</a></dt> - <dd> - Como tirar screenshots no seu telefone Firefox OS.</dd> -</dl> diff --git a/files/pt-br/archive/b2g_os/guia_gaia_hacking/index.html b/files/pt-br/archive/b2g_os/guia_gaia_hacking/index.html deleted file mode 100644 index 882f8ffc9b..0000000000 --- a/files/pt-br/archive/b2g_os/guia_gaia_hacking/index.html +++ /dev/null @@ -1,6 +0,0 @@ ---- -title: Guia Gaia hacking -slug: Archive/B2G_OS/Guia_Gaia_hacking -translation_of: Archive/B2G_OS/Developing_Gaia ---- -<p>O Guia Gaia hacking ainda não foi escrito. Até então, você pode <a href="https://wiki.mozilla.org/Gaia/Hacking" title="https://wiki.mozilla.org/Gaia/Hacking">recorrer a esse artigo</a> na Wiki Mozilla por enquanto.</p> diff --git a/files/pt-br/archive/b2g_os/index.html b/files/pt-br/archive/b2g_os/index.html deleted file mode 100644 index ee1e505d43..0000000000 --- a/files/pt-br/archive/b2g_os/index.html +++ /dev/null @@ -1,222 +0,0 @@ ---- -title: B2G OS -slug: Archive/B2G_OS -tags: - - B2G - - Firefox OS - - Gaia - - Gecko - - Gonk -translation_of: Archive/B2G_OS ---- -<div class="summary"><span class="seoSummary">Firefox OS é o novo sistema operacional para dispositivos móveis desenvolvido pela Mozilla, baseado no Linux e no poderoso motor de renderização Gecko do Firefox.</span></div> - -<div class="column-container zone-callout"> -<p><strong>Firefox OS</strong> é de código aberto, portanto, livre de tecnologia proprietária, enquanto continua a fornecer o poder para permitir que os desenvolvedores de aplicativos criem excelentes produtos. Além disso, é flexível e capaz o suficiente para fazer o usuário final feliz.</p> - -<p>Para desenvolvedores Web, a parte mais importante a ser compreendida é que <strong>toda a interface do usuário é uma aplicação web </strong>capaz de mostrar ou chamar outras aplicações Web. Qualquer modificação que você faça na interface do usuário e qualquer aplicação que você crie para rodar no Firefox OS são aplicações web criadas usando HTML, CSS, e JavaScript, embora com maior acesso ao hardware e serviços do dispositivo móvel.</p> - -<p>De uma perspectiva de produto, Firefox OS é uma marca Mozilla (e de seus parceiros OEM) e serviços de suporte aplicados em cima do <strong>Boot to Gecko (B2G)</strong>, que é o codinome de engenharia do sistema operacional Firefox OS. Boot to Gecko é desenvolvido por um time de engenheiros da Mozilla somado a muitos colaboradores externos pertencentes a uma vasta comunidade Mozilla/Open Source.</p> -</div> - -<section class="outer-apps-box" id="sect1"> -<h2 id="Desenvolvendo_aplicativos_para_o_Firefox_OS"><a href="https://developer.mozilla.org/pt-BR/docs/Apps">Desenvolvendo aplicativos para o Firefox OS</a></h2> - -<p>Mergulhe de cabeça em nosso Centro de Aplicações para conseguir toda informação que você precisa para construir aplicações web que podem ser instaladas no Firefox OS!</p> -</section> - -<div class="column-container"> -<div class="column-third"> -<h2 id="Guias_da_Plataforma"><a href="https://developer.mozilla.org/pt-BR/docs/Mozilla/Firefox_OS/Platform">Guias da Plataforma</a></h2> - -<p>Guia para desenvolvedores sobre como os diferentes componentes da plataforma Firefox OS se encaixam e funcionam.</p> - -<ul> - <li><a href="https://developer.mozilla.org/pt-BR/docs/Mozilla/Firefox_OS/Platform/Gaia" title="/pt-BR/docs/Mozilla/Firefox_OS/Platform/Gaia">Gaia</a></li> - <li><a href="https://developer.mozilla.org/pt-BR/docs/Mozilla/Firefox_OS/Platform/Gonk" title="/pt-BR/docs/Mozilla/Firefox_OS/Platform/Gonk">Gonk</a></li> - <li><a href="https://developer.mozilla.org/pt-BR/docs/Mozilla/Gecko" title="/pt-BR/docs/Mozilla/Gecko">Gecko</a></li> -</ul> -</div> - -<div class="column-third"> -<h2 id="Compilando_e_instalando"><a href="https://developer.mozilla.org/pt-BR/Firefox_OS/Construindo_e_instalando_o_Firefox_OS">Compilando e instalando</a></h2> - -<p>Guias cobrindo a compilação e instalação do Firefox OS em um emulador, dispositivo compatível ou um simulador desktop.</p> - -<ul> - <li><a href="https://developer.mozilla.org/pt-BR/Firefox_OS/Firefox_OS_build_prerequisites" title="Mozilla/Firefox_OS/Firefox OS build prerequisites">Pré-requisitos para compilar o Firefox OS</a></li> - <li><a href="https://developer.mozilla.org/pt-BR/docs/Mozilla/Firefox_OS/Preparando_sua_primeira_compilacao_do_B2G" title="Mozilla/Firefox_OS/Preparing for your first B2G build">Preparando sua primeira compilação</a></li> - <li><a href="https://developer.mozilla.org/pt-BR/docs/Mozilla/Firefox_OS/Compilando_O_Firefox_OS" title="Mozilla/Firefox_OS/Building">Compilando o Firefox OS</a></li> -</ul> -</div> - -<div class="column-third"> -<h2 id="Telefones_de_Desenvolvedor"><a href="https://developer.mozilla.org/pt-BR/docs/Mozilla/Boot_to_Gecko/Boot_to_Gecko_developer_phone_guide">Telefones de Desenvolvedor</a></h2> - -<p>Informações sobre telefones específicos para desenvolvedores tais como ajustes, atualização, recuperação e compra.</p> - -<ul> - <li><a href="https://developer.mozilla.org/pt-BR/Firefox_OS/Developer_phone_guide/Flame">Flame</a></li> - <li><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Firefox_OS/Developer_phone_guide/Updating_and_Tweaking_Geeksphone">Geeksphone</a></li> - <li><a href="https://developer.mozilla.org/pt-BR/Firefox_OS/Developing_Firefox_OS/ZTE_OPEN">ZTE Open</a></li> - <li><a href="https://developer.mozilla.org/pt-BR/Firefox_OS/Developer_phone_guide/ZTE_OPEN_C">ZTE Open C</a></li> - <li><a href="https://developer.mozilla.org/pt-BR/docs/Resolucao_de_Problemas">Resolução de problemas</a></li> - <li><a href="https://developer.mozilla.org/pt-BR/docs/Mozilla/Boot_to_Gecko/Boot_to_Gecko_developer_phone_guide/Especificacoes_Telefones">Especificações de telefones e dispositivos</a></li> -</ul> -</div> -</div> - -<div class="column-container equalColumnHeights"> -<div class="zone-callout"> -<h2 id="Recursos_Externos"><strong>Recursos Externos</strong></h2> - -<p>Existem diversos livros sendo escritos e já publicados abordando o desenvolvimento para Firefox OS. Confira em <a href="http://firefoxosbooks.org/">Firefox OS Books</a>.</p> -</div> - -<div class="zone-callout"> -<h2 id="Outras_páginas_úteis"><strong>Outras páginas úteis</strong></h2> - -<ul> - <li><a href="http://www.mozilla.org/en-US/styleguide/products/firefox-os/">Guia de estilo Firefox OS</a></li> - <li><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Firefox_OS/Feature_support_chart" title="/en-US/docs/Mozilla/Firefox_OS/Feature_support_chart">Perguntas Frequentes - Mozilla wiki</a></li> - <li><a href="https://developer.mozilla.org/pt-BR/docs/Mozilla/Firefox_OS/Platform/tabela_funcionalidades" title="/en-US/docs/Mozilla/Firefox_OS/Feature_support_chart">Tabela de funcionalidades</a></li> - <li><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Firefox_OS/Geeksphone_FAQ" title="/en-US/docs/Mozilla/Firefox_OS/Geeksphone_FAQ">Perguntas Frequentes - Geeksphone</a></li> -</ul> -</div> -</div> - -<div class="note"> -<p><strong>Nota:</strong> Nós estamos rastreando o trabalho na documentação Firefox OS na nossa página <a href="https://developer.mozilla.org/pt-BR/docs/MDN/Doc_status/Firefox_OS">status da documentação Firefox OS</a>. Se você quiser contribuir com a documentacão Firefox OS, por favor verifique nessa página e veja o que precisa ser feito!</p> -</div> - -<h2 id="Subnav">Subnav</h2> - -<ol> - <li><a href="https://developer.mozilla.org/pt-BR/Firefox_OS/Introduction">Introdução</a></li> - <li><a href="https://developer.mozilla.org/pt-PR/Firefox_OS/Platform" title="Documentation about the Firefox OS platform, including Gonk, Gaia, and everything in between.">Guia da plataforma</a> - <ol> - <li><strong><a href="https://developer.mozilla.org/pt-BR/Firefox_OS/Platform">Guia da Plataforma - Visão geral</a></strong></li> - <li><a href="https://developer.mozilla.org/pt-BR/Firefox_OS/Platform/Architecture">Visão geral da arquitetura</a></li> - <li><a href="https://developer.mozilla.org/pt-BR/Firefox_OS/Platform/Arquitetura_aplicacoes_Firefox_OS" title="An overview of the application model on Firefox OS.">Arquitetura de aplicações</a></li> - <li><a href="https://developer.mozilla.org/pt-BR/Firefox_OS/Platform/Gonk" title="Documentation about Gonk, the operating system layer underneath Gaia. This consists of a Linux kernel and a hardware abstraction layer to which Gecko communicates.">Gonk</a></li> - <li><a href="https://developer.mozilla.org/pt-BR/docs/Mozilla/Gecko" title="Gecko is the layer of Firefox OS that provides the same open web standards implementation used by Firefox and Thunderbird, as well as many other applications.">Gecko</a></li> - <li><a href="https://developer.mozilla.org/pt-BR/Firefox_OS/Platform/Gaia" title="Documentation about Gaia, the user interface application for Firefox OS devices; this is a Web application running atop the Firefox OS software stack.">Gaia</a></li> - <li><a href="https://developer.mozilla.org/pt-BR/Firefox_OS/Platform/Gaia/Gaia_apps">Guia de aplicativos Gaia</a></li> - <li><a href="https://developer.mozilla.org/pt-BR/Firefox_OS/Security" title="Documentation about security in Firefox OS">Segurança</a> - <ol> - <li><a href="https://developer.mozilla.org/pt-BR/Firefox_OS/Security/Security_model">O modelo de segurança do Firefox OS</a></li> - <li><a href="https://developer.mozilla.org/pt-BR/Firefox_OS/Security/System_security">Sistema de segurança</a></li> - <li><a href="https://developer.mozilla.org/pt-BR/Firefox_OS/Security/Application_security">Segurança dos aplicativos no Firefox OS</a></li> - <li><a href="https://developer.mozilla.org/pt-BR/Firefox_OS/Security/Installing_and_updating_applications">Instalando e atualizando os aplicativos de forma segura</a></li> - </ol> - </li> - <li><a href="https://developer.mozilla.org/pt-BR/Firefox_OS/Platform/Out_of_memory_management_on_Firefox_OS">Gerenciamento de falta de memória no Firefox OS </a></li> - <li><a href="https://developer.mozilla.org/pt-BR/Firefox_OS/Platform/tabela_funcionalidades" title="A chart of which features are available in which types of Firefox OS builds.">Tabela de funcionalidades</a></li> - <li><a href="https://developer.mozilla.org/pt-BR/Firefox_OS/Platform/Lista_Configuracao" title="A list of common setting names that can be used with the settings API">Lista de configuração</a></li> - </ol> - </li> - <li><a href="https://developer.mozilla.org/pt-BR/Firefox_OS/Construindo_e_instalando_o_Firefox_OS" title="This includes documentation for building and installing the platform onto devices, as well as building the simulator and emulators.">Compilando e instalando</a> - <ol> - <li><strong><a href="https://developer.mozilla.org/pt-BR/Firefox_OS/Construindo_e_instalando_o_Firefox_OS/visao_geral_compilacao_firefox_os">Compilando e Instalando - Visão geral</a></strong></li> - <li><a href="https://developer.mozilla.org/pt-BR/Firefox_OS/Building_and_installing_Firefox_OS/Firefox_OS_build_process_summary">Visão geral do processo de compilação do Firefox OS</a></li> - <li><a href="https://developer.mozilla.org/pt-BR/Firefox_OS/Firefox_OS_build_prerequisites" title="Steps to take before you build Firefox OS for the first time.">Pré-requisitos para a compilação</a></li> - <li><a href="https://developer.mozilla.org/pt-BR/Firefox_OS/Preparando_sua_primeira_compilacao_do_B2G" title="Before you can build Firefox OS, you need to clone the repository and configure your build.">Preparando sua primeira compilação</a></li> - <li><a href="https://developer.mozilla.org/pt-BR/Firefox_OS/Compilando_O_Firefox_OS" title="How to build Firefox OS.">Compilando o Firefox OS</a></li> - <li><a href="https://developer.mozilla.org/pt-BR/Firefox_OS/Porting" title="Information about how to port Firefox OS to new devices.">Portando o Firefox OS</a></li> - <li><a href="https://developer.mozilla.org/pt-BR/Firefox_OS/Escolhendo_como_executar_Gaia_ou_B2G" title="Using Gaia within Firefox, running Firefox OS on a mobile device, or in a desktop-based simulator. Which is best?">Escolhendo como executar o Gaia ou o Firefox OS</a></li> - <li><a href="https://developer.mozilla.org/pt-BR/Firefox_OS/Usando_o_cliente_B2G_Desktop" title="Simulating the Gaia environment in a desktop application - more accurate than running Gaia in Firefox but not as accurate as the emulators.">Usando o cliente B2G Desktop</a></li> - <li><a href="https://developer.mozilla.org/pt-BR/Firefox_OS/Usande_emuladores_Firefox_OS" title="A guide to building and using the Firefox OS emulators, and when to use which emulator.">Usando emuladores Firefox OS</a></li> - <li><a href="https://developer.mozilla.org/pt-BR/Firefox_OS/Instalando_FirefoxOS_dispositivo_movel" title="How to install Firefox OS on a real mobile device.">Instalando o Firefox OS em um dispositivo móvel</a></li> - <li><a href="https://developer.mozilla.org/pt-BR/Firefox_OS/Construindo_e_instalando_o_Firefox_OS/Criando_e_aplicando_pacotes_de_atualizacao_Firefox_OS">Criando e aplicando pacotes de atualização do Firefox OS</a></li> - <li><a href="https://developer.mozilla.org/pt-BR/Firefox_OS/Runtime_tools">Runtime tools</a></li> - </ol> - </li> - <li><a href="https://developer.mozilla.org/pt-BR/Firefox_OS/Desenvolvendo_no_Firefox_OS" title="Hack the OS, customize your builds, get things the way you think they should be!">Desenvolvendo no Firefox OS</a> - <ol> - <li><strong><a href="https://developer.mozilla.org/pt-BR/Firefox_OS/Developing_Firefox_OS">Desenvolvendo no Firefox OS - Visão Geral</a></strong></li> - <li><a href="https://developer.mozilla.org/pt-BR/Firefox_OS/Developing_Firefox_OS/Filing_bugs_against_Firefox_OS">Registrando bugs do Firefox OS</a></li> - <li><a href="https://developer.mozilla.org/pt-BR/Firefox_OS/modifying_hosts_file" title="A guide to what can be achieved by modifying the Firefox OS hosts file.">Modificando o arquivo hosts</a></li> - <li><a href="https://developer.mozilla.org/pt-BR/Firefox_OS/Customizacao_com_o_arquivo_.userconfig_file" title="How to customize the build and execution of Firefox OS by changing the .userconfig file.">Customização com o arquivo .userconfig</a></li> - <li><a href="https://developer.mozilla.org/pt-BR/Firefox_OS/Developing_Firefox_OS/Customizing_the_b2g.sh_script">Personalizando o script b2g.sh</a></li> - <li><a href="https://developer.mozilla.org/en-US/Firefox_OS/Developing_Firefox_OS/Porting">Portando o Firefox OS</a></li> - </ol> - </li> - <li><a href="https://developer.mozilla.org/pt-BR/Firefox_OS/Developing_Gaia">Desenvolvendo no Gaia</a> - <ol> - <li><strong><a href="https://developer.mozilla.org/en-US/Firefox_OS/Developing_Gaia">Desenvolvendo no Gaia - Visão Geral</a></strong></li> - <li><a href="https://developer.mozilla.org/pt-BR/Firefox_OS/Developing_Gaia/Running_the_Gaia_codebase">Executando o codebase do Gaia</a></li> - <li><a href="https://developer.mozilla.org/pt-BR/Firefox_OS/Developing_Gaia/Understanding_the_Gaia_codebase">Entendendo o codebase do Gaia</a></li> - <li><a href="https://developer.mozilla.org/pt-BR/Firefox_OS/Developing_Gaia/Making_Gaia_code_changes">Alterando o código do Gaia</a></li> - <li><a href="https://developer.mozilla.org/pt-BR/Firefox_OS/Developing_Gaia/Test_Gaia_code_changes">Testando as alterações no Gaia</a></li> - <li><a href="https://developer.mozilla.org/pt-BR/Firefox_OS/Developing_Gaia/Submitting_a_Gaia_patch">Submetendo uma correção no Gaia</a></li> - <li><a href="https://developer.mozilla.org/pt-BR/Firefox_OS/Platform/Gaia/Build_System_Primer">Compilação primária do Sistema Gaia</a></li> - <li><a href="https://developer.mozilla.org/pt-BR/Firefox_OS/Developing_Gaia/Customizing_build-time_apps">Alterando os aplicativos empacotados durante a compilação da imagem</a></li> - <li><a href="https://developer.mozilla.org/pt-BR/Firefox_OS/Developing_Firefox_OS/Market_customizations_guide">Guia de customizaçao de imagem do Firefox OS</a></li> - <li><a href="https://developer.mozilla.org/pt-BR/Firefox_OS/Developing_Firefox_OS/Personalizando_teclado_aplicativos_FirefoxOS">Personalizando o teclado nos aplicativos Firefox OS</a></li> - <li><a href="https://developer.mozilla.org/pt-BR/Firefox_OS/Developing_Firefox_OS/Localizando_Firefox_OS">Localizando o Firefox OS</a></li> - <li><a href="https://developer.mozilla.org/pt-BR/Firefox_OS/Developing_Gaia/make_options_reference">Referência de opções Make</a></li> - <li><a href="https://developer.mozilla.org/pt-BR/Firefox_OS/Developing_Gaia/Gaia_tools_reference">Referência de ferramentas Gaia</a></li> - </ol> - </li> - <li><a href="https://developer.mozilla.org/pt-BR/Firefox_OS/Developing_Firefox_OS" title="A developer's guide to the Firefox OS developer phones available.">Guia de desenvolvimento para celulares</a> - <ol> - <li><strong><a href="https://developer.mozilla.org/pt-BR/Firefox_OS/Developing_Firefox_OS" title="A developer's guide to the Firefox OS developer phones available.">Guia de desenvolvimento para celulares - Visão Geral </a></strong></li> - <li><a href="https://developer.mozilla.org/pt-BR/Firefox_OS/Developing_Firefox_OS/Especificacoes_Telefones">Especificações de telefones e dispositivos</a></li> - <li><a href="https://developer.mozilla.org/pt-BR/Firefox_OS/Developer_phone_guide/Geeksphone">Geeksphone</a></li> - <li><a href="https://developer.mozilla.org/pt-BR/Firefox_OS/Developer_phone_guide/ZTE_OPEN">ZTE OPEN</a></li> - <li><a href="https://developer.mozilla.org/pt-BR/Firefox_OS/Developer_phone_guide/ZTE_OPEN_C">ZTE OPEN C</a></li> - <li><a href="https://developer.mozilla.org/pt-BR/Firefox_OS/Developer_phone_guide/Flame">Flame</a></li> - <li><a href="https://developer.mozilla.org/pt-BR/Firefox_OS/Developing_Firefox_OS/Recursos_dispositivos_Firefox_OS">Recursos gerais dos dispositivos Firefox OS</a></li> - <li><a href="https://developer.mozilla.org/pt-BR/Firefox_OS/Corre%C3%A7%C3%B5es" title="A guide to resolving common problems with Firefox OS.">Correções</a></li> - <li><a href="https://developer.mozilla.org/pt-BR/Firefox_OS/Developing_Firefox_OS/Melhores_praticas_dispositivos_referencia_aberta">Melhores práticas para dispositivos de referência aberta</a></li> - </ol> - </li> - <li><a href="https://developer.mozilla.org/pt-BR/Firefox_OS/Releases" title="This section of the site contains release notes, explaining what new features and changes of significance to developers have landed in each new release of Gaia and Gecko on Firefox OS.">Release notes do Firefox OS</a> - <ol> - <li><strong><a href="https://developer.mozilla.org/pt-BR/Firefox_OS/Releases" title="This section of the site contains release notes, explaining what new features and changes of significance to developers have landed in each new release of Gaia and Gecko on Firefox OS.">Release notes do Firefox OS - Visão Geral</a></strong></li> - <li><a href="https://developer.mozilla.org/pt-BR/Firefox_OS/Releases/Firefox_OS_2.0_for_developers">Firefox OS 2.0 para desenvolvedores</a></li> - <li><a href="https://developer.mozilla.org/pt-BR/Firefox_OS/Releases/1.4">Firefox OS 1.4 </a><a href="https://developer.mozilla.org/en-US/Firefox_OS/Releases/Firefox_OS_2.0_for_developers">para desenvolvedores</a></li> - <li><a href="https://developer.mozilla.org/pt-BR/Firefox_OS/Releases/1.3">Firefox OS 1.3 para desenvolvedores </a></li> - <li><a href="https://developer.mozilla.org/pt-BR/Firefox_OS/Releases/1.2">Firefox OS 1.2 para desenvolvedores</a></li> - <li><a href="https://developer.mozilla.org/pt-BR/Firefox_OS/Releases/1.1">Firefox OS 1.1 para desenvolvedores</a></li> - <li><a href="https://developer.mozilla.org/pt-BR/Firefox_OS/Releases/1.0.1">Firefox OS 1.0.1 para desenvolvedores</a></li> - </ol> - </li> - <li><a href="https://developer.mozilla.org/pt-BR/Firefox_OS/Platform/Automated_testing">Testes Automatizados</a> - <ol> - <li><strong><a href="https://developer.mozilla.org/pt-BR/Firefox_OS/Platform/Automated_testing">Testes - Visão Geral</a></strong></li> - <li><a href="https://developer.mozilla.org/pt-BR/Firefox_OS/Running_Tests_on_Firefox_OS_for_Developers">Testes no Firefox OS: Um guia para desenvolvedores</a></li> - <li><a href="/pt-BR/docs/Mozilla/Firefox_OS/Platform/Automated_testing/gaia-ui-tests" title="/en-US/docs/Mozilla/Firefox_OS/Platform/Testing/gaia-ui-tests">Testes da Interface do Usuário Gaia</a></li> - <li><a href="/pt-BR/docs/Mozilla/Firefox_OS/Platform/Automated_testing/Gaia_integration_tests">Testes de Integração do Gaia</a></li> - <li><a href="/pt-BR/docs/Mozilla/Firefox_OS/Platform/Automated_testing/Gaia_unit_tests" title="/en-US/docs/Mozilla/Firefox_OS/Platform/Testing/Gaia_unit_tests">Testes unitários do Gaia</a></li> - <li><a href="/pt-BR/Firefox_OS/Platform/Automated_testing/Gaia_performance_tests">Testes de performance do Gaia</a></li> - <li><a href="/pt-BR/docs/Mozilla/Firefox_OS/Platform/Automated_testing/Mochitests" title="/en-US/docs/Mozilla/Firefox_OS/Platform/Testing/Mochitests">Mochitests</a></li> - <li><a href="/pt-BR/docs/Mozilla/Firefox_OS/Platform/Automated_testing/Reftests" title="/en-US/docs/Mozilla/Firefox_OS/Platform/Testing/Reftests">Reftests</a></li> - <li><a href="/pt-BR/docs/Marionette/Marionette_JavaScript_Tests" title="/en-US/docs/Marionette/Marionette_JavaScript_Tests">Testes de WebAPI</a></li> - <li><a href="/pt-BR/docs/Mozilla/Firefox_OS/Platform/Automated_testing/XPCShell" title="/en-US/docs/Mozilla/Firefox_OS/Platform/Testing/XPCShell">Testes xpcshell</a></li> - <li><a href="/pt-BR/docs/Mozilla/Firefox_OS/Platform/Automated_testing/endurance_tests" title="/en-US/docs/Mozilla/Firefox_OS/Platform/Automated_testing/endurance_tests">Testes de Resistência</a></li> - <li><a href="/pt-BR/docs/Mozilla/Firefox_OS/Platform/Automated_testing/MTBF_tests">Teste MTBF</a></li> - <li><a href="/pt-BR/docs/Marionette" title="/en-US/docs/Marionette">Marionette</a></li> - <li><a href="/pt-BR/docs/Mozilla/Firefox_OS/TBPL">TBPL</a></li> - <li><a class="external external-icon" href="https://wiki.mozilla.org/QA/Execution/Web_Testing/Automation/Jenkins">Jenkins</a></li> - </ol> - </li> - <li><a href="https://developer.mozilla.org/pt-BR/Firefox_OS/Debugging" title="A guide to debugging both your mobile apps and Firefox OS itself.">Depuração</a> - <ol> - <li><strong><a href="https://developer.mozilla.org/pt-BR/Firefox_OS/Debugging" title="A guide to debugging both your mobile apps and Firefox OS itself.">Depuração - Visão Geral</a></strong></li> - <li><a href="https://developer.mozilla.org/pt-BR/Firefox_OS/Debugging/Configura%C3%A7%C3%B5es_do_Desenvolvedor">Configurações do desenvolvedor para Firefox OS</a></li> - <li><a href="https://developer.mozilla.org/pt-BR/Firefox_OS/Debugging/Conectando_um_dispositivo_com_Firefox_OS_no_desktop">Conectando um dispositivo com Firefox OS no desktop</a></li> - <li><a href="https://developer.mozilla.org/pt-BR/Firefox_OS/Debugging/Configurando">Configurando o Firefox OS para depurar usando as ferramentas de desenvolvimento do Firefox</a></li> - <li><a href="https://developer.mozilla.org/pt-BR/Firefox_OS/Debugging/On-device_console_logging">Log do console no dispositivo</a></li> - <li><a href="https://developer.mozilla.org/pt-BR/Firefox_OS/Debugging/Installing_ADB">Instalando e usando o ADB</a></li> - <li><a href="https://developer.mozilla.org/pt-BR/Firefox_OS/Debugging/Taking_screenshots">Tirar screenshots</a></li> - <li><a href="https://developer.mozilla.org/pt-BR/Firefox_OS/Usando_o_App_Manager" title="A tool that allows you to install open web apps from your computer to a device capable of installing them (such as Firefox OS) - and debug any running app.">Usando o App Manager</a></li> - <li><a href="https://developer.mozilla.org/pt-BR/Firefox_OS/Debugging/Debugging_OOMs">Depurando erros "<em>out of memory</em>" no Firefox OS</a></li> - <li><a href="https://developer.mozilla.org/pt-BR/Firefox_OS/Debugging/Debugging_and_security_testing">Depurando e testando a segurança com Firefox OS</a></li> - <li><a href="https://developer.mozilla.org/pt-BR/Firefox_OS/Debugging/Debugging_B2G_using_gdb">Depurando o B2G usando gdb</a></li> - <li><a href="https://developer.mozilla.org/pt-BR/Firefox_OS/Debugging/Debugging_B2G_using_valgrind">Depurando o B2G usando Valgrind</a></li> - </ol> - </li> -</ol> - -<h3 id="sect2"></h3> diff --git a/files/pt-br/archive/b2g_os/instalando_b2g_pandaboard/index.html b/files/pt-br/archive/b2g_os/instalando_b2g_pandaboard/index.html deleted file mode 100644 index ce9f31b57c..0000000000 --- a/files/pt-br/archive/b2g_os/instalando_b2g_pandaboard/index.html +++ /dev/null @@ -1,36 +0,0 @@ ---- -title: Instalando o B2G no Pandaboard -slug: Archive/B2G_OS/Instalando_B2G_Pandaboard -translation_of: Archive/B2G_OS/Pandaboard ---- -<p>Esse é um guia para configurar o Firefox OS em um Firefox OS on a <a href="http://pandaboard.org/" title="http://pandaboard.org/">PandaBoard</a>, uma placa de desenvolvimento de baixo custo baseada em OMAP 4 utilizada para desenvolvimento de sistemas operacionais móveis.</p> -<p>Essas instruções assumem que você possui disponível um SD Card com no mínimo 4GB de capacidade.</p> -<h2 id="Formatar_o_SD_card">Formatar o SD card</h2> -<p>Formate o SD Card seguindo esse <a href="http://omappedia.org/wiki/Minimal-FS_SD_Configuration" title="http://omappedia.org/wiki/Minimal-FS_SD_Configuration">guia</a></p> -<h2 id="Comunicação_USB">Comunicação USB</h2> -<p>Para habilitar a comunicação USB com o Pandaboard, siga esses <a href="http://source.android.com/source/initializing.html#configuring-usb-access" title="http://source.android.com/source/initializing.html">passos</a>. Para o B2G, você estará seguro se usar "0666" nos privilégios de arquivo.</p> -<p>Verifique que o pandaboard está acessível pela USB do seu computador executando:</p> -<pre>lsusb</pre> -<p>Se você vir algo da Texas Instruments, então você encontrou seu pandaboard, caso contrário, uma dica é desconectar todos os cabos e somente conectar o pandaboard nas portas USB.</p> -<h2 id="Compilando_e_fazendo_o_flashing">Compilando e fazendo o <em>flashing</em></h2> -<p>Após <a href="https://developer.mozilla.org/pt-BR/Firefox_OS/Preparando_sua_primeira_compilacao_do_B2G" title="https://developer-new.mozilla.org/en/Mozilla/Boot_to_Gecko/Preparing_for_your_first_B2G_build">configurar</a> para o pandaboard, nós podemos baixar <a href="https://github.com/mozilla/Negatus" title="https://github.com/mozilla/Negatus">Negatus</a>. Esse é um agente que executa no dispositivo e pode ajudar a automação/depuração. Negatus será compilado automaticamente após executar <code>./build.sh</code>, mas você precisa instalar libnspr (<code>apt-get install libnspr4-dev</code>). Após <a href="https://developer.mozilla.org/pt-BR/Firefox_OS/Construindo_e_instalando_o_Firefox_OS" title="https://developer-new.mozilla.org/en-US/docs/Mozilla/Boot_to_Gecko/Building_and_installing_Boot_to_Gecko">compilar</a> a imagem, a parte complicada é fazer o <em>flashing</em> no seu pandaboard.</p> -<p>Tente seguir as <a href="https://github.com/mozilla-b2g/android-device-panda" title="https://github.com/mozilla-b2g/android-device-panda">instruções</a> até (e inclusive) 'Initial setup, part 3'. Você pode pular 'Initial setup, part 1' que foi realizado durante a etapa de compilação. Após completar 'Initial setup, part 3' retorne aqui.</p> -<p>Agora você pode executar o comando <code>./flash.sh</code> e provavelmente tudo funcionará perfeitametne. Se o script <code>flash.sh</code> tentar apagar a partição userdata, remova essa linha. Isso é um problema conhecido listado nas <a href="https://github.com/mozilla-b2g/android-device-panda" title="https://github.com/mozilla-b2g/android-device-panda">instruções</a>.</p> -<p>Após completar o <em>flashing</em> você precisa reiniciar o dispositivo manualmente desconectando os cabos USB e de alimentação e reconectá-los (o cabo de alimentação deve ser conectado primeiro).</p> -<p>Abaixo algumas soluções de contorno para problemas conhecidos:</p> -<h3 id="waiting_for_OMAP4XXX..._quando_tentar_usar_usbboot">"waiting for OMAP4XXX..." quando tentar usar usbboot</h3> -<p>Se você receber essa mensagem, desconecte todos os cabos do pandaboard. Somente reconecte o pandaboard via USB. Não conecte o cabo de alimentação. Tente agora executar <code>usboot</code> como <code>sudo</code>.</p> -<h3 id="Erros_do_Fastboot_enquanto_executa_o_flashing">Erros do Fastboot enquanto executa o <em>flashing</em></h3> -<p>Se você encontrar problemas ao executar os comandos do fastboot, tente executá-los com privilégio de root (por exemplo: <code>sudo <fastboot command...></code>)</p> -<p>Se o problema for com o pandaboard no modo fastboot (por exemplo: nenhum dispositivo listado ao executar <code>fastboot devices</code>), você pode tentar:</p> -<ol> - <li>Desconectar todas os cabos do pandaboard</li> - <li>Pressione o botão GPIO</li> - <li>Conecte o cabo de alimentação enquanto pressiona o botão GPIO</li> - <li>Observe o LED. Quando começar a piscar, solte o botão GPIO</li> -</ol> -<p>Isso colocará o pandaboard no modo fastboot.</p> -<h3 id="Não_consegue_conectar_ao_adb">Não consegue conectar ao adb</h3> -<p>Se você consegue ver o dispositivo no lsusb mas não consegue no adb ou fastboot e ainda, as luzes estão apagadas, remova o cabo de alimentação e reconecte-o. Se as luzes acenderem, você precisa esperar um tempo (no máximo 30 segundos) para o dispositivo ser reconhecido pelo adb.</p> -<p>Algumas vezes, parece que o <em>flashing</em> ocorreu sem problemas mas na verdade não foi isso que aconteceu. Refaça o procedimento (i.e.: execute <code>./flash.sh</code>) e tente novamente. É recomendado primeiro conectar o cabo de alimentação e depois o cabo USB.</p> -<p>Se mesmo como root receber a seguinte mensagem quando executar <code>adb devices</code>: "<code>??????????? no permision</code>", verifique a seção "Configurando o acesso USB" nesse <a href="http://source.android.com/source/initializing.html" title="http://source.android.com/source/initializing.html">site</a>, corrija ou inclua as regras udev. Não se esqueça de reinicar o serviço udev após as alterações.</p> diff --git a/files/pt-br/archive/b2g_os/instalando_firefoxos_dispositivo_movel/index.html b/files/pt-br/archive/b2g_os/instalando_firefoxos_dispositivo_movel/index.html deleted file mode 100644 index c22b88fd01..0000000000 --- a/files/pt-br/archive/b2g_os/instalando_firefoxos_dispositivo_movel/index.html +++ /dev/null @@ -1,87 +0,0 @@ ---- -title: Instalando o Firefox OS em dispositivo móvel -slug: Archive/B2G_OS/Instalando_FirefoxOS_dispositivo_movel -tags: - - ADB - - Galaxy S2 - - Hamachi - - Helix - - Leo - - fastboot -translation_of: Archive/B2G_OS/Installing_on_a_mobile_device ---- -<p>Uma vez que você compilou o Boot to Gecko para um <a href="/pt-BR/docs/Mozilla/Boot_to_Gecko/Firefox_OS_build_prerequisites">dispositivo móvel suportado</a>, você pode instalá-lo. Esse artigo vai guiá-lo ao longo do processo.</p> -<div class="note"> - <strong>Nota:</strong> A primeira vez que você copia o Sistema Operacional para o telefone (flash), ele <strong>deve</strong> ter o Android 4 (Ice Cream Sandwich) instalado. O processo não funcionará corretamente em outro cenário. Uma vez que você já tenha instalado o B2G, basta atualizá-lo.</div> -<h2 id="Instalando_ADB">Instalando ADB</h2> -<p><strong>No OSX</strong></p> -<p>Se você tem o homebrew no OSX:</p> -<pre>brew install android-platform-tools</pre> -<p>Caso contrário, baixe-o no <em>Android Developer Tools</em> e inclua os caminhos dos exectuáveis no seu PATH.</p> -<p><strong>No Ubuntu</strong></p> -<pre>sudo apt-get install android-tools-adb</pre> -<h2 id="Copiando_o_sistema_para_seu_telefone">Copiando o sistema para seu telefone</h2> -<p>Para copiar tudo para seu telefone, basta executar o script:</p> -<pre>./flash.sh -</pre> -<p>Feito isso, o B2G que você acabou de compilar será copiado no seu dispositivo.</p> -<p>Observe que se você estiver atualizando com alterações significantes do Gaia, você também precisará fazer:</p> -<pre class="brush: bash language-html"><code class="language-html">cd gaia -make reset-gaia</code></pre> -<p>Isso vai apagar todos os dados armazenados no Gaia, mas também apagará configurações e preferências do Gaia obsoletas e em teoria você vai reiniciar um Gaia "limpo". Em teoria porque <code>./flash.sh</code> também faz isso, mas em alguns dispositivos como hamachi <code>./flash.sh</code> fará o <em>flashing</em> de um subconjunto de módulos (<code>./flash.sh -f</code> forçará o <em>flashing</em> de tudo).</p> -<h3 id="Configurando_a_regra_do_udev_para_seu_dispositivo">Configurando a regra do <code>udev</code> para seu dispositivo</h3> -<p>No Linux, se você receber a mensagem:</p> -<pre>< waiting for device ></pre> -<p>isso provavelmente significa que você não incluiu a regra do udev para o dispositivo fastboot, que não é o mesmo que o do adb (embora isso também pode significar que você deve executar <code>./flash.sh</code> com o <code>sudo</code>). Você pode conseguir o ID USB do fabricante executando <code>lsusb</code> agora, mas para o Google, por exemplo, o código é: 18d1, dessa forma, adicionando essa linha no arquivo <code>/etc/udev/rules.d/51-android.rules</code> deve funcionar:</p> -<pre>SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", MODE="0666", GROUP="plugdev"</pre> -<div class="note"> - <strong>Nota:</strong> Se você receber a "esclarecedora" mensagem <code>libusb error "-3"</code> no Linux, isso significa que você precisa acesso de root para ter o acesso necessário ao dispositivo USB. Execute o script novamente usando <code>sudo</code>.</div> -<div class="note"> - <strong>Nota 2</strong>: Se você tem um telefone Unagi ou Geeksphone Keon, você vai precisar de duas linhas como essa, uma para o ID do fabricante original e outra linha para o ID do Google.</div> -<h3 id="Observações_especiais_para_dispositivos_Hamachi_Helix_e_Leo">Observações especiais para dispositivos Hamachi, Helix, e Leo</h3> -<p>Se seu telefone é um hamachi, helix ou leo, o script <code>./flash.sh</code> por padrão somente copiará o Gecko e o Gaia. É recomendado que você copie (flash) com o OEM como uma compliação de base para obter o firmware e as camadas Gonk e depois copiar o Gecko e o Gaia no topo. Se você quiser fazer o flash usando as imgens, existe um flash de substituição que você pode fazer executando <code>./flash.sh -f</code> e usar os arquivos de imagens na cópia para seu dispositivo.</p> -<h3 id="Observações_especiais_para_Samsung_Galaxy_S2">Observações especiais para Samsung Galaxy S2</h3> -<p>Se o seu telefone é o Galaxy S2 e você usa heimdall 1.3.2 (a última versão, use <code>heimdall version</code> para verificar), você pode ver um erro como: "<code>FACTORYFS upload failed!</code>" seguido por "<code>Heimdall flashing failed</code>" e algumas informações adicionais. Na verdade, isso é uma condição de sucesso, então você pode ignorar esse aviso.</p> -<p>Para se livrar desse comportamento estranho, baixe o <a class="link-https" href="https://github.com/Benjamin-Dobell/Heimdall" title="https://github.com/Benjamin-Dobell/Heimdall">código fonte</a> do heimdall, voltando para a verão 1.3.1 ("<code>git checkout fbbed42c1e5719cc7a4dceeba098981f19f37c06</code>"), então compile-a de acordo com as instruções do arquivo <code>README</code>, ao instalar a versão o erro irá desaparecer. Portanto, isso não é estritamente necessário.</p> -<p>Todas as versões do heimdall não conseguem copiar (flash) um arquivo system.img maior quem 100MB. Execute:</p> -<pre>ls -l ./out/target/product/galaxys2/system.img -</pre> -<p>para verificar o tamanho do arquivo. Se for maior que 100MB use o canal do IRB para pedir ajuda, existe maneiras de se fazer isso em duas etapas.</p> -<h2 id="Etapa_adicional_para_Samsung_Galaxy_S2">Etapa adicional para Samsung Galaxy S2</h2> -<p>Se você está copiando no Galaxy S2, existe uma etapa adicional a ser seguida. Gaia não é copiado automaticamente pelo <code>flash.sh</code> script, então será necessário executar:</p> -<pre>./flash.sh gaia -</pre> -<h2 id="Copiando_partições_específicas_para_os_telefones_fastboot">Copiando partições específicas para os telefones <em>fastboot</em></h2> -<p>Você pode copiar partições específicas para telefones fastboot (You can flash specific partitions to <em>fastboot</em> phones (ou seja, qualquer outro telefone que não o Samsung Galaxy S2). Por exemplo:</p> -<pre class="language-html">./flash.sh system -./flash.sh boot -./flash.sh user -</pre> -<p><strong>Aviso</strong>: o comando <code>./flash.sh user</code> pode apagar dados específicos do usuário (contatos, etc).</p> -<h2 id="Alterando_módulos_específicos">Alterando módulos específicos</h2> -<p>Você pode alterar componentes específicos do B2G indicando seus nomes quando executar o script <code>./flash.sh</code>. Por exemplo:</p> -<pre>./flash.sh gaia -./flash.sh gecko -</pre> -<p>Para alterar somente uma aplicação você pode utilizar a variável de ambiente <code>BUILD_APP_NAME</code>:</p> -<pre>BUILD_APP_NAME=calendar ./flash.sh gaia</pre> -<p>Se o seu telefone não for usado para desenvolvimento (você não estiver interessado em testar aplicativos e/ou otimizações), você pode alterar o Gaia usando:</p> -<pre>VARIANT=user ./flash.sh gaia</pre> -<h2 id="Próximos_passos">Próximos passos</h2> -<p>Nesse ponto, seu telefone deve rodar Boot to Gecko! É hora de experimentar, <a href="/pt-BR/docs/Mozilla/Boot_to_Gecko/Application_development" title="en-US/docs/Mozilla/Firefox_OS/Application_development">escreva algum código</a>, <a href="/pt-BR/docs/Mozilla/Firefox_OS/Platform/Automated_testing" title="en-US/docs/Mozilla/Firefox_OS/Platform/Testing">teste</a>, or <a href="/pt-BR/docs/Mozilla/Firefox_OS/Debugging" title="en-US/docs/Mozilla/Firefox_OS/Debugging">faça alguma depuração</a>!</p> -<div class="note"> - <strong>Nota:</strong> Uma dica útil: se a sua compilação B2G inicar uma tela de bloqueio requisitando um código para desbloquear o telefone, o código padrão é 0000.</div> -<h2 class="note" id="Resolução_de_problemas">Resolução de problemas</h2> -<p>Algumas dicas se seu dispositivo não funcionar extamente após instalar o B2G ou alterar para uma nova versão.</p> -<h3 class="note" id="Se_a_IU_Interface_do_Usuário_não_inicia">Se a IU (Interface do Usuário não inicia)</h3> -<p>Se você atualizou seu telefone e a interface do usuário não inciou, você pode <em>resetá-lo</em> para limpar as configurações desatualizadas. Isso pode trazê-lo de volta à vida, mas pode apagar dados específicos do usuário (contatos, etc). Aqui está:</p> -<pre>cd gaia -make reset-gaia -</pre> -<h3 class="note" id="Se_você_deseje_alterar_do_modo_desenvolvedor_para_modo_produção">Se você deseje alterar do modo desenvolvedor para modo produção</h3> -<pre>cd gaia -make reset-gaia PRODUCTION=1</pre> -<pre class="language-html">1</pre> -<p><strong>Aviso</strong>: <code>reset-gaia</code> pode apagar dados específicos do usuário (contatos, etc).</p> -<h3 class="note" id="Mensagem_de_erro_image_is_too_large_na_execução_do_script_.flash.sh">Mensagem de erro "image is too large" na execução do script <code>./flash.sh</code></h3> -<p>Isso pode significar que você precisa ter acesso de <em>root</em> antes de copiar o sistema operacional (flash). Como o b2g precisa escrever na partição root, seu telefone precisa estar com acesso de root para instalá-lo.</p> diff --git a/files/pt-br/archive/b2g_os/introduction/index.html b/files/pt-br/archive/b2g_os/introduction/index.html deleted file mode 100644 index da80cb4e4d..0000000000 --- a/files/pt-br/archive/b2g_os/introduction/index.html +++ /dev/null @@ -1,84 +0,0 @@ ---- -title: Introdução ao Firefox OS -slug: Archive/B2G_OS/Introduction -translation_of: Archive/B2G_OS/Introduction ---- -<div class="summary"> -<p>Firefox OS está prestes a ultrapassar os limites do que é possível com a Web no celular, permitindo novos segmentos de usuários entrar na rede com seu primeiro smartphone. Seu um sistema operacional móvel de código aberto baseado em Linux, padrões abertos da web e tecnologia Gecko da Mozilla que proporciona uma reinvenção do que plataformas móveis pode ser.</p> - -<p>Com a introdução de novas WebAPIs capazes de acessar funcionalidades de hardware e que oferecem no smartphone uma experiência de usuário intuitiva e elegante a Mozilla acredita que a Web apresentará grandes oportunidades para desenvolvedores encontrar novos nichos com excelentes produtos.</p> -</div> - -<h2 id="Público-alvo">Público-alvo</h2> - -<p>Esse conjunto de documentos é direcionado principalmente a desenvolvedores web e de plataformas que querem aprender como o Firefox OS funciona, como contribuir para o projeto e como construir suas próprias versões personalizadas do software bem como instalá-las nos dispositivos. Para aqueles que desejam criar e distribuir seus próprios aplicativos web, <a href="/pt-BR/docs/Apps">Central de Aplicativos</a> e <a href="https://developer.mozilla.org/pt-BR/docs/Mozilla/Marketplace">Firefox Marketplace</a> são bons lugares para visitar.</p> - -<h2 id="A_promessa_básica_do_Firefox_OS">A promessa básica do Firefox OS</h2> - -<p>Para desenvolvedores web e de plataforma a parte mais importante para se entender é que toda a interface do usuário é um aplicativo Web, que é capaz de exibir e executar outros aplicativos Web. Quaisquer modificações feitas na interface do usuário e nos aplicativos criados para rodar em Firefox OS vão envolver tecnologias web padrão, embora com maior acesso ao hardware e serviços do dispositivo móvel.</p> - -<p>Sob a perspectiva de produto, o Firefox OS é uma marca da Mozilla e suporta serviços no topo do Boot to Gecko (B2G), que é o codinome da engenharia do sistema operacional. A interface do usuário do Firefox OS é chamada de Gaia, e inclui os aplicativos padrões e funções do sistema.</p> - -<p>Para saber mais sobre a arquitetura da plataforma, verifique o <a href="https://developer.mozilla.org/pt-BR/docs/Mozilla/Firefox_OS/Platform">guia da Plataforma</a>.</p> - -<h2 id="Planos_atuais_e_futuros">Planos atuais e futuros</h2> - -<p>A versão 2.0 do Firefox OS está atualmente em desenvolvimento, com a versão 1.3/1.4 perto de sua versão estável. Há muitos telefones disponíveis, em modelos para consumidor como para desenvolvedores. Para saber mais sobre nossos lançamentos, veja:</p> - -<ul> - <li>Firefox OS<a href="https://developer.mozilla.org/pt-BR/docs/Mozilla/Firefox_OS/Releases"> release notes</a>: O que é suportado em cada versão</li> - <li><a href="/pt-BR/docs/Mozilla/Boot_to_Gecko/Boot_to_Gecko_developer_phone_guide">Guia de desenvolvimento</a>: Quais telefones estão disponíveis</li> - <li><a href="https://wiki.mozilla.org/B2G/Roadmap">B2G roadmap</a>: Veja a direção do Projeto Firefox OS</li> -</ul> - -<h3 id="Ciclo_de_lançamento">Ciclo de lançamento</h3> - -<p>Desde o Firefox OS 1.2, o ciclo de lançamento de versões do Firefox OS está alinhado o mais perto possível com o ciclo de lançamento do Gecko e Firefox Desktop (6 semanas). Uma nova versão do Firefox OS é lançada a cada três meses, assim teremos um lançamento do Firefox OS a cada dois lançamentos do Gecko (o núcleo do navegador Firefox).</p> - -<p>Por exemplo, o Gecko 30 estará incluiso no Firefox OS 1.4 (pulando o Gecko 29), e o Gecko 32 estará incluso no Firefox 2.0 (era 1.5), pulando o Gecko 31.</p> - -<div class="note"> -<p><strong>Nota</strong>: Use nosso <a href="https://wiki.mozilla.org/RapidRelease/Calendar">calendário de lançamento</a> para verificar as versões correspondentes entre Firefox OS e Gecko / Firefox Desktop, e veja <a href="https://wiki.mozilla.org/Release_Management/FirefoxOS/Release_Milestones">Firefox OS Release Milestones</a> para maiores informações de como nossos lançamentos são gerenciados.</p> -</div> - -<h2 id="A_comunidade">A comunidade</h2> - -<p>Boot to Gecko e Gaia são desenvolvidos por times de engenheiros da Mozilla juntamente com uma grande comunidade de software livre e voluntários da Mozilla.Para registar bugs, utilize nosso sistema Bugzilla, registrando os bugs em <a href="https://bugzilla.mozilla.org/describecomponents.cgi?product=Firefox%20OS">componentes Firefox OS</a>. Se você não está certo em qual componente você dever registrar o bug, fique a vontade para perguntar.</p> - -<div class="note"> -<p><strong>Nota</strong>: Se você tiver uma dúvida sobre uma parte específica do código fonte do B2G/Gaia (por exemplo um aplicativo Gaia), você pode encontrar detalhes de contato mais específicos sobre a nossa página <a href="https://wiki.mozilla.org/Modules/FirefoxOS">Firefox Modules page</a>.</p> -</div> - -<h2 id="Compilando_o_sistema_operacional">Compilando o sistema operacional</h2> - -<p>O sistema operacional B2G é baseado no motor de renderização da Mozilla, o <a href="https://developer.mozilla.org/pt-BR/docs/Mozilla/Gecko">Gecko</a> que roda sobre um kernel do Linux e um userspace de Hardware Abstraction layer (HAL) chamado <a href="https://developer.mozilla.org/pt-BR/docs/Mozilla/Firefox_OS/Platform/Gonk">Gonk</a>. O Gecko que tratamos aqui é basicamente o mesmo Gecko usado no Firefox para Android, Windows, Mac OS X, etc. Gonk é basicamente um outro alvo de portabilidade do Gecko.</p> - -<p>Para aprender como construir e instalar o Firefox OS, consulte nosso guia em <a href="https://developer.mozilla.org/pt-BR/docs/Mozilla/Firefox_OS/Construindo_e_instalando_o_Firefox_OS">Compilando e Instalando Firefox OS</a>. Você pode encontrar <a href="https://github.com/mozilla-b2g/B2G">o código fonte do B2G no Github</a>.</p> - -<h2 id="Contribuindo_com_o_Gaia">Contribuindo com o Gaia</h2> - -<p>Para contribuir, você não precisa muito mais que um sólido conhecimento de desenvolvimento web. Para aprender mais sobre o Gaia consulte nosso <a href="https://developer.mozilla.org/pt-BR/docs/Mozilla/Firefox_OS/Developing_Firefox_OS/Guia_rapido_desenvolvimento_Gaia">Guia rápido para desenvolvimento Gaia</a>.</p> - -<p>Existe disponível um grande número de ferramentas úteis para depurar o Gaia e outras aplicações web rodando no Firefox OS. Para aprender essas e muito mais, consulte nosso guia para <a href="https://developer.mozilla.org/pt-BR/docs/Mozilla/Firefox_OS/Platform/Gaia/Hacking">Modificar o Gaia</a>.</p> - -<h2 id="Desenvolvendo_aplicações_para_Firefox_OS">Desenvolvendo aplicações para Firefox OS</h2> - -<p>As aplicações para o Firefox OS são desenvolvidas utilizando-se tecnologias padrões web — HTML, CSS, JavaScript, etc. — então se você é um desenvolvedor web você tem mais do que precisa. Existem algumas poucas APIs JavaScript especiais que permitem você acessar o hardware do dispositivo e alguns recursos chave (como câmera, giroscópio, sensor de luz, contatos, alarmes do sistema e notificações), que são bem documentados nas nossas páginas <a href="https://developer.mozilla.org/pt-BR/Apps">Aplicativos</a> e <a href="https://developer.mozilla.org/pt-BR/docs/Web">Plataforma Web</a>.</p> - -<div class="note"> -<p><strong>Note</strong>: Se você é um novato no desenvolvimento de aplicativos open Web/Firefox OS apps, ou se quer saber as diferenças entre aplicativos web e páginas web tradicionais, o melhor lugar para começar é <a href="https://developer.mozilla.org/en-US/Apps/Quickstart">apps Quickstart guide</a>.</p> -</div> - -<h3 id="Suportando_diversas_versões_do_Firefox_OS">Suportando diversas versões do Firefox OS</h3> - -<p>Observe que ao desenvolver aplicativos para o Firefox OS, você precisa ter em mente quais versões de plataforma estão disponíveis para os usuários (veja a lista de <a href="https://developer.mozilla.org/pt-BR/Firefox_OS/Developer_phone_guide/Phone_specs#Firefox_OS_phones_available">telefones disponíveis</a>). Lembre-se que atualizações de sistemas operacionais móveis não são iguais a uma atualização de um software de desktop — usuários dependem dos provedores e dos fabricantes de telefones para fazer a atualização dos seus aparelhos. Portanto, é necessário desenvolver aplicações que rodem nessas versões. Como um exemplo, o <em>Flexbox multiline</em> não funciona em versões do Firefox OS menores que 1.3, assim você deve usar um layout mais simples ou prover uma alternativa para versões anteriores.</p> - -<p>Esse problema deve ser superado em breve, a medida que mais dispositivos Firefox OS surjam equipados com novas versões do Sistema Operacional.</p> - -<div class="warning"> -<p>A pataforma base recomendada para desenvolvimento é <a href="https://developer.mozilla.org/en-US/Firefox_OS/Releases/1.1">Firefox 1.1</a>.</p> -</div> - -<div class="note"> -<p><strong>Nota</strong>: <a href="https://developer.mozilla.org/pt-BR/docs/Web">As páginas de referências</a> no MDN possuem informações sobre o navegador e plataforma, e você ainda ponde encontrar informação sobre tecnologias específicas para o desenvolvimento de aplicativos nas <a href="https://developer.mozilla.org/pt-BR/Apps/Refer%C3%AAncia">Referências sobre API para aplicativos</a>.</p> -</div> diff --git a/files/pt-br/archive/b2g_os/modifying_hosts_file/index.html b/files/pt-br/archive/b2g_os/modifying_hosts_file/index.html deleted file mode 100644 index 3c7148b25d..0000000000 --- a/files/pt-br/archive/b2g_os/modifying_hosts_file/index.html +++ /dev/null @@ -1,37 +0,0 @@ ---- -title: Modificando o arquivo hosts -slug: Archive/B2G_OS/modifying_hosts_file -tags: - - Android - - B2G - - Firefox OS -translation_of: Archive/B2G_OS/Developing_Firefox_OS/modifying_hosts_file ---- -<p>Em alguns momentos é necessário editar o arquivo hosts em sua maquina, por causa de um ataque, para bloquear conexões indesejadas, para redirecionar requisições para IPs especificos, entre outros. Esse artigo explica como modificar o arquivo hosts do seu telefone Firefox OS. O arquivo está localizado dentro do diretório <code>/system/etc</code> no Linux, e simplesmente <code>etc/</code> nas novas versões do Mac OSX.</p> -<h2 id="Preparando_seu_telefone">Preparando seu telefone</h2> -<p>No aparelho, vá para <a href="https://developer.mozilla.org/pt-BR/Firefox_OS/Debugging/Developer_settings#Painel_do_Desenvolvedor">Painel de configurações de desenvolvedor</a> e marque:</p> -<ul> - <li>"Depuração Remota" (No Firefox OS 1.4 ou posterior, selecione "ADB e Devtools")</li> - <li>"Console Habilitado"</li> -</ul> -<p>Conecte seu celular no computador.</p> -<p>A partir desse ponto os passos para modificar o arquivo hosts são os mesmos usados para o Android. Os desenvolvedores Android irão facilmente realizar a configuração.</p> -<h2 id="Passos_no_terminal">Passos no terminal</h2> -<p>Abra a janela do terminal.</p> -<ol> - <li>Remonte a partição <code>/system</code> do dispositivo para obter as permissões de leitura / escrita<br> - <code>adb remount</code></li> - <li>Pegue o arquivo hosts no seu computador<br> - <code>adb pull /system/etc/hosts /tmp</code></li> - <li>Modifique o arquivo hosts em <code>/tmp/hosts</code> conforme a necessidade e salve o arquivo, por exemplo:<br> - <pre>127.0.0.1 localhost -ip.to.re.direct hostName</pre> - </li> - <li>Envie o arquivo hosts modificado para o dispositivo<br> - <code>adb push /tmp/hosts /system/etc/hosts</code></li> -</ol> -<p>Pronto!</p> -<div class="note"> - <p><strong>Nota</strong>: Quer aprender mais sobre ADB? Consulte a <a href="http://developer.android.com/tools/help/adb.html" title="http://developer.android.com/tools/help/adb.html">Documentação ADB</a>.</p> -</div> -<h3 id="sect1"> </h3> diff --git a/files/pt-br/archive/b2g_os/phone_guide/especificacoes_telefones/index.html b/files/pt-br/archive/b2g_os/phone_guide/especificacoes_telefones/index.html deleted file mode 100644 index 0639a70e00..0000000000 --- a/files/pt-br/archive/b2g_os/phone_guide/especificacoes_telefones/index.html +++ /dev/null @@ -1,532 +0,0 @@ ---- -title: Especificações de Telefones e Dispositivos -slug: Archive/B2G_OS/Phone_guide/Especificacoes_Telefones -translation_of: Archive/B2G_OS/Phone_guide/Phone_specs ---- -<div class="boxed translate-display"> - <div class="summary"> - <p><span class="seoSummary">Esse artigo fornece informações sobre dispositivos Firefox OS incluindo especificações de hardware, codinomes, versões padrão do Firefox OS instaladas e mais.</span></p> - </div> - <h2 id="Telefones_Firefox_OS_disponíveis"><a name="Firefox_OS_phones_available"></a>Telefones Firefox OS disponíveis</h2> - <p>Durante os vários estágios de desenvolvimento nós tivemos vários telefones. Agora com as versões comerciais, temos diversos modelos de diversos fabricantes parceiros.</p> - <div class="note"> - <p><strong>Nota</strong>: Para informação dos telefones disponíveis comercialmente, incluindo os países e em quais operadoras, consulte nossa página <a href="http://www.mozilla.org/pt-BR/firefox/os/devices/">Encontre um Firefox OS perto de você</a>.</p> - </div> - <table class="standard-table"> - <thead> - <tr> - <th scope="col"> - <p>Nome / Codinome</p> - </th> - <th scope="col">Data de lançamento</th> - <th scope="col">Versão FxOS<br> - inicial</th> - <th scope="col">FxOS Release notes</th> - <th scope="col">Disponibilidade</th> - <th scope="col">Comentários</th> - </tr> - </thead> - <tbody> - <tr> - <td> - <p>Alcatel One Touch Fire</p> - <p><em>hamachi, buri</em></p> - </td> - <td>12 de julho de 2013</td> - <td>1.0.1</td> - <td><a href="https://developer.mozilla.org/pt-BR/Firefox_OS/Releases/1.0.1">Desenv</a><br> - <a href="https://support.mozilla.org/pt-BR/kb/whats-new-firefox-os-v11">Consumidor</a></td> - <td>Disponível</td> - <td>Disponível ao público no Brasil, Uruguai, Itália, Alemanha, Grécia, Sérvia, Hungria e Polônia.<br> - Disponível em revendedores no eBay.</td> - </tr> - <tr> - <td><em>otoro, unagi, inari</em></td> - <td> </td> - <td> </td> - <td> </td> - <td> </td> - <td>Telefone "de prateleira" da ZTE usado para desenvolvimento antes do ZTE Open.</td> - </tr> - <tr> - <td> - <p><a href="https://developer.mozilla.org/pt-BR/docs/Mozilla/Firefox_OS/Developer_phone_guide/ZTE_OPEN">ZTE Open</a></p> - <p><em>ikura</em></p> - </td> - <td>2 de julho de 2013</td> - <td>1.0.1</td> - <td><a href="https://developer.mozilla.org/pt-BR/Firefox_OS/Releases/1.0.1">Desenv</a><br> - <a href="https://support.mozilla.org/pt-BR/kb/whats-new-firefox-os-v11">Consumidor</a></td> - <td>Disponível</td> - <td> - <p>Similar ao inari, publicamente disponível no eBay.</p> - </td> - </tr> - <tr> - <td> - <p>LG Fireweb</p> - <p>leo</p> - </td> - <td>24 de outubro de 2013</td> - <td>1.1</td> - <td><a href="https://developer.mozilla.org/pt-BR/Firefox_OS/Releases/1.1">Desenv</a><br> - <a href="http://www.mozilla.org/pt-BR/firefox/os/notes/1.1/">Consumidor</a></td> - <td>Disponívell</td> - <td>Disponível ao público no Brasil.</td> - </tr> - <tr> - <td> - <p><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Firefox_OS/Developer_phone_guide/Updating_and_Tweaking_Geeksphone">Geeksphone Keon</a></p> - <p><em>keon</em></p> - </td> - <td>24 de abril de 2013</td> - <td>1.0.1</td> - <td><a href="https://developer.mozilla.org/pt-BR/Firefox_OS/Releases/1.0.1">Desenv</a><br> - <a href="https://support.mozilla.org/pt-BR/kb/whats-new-firefox-os-v11">Consumidor</a></td> - <td>Fora de estoque</td> - <td>Dispositivo apenas para desenvolvedores.</td> - </tr> - <tr> - <td> - <p><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Firefox_OS/Developer_phone_guide/Updating_and_Tweaking_Geeksphone">Geeksphone Peak</a></p> - <p><em>peak</em></p> - </td> - <td>24 de abril de 2013</td> - <td>1.0.1</td> - <td><a href="https://developer.mozilla.org/pt-BR/Firefox_OS/Releases/1.0.1">Desenv</a><br> - <a href="https://support.mozilla.org/pt-BR/kb/whats-new-firefox-os-v11">Consumidor</a></td> - <td>Fora de estoque</td> - <td>Seu codinome era "twist" Dispositivo apenas para desenvolvedores.</td> - </tr> - <tr> - <td><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Firefox_OS/Developer_phone_guide/Updating_and_Tweaking_Geeksphone">Geeksphone Peak+</a></td> - <td>-</td> - <td>-</td> - <td>-</td> - <td>-</td> - <td><a href="http://www.geeksphone.com/?wysija-page=1&controller=email&action=view&email_id=15">cancelado</a></td> - </tr> - <tr> - <td>Geeksphone Revolution</td> - <td>4 de março de 2014</td> - <td>1.3pre</td> - <td>-</td> - <td>Disponível</td> - <td><a href="http://shop.geeksphone.com/moviles/9-revolution.html">Disponível online</a></td> - </tr> - <tr> - <td> - <p>LG Google Nexus 4</p> - <p><em>nexus-4</em></p> - </td> - <td> </td> - <td> </td> - <td> </td> - <td> </td> - <td>Experimental. Não suportado. Nem pela LG nem pela Google. Hardware discontinuado.</td> - </tr> - <tr> - <td> - <p><a href="https://developer.mozilla.org/pt-BR/Firefox_OS/Developer_phone_guide/Flame">Flame</a></p> - <p><em>"the reference device"</em></p> - </td> - <td>Final de abril de 2014</td> - <td>1.3</td> - <td> </td> - <td>Disponível em breve</td> - <td> </td> - </tr> - <tr> - <td> - <p>Spreadturn</p> - <p><em>tarako</em></p> - </td> - <td>Final do segundo trimestre de 2014?</td> - <td> </td> - <td> </td> - <td>Disponível em breve</td> - <td> </td> - </tr> - <tr> - <td>ZTE Open C</td> - <td>13 de maio de 2014</td> - <td>1.3</td> - <td>-</td> - <td>Disponível</td> - <td><a href="http://www.ebay.co.uk/itm/eBay-exclusive-ZTE-OPEN-C-Latest-Firefox-OS-Dual-Core-3G-Unlocked-Smartphone-/171301269724?pt=UK_Mobile_Phones&hash=item27e259f0dc">Disponível para pré-venda</a></td> - </tr> - </tbody> - </table> - <h2 id="Firefox_OS_por_versão">Firefox OS por versão</h2> - <table class="standard-table"> - <thead> - <tr> - <th scope="col">Versão</th> - <th scope="col">Data de lançamento com os recursos completos (Feature Complete date)</th> - <th scope="col">Lançamento para parceiros (Release To Partner<br> - - RTP)</th> - <th scope="col">Codinome</th> - <th scope="col">Versão Gecko</th> - <th scope="col"> - <p>Acertos de segurança incluídos</p> - </th> - <th scope="col"> - <p>Release notes</p> - </th> - </tr> - </thead> - <tbody> - <tr> - <td>1.0</td> - <td>22 de dezembro de 2012</td> - <td>21 de fevereiro de 2013</td> - <td>TEF</td> - <td>Gecko 18</td> - <td>Gecko 18</td> - <td> </td> - </tr> - <tr> - <td>1.0.1</td> - <td>15 de janeiro de 2013</td> - <td>6 de september de 2013</td> - <td>Shira</td> - <td>Gecko 18</td> - <td>Gecko 20</td> - <td><a href="https://developer.mozilla.org/pt-BR/Firefox_OS/Releases/1.0.1">Desenvolvedor</a><br> - <a href="https://support.mozilla.org/pt-BR/kb/whats-new-firefox-os-v11">Consumidor</a></td> - </tr> - <tr> - <td>1.1</td> - <td>29 de março de 2013</td> - <td>9 de outubro de 2013</td> - <td>Leo</td> - <td>Gecko 18+ (new <a href="http://en.wikipedia.org/wiki/Application_programming_interface" title="Application programming interface">APIs</a>)</td> - <td>Gecko 23</td> - <td><a href="https://developer.mozilla.org/pt-BR/Firefox_OS/Releases/1.1">Desenvolvedor</a><br> - <a href="http://www.mozilla.org/pt-BR/firefox/os/notes/1.1/">Consumidor</a></td> - </tr> - <tr> - <td>1.1.1</td> - <td> </td> - <td>A ser definido</td> - <td>HD</td> - <td>Mesmo do 1.1.0 com WVGA</td> - <td>Gecko 23</td> - <td> </td> - </tr> - <tr> - <td>1.2</td> - <td>15 de setembro de 2013</td> - <td>9 de dezembro de 2013</td> - <td>Koi</td> - <td>Gecko 26<sup><a href="http://en.wikipedia.org/wiki/Firefox_OS#cite_note-39"><span>[</span>39<span>]</span></a></sup></td> - <td>Gecko 26</td> - <td><a href="https://developer.mozilla.org/pt-BR/Firefox_OS/Releases/1.2">Desenvolvedor</a><br> - <a href="http://www.mozilla.org/pt-BR/firefox/os/notes/1.2/">Consumidor</a></td> - </tr> - <tr> - <td>1.3</td> - <td>9 de dezembro de 2013</td> - <td>A ser definido</td> - <td> </td> - <td>Gecko 28</td> - <td>Gecko 28</td> - <td><a href="https://developer.mozilla.org/pt-BR/Firefox_OS/Releases/1.3">Desenvolvedor</a><br> - <a href="http://www.mozilla.org/pt-BR/firefox/os/notes/1.3/">Consumidor</a></td> - </tr> - <tr> - <td>1.4</td> - <td>17 de março de 2014</td> - <td>A ser definido</td> - <td> </td> - <td>Gecko 30</td> - <td>Gecko 30</td> - <td><a href="https://developer.mozilla.org/pt-BR/Firefox_OS/Releases/1.4">Desenvolvedor</a><br> - Consumidor (A ser definido)</td> - </tr> - <tr> - <td>2.0</td> - <td>A definir</td> - <td>A definir</td> - <td> </td> - <td>Gecko 32</td> - <td>Gecko 32</td> - <td><a href="https://developer.mozilla.org/en-US/Firefox_OS/Releases/2.0">Desenvolvedor</a><br> - Consumidor (A ser definido)</td> - </tr> - </tbody> - </table> - <h2 id="Especificações_dos_dispositivos">Especificações dos dispositivos</h2> - <p>Note that there are some cases where there is an upcoming device that has not been announced but where we are able to share the code-name of the device and (some of) the capabilities of the device. DO NOT put extra info down for these devices unless Andreas Gal or someone else equally able to bless the public disclosure of the information has disclosed it.</p> - <table class="standard-table"> - <thead> - <tr> - <th scope="col">Nome / Codinome</th> - <th scope="col">Versões</th> - <th scope="col">Resolução</th> - <th scope="col">Tela (em pol.)</th> - <th scope="col">CPU</th> - <th scope="col">Camera(s), Mpx</th> - <th scope="col">RAM</th> - <th scope="col">ROM</th> - <th scope="col">Armazenamento</th> - <th scope="col">Bateria (mAh)</th> - </tr> - </thead> - <tbody> - <tr> - <td> - <p>Alcatel One Touch Fire</p> - <p><em>hamachi, buri</em></p> - </td> - <td>v1.0.1 / v1.1</td> - <td> - <p>320 x 480<br> - PX=1</p> - </td> - <td>3.5</td> - <td> - <p>Qualcomm Snapdragon S1 MSM7227A 1 GHz</p> - </td> - <td>Traseira: 3.2</td> - <td>256MB</td> - <td>512MB</td> - <td>/data: provavelmente o mesmo que inari; <a href="http://www.alcatelonetouch.com/global-en/products/smartphones/one_touch_fire.html#.Unyg5UOVt1M">especificação diz</a> 160MB "end user memory"<br> - Provavelmente sem armazenamento embutido, cartão MicroSD (até 32GB) requerido</td> - <td>1400</td> - </tr> - <tr> - <td> - <p>ZTE Open / variants</p> - <p><em>ikura</em></p> - </td> - <td>v1.0.1 (conforme envio)</td> - <td>320 x 480<br> - PX=1</td> - <td>3.5</td> - <td>Qualcomm Snapdragon S1 MSM7225A 800 MHz</td> - <td>Traseira: 3.2</td> - <td>256MB</td> - <td>512MB</td> - <td> - <p>/data: 152M<br> - Sem armazenamento embutido, cartão MicroSD requerido</p> - </td> - <td>1200</td> - </tr> - <tr> - <td> - <p>LG Fireweb</p> - <p><em>leo</em></p> - </td> - <td>v1.1</td> - <td>320 x 480<br> - PX=1</td> - <td>4</td> - <td>Qualcomm Snapdragon S1 MSM7227A 1 GHz</td> - <td>Traseira: 5</td> - <td>512MB</td> - <td>4GB</td> - <td> - <p>/data: 1007.90M<br> - Com armazenamento embutido, tamanho incerto. possivelmente 3.7G. (em um cálculo rápido: /sys/devices/platform/msm_sdcc.3/mmc_host/mmc0/mmc0:0001/block/mmcblk0/block temos 7733248, assumindo um tamanho de bloco com 512 bytes, temos 3.7G)</p> - </td> - <td>1540</td> - </tr> - <tr> - <td> - <p><a href="https://developer.mozilla.org/pt-BR/docs/Mozilla/Firefox_OS/Developer_phone_guide/Updating_and_Tweaking_Geeksphone">Geeksphone Keon</a></p> - <p><em>keon</em></p> - </td> - <td> - <p>v1.0.1 - nightly<br> - <a href="https://developer.mozilla.org/pt-BR/docs/">downloads aqui</a></p> - </td> - <td>320 x 480<br> - PX=1</td> - <td>3.5</td> - <td>Qualcomm Snapdragon S1 7225AB 1 GHz</td> - <td>Traseira: 3</td> - <td>512MB</td> - <td>4GB</td> - <td> - <p>/data: 1.5G<br> - Armazenamento embutido: 1023.4M</p> - </td> - <td>1580</td> - </tr> - <tr> - <td> - <p><a href="https://developer.mozilla.org/pt-BR/docs/Mozilla/Firefox_OS/Developer_phone_guide/Updating_and_Tweaking_Geeksphone">Geeksphone Peak</a></p> - <p>peak</p> - </td> - <td>v1.0.1 - nightly<br> - <a href="https://developer.mozilla.org/pt-BR/docs/">downloads aqui</a></td> - <td>540 x 960<br> - PX=1.5</td> - <td>4.3</td> - <td>Qualcomm Snapdragon S4 8225 1.2 GHz dual-core</td> - <td> - <p>Frontal: 2<br> - Traseira: 8</p> - </td> - <td>512MB</td> - <td>4GB</td> - <td>/data: 1.5G<br> - Armazenamento embutido: 1023.4M</td> - <td>1800</td> - </tr> - <tr> - <td>Geeksphone Revolution</td> - <td>v1.3pre (as shipped)</td> - <td>540 x 960 PX=1.5</td> - <td>4.7</td> - <td><span class="mini-text">Dual-core Intel® Atom™ processador Z2560<span class="mini-text"> até 1.6GHz</span></span></td> - <td> - <p>Frontal: 1.3 Traseira: 8</p> - </td> - <td>1GB</td> - <td>4GB</td> - <td> - <p>/data: 2G<br> - Armazenamento embutido: 2.5GB</p> - </td> - <td>2000</td> - </tr> - <tr> - <td> - <p>Nexus 4</p> - <p><em>nexus-4</em></p> - </td> - <td>v1.3 - nightly</td> - <td>768 x 1280<br> - 720p</td> - <td>4.7</td> - <td> - <p>Qualcomm<br> - <span class="mw-redirect">Snapdragon S4 Pro</span><br> - 1.5 GHz quad-core</p> - </td> - <td>Traseira: 8</td> - <td>2GB</td> - <td>8 ou 16GB</td> - <td>Tudo existe em uma grande sopa, não possui armazenamento externo (MicroSD). O tamanho da sopa varia baseado no modelo que você possui.</td> - <td>2100</td> - </tr> - <tr> - <td> - <p><a href="https://wiki.mozilla.org/FirefoxOS/TCP">Foxconn InFocus</a></p> - <p><em>flatfish</em></p> - </td> - <td> </td> - <td>1280 x 800</td> - <td>10</td> - <td>Allwinner A31, Cortex A7 Quad-Core 1.0 GHz</td> - <td> - <p>Frontal: 2<br> - Traseira: 5</p> - </td> - <td>2GB</td> - <td>16GB</td> - <td> </td> - <td>7000</td> - </tr> - <tr> - <td> - <p><a href="https://wiki.mozilla.org/Platform/2013-11-05">some phone thing</a></p> - <p><em>fugu</em></p> - </td> - <td>v1.2f (branch) <a href="https://groups.google.com/d/msg/mozilla.dev.b2g/JKAu9UNjBf8/9zj5Y3m6518J">per</a></td> - <td>320 x 480</td> - <td> </td> - <td> </td> - <td> </td> - <td>256MB</td> - <td> </td> - <td> </td> - <td> </td> - </tr> - <tr> - <td> - <p><a href="https://wiki.mozilla.org/FirefoxOS/Tarako">Spreadtrum SC6821</a></p> - <p><em>tarako</em></p> - </td> - <td>v1.3 <a href="https://wiki.mozilla.org/FirefoxOS/Tarako">per</a></td> - <td>HVGA<br> - 320 x 480</td> - <td>3.5</td> - <td>Cortex A5 1GHz</td> - <td>0.3 (somente traseira?)</td> - <td>128MB (zram)</td> - <td>2GB NAND flash (externa) + 1GB LPDDR1 (embutida)</td> - <td>cartão 32GB micro SD</td> - <td>1100</td> - </tr> - <tr> - <td> - <p><a href="https://hacks.mozilla.org/2014/02/open-applications-tcp/">VIA Vixen</a></p> - <p><em><a href="https://wiki.mozilla.org/Platform/2014-03-18">direcionado pela comunidade</a></em><em><a href="https://wiki.mozilla.org/Platform/2014-03-18"> customização do flatfish</a>?</em></p> - </td> - <td> </td> - <td>1024 x 600</td> - <td>7</td> - <td>Cortex-A9 Dual Core 1.2 GHz</td> - <td> - <p>Frontal: 0.3 Traseira: 2<br> - </p> - </td> - <td>1GB</td> - <td>8GB</td> - <td> </td> - <td> </td> - </tr> - <tr> - <td> - <p><a href="https://blog.mozilla.org/press/2014/02/developer-momentum-2/">Flame</a></p> - <p>o "dispositivo de referência"</p> - </td> - <td>v1.3</td> - <td> - <p>FWVGA 854 × 480 PX = 1.5</p> - </td> - <td>4.5 toque capacitivo</td> - <td>Qualcomm Snapdragon 200 MSM8210, 1.2GHZ Processador Dual core</td> - <td>Frontal: 2<br> - Traseira: 5 foco automático com flash</td> - <td>256MB -1GB (ajustável pelo desenvolvedor)</td> - <td>8GB</td> - <td>32GB micro SD card (USB 2.0)</td> - <td>1800</td> - </tr> - <tr> - <td>ZTE Open C</td> - <td>v1.3</td> - <td>854 x 480</td> - <td>4</td> - <td>Qualcomm MSM8210 Snapdragon, 1.2GHZ processador Dual core</td> - <td>Traseira: 3</td> - <td>512MB</td> - <td>4GB</td> - <td>/data: 1G</td> - <td>1400</td> - </tr> - </tbody> - </table> - <p>Explicações das colunas:</p> - <ul> - <li>Resolução: - <ul> - <li>horizontal x vertical</li> - <li>PX=1, PX=1.5, or PX=2 é a configuração GAIA_DEV_PIXELS_PER_PX que deve ser usada para o dispositivo</li> - </ul> - </li> - <li>Armazenamento: - <ul> - <li>"/data" é o armazenamento interno. Onde o IndexedDB e outras coisas vivem. O armazenamento é segregado por aplicativo e não é acessível pelo armazenamento USB. Os dados são potencialmente acessíveis pelo adb dependendo dos privilégios.</li> - <li>DeviceStorage são os locais onde <a href="https://developer.mozilla.org/pt-BR/docs/WebAPI/Device_Storage">a API DeviceStorage</a> pode armazenar coisas. Alguns dispositivos podem ter armazenamento interno (ex. leo), alguns pode ter dispositivos externos de armazenamento em cartões MicroSD, alguns podem ter os dois (ex. leo). Esse armazenamento pode ser acessado por todos os aplicativos bem como pelo usuário através de conexão USB.</li> - <li>Valores que não aparecem arrendondados são reportados pela saída do comando "adb shell df" na coluna "size".</li> - </ul> - </li> - </ul> -</div> -<p> </p> diff --git a/files/pt-br/archive/b2g_os/phone_guide/fairphone/index.html b/files/pt-br/archive/b2g_os/phone_guide/fairphone/index.html deleted file mode 100644 index fb6a38a8b7..0000000000 --- a/files/pt-br/archive/b2g_os/phone_guide/fairphone/index.html +++ /dev/null @@ -1,179 +0,0 @@ ---- -title: Fairphone -slug: Archive/B2G_OS/Phone_guide/Fairphone -translation_of: Archive/B2G_OS/Phone_guide/Fairphone ---- -<div class="warning"> -<p class="western" style="margin-bottom: 0in; line-height: 100%;"><strong>Aviso</strong>: Este dispositivo ainda não executar o Firefox OS ainda, mas este é o objectivo final. Esta página pretende ser um ponto central de informação para a comunidade da coordenação dos trabalhos de portabilidade.</p> - -<p class="western" style="margin-bottom: 0in; line-height: 100%;"> </p> -</div> - -<p class="summary">The <a class="tgwf_green" href="https://www.fairphone.com/fairphone/">Fairphone</a> is a fair-economy smartphone targeting sourcing, production, distribution, self-repairing and recycling of electronics. It's not completely FOSS hardware, but it supports the ideal of giving back at least some hardware control to its users.</p> - -<h2 id="Device_release_information">Device release information</h2> - -<p><a class="tgwf_green" href="https://www.fairphone.com/fairphone/">Fairphone</a> has released two devices so far — the Fairphone v1<em> FP1</em> (first edition) was released on Dec 30, 2013, and<em> the FP1U</em> (second batch) was released on Jul 22, 2014<span id="cke_bm_97E" style="display: none;"> </span>. Sales have now come to an end for the v1 device. The Fairphone v2<em> </em>was released on Jul 16, 2015 and can be ordered from <a class="tgwf_green" href="https://www.fairphone.com/fairphone/">Fairphone</a>.</p> - -<table class="standard-table" style="width: 100%;"> - <thead> - <tr> - <th scope="col">Fairphone v1</th> - <th scope="col">Fairphone v2</th> - </tr> - </thead> - <tbody> - <tr> - <td style="width: 50%;"><img alt="A picture of the Fairphone v1 device, showing lockscreen and the back. Credit : Fairphone. CC BY-NC-SA." src="https://mdn.mozillademos.org/files/10253/FairPhone-v1-Screen-2.jpg" style="float: left; height: 376px; margin-bottom: 20px; margin-right: 20px; width: 100%;"></td> - <td style="width: 50%;"><img alt="Fairphone 2 Black Matte" id="big-image" src="http://shop.fairphone.com/media/catalog/product/cache/2/image/445x/602f0fa2c1f0d1ba5e241f914e856ff9/f/r/front-and-back.png" style="height: 100px; width: 100%;" title="Fairphone 2 Black Matte"></td> - </tr> - </tbody> -</table> - -<div class="note"> -<p><strong>Note</strong>: You can follow the progress on the <a class="tgwf_green" href="https://www.fairphone.com/blog">Fairphone blog</a>, and check out the announced <a class="tgwf_green" href="http://www.fairphone.com/2014/11/04/next-chapter-in-fairphones-strategy-outlook-for-2015/">strategy</a> and <a class="tgwf_green" href="https://www.fairphone.com/2015/02/12/our-approach-to-developing-the-next-fairphone/">approach</a>.</p> -</div> - -<h2 id="Porting_Firefox_OS_to_the_Fairphone_device">Porting Firefox OS to the Fairphone device</h2> - -<p>This has not yet happened, but it is being worked on.</p> - -<h3 id="Actual_issues">Actual issues</h3> - -<p><strong>Fairphone v1</strong> <a class="tgwf_green" href="https://www.fairphone.com/2014/12/09/our-approach-to-software-and-ongoing-support-for-the-first-fairphones/">couldn't upgrade</a> its customized Android OS because the chipset manufacturer didn't release an updated baseband source code or build.</p> - -<p>At Mobile World Congress 2015, Fairphone made a call for possible alternative operating systems available for the upcoming Fairphone v2. Out of these conversations came the action of beginning the work to port Firefox OS over to the Fairphone. A Firefox OS port may be a way to save the Fairphone v1, as well as <strong>avoiding such issues for future phone generations</strong>. Mozilla's collaboration with the three major chipset vendors would also help.</p> - -<p><strong>Fairphone v2</strong> is <a class="tgwf_green" href="https://www.fairphone.com/2015/09/23/opening-up-fairphone-to-the-community-open-source-fairphone-2/">open source-oriented</a> with community contributions to Fairphone OS source code / build.</p> - -<h3 id="Progress_solution">Progress & solution</h3> - -<p>Right now the porting project is just starting (ignition phase). We hope that the porting work could start soon — watch this space for more information.</p> - -<h3 id="Contributing">Contributing</h3> - -<p>If you are interested in finding out more or contributing to the porting effort, the following links will get you where you need to go.</p> - -<h4 id="Project_tools">Project tools</h4> - -<ul> - <li><a class="tgwf_grey" href="https://wiki.mozilla.org/FirefoxOS/Fairphone">Porting project management on WikiMo</a>: Essential resources to follow the progress of porting Firefox OS to the Fairphone.</li> - <li><a class="tgwf_grey" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1139642">Bug 1139642 on BMO</a>: Any bug directly related to porting Firefox OS to the Fairphone will be marked as blocking this meta bug.</li> - <li><a class="tgwf_grey" href="http://code.fairphone.com/">The complete build environment for Fairphone OS on Fairphone 2</a>: The full open source code, including all the tools and binary blobs that will allow users to build their own Fairphone OS.</li> - <li><a href="http://forum.xda-developers.com/fairphone/help/porting-firefox-os-to-fp1-t2983959">XDA Firefox OS community porting to the Fairphone</a> device project page: Technical progress on the porting.</li> -</ul> - -<h4 id="Firefox_OS">Firefox OS</h4> - -<p>If you are a porting developer and want to know more about Firefox OS:</p> - -<ul> - <li><a href="/en-US/Firefox_OS/Platform">Platform</a>: An overview of the architecture of the Firefox OS platform, including the <a href="/en-US/Firefox_OS/Platform/Gaia">Gaia</a>, <a href="/en-US/docs/Mozilla/Gecko">Gecko</a> and <a href="/en-US/Firefox_OS/Platform/Gonk">Gonk</a> components.</li> - <li><a href="/en-US/Firefox_OS/Developing_Firefox_OS/Porting">Porting Firefox OS</a>: A basic guide to how to go about porting the operating system to new devices.</li> - <li><a href="/en-US/Firefox_OS/Building_and_installing_Firefox_OS">Building and installing Firefox OS</a>: Information on creating your own Firefox OS build and installing it on a device.</li> - <li><a href="/en-US/Firefox_OS/Developing_Firefox_OS">Developing Firefox OS</a>: For how you can help to develop the low level platform areas.</li> -</ul> - -<h4 id="XDA_porting_community">XDA porting community</h4> - -<p>If you are a Firefox OS developer and want to know more about porting an OS:</p> - -<ul> - <li>For a quick reference, see this <a class="tgwf_grey" href="https://dietrich.makes.org/thimble/LTIxMTM3MzIwOTY=/firefox-os-ports-on-xda-developers">summary of the various Firefox OS forums and ports on XDA Developers</a></li> - <li><a class="tgwf_grey" href="http://forum.xda-developers.com/firefox-os/general">XDA Firefox OS community</a></li> - <li><a class="tgwf_grey" href="http://forum.xda-developers.com/fairphone">XDA Fairphone community forum</a></li> - <li><a class="tgwf_grey" href="http://forum.xda-developers.com/wiki/Fairphone">XDA Fairphone wiki page</a></li> - <li><a class="tgwf_grey" href="http://forum.xda-developers.com/showthread.php?t=2362172">XDA Fairphone thread</a></li> -</ul> - -<h2 id="Device_specifications">Device specifications</h2> - -<h3 id="Fairphone_v1">Fairphone v1</h3> - -<p>You can find a detailed list of specifications on the <a class="tgwf_grey" href="https://fairphone.zendesk.com/hc/en-us/articles/201064718-What-are-the-technical-specifications-of-the-Fairphone-1-">Fairphone specs page</a>.</p> - -<h4 id="Network">Network</h4> - -<ul> - <li><strong>2G/GSM</strong>: 850/900/1800/1900MHz</li> - <li><strong>3G/WCDMA</strong>: 900/2100MHz</li> - <li><strong>Wifi:</strong> 2.4GHz 802.11b/g/n</li> - <li><strong>Bluetooth:</strong> v2.1 + EDR / v3.0 + HS</li> - <li><strong>SAR rating</strong>: Head: 0.329 W/kg; Body: 0.693 W/kg</li> -</ul> - -<h4 id="Hardware">Hardware</h4> - -<ul> - <li><strong>Mediatek MT6589M (1st edition) / MT6589 @ 1.2 Ghz (second batch) Chipset</strong>: Quad-core CPU with full HD video playback and recording</li> - <li><strong>Front camera</strong>: 1.3 MP for photos and video calls</li> - <li><strong>Rear camera</strong>: 8MP AF (stabilization + image sensor) for photos and video calls</li> - <li><strong>Screen</strong>: 4.3 inches qHD IPS (960x540 pixels) (256 ppi); Capacitive touch-screen</li> - <li><strong>Internal storage:</strong> 16 GB</li> - <li><strong>RAM</strong>: 1GB</li> - <li><strong>MicroSD</strong>: Adds up to 64 GB of additional memory</li> - <li><strong>Headset jack</strong>: From a variety of formats</li> - <li><strong>Gelocation:</strong> A-GPS, plus an E-Compass and Gyroscope</li> - <li><strong>Dual SIM</strong>: One SIM: 3G; one SIM: 2G. Standard format miniSIM card</li> - <li><strong>Data & charge port</strong>: Standard MicroUSB 2.0, Type B; USB 2.0</li> - <li><strong>Battery:</strong> 2000mAh (replaceable battery)</li> -</ul> - -<h4 id="Software">Software</h4> - -<ul> - <li><strong>Operating system:</strong> Based on Android 4.2 (Jelly Bean), with a special Fairphone interface</li> - <li><strong>Root access</strong>: Immediate superuser access</li> -</ul> - -<h3 id="Fairphone_v2">Fairphone v2</h3> - -<p>You can find a detailed list of specifications on the <a class="tgwf_grey" href="https://fairphone.zendesk.com/hc/en-us/articles/203478389-What-technical-specifications-does-the-Fairphone-2-have-">Fairphone specs page</a>.</p> - -<h4 id="Network_2">Network</h4> - -<ul> - <li><strong>2G/GSM</strong>: 850/900/1800/1900MHz</li> - <li><strong>3G/WCDMA</strong>: 900/2100MHz</li> - <li><strong>4G LTE: </strong>900/1900/2100MHz Cat. 4 150 Mbps download — Cat. 4 50 Mbps upload</li> - <li><strong>Wifi:</strong> 2.4GHz 802.11b/g/n/ac up to 433 Mbps</li> - <li><strong>Bluetooth:</strong> v4.0 LE</li> - <li><strong>SAR rating</strong>: Head: 0.288 W/kg; Body: 0.426 W/kg</li> -</ul> - -<h4 id="Hardware_2">Hardware</h4> - -<ul> - <li><strong>Qualcomm MSM8974AB</strong> <strong>@ 2.26 Ghz Chipset</strong>: Quad-core CPU Krait 400 with Qualcomm Adreno 330 GPU and full HD video playback and recording</li> - <li><strong>Front camera</strong>: 2 MP Omnivision OV2685 for photos and video calls</li> - <li><strong>Rear camera</strong>: 8MP AF Omnivision OV8865 (stabilization + image sensor) for photos and video calls</li> - <li><strong>Screen</strong>: 5 inch Full HD (Gorilla Glass 3 — 0.7mm thick) LCD TFT/IPS (446 ppi); Capacitive touch-screen</li> - <li><strong>Internal storage:</strong> 32 GB eMMC5</li> - <li><strong>RAM: </strong>2GB LPDDR3</li> - <li><strong>MicroSD</strong>: SDHC, SDXC, UHS up to 64 GB of additional memory</li> - <li><strong>Headset jack</strong>: From a variety of formats; CTIA standard</li> - <li><strong>Gelocation:</strong> A-GPS, plus an E-Compass and Gyroscope</li> - <li><strong>Dual SIM</strong>: Dual-SIM Micro-SIM (3FF), Dual-Standby (DSDS)</li> - <li><strong>Data & charge port</strong>: Standard MicroUSB 2.0 with OTG support</li> - <li><strong>Battery:</strong> 2420mAh (replaceable battery)</li> -</ul> - -<h4 id="Software_2">Software</h4> - -<ul> - <li><strong>Operating system: </strong>Based on Android 5.1 (Lollipop), with a special Fairphone interface</li> - <li><strong>Root access</strong>: No root access</li> -</ul> - -<h2 id="See_also">See also</h2> - -<ul> - <li><a class="tgwf_green" href="https://www.fairphone.com/roadmap/">Fairphone roadmap</a></li> - <li>Self repair guides on <a class="tgwf_grey" href="https://www.ifixit.com/Device/Fairphone">iFixit</a> and <a class="tgwf_green" href="https://www.fairphone.com/support">Fairphone's support</a> website</li> - <li><a class="tgwf_grey" href="https://autonome.wordpress.com/2013/01/15/firefox-os-devices-and-dark-matter/">Firefox OS porting list to other devices</a> — could be an inspiring source to find or transpose solutions</li> - <li><a href="/en-US/docs/Mozilla/Firefox_OS/Phone_guide/Orange_Klif">The Orange Klif MDN page</a> — This is the first Firefox OS smartphone running the same MediaTech chipset as Fairphone v1</li> - <li><a class="tgwf_grey" href="https://github.com/Kwamecorp/Fairphone">Fairphone v1 OS</a> source code on the <a class="tgwf_grey" href="http://www.kwamecorp.com/">kwamecorp</a>'s Github page</li> - <li> - <p><a class="tgwf_grey" href="https://fairphone.zendesk.com/hc/en-us/articles/201576803-Fairphone-FP1-Source-Code-Packages">Fairphone v1 Source Code Packages</a> on the Fairphone website</p> - </li> -</ul> diff --git a/files/pt-br/archive/b2g_os/phone_guide/flame/index.html b/files/pt-br/archive/b2g_os/phone_guide/flame/index.html deleted file mode 100644 index e0839bd33d..0000000000 --- a/files/pt-br/archive/b2g_os/phone_guide/flame/index.html +++ /dev/null @@ -1,209 +0,0 @@ ---- -title: Flame -slug: Archive/B2G_OS/Phone_guide/Flame -tags: - - B2G - - Firefox OS - - Flame - - Telefone de desenvolvedor - - dispositivo de referencia(2) - - dispositivo de referência -translation_of: Archive/B2G_OS/Phone_guide/Flame ---- -<div class="note"> -<p>Atualizações do seu Flame: Nós encorajamos a se juntar a seguinte lista de e-mail para receber atualizações periódicas sobre o desenvolvimento e outras notícias que afetam o Flame:: <a href="https://mail.mozilla.org/listinfo/flamenews">https://mail.mozilla.org/listinfo/flamenews</a></p> -</div> - -<p><img alt="A picture of the Flame device, showing the Firefox OS homescreen containing several app icons." src="https://mdn.mozillademos.org/files/8373/flame-dev-hud.png" style="float: left; margin-bottom: 20px; margin-right: 50px; width: 25%;"></p> - -<h2 id="Available_to_order" style="text-indent: 100%; white-space: nowrap; overflow: hidden; margin: 0; height: 0;">Available to order</h2> - -<p><span class="seoSummary">O Flame, um aperelho referência de desenvolvimento, é um marco para o Firefox OS. Seu hardware oferece um conjunto representativo de funcionalidades — incluindo o display FWVGA e um processador dual-core — que ajudará os desenvolvedores a criar excelentes conteúdos para oferecer uma boa experiência do usuário. Uma única plataforma de hardware também facilita a equipe de testes, que poderá endereçar problemas de hardware sem se preocupar com bugs específicos para determinado modelo.</span></p> - -<p>Se você tem seu telefone em mãos e gostaria de começar a usá-lo, desenvolver e distribuir aplicações para ele ou contribuir para o desenvolvimento da plataforma Firefox, os seguintes links trarão tudo o que você precisa:</p> - -<ul> - <li><a href="/pt-BR/Firefox_OS">Firefox OS</a>: Para criar suas próprias imagens Firefox OS e contribuir para os projetos B2G e Gaia.</li> - <li><a href="/pt-BR/Apps">App Center</a>: Para desenvovler aplicativos open eweb compatíveis com o Firefox OS.</li> - <li><a href="/pt-BR/Marketplace">Marketplace</a>: Para informações de como publicar e distribuir aplicativos.</li> - <li><a href="https://marketplace.firefox.com/">Firefox Marketplace</a>: O melhor local para encontrar e publicar novos aplicativos Firefox OS.</li> -</ul> - -<p>Se você gostaria de adquirir um telefone ou saber mais informações sobre como usá-lo, veja abaixo:</p> - -<h2 id="Adquirindo_um_telefone">Adquirindo um telefone</h2> - -<p>Nosso parceiro está disponibilizando esse telefone em pré-venda no everbuying.com, pelo preço de US$170, incluído o frete (custo do aparelho de US$ 145 e US$ 25 de frete, taxas de alfândega podem ser incluídas dependendo do país de destino). O disposiivo tem o bootloader e a operadora desbloqueados e utiliza um rádio GMS+UMTS quad-band que permite funcionar com um grande número de operadoras.</p> - -<p><a href="http://www.everbuying.com/product549652.html">Compre o seu Flame agora!</a></p> - -<div class="note"> -<p><strong>Note</strong>: Outra opção para ter seu Flame é participar do nosso <a href="https://hacks.mozilla.org/2014/05/build-your-next-app-with-a-flame/">Flames for Apps scheme</a>, destinado a desenvolvedores experientes de aplicativos HTML5 que desejem portar seus aplicativos no Firefox OS.</p> -</div> - -<h2 id="Atualizando_o_software_do_Flame">Atualizando o software do Flame</h2> - -<p>Nós temos dois canais principais de lançamentos de versões do Firefox OS para o Flame:</p> - -<ul> - <li>O primeiro é o nosso canal de lançamentos. O Flame possui esse canal e receberá atualizações "over-the-air" para as novas versões "major", ou seja, o Flame atualizará para das versões 1.3 para 2.0, 2.1, etc.</li> - <li>O segundo canal é o nosso canal Nightly. Uma vez feito um flashing desse canal as próximas atualizações são feitas "over-the-air" numa frequência diária.</li> -</ul> - -<div class="note"> -<p><strong>Nota</strong>: Usuários Windows precisarão instalar um driver para habilitar a comunicação via USB com o telefone. Veja como fazer isso na seção {{ anch("Windows")}} abaixo. Usuários do Linux precisam incluir uma regra no udev, veja a seção <a href="#Linux_Mac">Linux e Mac</a> abaixo.</p> -</div> - -<p>Enquanto nossos parceiros trabalho na solução final de armazenamento para as imagens de software, você pode baixar os arquivos de recuperação e as ferramentas nos seguintes locais no Onedrive:</p> - -<ul> - <li><a href="http://1drv.ms/1rCB954">Base image v123.zip</a>: Esse arquivo contem a imagem básica do Firefox OS 1.3 para o Flame. Para instalá-la, descompacte-a e execute o script.</li> - <li><a href="http://1drv.ms/1rCASz2">Base image v123.exe</a>: Um executável Windows que contem a imagem básica do Firefox OS 1.3 do Flame. Para instalá-la, execute o programa em um sistema Windows.</li> -</ul> - -<p>Você também pode compilar suas próprias imagens e instalá-las no Flame. Veja o artigo <a href="https://developer.mozilla.org/pt-BR/Firefox_OS/Construindo_e_instalando_o_Firefox_OS">Compilando e Instalando o Firefox OS</a>.</p> - -<h3 id="Atualizando_seu_Flame_com_uma_imagem_nightly">Atualizando seu Flame com uma imagem nightly</h3> - -<p>Para atualizar seu telefone você precisará do <a href="https://developer.mozilla.org/pt-BR/Firefox_OS/Debugging/Installing_ADB">ADB</a> e também deve certificar-se de ativar a depuração remota nas <a href="https://developer.mozilla.org/pt-BR/Firefox_OS/Debugging/Developer_settings#Remote_debugging">Configurações do desenvolvedor</a>.</p> - -<p>Antes de atualizar seu telefone com uma imagem Nightly, você deve fazer um flash com a última imagem base para certificar-se que o software básico está atualizado. Baixe a imagem base nos locais abaixo e:</p> - -<ul> - <li>No Windows simplesmente rode o executável</li> - <li>No Linux / OSX execute o script flash.sh.</li> -</ul> - -<p>A seguir, baixe as imagens nightly que você encontra em <a href="http://ftp.mozilla.org/pub/mozilla.org/b2g/nightly/">http://ftp.mozilla.org/pub/mozilla.org/b2g/nightly/</a>. Provavelmente você também vai querer alguma dessas imagens:</p> - -<p>Imagens de produção (incluindo localizações)</p> - -<ul> - <li><a href="http://ftp.mozilla.org/pub/mozilla.org/b2g/nightly/latest-mozilla-central-flame/">Última imagem master</a> (atualmente 2.1)</li> - <li><a href="http://ftp.mozilla.org/pub/mozilla.org/b2g/nightly/latest-mozilla-b2g32_v2_0-flame-eng/">Última imagem da v2.0</a></li> - <li><a href="http://ftp.mozilla.org/pub/mozilla.org/b2g/nightly/latest-mozilla-b2g30_v1_4-flame-eng/">Última imagem da v1.4</a></li> -</ul> - -<p>Imagens de Engenharia (com aplicativos de testes e somente com pseudo-localizações)</p> - -<ul> - <li><a href="http://ftp.mozilla.org/pub/mozilla.org/b2g/nightly/latest-mozilla-central-flame-eng/">Última imagem master</a> (atualmente 2.1)</li> - <li><a href="http://ftp.mozilla.org/pub/mozilla.org/b2g/nightly/latest-mozilla-b2g32_v2_0-flame-eng/">Última imagem da v2.0</a></li> - <li><a href="http://ftp.mozilla.org/pub/mozilla.org/b2g/nightly/latest-mozilla-b2g30_v1_4-flame-eng/">Última imagem da v1.4</a></li> -</ul> - -<p>Escolha a versão e baixe os arquivos <code>b2g-XX.XX.en-US.android-arm.tar.gz</code> e <code>gaia.zip</code>.</p> - -<p>Para instalar e compilar no seu telefone baixe o <a href="https://github.com/Mozilla-TWQA/B2G-flash-tool/blob/master/shallow_flash.sh">shallow flash script</a> e execute-o da seguinte forma:</p> - -<pre class="brush: bash language-html"><code class="language-html">./shallow_flash.sh -g=/path/to/gaia.zip -G=/path/to/b2g-XX.XX.en-US.android-arm.tar.gz</code></pre> - -<p>Uma vez terminado o telefone deve reiniciar na imagem atualizada e será executada e experiência do primeiro uso.</p> - -<div class="note"> -<p><strong>Nota</strong>:Depois de atualizar o Gecko e o Gaia para a versão Nightly com a imagem base v123, exisitirá uma imcompatibilidade entre os fontes que o Gecko e o Gaia esperam e a que a imagem base fornece. Para consertar isso, baixe <a href="https://people.mozilla.org/%7Emwu/fira-font-update.zip">o pacote de atualização do fonte</a>, extraia em um diretório e execute o scritp flash.sh a partir do diretório onde o conteúdo foi extraído.</p> -</div> - -<h3 id="Modo_Emergency_download">Modo <em>Emergency download </em></h3> - -<p>Quando for feito um <em>flash</em> de uma nova imagem para o telefone e não funcionar, o aparelho pode ficar inacessível e não conseguir entrar no modo <em>fastboot</em>. Se isso acontecer você pode entrar no modo <em>emergency download</em> para recuperá-lo.</p> - -<p>Um cabo USB e a ferramenta <a href="http://1drv.ms/1rCAQHk">Emergency Download Tool</a> serão necessários para execução desse procedimento. (Download em breve)</p> - -<h3 id="Recovery_mode">Recovery mode</h3> - -<p>Você pode entrar em <em>recovery mode</em> para apagar os dados do seu telefone ou atualizar o firmwaer manualmente. Existem dois modos para entrar nesse modo:</p> - -<ul> - <li>Se o software <a href="/pt-BR/Firefox_OS/Debugging/Installing_ADB">ADB</a> estiver disponível, certifique-se de ativar o modo de depuração no seu telefone em <a href="/en-US/Firefox_OS/Debugging/Developer_settings#Remote_debugging">Configurações do desenvolvedor</a>, conecte seu telefone ao computador pelo cabo USB e execute <code>adb reboot recovery</code> na linha de comando.</li> - <li>Se seu telefone estiver desligado, pressione os botões Volume + e Volume - juntos.</li> -</ul> - -<p>Quando estiver em <em>recovery mode</em>, pressione os botões de volume para mover selecionar a opção deseja e use o botão Power para selecioná-la. Não se esqueça de fazer uma cópia de segurança dos dados do seu telefone (Contatos, SMS, etc) e atualizar os aplicativos antes de realizar o procedimento.</p> - -<h2 id="Copiando_aplicativos_para_o_seu_Flame">Copiando aplicativos para o seu Flame</h2> - -<p>A ferramenta App Manager torna fácil tarefas como copiar aplicativos para seu telefone, teste, etc. Instruções completas no artigo <a href="https://developer.mozilla.org/pt-BR/Firefox_OS/Using_the_App_Manager">Usando o App Manager</a>.</p> - -<div class="warning"> -<p><strong>Importanta</strong>: Instruções adicionais para plataformas específicas estão disponíveis abaixo. Verifique-as antes de tentar usar o App Manager.</p> -</div> - -<h3 id="Linux_e_Mac"><a name="Linux_Mac"></a>Linux e Mac</h3> - -<p>Não é necessária nenhuma etapa adicional se você está utilizando Linux ou Mac, embora dependendo da sua distro do Linux, você pode precisar <a href="https://developer.mozilla.org/pt-BR/Firefox_OS/Firefox_OS_build_prerequisites#udev_rule">incluir uma regra udev</a> para o seu telefone, que deve parecer com a linha a seguir:</p> - -<pre class="language-html">SUBSYSTEM=="usb", ATTRS{idVendor}=="05c6", ATTRS{idProduct}=="9025", GROUP="users", MODE="0666"</pre> - -<p>Certifique-se de <code>--reload-rules</code>, então disconecte e reconect seu dispositivo antes de continuar.</p> - -<h3 id="Windows">Windows</h3> - -<p>Para acessar o Flame com o <a href="https://developer.mozilla.org/pt-BR/Firefox_OS/Using_the_App_Manager">App Manager</a>/<a href="https://developer.mozilla.org/pt-BR/Firefox_OS/Debugging/Installing_ADB">ADB</a>, um driver USB é necessário. Siga as instruções abaixo para instalá-lo.</p> - -<h4 id="Baixe_o_drive">Baixe o drive</h4> - -<p><a href="http://1drv.ms/1rCAUqu">Baixe o driver para o Windows aqui</a>. Após baixar, extraia o conteúdo do arquivo compactado em um local adequado do seu disco.</p> - -<div class="note"> -<p><strong>Nota</strong>: O aplicativo Android Debug Bridge (<a href="https://developer.mozilla.org/pt-BR/Firefox_OS/Debugging/Installing_ADB">ADB</a>) deve estar instalado.</p> -</div> - -<h4 id="Instalando_o_Driver_USB">Instalando o Driver USB</h4> - -<p>Nesse ponto, conecte seu dispositivo Flame ao seu computador usando um cabo USB.</p> - -<p>Para instalar o driver, abra o diretório <code>Alcatel_USB_Driver_Q_4.0.0_2013_11_11_noinstall</code> do arquivo ZIP extraído e faça um duplo-clique no executável <code>DriverInstaller.exe</code>. Você deve receber um aviso de que o executável é proveniente de uma fonte desconhecida. Caso isso aconteça, clique em "Sim" e o programa será iniciado.</p> - -<p><img alt="Simple dialog box showing a picture of a phone along with install and uninstall buttons." src="https://mdn.mozillademos.org/files/8079/driver-install.png" style="display: block; height: 523px; margin: 0px auto; width: 358px;"></p> - -<p>Clique no botão <em>Install</em> para instalar o driver.</p> - -<p>Com o driver instalado, você pode verificar se está funcionando abrindo a linha de comando e digitando <code>adb devices</code>. Como resultado você deve ver uma lista com os dispositivos conectados. Algo como isso:</p> - -<pre class="language-html">List of devices attached -3561d02a device</pre> - -<h2 id="Ajuste_da_RAM">Ajuste da RAM</h2> - -<p>Você pode ajustar a capacidade de RAM disponível para verificar como os aplicativos se comportam em aparelhos com menos memória.</p> - -<p>Isso é possível entrando em modo <em>fastboot</em> (o aplicativo fastboot deve estar instalado que está disponível na mesma página SDK que o <a href="/pt-BR/Firefox_OS/Debugging/Installing_ADB">ADB</a>) e executar:</p> - -<pre class="brush: bash">adb reboot bootloader -fastboot oem mem [0|256-1024]</pre> - -<p>“0” indica que a memória deve ser automaticamente detectada e “256-1024” é o número desejado em megabytes. Por exempo, se você deseja ajustar a memória do dispositivo para 512MB, execute o seguinte comando:<code> fastboot oem mem 512</code>.</p> - -<p>É necessário reinicializar o dispositivo para a nova configuração funcionar. Faça isso executando o comando:</p> - -<pre class="brush: bash">fastboot reboot</pre> - -<p>Para voltar à configuração de memória inicial, entre no modo <em>fastboot</em> e execute:</p> - -<pre class="brush: bash">fastboot getvar mem -</pre> - -<h2 id="Especificações_da_rede_e_do_dispositivo">Especificações da rede e do dispositivo</h2> - -<p><strong>Rede</strong>:</p> - -<ul> - <li>802.11b/g/n wireless internet</li> - <li>GSM 850/900/1800/1900MHz</li> - <li>UMTS 850/900/1900/2100MHz</li> -</ul> - -<p><strong>Hardware</strong>: Você pode encontrar as características do hardware na nossa <a href="https://developer.mozilla.org/pt-BR/Firefox_OS/Developer_phone_guide/Phone_specs">página de especificações</a>.</p> - -<p>Recursos adicionais:</p> - -<ul> - <li>NFC</li> - <li>Bluetooth 3.0</li> - <li>Acelerômetro</li> - <li>Rádio FM</li> - <li>Sensor de proximidade</li> - <li>Suporte a GPS W / A-GPS</li> - <li>Sensor de luminosidade do ambiente</li> -</ul> diff --git a/files/pt-br/archive/b2g_os/phone_guide/geeksphone/index.html b/files/pt-br/archive/b2g_os/phone_guide/geeksphone/index.html deleted file mode 100644 index 6e3109f54b..0000000000 --- a/files/pt-br/archive/b2g_os/phone_guide/geeksphone/index.html +++ /dev/null @@ -1,115 +0,0 @@ ---- -title: Geeksphone -slug: Archive/B2G_OS/Phone_guide/Geeksphone -tags: - - Firefox OS - - Gaia - - Geeksphone - - Imagens Firefox OS -translation_of: Archive/B2G_OS/Phone_guide/Geeksphone ---- -<div class="summary"> - <p><span class="seoSummary">Edições de telefones Firefox OS <em>Developer Preview </em>estão disponíveis para a comunidade principalmente através do fabricante <a href="http://www.geeksphone.com/">Geeksphone</a>. Uma vez que é feito para desenvolvedores, nós queremos o encorajar e trabalhar com ele tanto quanto possível! Nesse artigo traremos algumas dicas básicas de como manter seu telefone atualizado e como instalar aplicativos do Gaia.</span></p> -</div> -<div class="note"> - <p><strong>Nota</strong>: Essas instruções servem para o Keon e Peak, mas não necessariamente para o último Geeksphone Revolution.</p> -</div> -<h2 id="Atualizando_o_seu_Geeksphone_com_as_últimas_imagens">Atualizando o seu Geeksphone com as últimas imagens</h2> -<p>Atualizações do Firefox OS podem ser baixadas diretamente do aplicativo Configurações, listadas abaixo da seção de informações do aparelho. O telefone pode ser configurado para verificar atualizações diariamente, semanalmente ou mensalmente. Existe também o botão "Verifique agora". Quando uma atualização está disponível você será perguntado se deseja baixar e instalar a versão mais recente.</p> -<p><img alt="The screen for checking updates on the Firefox OS settings app" src="https://mdn.mozillademos.org/files/6051/checkupate.png" style="width: 318px; height: 478px; display: block; margin: 0px auto;"></p> -<h2 id="Como_fazer_o_Flashing_do_seu_telefone">Como fazer o Flashing do seu telefone</h2> -<p>A equipe da Geeksphone também fornece as últimas imagens estáveis e nightly com arquivos que você pode baixar e fazer o flashing no seu telefone.</p> -<h3 id="Configurando_seu_telefone_e_o_computador">Configurando seu telefone e o computador</h3> -<p><span style="line-height: 1.572;">Antes de tentar fazer o flashing no seu telefone certifique-se de ter configurado como descrito na seção "<span style="line-height: 1.572;">Setting Up the Geeksphone Device</span>" no artigo (em inglês) </span><a href="https://hacks.mozilla.org/2013/05/pushing-firefox-os-apps-to-the-geeksphone/" style="line-height: 1.572;">Pushing Firefox OS Apps to the Geeksphone</a><span style="line-height: 1.572;">. Isso vai assegurar que você pode copiar dados para o seu telefone. Na mesma seção, siga as instruções para certificar-se que o seu computador possua os drivers USB necessários.</span></p> -<div class="note"> - <p><strong>Nota:</strong> Isso é particularmente importante para os computadores com Windows, pois devem estar com os drivers USB corretos.</p> -</div> -<p>As imagens podem ser encontradas no <a href="http://downloads.geeksphone.com/">site da Geeksphone</a>. Nesse site você encontra diversas opções. Selecione a imagem correspondende ao seu modelo e o tipo de imagem que você deseja usar.</p> -<p><img alt="Two phone images side by side, the Geeksphone Keon and Peak, with different software download options below each one." src="https://mdn.mozillademos.org/files/6055/geeksphone-download.png" style="width: 530px; height: 486px; display: block; margin: 0px auto;"></p> -<p>Baixe a imagem para o seu modelo e descompacte em um diretório do seu sistema de arquivos. Ao descompactar você encontrará as imagens e os comandos necessários para fazer o flashing no seu telefone usando Windows, Mac OS ou Linux. Não se esqueça de habilitar a depuração remota no seu telefone. Essa opção está disponível no aplicativo de configuração.</p> -<p><code><strong>Settings</strong> -> <strong>Device information</strong> -> <strong>More information</strong> -> <strong>Developer</strong></code><strong> tab</strong>.</p> -<p>Ceritifique-se que o nível da bateria esteja superior a 50%, uma vez que o aparelho será reiniciado diversas vezes e uma falha por falta de carga na bateria pode ser desastroso.</p> -<p><img alt="Enabling remote debugging on the Firefox OS Settings app" src="https://mdn.mozillademos.org/files/6049/remote-debugging.png" style="width: 320px; height: 480px; display: block; margin: 0px auto;"></p> -<div class="note"> - <p><strong>Nota:</strong> Se seu dispositivo não pode ser encontrado pelo script mesmo estando conectado a porta USB, tente desbloquear o seu telefone e espere que o ícone correspondente à conexão USB apareça na barra do sistema.</p> -</div> -<h3 id="Windows">Windows</h3> -<div class="note"> - <p><strong>Nota:</strong> Você deve precisar instalar drivers USB no Windows. Para instruções de como fazer isso, veja a seção<span style="line-height: 1.572;"> “Setting Up the Geeksphone Device” no artigo (em Inglês) </span><a href="https://hacks.mozilla.org/2013/05/pushing-firefox-os-apps-to-the-geeksphone/" style="line-height: 1.572;">Pushing Firefox OS Apps to the Geeksphone</a><span style="line-height: 1.572;">.</span></p> -</div> -<p>Abra um terminal (Command Prompt) (<code>Iniciar -> digite cmd na caixa de busca -> enter</code> no Windows 7, <code>Tecla Windows + X -> selecione Command Prompt</code> no Windows 8) e vá para o diretório no qual você descompactou o arquivo que baixou do site da Geeksphone. Execute:</p> -<pre class="brush: bash" lang="bash">flash.bat -</pre> -<h3 id="Mac_OS">Mac OS</h3> -<p>Abra um Terminal (<code>Cmd + espaço -> digite terminal -> enter</code>) e vá para o diretório no qual você descompactou o arquivo que baixou do site da Geeksphone e execute:</p> -<pre class="brush: bash" lang="bash">./flash_mac.sh -</pre> -<h3 id="Linux">Linux</h3> -<p>Se estiver utilizando um Keon a partir do Ubuntu inclua as seguintes linhas no arquivo /etc/udev/rules.d/51-android.rules</p> -<div> - <code>SUBSYSTEM=="usb", ATTR{idVendor}=="05c6", ATTR{idProduct}=="8013", MODE="0666"</code></div> -<div> - <code>SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="d00d", MODE="0666"</code></div> -<div> - </div> -<p>Abra um terminal (control-alt-t no Ubuntu) e vá para o diretório no qual você descompactou o arquivo que baixou do site da Geeksphone e execute:</p> -<pre class="brush: bash" lang="bash">./flash.sh -</pre> -<p>Isso deve fazer um flashing da nova imagem no seu telefone. Deverá ser configurado novamente uma vez que todos os dados serão apagados. Se você desejar fazer uma cópia de segurança para restaurá-la após a atualização, siga as instruções em <a href="/pt-BR/Firefox_OS/Firefox_OS_build_prerequisites#Backup_the_phone_system_partition">Faça uma cópia de segurança da partição do sistema</a>.</p> -<h2 id="Se_você_possuir_um_'unagi'_ou_um_outro_dispositivo_de_desenvolvedor_que_não_um_Geeksphone">Se você possuir um 'unagi' ou um outro dispositivo de desenvolvedor que não um Geeksphone</h2> -<p>Se o seu dispositivo não for um Geeksphone, como por exemplo um 'unagi' ou um dispositivo que anteriormente era um Android, você precisa seguir os seguintes passos. Se não for o seu caso, você pode pular para a próxima seção</p> -<p>Você precisa instalar o <strong>adb</strong> e <strong>fastboot</strong>. Esses utiliários podem ser encontrados no Android Developer Toolkit.</p> -<p>Não é necessário instalar o Toolkit completo. Baixe-o que extraia os conteúdos adb e fastboot que podem ser encontrados no diretório /platform-tools/. Eles podem ser copiados para o diretório /usr/bin do seu Linux ou Mac OS, ou copiado para outro diretório desde que seja incluído na sua varíavel de ambiente $PATH.</p> -<p>Se você tentar fazer o flashing do seu dispositivo e tiver outro dispositivo conectado na USB, seu telefone pode não ser reconhecido corretamente pelos utilitários. Se isso acontecer, desconecte os outros dispostivos enquanto faz o flashing.</p> -<h2 id="Alterando_o_Gaia">Alterando o Gaia</h2> -<p>Se você é do tipo que gosta de "catucar" e gostaria de mexer nos aplicativos padrões do Gaia — a Interface do Usuário no Firefox OS, nessa seção nós vamos dar algumas dicas básicas para clonar e alterar os aplicativos do sistema padrões do Gaia. Tenha em mente que a utilização dessas dicas deve ficar por por sua "conta e risco" e pode fazer você ter que utilizar a última seção "Ok, eu travei meu telefone". Antes de iniciar certifique-se de que você tenha instalado o adb e o fastboot no seu sistema. Para verificar, abra um terminal e digite <code>adb devices</code> com o seu telefone conectado. Você deve ver seu telefone listado como um dos dispositivos conectados.</p> -<p>Também deve ser possível executar o fastboot do seu terminal. Ao executá-lo, uma lista de parâmetros deve ser apresentada. Se você não tem o adb ou o fastboot instalado, uma rápida pesquisa na internet vai te retornar diversos tutoriais de como instalá-los. Além desses utilitários você vai precisar do Git. Dê uma olhada nesse <a href="https://help.github.com/articles/set-up-git">guia de configuração</a>. Finalmente certifique-se de que seu telefone está configurado para depuração remota como descrito na seção anterior.</p> -<p>Uma vez que você tenha os pré-requisitos, você pode abrir um terminal, vá para o diretório no qual gostaria de clonar o código fonte do Gaia e digite os seguintes comandos:</p> -<pre class="brush: bash" lang="bash">git clone git://github.com/mozilla-b2g/gaia.git gaia -cd gaia -</pre> -<p>Isso irá clonar o Gaia atual para o seu sistema.</p> -<div class="warning"> - <p>Se você planeja submeter alterações realizadas de volta para o fonte do Gaia, certifique-se de realizar um fork antes de clonar como descrito em <a href="https://developer.mozilla.org/pt-BR/docs/Mozilla/Firefox_OS/Platform/Gaia/Hacking">Modificando o Gaia</a>.</p> -</div> -<p>Atualmente o Geeksphone Keon utiliza o branch v1.0.1 do código do Gaia, assim defina o branch aporpriado usando o seguinte comando antes de fazer qualquer coisa:</p> -<pre class="brush: bash" lang="bash">git checkout -b v1.0.1 origin/v1.0.1 -</pre> -<p>A maioria dos aplicativos do sistema estão armazenados no diretório apps do Gaia. Você pode fazer qualquer alteração nesses aplicativos do Firefox OS que você desejar. Uma vez que fez as alterações, certifique-se que o seu dispositivo está montado adequadamente executando o seguinte comando:</p> -<pre class="brush: bash">adb remount</pre> -<p>A seguir, execute o seguinte comando para copiar os aplicativos modificados para o seu telefone. Esse comando copia todos os aplicativos do sistema para o telefone:</p> -<pre class="brush: bash" lang="bash">B2G_SYSTEM_APPS=1 make install-gaia -</pre> -<p>Se você apenas alterou um dos aplicativos, você pode especificá-lo usando uma sintaxe similar. No exemplo abaixo, somente o aplicativo calendar será copiado para o telefone:</p> -<pre class="brush: bash" lang="bash">APP=calendar B2G_SYSTEM_APPS=1 make install-gaia -</pre> -<p>If you have issues while making the changes, you can reset the phone to default values using either of the following commands:</p> -<pre class="brush: bash" lang="bash">make production -make reset-gaia -</pre> -<div class="note"> - <p><strong>Nota</strong>: Tenha em mente que qualquer dos comandos acima irá limpar todos os seus dados e aplicativos baixados para o telefone. Se você quiser criar uma cópia de segurança para restaurá-la após os procedimentos, você pode seguir as instruções <a href="/pt-BR/Firefox_OS/Firefox_OS_build_prerequisites#Backup_the_phone_system_partition">de como fazer uma cópia de segruança</a>.</p> -</div> -<h2 id="Ok_Eu_travei_meu_telefone">"Ok, Eu travei meu telefone"</h2> -<p>Se durante o processo em que você está modificando o telefone ele não responder você pode recuperá-lo usando o fastboot com um procedimento muito simples. As instruções a seguir ensinam como resetar um Keon, mas outros telefones possuem um processo similar. É necessário também ter instaldo o fastboot e o adb na sua máquina. Tente digitar <code>fastboot</code> e <code>adb</code> na linha de comando se você não tem certeza que os tem.</p> -<ol> - <li>Remova o cabo USB bem como a bateria do seu telefone por 30 segundos.</li> - <li>Recolque a bateria e pressione ao mesmo tempo os botões Volume + e Power por alguns segundos até o sistema de recuperação aparecer.</li> - <li>Reconecte o cabo USB.</li> - <li>Digite na linha de comando: <code>adb reboot bootloader</code>.</li> - <li>Quando o telefone reinicializar e começar a mostrar o logo da Geeksphone, indica que você está no modo fastboot, execute os seguintes comandos a partir da linha de comando no diretório que contém os arquivos img correspondentes à última imagem conforme descrito na primeira seção desse artigo:</li> -</ol> -<pre class="brush: bash" lang="bash">fastboot flash recovery recovery.img -fastboot flash boot boot.img -fastboot flash userdata userdata.img -fastboot flash system system.img -fastboot reboot -</pre> -<p>Esse processo deve recuperar seu telefone. Se não funcionar tente uma segunda vez.</p> -<h2 id="Vá_em_frente!">Vá em frente!</h2> -<p>Nós esperamos que essas instruções sejam úteis para você e gostaríamos que você seja tão feliz com o Firefox OS da mesma forma que nós somos! Fique a vontade para testar o telefone, atualizando-os, alterando ou atualizando os aplicativos Gaia e também se inspirando para criar seus próprios aplicativos Web.</p> -<h2 id="Veja_Também">Veja Também</h2> -<ul> - <li><a href="/pt-BR/Firefox_OS/Developer_phone_guide/Geeksphone/Geeksphone_FAQ">Perguntas frequentes sobre o Geeksphone</a></li> - <li><a href="https://developer.mozilla.org/pt-BR/docs/Web/Apps/Quickstart/Build/Intro_to_open_web_apps">Introdução aos aplicativos abertos para a Web</a></li> -</ul> diff --git a/files/pt-br/archive/b2g_os/phone_guide/geeksphone/perguntas_frequentes_geeksphone/index.html b/files/pt-br/archive/b2g_os/phone_guide/geeksphone/perguntas_frequentes_geeksphone/index.html deleted file mode 100644 index d91e39e418..0000000000 --- a/files/pt-br/archive/b2g_os/phone_guide/geeksphone/perguntas_frequentes_geeksphone/index.html +++ /dev/null @@ -1,257 +0,0 @@ ---- -title: Perguntas Frequentes sobre o Geeksphone -slug: Archive/B2G_OS/Phone_guide/Geeksphone/Perguntas_Frequentes_Geeksphone -tags: - - Firefox OS - - Geeksphone - - Keon - - Peak - - Revolution -translation_of: Archive/B2G_OS/Phone_guide/Geeksphone/Geeksphone_FAQ ---- -<div class="summary"> -<p><span class="seoSummary">Geeksphones são dispositivos de desenvolvimento produzidos pela Geeksphone baseada em Madrid, em conjunto com a Telefonica e a Mozilla. O acesso ao hardware permite aos desenvolvedores testarem as funcionalidades do Firefox OS em um ambiente real com uma rede de telefonia móvel e características de hardware como acelerômetro e câmera que não é fácil de testar no <a href="https://hacks.mozilla.org/2013/03/firefox-os-simulator-previewing-version-3-0/">simulador do Firefox OS</a>. Este artigo de perguntas frequentes o ajudará a responder questões que você possa ter.</span></p> -</div> - -<h2 id="Questões_antes_da_compra">Questões antes da compra</h2> - -<p>Respondendo as questões que você pode ter antes de comprar seu dispositivo Geeksphone.</p> - -<h3 id="A_quem_é_destinado_os_aparelhos_da_Geeksphone">A quem é destinado os aparelhos da Geeksphone?<span id="cke_bm_71C" style="display: none;"> </span></h3> - -<p>Desenvolvedores são o principal alvo dos Geeksphones. Não são dispositivos para serem utilizados pelo público em geral; foram desenhados apenas para testes e experimentações.</p> - -<h3 id="Como_adquirir_um_dispositivo_Geeksphone_Quanto_custa">Como adquirir um dispositivo Geeksphone? Quanto custa?</h3> - -<p>Você pode comprar diretamente na <a href="http://shop.geeksphone.com" title="http://shop.geeksphone.com">loja virtual do Geeksphone</a>. Lá você encontra os preços. See the Geeksphone store for pricing information. Além disso, em algumas situações a Mozilla disponibilizará dispositivos como parte dos esforços de divulgação.</p> - -<h3 id="Os_Geeksphones_são_completamente_desbloqueados">Os Geeksphones são completamente desbloqueados?</h3> - -<p>Sim!</p> - -<h3 id="Em_quais_países_os_Geekphones_estarão_disponíveis">Em quais países os Geekphones estarão disponíveis?</h3> - -<p>Em todos os países. Entretanto, o celular passará pela alfândega do país de destino. Se você tiver qualquer dúvida, contate a alfândega local.</p> - -<h3 id="sect1"> </h3> - -<h3 id="Os_Geeksphones_funcionam_com_qualquer_SIM_card">Os Geeksphones funcionam com qualquer SIM card?</h3> - -<p>Sim.</p> - -<h3 id="Em_quais_países_os_Geeksphones_estão_disponíveis">Em quais países os Geeksphones estão disponíveis?</h3> - -<p>O Geeksphone pode ser enviado para todos os países. Porém depende das regras alfandegárias do país de destino. Se tiver alguma dúvida, entre em contato com a alfândega do seu país.</p> - -<h3 id="Qual_Geeksphone_eu_devo_comprar">Qual Geeksphone eu devo comprar?</h3> - -<p>Atualmente o único Geeksphone disponível é o Revolution - um telefone que vem com o Android, mas que pode ser reformatado com FirefoxOS.<br> - <br> - O Peak tem um <span id="result_box" lang="pt"><span class="hps">processador mais rápido,</span> <span class="hps">uma câmera melhor</span> <span class="hps">e um</span><span>a tela com a resolução melhor que o Keon. </span></span>Por isso, muitos desenvolvedores preferem o Peak em relação ao Keon. <span id="result_box" lang="pt"><span class="hps">No entanto,</span> <span class="hps">o suporte para dispositivos</span> <span class="hps">de alta</span> resolução <span class="hps">ainda</span> <span class="hps">está em implementação</span><span>,</span> <span class="hps">portanto, pode haver</span> <span class="hps">várias falhas</span> <span class="hps">visuais e</span> <span class="hps">bugs.</span></span> O Peak pode ser um dispositivo apropriado se você está disposto a lidar com esses problemas. Uma outra boa escolha se você (i) está interessado em contribuir com o Firefox OS, particularmente na implementação do suporte à alta resolução, (ii) é um desenvolvedor de aplicativos que gostaria de trabalhar com dispositivos high-end que serão vendidos no futuro.</p> - -<h2 id="Especificações_Técnicas">Especificações Técnicas</h2> - -<p><span id="result_box" lang="pt"><span class="hps">Interessado</span> <span class="hps">nas especificações</span> <span class="hps">técnicas dos</span> <span class="hps">Geeksphones</span><span>?</span> <span class="hps">Não procure mais</span><span>!</span></span></p> - -<h3 id="Revolution">Revolution</h3> - -<table class="standard-table"> - <thead> - <tr> - <th scope="col">Componente</th> - <th scope="col">Detalhes</th> - </tr> - </thead> - <tbody> - <tr> - <td>CPU</td> - <td>Intel 1.6ghz dual-core</td> - </tr> - <tr> - <td>Telefone</td> - <td>HSPA/WCDMA: 2100/1900/900/850 MHz<br> - GSM/GPRS/EDGE: 850/900/1800/1900 MHz</td> - </tr> - <tr> - <td>Tela</td> - <td>4.7" IPS LCD Multi-touch (960×540)</td> - </tr> - <tr> - <td>Câmera</td> - <td>8 mp /Flash LED, frontal 1.3mp</td> - </tr> - <tr> - <td>Capacidade da ROM</td> - <td>4 GB</td> - </tr> - <tr> - <td>Capacidade da RAM</td> - <td>1 GB</td> - </tr> - <tr> - <td>Connectividade</td> - <td>MicroSD<br> - MicroUSB<br> - WiFi 802.11 b/g/n<br> - Bluetooth 3.0<br> - GPS, AGPS</td> - </tr> - <tr> - <td>Sensores</td> - <td> - <p>Sensor de luz/proximidade<br> - Acelerômetro, Bússula</p> - </td> - </tr> - <tr> - <td>Bateria</td> - <td>2000 mAh</td> - </tr> - </tbody> -</table> - -<h3 id="Keon">Keon</h3> - -<table class="standard-table"> - <thead> - <tr> - <th scope="col">Componente</th> - <th scope="col">Detalhes</th> - </tr> - </thead> - <tbody> - <tr> - <td>CPU</td> - <td>Qualcomm Snapdragon S1 7225AB (1GHz)</td> - </tr> - <tr> - <td>Telefone</td> - <td>UMTS 2100/1900/900 (3G HSPA)<br> - GSM 850/900/1800/1900 (2G EDGE)</td> - </tr> - <tr> - <td>Tela</td> - <td>3.5" HVGA Multi-touch (320x480 pixels)</td> - </tr> - <tr> - <td>Câmera</td> - <td>3 megapixels</td> - </tr> - <tr> - <td>Capacidade da ROM</td> - <td>4 GB</td> - </tr> - <tr> - <td>Capacidade da RAM</td> - <td>512 MB</td> - </tr> - <tr> - <td>Connectividade</td> - <td>MicroSD<br> - MicroUSB<br> - WiFi 802.11N<br> - Bluetooth 2.1 EDR<br> - FM Radio<br> - GPS</td> - </tr> - <tr> - <td>Sensores</td> - <td>Sensor de luz ambiente<br> - Sensor de proximidade<br> - Acelerômetro</td> - </tr> - <tr> - <td>Bateria</td> - <td>1580 mAh</td> - </tr> - </tbody> -</table> - -<h3 id="Peak">Peak</h3> - -<table class="standard-table"> - <tbody> - <tr> - <th scope="col">Componente</th> - <th scope="col">Detalhes</th> - </tr> - <tr> - <td>CPU</td> - <td>Qualcomm Snapdragon S4 8225 (Dual-core 1.2Ghz)</td> - </tr> - <tr> - <td>Telefone</td> - <td>UMTS 2100/1900/900 (3G HSPA)<br> - GSM 850/900/1800/1900 (2G EDGE)</td> - </tr> - <tr> - <td>Tela</td> - <td>4.3" qHD IPS Multi-touch (<span class="st">960x540</span> pixels)</td> - </tr> - <tr> - <td>Câmera</td> - <td>8 megapixels (back)<br> - 2 megapixels (front)<br> - Flash</td> - </tr> - <tr> - <td>Capacidade da ROM</td> - <td>4 GB</td> - </tr> - <tr> - <td>Capacidade da RAM</td> - <td>512 MB</td> - </tr> - <tr> - <td>Conectividade</td> - <td>MicroSD<br> - MicroUSB<br> - WiFi 802.11N<br> - Bluetooth 2.1 EDR<br> - FM Radio<br> - GPS</td> - </tr> - <tr> - <td>Sensores</td> - <td>Sensor de luz ambiente<br> - Sensor de proximidade<br> - Acelerômetro</td> - </tr> - <tr> - <td>Bateria</td> - <td>1800 mAh</td> - </tr> - </tbody> -</table> - -<h2 id="Firefox_OS_nos_Geeksphones">Firefox OS nos Geeksphones</h2> - -<p>Aqui você encontrará respostas às perguntas sobre como conseguir as imagens do Firefox OS para o Geeksphone, bem como utilizar e atualizar os dispositivos.</p> - -<h3 id="Onde_posso_encontrar_estruturas_para_Geeksphones">Onde posso encontrar estruturas para Geeksphones?</h3> - -<p>Um índice de estruturas para os dispositivos do Geeksphone estão disponíveis no <a href="http://downloads.geeksphone.com/" title="http://downloads.geeksphone.com/">Geeksphone website</a>.</p> - -<h3 id="Onde_posso_encontrar_arquivos_de_manifesto_das_imagens">Onde posso encontrar arquivos de manifesto das imagens?</h3> - -<p>Os arquivos de manifesto para todas as imagens estão disponíveis aqui: <a href="http://www.geeksphone.com/manifests/" title="http://www.geeksphone.com/manifests/">http://www.geeksphone.com/manifests/</a>.</p> - -<h3 id="Como_fazer_o_flash_de_uma_imagem_para_o_meu_Geeksphone">Como fazer o flash de uma imagem para o meu Geeksphone?</h3> - -<p>Geeksphone fornece algumas <a href="http://downloads.geeksphone.com/drivers/Manual_flash_geeksphone-eng.txt" title="http://downloads.geeksphone.com/drivers/Manual_flash_geeksphone-eng.txt">instruções para o flashing</a> de imagens para o seu dispositivo. As imagens fornecidas pela Geeksphone inclui os binários necessários para o flashing no Linux e Windows. Se você estiver usando um Mac, você deve instalar o <a href="http://developer.android.com/sdk/installing/index.html" title="http://developer.android.com/sdk/installing/index.html">Android SDK</a>. Se estiver usando o Windows, você precisará instalar os drivers USB.</p> - -<h3 id="Como_ter_suporte_para_meu_Geeksphone">Como ter suporte para meu Geeksphone?</h3> - -<p>Para problemas no <strong>hardware ou com as imagens</strong>, visite o <a href="http://forum.geeksphone.com/" title="http://forum.geeksphone.com/">forum da Geeksphone</a>. Você também pode enviar um email para <a href="http://mailto:info@geeksphone.com" title="http://mailto:info@geeksphone.com">info@geeksphone.com</a> ou telefonar para (+34) 915 51 62 91.<br> - <br> - Para questões sobre <strong>desenvolvimento de aplicativos para Firefox OS</strong>, veja os artigos do MDN em <a href="/pt-BR/docs/Mozilla/Firefox_OS/Apps" title="https://developer.mozilla.org/en-US/docs/Mozilla/Firefox_OS/Apps">Criando aplicativos para Firefox OS</a> bem como no <a href="https://marketplace.firefox.com/developers/" title="https://marketplace.firefox.com/developers/">Developer Hub</a> na Firefox Marketplace.<br> - <br> - Para questões sobre o uso do <strong>using Firefox OS</strong>, visite <a href="https://support.mozilla.org/en-US/products/firefox-os" title="https://support.mozilla.org/en-US/products/firefox-os">SUMO</a>.</p> - -<h2 id="Veja_também">Veja também</h2> - -<ul> - <li><a href="/pt-BR/docs/Mozilla/Firefox_OS" title="/en-US/docs/Mozilla/Firefox_OS">Firefox OS</a></li> - <li><a href="/pt-BR/docs/Web/Apps" title="/en-US/docs/Mozilla/Firefox_OS/Tips_and_tricks">App Center</a></li> - <li><a href="/pt-BR/docs/Mozilla/Firefox_OS/Introduction" title="/en-US/docs/Mozilla/Firefox_OS/Introduction">Introdução ao Firefox OS</a></li> -</ul> diff --git a/files/pt-br/archive/b2g_os/phone_guide/index.html b/files/pt-br/archive/b2g_os/phone_guide/index.html deleted file mode 100644 index 5cacf5d1b4..0000000000 --- a/files/pt-br/archive/b2g_os/phone_guide/index.html +++ /dev/null @@ -1,61 +0,0 @@ ---- -title: Guia de desenvolvimento para celulares Boot to Gecko -slug: Archive/B2G_OS/Phone_guide -translation_of: Archive/B2G_OS/Phone_guide ---- -<div class="boxed translate-display"> - <div class="summary"> - <p>Essa sessão contém informações relevantes para desenvolvimento de telefones específicos que rodam Firefox OS. Nós temos informações gerais disponíveis no artigo <a href="https://developer.mozilla.org/pt-BR/docs/Mozilla/Firefox_OS/Construindo_e_instalando_o_Firefox_OS" title="Building and installing Firefox OS">Compilando e instalando o Firefox OS</a> e <a href="/pt-BR/docs/Mozilla/Firefox_OS/Desenvolvendo_no_Firefox_OS" title="/en-US/docs/Mozilla/Firefox_OS/Hacking_Firefox_OS">Desenvolvendo no Firefox OS</a>, então por favor veja as informações de como compilar e instalar a platafora desde o zero. Desenvolvedores com telefones específicos podem encontrar informações muito úteis.</p> - </div> - <h2 id="Informações_de_dispositivos_específicos">Informações de dispositivos específicos</h2> - <dl> - <dt> - </dt> - <dt> - <a href="/pt-BR/docs/Mozilla/Boot_to_Gecko/Boot_to_Gecko_developer_phone_guide/Especificacoes_Telefones">Telefones Firefox OS</a></dt> - <dd> - Nesse artigo nós apresentamos os diversos telefones Firefox OS disponíves juntamente com informações como seus códigos, disponibilidade e características específicas de hardware.</dd> - </dl> - <dl> - <dt> - <a href="https://developer.mozilla.org/en-US/Firefox_OS/Developer_phone_guide/Flame">Flame</a></dt> - <dd> - Informação do telefone Firefox OS high-end de referência, com o codinome Flame, produzido em parceria com a T<sup>2</sup>Mobile.</dd> - </dl> - <dl> - <dt> - <a href="https://developer.mozilla.org/en-US/Firefox_OS/Developer_phone_guide/Geeksphone">Geeksphone</a></dt> - <dd> - Nesse artigo nós cobrimos algumas dicas de como manter seu Geeksphone atualizado e como ajustar as aplicações Gaia.</dd> - <dt> - <a href="https://developer.mozilla.org/en-US/docs/Mozilla/Firefox_OS/Developer_phone_guide/ZTE_OPEN">ZTE OPEN</a></dt> - <dd> - Esse artigo contém informações sobre o telefone Firefox OS ZTE OPEN.</dd> - <dt> - <a href="https://developer.mozilla.org/en-US/Firefox_OS/Developer_phone_guide/ZTE_OPEN_C">ZTE OPEN C</a></dt> - <dd> - O ZTE Open C é uma atualização do dispositivo ZTE-Firefox OS, com hardware high-end e novo software.</dd> - </dl> - <h2 id="Informações_gerais_sobre_Firefox_OS">Informações gerais sobre Firefox OS</h2> - <dl> - <dt> - <a href="https://developer.mozilla.org/pt-BR/docs/Mozilla/Boot_to_Gecko/Boot_to_Gecko_developer_phone_guide/Recursos_dispositivos_Firefox_OS">Recursos gerais</a></dt> - <dd> - Essa página lista os recursos típicos de hardware de um dispositivo Firefox OS bem como os seus requisitos mínimos.</dd> - <dt> - <a href="https://developer.mozilla.org/pt-BR/docs/Resolucao_de_Problemas">Resolução de Problemas</a></dt> - <dd> - Esse artigo apresenta dicas para resolucão de problemas comuns que você pode ter usando o Firefox OS.</dd> - <dt> - <a href="https://developer.mozilla.org/en-US/Firefox_OS/Developer_phone_guide/Best_practices_open_reference_devices">Melhores práticas para dispositivos de referência aberta</a></dt> - <dd> - Um conjunto de melhores práticas que acreditamos ser altamente recomendado para todos os dispositivos de referência aberta. Todos os dispositivos de referência aberta Firefox OS seguiram essas práticas.</dd> - <dt> - </dt> - </dl> - <dl> - <dt> - </dt> - </dl> -</div> -<p> </p> diff --git a/files/pt-br/archive/b2g_os/phone_guide/melhores_praticas_dispositivos_referencia_aberta/index.html b/files/pt-br/archive/b2g_os/phone_guide/melhores_praticas_dispositivos_referencia_aberta/index.html deleted file mode 100644 index 75cabbc281..0000000000 --- a/files/pt-br/archive/b2g_os/phone_guide/melhores_praticas_dispositivos_referencia_aberta/index.html +++ /dev/null @@ -1,55 +0,0 @@ ---- -title: Melhores práticas para dispositivos de referência aberta -slug: Archive/B2G_OS/Phone_guide/Melhores_praticas_dispositivos_referencia_aberta -translation_of: Archive/B2G_OS/Phone_guide/Best_practices_open_reference_devices ---- -<div class="summary"> - <p><span class="seoSummary">Esse artigo fornece um conjunto de melhores práticas que acreditamos ser altamente recomendado para todos os dispositivos de referência aberta. Todos os dispositivos de referência aberta Firefox OS seguiram essas práticas.</span></p> -</div> -<p>Esses dispositivos devem ter:</p> -<ul> - <li>Facilidade para encontrar e instalar imagens compiladas.</li> - <li>Sistema Operacional completamente desbloqueado.</li> - <li>Disponível mundialmente.</li> - <li>Suporte de recursos equivalente aos telefones de mercado.</li> - <li>Disponibilidade de baterias de substituição.</li> - <li>Opções de idiomas habilitados facilmente</li> -</ul> -<h2 id="Facilidade_para_encontrar_e_instalar_imagens_compiladas">Facilidade para encontrar e instalar imagens compiladas</h2> -<p>Dispositivos de referência são em grande parte destinados a desenvolvedores e outros grupos com um alto nível de conhecimento técnico em relação à média dos usuários. Mas mesmo assim, não devemos esperar que os usuários desses dispositivos queiram compilar eles mesmos suas próprias imagens — para muitos deles isso é uma completa perda de tempo.</p> -<p>Dispositivos de referência aberta devem ter um conjunto de imagens desbloqueadas para as versões atuais e futuras fáceis de acessar e instalar. Isso significa possuir no mínimo o seguinte conjunto de imagens disponíveis:</p> -<ul> - <li>Release/Atual</li> - <li>Estável/Beta</li> - <li>Nightly</li> -</ul> -<p>Elas devem estar facilmente disponíveis uma página de download dedicada e frequente e regularmente atualizada. Dispositivos também devem ter atualizações OTA disponíveis para eles.</p> -<p>Os OEMs devem ser responsáveis por fornecer essas imagens uma vez que são os únicos que legalmente podem distribuir todos os binários necessários, etc.</p> -<p>Isso é feito para seguir um modelo semelhante do navegador Firefox, onde cada versão: atual, estável e nightly são baseados em versões subsequentes do código fonte.</p> -<h2 id="Sistema_Operacional_completamente_desbloqueado">Sistema Operacional completamente desbloqueado</h2> -<p>O sistema operacional do dispositivo deve ser completamente desbloqueado, assim os desenvolvedores de aplicativos e da plataforma podem ter a necessária liberdade de controle disponível sobre seus dispositivos para executar os testes desejados e o desenvolvimento. Isso inclui:</p> -<ul> - <li>SIM desbloqueado</li> - <li>Bootloader desbloqueado</li> - <li>Acesso de Root</li> -</ul> -<h2 id="Disponível_mundialmente">Disponível mundialmente</h2> -<p>Se você quer que seu dispositivo de referência seja um padrão universal, você deve torná-lo acessível mundialmente. Se esse não for o caso, pessoas em diferentes locias terão que fazer isso com dispositivos diferentes, o que pode acarretar comportamentos diferentes.</p> -<h2 id="Suporte_de_recursos_equivalente_aos_telefones_de_mercado">Suporte de recursos equivalente aos telefones de mercado</h2> -<p>Não há nenhum ponto na criação de um dispositivo de referência sem suporte para as mesmas tecnologias e recursos associados como os dispositivos de mercado.</p> -<p>Isso inclui:</p> -<ul> - <li>AGPS/outros hardwares associados à geolocalização</li> - <li>Bússula/Giroscópio/Acelerômetro</li> - <li>Câmera(s) do telefone com recursos de imagem e vídeo</li> - <li>Hardware de vibração</li> - <li>Armazenamento SDCard</li> - <li>Toques de telefone</li> - <li>Botões apropriados</li> - <li>Conectividade 3G ou melhor</li> -</ul> -<h2 id="Disponibilidade_de_baterias_de_substituição">Disponibilidade de baterias de substituição</h2> -<p>Baterias de substituição frequentemente podem ser difíceis de encontrar para diferentes dispositivos, e podem levar dispositivos a se tornarem inúteis. Por isso é uma boa ideia ter disponibilidade de fornecimento de baterias para substituição.</p> -<h2 id="Opções_de_idiomas_habilitados_facilmente">Opções de idiomas habilitados facilmente</h2> -<p>Uma vez que estes dispositivos serão distribuídos em todo o mundo, é importante fazer imagens localizadas para tantas línguas quanto possível, levando em conta a disponibilidade de recursos e a localização para mercados-alvo mais populares.</p> -<p>A solução mais provável para isso é a utilização de compilações Gaia localizadas ou pacotes de idiomas que podem ser copiadas para o dispositivo separadamente. A Mozilla está trabalhando numa solução para tornar a criação e instalação disso o mais fácil possível.</p> diff --git a/files/pt-br/archive/b2g_os/phone_guide/recursos_dispositivos_firefox_os/index.html b/files/pt-br/archive/b2g_os/phone_guide/recursos_dispositivos_firefox_os/index.html deleted file mode 100644 index a6ad8618c4..0000000000 --- a/files/pt-br/archive/b2g_os/phone_guide/recursos_dispositivos_firefox_os/index.html +++ /dev/null @@ -1,68 +0,0 @@ ---- -title: Recursos dos dispositivos Firefox OS -slug: Archive/B2G_OS/Phone_guide/Recursos_dispositivos_Firefox_OS -translation_of: Archive/B2G_OS/Phone_guide/Firefox_OS_device_features ---- -<h2 id="Botões_e_Controles">Botões e Controles</h2> -<p>Um típico dispositivo Firefox OS possui um pequeno número de botões:</p> -<dl> - <dt> - Botão "Home"</dt> - <dd> - Esse botão geralmente fica localizado abaixo da tela, centralizado. Pressionando-o você retorna à tela dos aplicativos. Ao pressionar e segurar, será aberta uma visão do tipo "cartas", apresentando os aplicativos abertos. Para finalizá-los, basta movê-los para cima.</dd> - <dt> - Botões de Volume</dt> - <dd> - Na lateral esquerda, você encontra o botão de volume. Pressione na parte superior para aumentar o volume e na inferior para abaixar o volume.</dd> - <dt> - Botão "Power"</dt> - <dd> - Fica localizado no canto superior direito do dispositivo.</dd> -</dl> -<h2 id="Requisitos_mínimos_de_Hardware">Requisitos mínimos de Hardware</h2> -<p>Os dispositivos baseados no processador ARM normalmente são robustos o suficiente para suportar o Firefox OS. Esse artigo cobre os requisitos básicos de hardware bem como as características recomendadas.</p> -<table> - <thead> - <tr> - <th scope="col">Componente</th> - <th scope="col">Mínimo</th> - <th scope="col">Recomendado</th> - </tr> - </thead> - <tbody> - <tr> - <th scope="row">CPU</th> - <td>ARMv6</td> - <td>Classe Cortex A5 ou superior<br> - ARMv7a com NEON</td> - </tr> - <tr> - <th scope="row">GPU</th> - <td>—</td> - <td>Classe Adreno 200 ou superior</td> - </tr> - <tr> - <th scope="row">RAM</th> - <td>256 MB</td> - <td>512 MB</td> - </tr> - <tr> - <th scope="row">Conectividade</th> - <td>—</td> - <td>WiFi<br> - 3G</td> - </tr> - <tr> - <th scope="row">Sensores</th> - <td>—</td> - <td>Acelerômetro<br> - Proximidade<br> - Luz Ambiente<br> - A-GPS</td> - </tr> - </tbody> -</table> -<div class="note"> - <p><strong>Nota</strong>: Para uma boa experiência do usuário é uma boa ideia escolhere um dispositivo que ofereça um perfil de cores uniforme (implementado pelo drive gráfico) e um fone de ouvido que possua botão para implementar a funcioinalidade "Mudo" e parar e iniciar a execução de música/vídeo. Essas características são comuns nos smartphones modernos.</p> -</div> -<p> </p> diff --git a/files/pt-br/archive/b2g_os/phone_guide/zte_open/index.html b/files/pt-br/archive/b2g_os/phone_guide/zte_open/index.html deleted file mode 100644 index 8b178a4dd7..0000000000 --- a/files/pt-br/archive/b2g_os/phone_guide/zte_open/index.html +++ /dev/null @@ -1,188 +0,0 @@ ---- -title: Firefox OS ZTE OPEN -slug: Archive/B2G_OS/Phone_guide/ZTE_OPEN -translation_of: Archive/B2G_OS/Phone_guide/ZTE_OPEN ---- -<div class="summary"> - <p>Mozilla possui uma parceria com a ZTE que ajudou a criar o ZTE OPEN, um poderoso dispositivo baseado no Firefox OS destinado a desenvolvedores e <em>early adopters</em> ao redor do mundo. São dispositivos desbloqueados e abertos para testes e experimentações.</p> -</div> -<div class="note"> - <p><strong>Nota</strong>: As instruções dessa página <strong>não</strong> são válidas para o dispositivo ZTE Open C. Se você possui esse dispositivo vá para a página <a href="/pt-BR/Firefox_OS/Developer_phone_guide/ZTE_OPEN_C">ZTE Open C</a>.</p> -</div> -<h2 id="Adquirindo_um_dispositivo">Adquirindo um dispositivo</h2> -<p>Estão disponíveis nas lojas on-line do eBay nos Estados Unidos e Reino Unido. Há também uma página em Hong Kong destinada a consumidores da Ásia e Oceania que preferem não pagar altas taxas de postagem. O preço está em torno de $79.99/£59.99.</p> -<ul> - <li><a href="http://stores.ebay.com/ztemobileuk">Loja eBay do Reino Unido</a></li> - <li><a href="http://stores.ebay.com/zteauthorizedstoreus/">Loja eBay dos Estados Unidos</a></li> - <li><a href="http://www.ebay.com/itm/331031989534">Compre em Hong Kong</a></li> -</ul> -<h2 id="Atualizando_o_Firefox_OS">Atualizando o Firefox OS</h2> -<p>Essa seção fornece instruções para atulizar o Firefox OS no seu dispositivo ZTE OPEN.</p> -<h3 id="Geral">Geral</h3> -<p>Em geral, <em>flashing</em> de binários do Firefox OS, atualizações e testes são feitos conectando o dispositivo ao computador via cabo USB e utilizando o utilitário ADB (Android Debugging Bridge) com Fastboot. Então você precisará instalar o ADB e fastboot que pode ser encontrado na página <a href="http://developer.android.com/sdk/index.html" title="Android Developer Tookit">Android Developer Toolkit</a>. Não é necessário instalar o toolkit completo. O adb e fastboot estão no diretório <code>/platform-tools/</code>.</p> -<p>A seguir, no seu telefone<a href="/pt-BR/Firefox_OS/Debugging/Developer_settings#Remote_debugging"> habilite a depuração remota.</a></p> -<h3 id="Firefox_OS_1.1">Firefox OS 1.1</h3> -<p>Em 10 de dezembro de 2013 ZTE lançou a atualização do Firefox OS 1.1 para o ZTE OPEN. <strong>Essa versão possui o fastboot habilitado</strong>, que causou alguns problemas nos binários anteriores.</p> -<p>Assim, é melhor primeiro atualizar seu telefone para a versão 1.1, mesmo que você queira ir para uma versão superior. Para fazer isso, baixe o pacote 1.1 correspondente ao seu telefone (<a href="http://www.ztedevices.com/support/smart_phone/b5a2981a-1714-4ac7-89e1-630e93e220f8.html">OPEN (American Standard)</a> ou <a href="http://www.ztedevices.com/support/smart_phone/cba40ed6-d3ab-44c0-bdee-3a15803dc187.html">OPEN (European Standard)</a>). Observe que você precisa baixar a versão com sua revisão (ou seja, baixe "V1.1.0B02(for V1.0)" se você está atualizando a versão V1.0). O arquivo zip que você irá baixar também contem documentação para a atualização. Descompacte o arquivo e copie o firmware ZIP (dentro do arquivo zip baixado) como descrito abaixo.</p> -<div class="note"> - <p><strong>Nota</strong>: Os dados do usuário serão apagados pela instalação do pacote SD. Você deve <a href="https://developer.mozilla.org/pt-BR/Firefox_OS/Firefox_OS_build_prerequisites#Backup_the_phone_system_partition">fazer uma cópia de segurança</a> antes de começar.</p> -</div> -<p>Agora siga esses passos:</p> -<ol> - <li>Desligue o seu telefone, remova a bateria para acessar o cartão microSD e retire-o.</li> - <li>Conecte o cartão microSD no seu desktop.</li> - <li>Mova o arquivo <strong>US_DEV_FFOS_V1.1.0B04_UNFUS_SD.zip</strong> ou <strong>EU_DEV_FFOS_V1.1.0B04_UNFUS_SD.zip</strong> (dependendo da versão que foi baixada) para o diretório raiz do seu cartão microSD. NÃO descompacte o arquivo.</li> - <li>Disconecte o cartão microSD do seu computador e retorne-o para o seu telefone.</li> - <li>Pressione simultaneamente o botão de volume (+) e o botão power. O botão volume (+) é ativado pressionando a parte superior da tecla comprida no lado esquerdo do telefone. Se fizer isso corretametne, o Firefox OS irá entrar no mode de recuperação. (Nota: o logo do Firefox OS aparecerá rapidamente antes de entrar no mode de recuperação. Algumas vezes leva um tempo a mais).</li> - <li>Use a tecla de volume para mover entre os itens do menu, e escolha: “<strong>apply update from external storage</strong>.”</li> - <li>Pressione o botão power para confirmar a seleção. Você verá uma nova tela com os arquivos que você copiou para o cartão microSD.</li> - <li>Novamente use a tecla de volume para selecionar o firmware: <strong>US_DEV_FFOS_V1.1.0B04_UNFUS_SD.zip</strong> ou <strong>EU_DEV_FFOS_V1.1.0B04_UNFUS_SD.zip</strong> e pressione o botão power para confirmar.</li> -</ol> -<p>Se tudo correr bem, você verá uma sequência de mensagens sendo a última: <em>“<strong>Install from sdcard complete</strong>.”</em>. Então selecione “reboot system now”. Seu telefone será reiniciado e você verá a tela de configuração que você viu na primeira vez que ligou o seu telefone.</p> -<h3 id="Firefox_OS_1.2">Firefox OS 1.2</h3> -<p>Em janeiro de 2014, ZTE lançou uma versão Beta do Firefox OS 1.2 (fastboot habilitado com acesso de root). Basicamente é um baseline da versão 1.1 com a versão 1.2 do Gecko e Gaia e não necessita gravar o binário no cartão SD do telefone.</p> -<p>Com a versão 1.1 instalada como descrito acima, abra um terminal e verifique se a conexão com o telefone está estabelecida com o seguinte comando:</p> -<pre class="brush: bash language-html"><code class="language-html">adb devices -l</code></pre> -<p>Você deve ver como resposta uma mensagem como: "roamer2 device usb:2-1.2".</p> -<p>Baixe a versão apropriada ao binário na conta Dropbox da ZTE: <a href="https://www.dropbox.com/sh/rnj3rja7gd54s98/32KXfFmedN/P752D04_DEV_US_20131212_v1.2.7z" title="Firefox OS 1.2 build for ZTE Open US">versão US</a> ou <a href="https://www.dropbox.com/sh/rnj3rja7gd54s98/_twgXEkMFH/P752D04_DEV_EU_20131212_v1.2.7z" title="Firefox OS 1.2 build for ZTE Open UK">versão UK</a>. Para usuários Windows, você também pode baixar <a href="https://www.dropbox.com/sh/rnj3rja7gd54s98/6ZoJwmlRjn/Installation%20Instruction.docx" title="Special upgrade instructions for Windows users">instruções especiais</a>, e <a href="https://www.dropbox.com/sh/rnj3rja7gd54s98/-fyi2XHFPG/upgrade_tool" title="Upgrade tool">uma ferramenta de atualização</a> para ajudá-lo a instalar a nova versão facilmente. As etapas a seguir vão funcionar em <strong>todos os sistemas operacionais</strong> – Linux, OS X e Windows – sem depender da ferramenta especial.</p> -<p>Uma vez com o arquivo, extraia seu conteúdo e abra um console. Observe que seus dados de usuário serão apagados, assim certifique-se de fazer uma <a href="https://developer.mozilla.org/pt-BR/Firefox_OS/Firefox_OS_build_prerequisites#Backup_the_phone_system_partition">cópia de segurança</a>. Então navegue no diretório onde estão os arquivos e digite o comando:</p> -<pre class="brush: bash language-html"><code class="language-html">adb reboot bootloader</code></pre> -<p>Enquanto o telefone estiver sendo reinicializado, execute o seguinte comando. (fastbook somente funciona durante a reinicialização):</p> -<pre class="brush: bash language-html"><code class="language-html">sudo fastboot devices</code></pre> -<p>Se você vir a mensagem, "< waiting for device >", tecle Ctrl-C e repita com comando até ver a mensagem "ROAMER2 fastboot".</p> -<p>Então, rapidamente execute os seguintes comandos enquanto o telefone ainda estiver sendo reiniciado:</p> -<pre class="brush: bash language-html"><code class="language-html">fastboot flash boot boot.img -fastboot flash userdata userdata.img -fastboot flash system system.img -fastboot flash recovery recovery.img -fastboot erase cache -fastboot reboot</code></pre> -<p>(A reinicialização terminou antes de acabar de digitar todos os comandos. Simplesmente reinicie do ponto "adb reboot bootloader".)</p> -<p>Se tudo funcionou bem, seu telefone deve reiniciar nesse ponto. Você vai perceber que a versão 1.2 do ZTE inclui muitas aplicações de teste, que você pode removê-las se desejar.</p> -<div class="note"> - <p><strong>Nota</strong>: O artigo <a href="https://hacks.mozilla.org/2014/01/upgrading-your-zte-open-to-firefox-1-1-or-1-2-fastboot-enabled/">Upgrading your ZTE Open to Firefox 1.1 or 1.2 (fastboot enabled)</a> do <span class="url">Frédéric Harper</span> também fornece detalhes úteis do processo de instalação.</p> -</div> -<div class="note"> - <p><strong>Nota</strong>: Existe um bug no binário 1.2 do ZTE para o Open, no qual não aparece a bandeja de notificação. Isso pode ser corrigido atualizando com a última versão de engenharia do Firefox OS 1.2. Certifique-se de ter o <a href="https://developer.mozilla.org/pt-BR/Firefox_OS/Debugging/Installing_ADB">ADB instalado</a> e a <a href="https://developer.mozilla.org/pt-BR/Firefox_OS/Debugging/Developer_settings#Debugging_via_USB">depuração remota</a> habilitada, para então executar os seguintes comandos no seu terminal:<br> - <br> - <code>git clone -b v1.2 <a href="https://github.com/mozilla-b2g/gaia.git" rel="nofollow">https://github.com/mozilla-b2g/gaia.git</a> gaia_v1.2<br> - cd gaia_v1.2<br> - make reset-gaia</code></p> -</div> -<h3 id="Firefox_OS_1.3_e_posteriores">Firefox OS 1.3 e posteriores</h3> -<p>ZTE não lançou as versões do Firefox OS posteriores à 1.3. Para instalar essas versões você terá que <a href="https://developer.mozilla.org/pt-BR/docs/Mozilla/Firefox_OS/Building_and_installing_Firefox_OS">compilar e instalar</a> manualmente (começe lendo os <a href="https://developer.mozilla.org/pt-BR/docs/Mozilla/Firefox_OS/Firefox_OS_build_prerequisites">pré-requisitos</a> e nas instruções de configuração, trate o ZTE como um dispositivo Inari). Você pode recuperar se telefone se necessário, utilizando o procedimento citado na seção <a href="#I_bricked_my_phone">Eu travei meu telefone</a>.</p> -<h2 id="Características_do_telefone">Características do telefone</h2> -<ul> - <li>CPU Qualcomm MSM7225A 1.0Ghz</li> - <li>UMTS 850/1900 ou UMTS900/2100</li> - <li>GSM 850/900/1800/1900 (2G EDGE)</li> - <li>Tela 3.5" HVGA</li> - <li>Câmera 2 MP (back)</li> - <li>256 MB (RAM)</li> - <li>MicroSD (suportado até 32GB)</li> - <li>Bateria 1200 mAh</li> - <li>Wifi b, g, n, Bluetooth 2.1 EDR</li> - <li>Sensor de Luz e proximidade, G-Sensor</li> - <li>Radio FM, GPS</li> - <li>MicroUSB</li> -</ul> -<div class="note"> - <p><strong>Nota</strong>: Os telefones de Hong Kong phones também suportam redes tri-band 3G — HSDPA 850/1900/2100 (850/1900 para EUA, CA, 850/1900/2100 para Asia, Austrália, e 900/2100 para União Europeia.)</p> -</div> -<h2 id="Operadoras">Operadoras</h2> -<div class="warning"> - <p>As informações de preço são apenas para referência e podem não ser precisas. Visite o link associado para informações oficiais.</p> -</div> -<h3 id="Operadoras_dos_Estados_Unidos">Operadoras dos Estados Unidos</h3> -<h4 id="ATT">AT&T</h4> -<ul> - <li><a href="http://www.att.com/shop/wireless.html">Website</a></li> - <li>Cobertura nacional para 2G, EDGE e 3G</li> -</ul> -<h5 id="Exemplos_dos_planos_pré-pagos_da_ATT">Exemplos dos planos pré-pagos da AT&T</h5> -<p><a href="http://www.att.com/shop/wireless/gophone.html">Prepaid GoPhone®</a>, Smartphone Plans</p> -<ul> - <li>$25/mês, $5/50MB 3G</li> - <li>$60/mês com 2GB de dados, $10/GB dados adicionais 3G</li> -</ul> -<h4 id="Aio">Aio</h4> -<ul> - <li><a href="http://www.aiowireless.com/home.html">Website</a></li> - <li>{{ anch("AT&T") }} MVNO (Mobile Virtual Network Operator - Operadora de Rede Móvel Virtual)</li> -</ul> -<h5 id="Exemplos_de_planos_pré-pagos_da_Aio">Exemplos de planos pré-pagos da Aio</h5> -<ul> - <li>Aio Smart - $55/mês com 2GB 3G, $10/GB dados adicionais 3G</li> - <li>Aio Pro - $70/mês com 7GB 3G, $10/GB dados adicionais 3G</li> -</ul> -<h4 id="Good2GO">Good2GO</h4> -<ul> - <li><a href="https://us.good2gomobile.com/">Website</a></li> - <li>{{ anch("AT&T") }} MVNO (Mobile Virtual Network Operator - Operadora de Rede Móvel Virtual)</li> -</ul> -<h5 id="Exemplos_de_planos_pré-pagos_da_Good2GO">Exemplos de planos pré-pagos da Good2GO</h5> -<ul> - <li>$50/mês com 1GB 3G, $20/GB dados adicionais 3G</li> -</ul> -<h4 id="Outras_MVNOs_da_anch(ATT)">Outras MVNOs da {{ anch("AT&T") }}</h4> -<p>Essas operadoras não oferecem dados 3G adicionais.</p> -<ul> - <li><a href="http://goredpocket.com/">RedPocket</a></li> - <li><a href="http://www.net10wireless.com/">Net10</a></li> - <li><a href="http://www.straighttalk.com/">Straight Talk</a></li> - <li><a href="https://www.airvoicewireless.com/">Airvoice</a></li> -</ul> -<h4 id="T-Mobile">T-Mobile</h4> -<ul> - <li><a href="http://www.t-mobile.com/">Website</a></li> - <li>Cobertura nacional para 2G, EDGE, cobertura metropolitana limitada para 3G</li> -</ul> -<h3 id="Operadoras_Canadenses">Operadoras Canadenses</h3> -<p>A versão americana do ZTE Open também funciona no Canadá em operadoras que utilizam a rede da Bell/Telus ou da Rogers. Algumas operadoras reginais como Sasktel ou MTS que possuem UMTS devem funcionar também.</p> -<p>Não vai funcionar com operadoras que não utilizam UMTS ou GSM, como Public Mobile, nem em operadoras que usam a banda AWS como WIND Mobile, Mobilicity, Videotron ou Eastlink.</p> -<h2 id="Cartão_de_memória">Cartão de memória</h2> -<h3 id="Sistema_de_Arquivos">Sistema de Arquivos</h3> -<p>Para ser reconhecido pelo telefone, o cartão de memória MicroSD deve ser formatado como FAT32. Se o cartão é novo ou nunca foi reformatado deve funcionar como está.</p> -<h2 id="Revisões_do_dispositivo"><a name="Device_revisions"></a>Revisões do dispositivo</h2> -<h3 id="Revisão_01">Revisão 01</h3> -<p>Telefones produzidos antes de 27 de setembro de 2013 não possuem o fastboot habilitado e devem ser atualizados. Normalmente, isso deve ser gerenciado pelo aplicativo Software Updates, mas como alguns usuários têm reportado problemas com esse método, ZTE disponibilizou pacotes para cartões SD para habilitar o fastboot em dispositivos antigos. Nos links abaixo você encontra os binários:</p> -<ul> - <li><a href="http://www.ztedevices.com/support/smart_phone/b5a2981a-1714-4ac7-89e1-630e93e220f8.html">Phones purchased at ZTE eBay US/Hong Kong store</a></li> - <li><a href="http://www.ztedevices.com/support/smart_phone/cba40ed6-d3ab-44c0-bdee-3a15803dc187.html">Phones purchased at ZTE eBay UK store</a></li> -</ul> -<p>O arquivo zip está em Downloads. Observe que você precisa baixar a versão com a revisão do SO nela (ou seja, baixe "V1.1.0B02(for V1.0)" se você está atualizando a V1.0). Uma vez que o arquivo foi baixado e descompactado, siga as instruções no PDF que está dentro do ZIP para fazer o <em>flashing</em> no seu telefone.</p> -<p>Questões relativas ao assunto no Forum:</p> -<ul> - <li><a href="https://support.mozilla.org/pt-BR/questions/971252">Atualização do ZTE Open não funciona</a></li> - <li><a href="https://support.mozilla.org/pt-BR/questions/967817">Por que meu ZTE Open não possibilita atualizar o Firefox OS?</a></li> - <li><a href="https://support.mozilla.org/en-US/questions/976414?page=3">Como destravar o ZTE Open com o adb debug desabilitado?</a></li> -</ul> -<h3 id="Revisão_02">Revisão 02</h3> -<p>Telefones produzidos após 27 de setembro de 2013 têm o fastboot habilitado por padrão. <strong>Incluindo os telefones de Hong Kong.</strong></p> -<div class="note"> - <p><strong>Nota</strong>: Se você têm dúvidas da revisão do seu telefone verifique em <strong>Settings > Device Information > Software</strong>. Se o número for anterior aos números das versões a seguir, você precisa atualizar o telefone utilizando os pacotes para cartões SD para habilitar o fastboot:</p> - <ul> - <li>Telefones da loja do Reino Unido:OPEN_EU_DEV_FFOS_V1.0.0B02</li> - <li>Telefones da loja dos Estados Unidos:OPEN_US_DEV_FFOS_V1.0.0B02 <em>(Alguns telefones podem mostrar a versão incorreta, veja o <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=916098#c39">bug 916098</a>.)</em></li> - </ul> -</div> -<h2 id="Suporte_ao_dispositivo">Suporte ao dispositivo</h2> -<p>Uma vez que o seu telefone tem o <a href="#Device_revisions">fastboot habilitado</a>, você pode <a href="https://developer.mozilla.org/pt-BR/docs/Mozilla/Firefox_OS/Building_and_installing_Firefox_OS">compilar e instalar o Firefox OS/B2G</a> nele (começe lendo os <a href="https://developer.mozilla.org/pt-BR/docs/Mozilla/Firefox_OS/Firefox_OS_build_prerequisites">pré-requisitos</a> e nas instruções de configuração, trate o ZTE como um dispositivo Inari), e se for necessário recuperar seu telefone, use o procedimento descrito na seção <a href="#I_bricked_my_phone">Eu travei meu telefone</a>.</p> -<p>Se você encontrar erros de configuração enquanto faz o <em>flashing</em>, você pode precisar baixar uma <a href="http://sl.edujose.org/2013/10/adapted-boot-image-for-use-with-b2g.html">imagem de boot modificada</a>.</p> -<h3 id="Eu_travei_meu_telefone"><a name="I_bricked_my_phone"></a>Eu travei meu telefone</h3> -<p>Se durante o processo de atualização ou modificação de alguma característica do seu telefone e travar e não responder a nenhum comando, você pode recuperá-lo usando o fastboot com o procedimento simples a seguir:</p> -<p>Primeiro, remova o cabo USB e a bateria do telefone por 30 segundos. Então reinsira a bateria e pressione o botão de volume (+) enquanto pressiona o botão power por alguns segundos. A seguir reconecte o cabo USB e execute os seguintes comandos em um terminal no diretório que contém os pacotes para SD descritos acima (vale a pena verificar se há uma atualização para o pacote SD antes de fazer isso):</p> -<pre class="brush: bash language-html" lang="bash"><code class="language-html">fastboot flash recovery recovery.img -fastboot flash boot boot.img -fastboot flash userdata userdata.img -fastboot flash system system.img -fastboot reboot</code></pre> -<p>Esse procedimento deve recuperar seu telefone. Se não funcionar tente pela segunda vez.</p> -<h3 id="Fones_de_ouvido_não_funcionam">Fones de ouvido não funcionam?</h3> -<p>Nós descobrimos que o conector do fone de ouvido desenvolvido por um fabricante chinês que possui problemas de compatibilidade com alguns modelos de fones de ouvidos que possuem microfone. Você deve ter alguns problemas de não captar a voz em fones desenvolvidos para funcionar com Apple, Samsung, HTC e outros. Você pode comprar um adapatador de 3.5mm que alterna os contados do microfone com terra para evitar esse problema. Para maiores detalhes veja o {{ Bug("812607") }}.</p> -<h3 id="Outras_notas_de_suporte">Outras notas de suporte</h3> -<p>Alguns clientes reportaram problemas com atualizações FOTA ao habilitar o fastboot, isso ainda está sendo investigado e estamos acompanhando da ZTE para analisar esse cenário. Publicaremos mais informações quando disponível.</p> -<p>Caso seu telefone tenha se danificado durante uma atualização FOTA devido ao fato da ZTE fornecer arquivos de atualização errados, você pode tentar restaurar as configurações de fábrica descritas na {{ anch("Revisão 01") }}. De outra forma, envie o seu telefone para a loja eBay na qual você comprou e troque-o por um novo. Você pode contactar a loja diretamente via mensagens do eBay.</p> -<h2 id="Veja_também">Veja também</h2> -<p><a href="https://marketplace.firefox.com/developers/dev_phone">Página oficial dos telefones de desenvolvimento no Marketplace Firefox OS</a></p> -<p><a href="http://www.movistar.co/documentos/manualesProductos/ZTE_Mozilla_Open_P752-Manual_de_Usuario.pdf">Rascunho do manual do usuário</a> - PDF</p> diff --git a/files/pt-br/archive/b2g_os/phone_guide/zte_open_c/index.html b/files/pt-br/archive/b2g_os/phone_guide/zte_open_c/index.html deleted file mode 100644 index 215f39624c..0000000000 --- a/files/pt-br/archive/b2g_os/phone_guide/zte_open_c/index.html +++ /dev/null @@ -1,91 +0,0 @@ ---- -title: ZTE OPEN C -slug: Archive/B2G_OS/Phone_guide/ZTE_OPEN_C -tags: - - B2G - - Dispositivo - - Firefox OS - - Gaia - - Open C - - Smartphone - - zte -translation_of: Archive/B2G_OS/Phone_guide/ZTE_OPEN_C ---- -<div class="summary"> - <p><span class="seoSummary">O telefone ZTE Open C Firefox OS é uma versão aprimorada do ZTE com um hardware high-end, incluindo uma câmera de 3MP e tela WVGA de 4 polegadas. Vem instalado com o Firefox OS 1.3. Esse artigo fornece informações sobre o telefone incluindo detalhes de atualizações e solução de problemas. </span></p> -</div> -<div class="note"> - <p><strong>Nota</strong>: As instruções <strong>não são válidas</strong> para o ZTE Open. Se você possui um ZTE Open consulte a página do <a href="https://developer.mozilla.org/pt-BR/Firefox_OS/Developer_phone_guide/ZTE_OPEN">ZTE Open</a>.</p> -</div> -<div class="note"> - <p><strong>Nota</strong>: A ferramenta de atualização que você precisa para desbloquear seu telefone (veja abaixo) por enquanto está disponível apenas para Windows. Não compre esse telefone se você não tem Windows e deseja instalar suas próprias compilações do Firefox OS manualmente.</p> -</div> -<p>O ZTE Open C é o primeiro telefone com a <a href="http://blog.mozilla.org/futurereleases/2014/05/08/firefox-os-update-adds-new-features-including-dual-sim-support-and-enhancements-for-music-lovers-and-gamers">última versão do Firefox OS</a>, oferencendo muitos novos recuros incluindo acesso direto ao tocador de música pela tela bloqueada ou barra de notificacão e compartilhamento avançado do Bluetooth, permitindo a transferência simultânea de vários arquivos. Usuários agora podem navegar mais rapidamente com as "<em>smart folders</em>" que organiza automaticamente os aplicativos em categorias, aprimorando a performance do rolamento de tela e aplicativos do sistema (calendário, agenda, câmera) mais rápidos.</p> -<h2 id="Adquirindo_um_dispositivo">Adquirindo um dispositivo</h2> -<p>O telefone foi lançado por US$ 99,99, e está disponível no eBay:</p> -<ul> - <li><a href="http://item.ebay.com/291125433026">ZTE eBay US store</a></li> - <li><a href="http://item.ebay.co.uk/171301269724">ZTE eBay UK store</a> (clientes da França e outros países europeus são aconselhados a usar essa loja).</li> - <li><a href="http://cgi.ebay.de/ws/eBayISAPI.dll?ViewItem&item=131151681046&ssPageName=STRK:MESE:IT">ZTE eBay DE store</a></li> - <li><a href="http://www.ebay.com/itm/111326263156">ZTE eBay RU and EU stores</a></li> -</ul> -<div class="note"> - <p><strong>Nota</strong>: Os telefones não virão com aplicativos ou serviços específicos de companhias telefônicas pré-instalados. Também vêm totalmente desbloqueados para serem utilizados por desenvolvedores.</p> -</div> -<h2 id="Recursos_do_telefone">Recursos do telefone</h2> -<p>Veja <a href="/pt-BR/Firefox_OS/Developer_phone_guide/Phone_specs">Especificações de telefones e dispositivos</a>.</p> -<h2 id="Atualizando_o_Firefox_OS">Atualizando o Firefox OS</h2> -<p>Para atualizar o software do seu Open C, o modo mais fácil é usar as imagens disponíveis no <a href="http://www.ztedevices.com/support/selectproduct.html?type=software">website da ZTE.</a> Selecione sua região na coluna da esquerda, <em>Smart Phones</em> na coluna do centro e Open C (European Standard) ou Open C (American Standard), dependendo de onde você comprou o telefone. Então clique o botão <em>Selected</em> para ir à página de download.</p> -<p>Uma vez que você baixou a imagem, você vai encontrar um arquivo PDF dentro do ZIP explicando como fazer a instalação.</p> -<h2 id="Atualizações_Manuais">Atualizações "Manuais"</h2> -<p>Caso você próprio queira atualizar o Gecko ou o Gaia, o processo é um pouco mais complicado, uma vez que o telefone vem travado por padrão (sem privilégios de root). Para desbloquear o telefone você pode usar <a href="http://en.comebuy.com/developer-firefox-os-open-c.html">Open_C_upgrade_Tool found at comebuy.com</a>. Ao instalar essa ferramenta o firmware é atualizado e possibilitando o acesso de root e o fastbood. Com esses privilégios você consegue fazer um flash no seu telefone com os novos softwares e componentes.</p> -<div class="note"> - <p><strong>Nota</strong>: Essa ferramenta de atualização por enquanto só está disponível para Windows.</p> -</div> -<h3 id="Atualizando_o_Gecko_e_o_Gaia">Atualizando o Gecko e o Gaia</h3> -<p>Uma vez que seu telefone tenha o fastboot habilitado, você está apto a <a href="https://developer.mozilla.org/pt-BR/docs/Mozilla/Firefox_OS/Building_and_installing_Firefox_OS">compilar e instalar o novo Firefox OS/B2G</a>, Gecko e Gaia nele.</p> -<ol> - <li>Começe verificando <a href="https://developer.mozilla.org/pt-BR/docs/Mozilla/Firefox_OS/Firefox_OS_build_prerequisites">os pré-requisitos para a compilação</a> e na configuração trate o Open C como um dispositivo Flame: isso deve-se ao fato do Flame e Open C são baseados na versão Jellybean do Android.</li> - <li>Durante a etapa de configuração, você precisa fazer referência a um arquivo de manifesto customizado para o Open C. <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1016867">Baixe o anexo desse bug</a> e salve em algum lugar facilmente referenciável no seu disco local com o nome openc.xml.</li> - <li>Limpe o diretório B2G, removendo os diretórios desnecessários:<br> - <pre class="brush: bash language-html" id="comment_text_2"><code class="language-html">rm -rf objdir-gecko/ out/ backup-flame/</code></pre> - </li> - <li>Agora, configure o Firefox OS com o seguinte comando: - <pre class="brush: bash language-html"><code class="language-html">./config.sh flame /PATH/TO/openc.xml</code></pre> - </li> - <li>Você pode compilar o componente Gecko e copiar no seu telefone usando os seguintes comandos: - <pre class="brush: bash language-html"><code class="language-html">./build.sh gecko -./flash.sh gecko</code></pre> - </li> - <li>Você também pode atualizar o Gaia, assim a versão atualizada do Gecko funciona com a versão Gaia no seu dispositivo: - <pre class="brush: bash language-html"><code class="language-html">cd gaia -make reset-gaia</code></pre> - </li> -</ol> -<div class="warning"> - <p><strong>Aviso</strong>: Se você tentar fazer o flash completo da imagem do Flame no dispositivo pode travar (<em>brick</em>) o telefone, então isso não é recomendado.</p> -</div> -<h3 id="Atualizando_o_Gaia">Atualizando o Gaia</h3> -<p>Para atualizar o Gaia, sem mexer no Gecko, basta fazer um fork e clonar o Gaia a partir do Github, para então copiar para seu dispositivo.</p> -<ol dir="ltr"> - <li><a href="http://git-scm.com/downloads">Instale o git</a>.</li> - <li>Certifique-se de ter o <a href="/pt-BR/Firefox_OS/Debugging/Installing_ADB">ADB</a> instalado.</li> - <li>Em <a href="https://github.com/mozilla-b2g/gaia">https://github.com/mozilla-b2g/gaia</a>, clique no botão "fork" no canto superior direito para fazer um fork para o seu repositório.</li> - <li>Clone o código do seu repositório onde você fez o fork executando o seguinte comando: - <pre class="brush: bash">git clone https://github.com/your-github-username/gaia.git</pre> - </li> - <li>Vá para o diretório.</li> - <li>No seu telefone, <a href="/pt-BR/Firefox_OS/Debugging/Developer_settings#Debugging_via_USB">habilite depuração remota</a> (escolha a opção ADB e Devtools).</li> - <li>Agora conecte seu telefone ao seu computador via USB; verifique se o telefone foi reconhecido digitando <code>adb devices</code> no terminal.</li> - <li>Execute o seguinte comando para reiniciar seu telefone e atualizar com o novo código Gaia: - <pre class="brush: bash">make reset-gaia</pre> - </li> -</ol> -<h2 id="Travei_meu_telefone_e_agora">Travei meu telefone, e agora?</h2> -<p>Se o seu telefone não responder nenhum comando, você pode tentar destravá-lo com as instruções de como fazer o flashing via SD Card no site da ZTE:</p> -<ul> - <li><a href="http://www.ztedevices.com/support/smart_phone/65229ec9-3165-424e-a7dd-3759356325fd.html?type=software">ZTE Open C (Ebay) - Espanha</a></li> - <li><a href="http://www.ztedevices.com/support/smart_phone/92f36c98-9cc0-42d6-8f23-8834b4a6849c.html?type=software">ZTE Open C (Ebay) - UK Padrão americano</a></li> - <li><a href="http://www.ztedevices.com/support/smart_phone/46d40c52-bed4-4cdc-9df9-01719cdf0a70.html?type=software">ZTE Open C (Ebay) - UK Padrão europeu</a></li> -</ul> -<p>Verifique também <a href="https://support.mozilla.org/pt-BR/questions/1003136">essa questão registrada no Suporte da Mozilla</a> para maiores informações.</p> diff --git a/files/pt-br/archive/b2g_os/platform/architecture/index.html b/files/pt-br/archive/b2g_os/platform/architecture/index.html deleted file mode 100644 index dcd30eecbf..0000000000 --- a/files/pt-br/archive/b2g_os/platform/architecture/index.html +++ /dev/null @@ -1,687 +0,0 @@ ---- -title: Arquitetura do Firefox OS -slug: Archive/B2G_OS/Platform/Architecture -translation_of: Archive/B2G_OS/Architecture ---- -<p> </p> - -<div class="overheadIndicator draft"> -<p><strong>Rascunho</strong><br> - Esta página está incompleta.</p> -</div> - -<p> </p> - -<p>Este artigo traz uma visão geral da arquitetura da plataforma Firefox OS, introduzindo conceitos chaves e explicações básicas de como os componentes se interagem.</p> - -<div class="note"> -<p><strong>Nota:</strong> Lembre-se que o Firefox OS ainda é um produto tipo <em>pre-release</em>, ou seja, a arquitetura não é final e está sujeita a mudanças.</p> -</div> - -<h2 id="Terminologia_Firefox_OS">Terminologia Firefox OS</h2> - -<p>Existem alguns termos que você precisa saber para entender melhor o Firefox OS.</p> - -<dl> - <dt>B2G</dt> - <dd>Versão abreviada para <em>Boot to Gecko</em>.</dd> - <dt>Boot to Gecko</dt> - <dd>O codinome do projeto Firefox OS que era o termo anteriormente utilizado antes do nome oficial, Firefox OS, ser lançado. É comum ver o termo B2G ser utilizado em casos que não são específicos ao Firefox OS, por exemplo quando desenvolvedores estão interessados na infra estrutura geral e usos que não estão atrelados com a agenda ou as prioridades do Firefox OS.</dd> - <dt><a href="/en-US/docs/Mozilla/Firefox_OS/Gaia" title="/en-US/docs/Mozilla/Firefox_OS/Gaia">Gaia</a></dt> - <dd>É a interface visual do Firefox OS, que apresenta a experiência do sistema ao usuário. A camada Gaia contém várias aplicações padrão como Tela de Bloqueio e Tela Inicial, e várias aplicações que são esperadas em um <em>smartphone</em>. O Gaia é completamente implementado com padrões web como HTML, CSS, JavaScript, dentre outros. As interfaces entre a camada web e os recursos do sistema operacional são feitas via APIs web — algumas abertas e outras que estão em desenvolvimento na camada Gecko. O Gaia oferece maneiras para a instalação de aplicações de terceiros.</dd> - <dt><a href="/en-US/docs/Gecko" title="/en-US/docs/Accessibility/AT-APIs/Gecko">Gecko</a></dt> - <dd>Este é o <em>runtime</em> web específico para as aplicações do Firefox OS. O Gecko oferece uma infra estrutura de padrões web como HTML5, CSS, SVG, WebGL, JavaScript, dentre outros. Ele também oferece recursos do sistema como <em>device API </em>assim permitindo que aplicações web possam acessar serviços do dispositivo móvel, como por exemplo o GPS e câmera. O Gecko também carrega várias funcionalidades básicas que são importantes para que aplicações web possam rodar corretamente, como a camada de rede e segurança, a camada de gráficos, o motor máquina virtual JavaScript, o <em>engine </em>de layout, dentre outros.</dd> - <dt><a href="/en-US/docs/Mozilla/Firefox_OS/Gonk" title="/en-US/docs/Mozilla/Firefox_OS/Gonk">Gonk</a></dt> - <dd>O Gonk é a camada mais baixa do sistema operacional e consiste em um kernel Linux (baseado no <a href="http://source.android.com/">Android Open Source Project</a> (AOSP)) e o HAL (<em>hardware abstraction layer). </em>O kernel e várias das bibliotecas são ligados a projetos de código aberto conhecidos: Linux, libusb, bluez, dentre outros. Algumas outras partes do HAL são compartilhadas com o projeto Android: GPS, camera, dentre outros. Pode-se dizer que o Gonk é uma distribuição Linux simplificada. O Gonk é uma plataforma alvo (<em><strong>porting target</strong></em>) do Gecko, ou seja, existe o <em>target </em>Gonk assim como existem plataformas de saída para Mac OS X, Windows, e Android. Uma vez que o projeto do Firefox OS tem controle sobre o Gonk, é possível que interfaces baixo nível sejam expostas ao Gecko, por exemplo, o acesso direto para a pilha de serviços de telefonia e também o acesso direto ao <em>frame buffer </em>gráfico. Estas características são novas e não ocorrem no caso de outros sistemas operacionais.</dd> - <dt><a name="Jank">Jank</a></dt> - <dd>Esse termo, geralmente usado no mundo dos aplicativos móveis, refere-se ao efeito dos códigos que geram demora ou ineficiência na operação dos aplicativos, bloqueando a atualização da Interface do Usuário causando travamentos ou demora na resposta. Nossos engenheiros que trabalham no Gaia usam diversas técnicas de otimização para tentar evitar isso.</dd> -</dl> - -<h2 id="Diagrama_da_arquitetura">Diagrama da arquitetura</h2> - -<p><img alt="Firefox OS Architecture" src="https://developer.mozilla.org/files/4605/FirefoxOS.png" style="display: block; height: 915px; margin: 0px auto; width: 754px;"></p> - -<dl> - <dt> </dt> - <dt style="text-align: center;"> </dt> -</dl> - -<h2 id="Procedimento_de_bootup_do_Firefox_OS"><a name="Firefox_OS_bootup_procedure"></a>Procedimento de <em>bootup</em> do Firefox OS</h2> - -<p>Essa seção descreve o processo pelo qual o dispositivo Firefox OS inicializa, que partes são envolvidas e onde. Como uma referência rápida, o sistema geral de <em>bootup</em> flui dos <em>bootloaders</em> no <em>Kernel space</em>, para iniciar no código nativo, para o B2G e então para o Gecko no <em>userspace</em>, e finalmente na aplicação do sistema, gerenciador de janelas e na tela inicial dentro do Gecko. Os demais aplicativos são executados em cima dessa estrutura.</p> - -<p><img alt="" src="https://mdn.mozillademos.org/files/7491/bootup.png" style="display: block; height: 1979px; margin: 0px auto; width: 2112px;"></p> - -<h3 id="O_processo_de_inicialização_bootstrapping">O processo de inicialização <em>bootstrapping</em></h3> - -<p>Quando um dispositivo com o Firefox OS é ligado, a execução dá inicio no <em>bootloader</em> primário. A partir deste ponto é carregado o sistema operacional da forma tradicional. A partir desse momento, o processo e carga do sistema continua da forma típica; uma sucessão de <em>bootloaders</em> com nível cada vez mais alto inicializa a próxima carga na cadeia. Ao final desse processo, a execução é transferida para o kernel do Linux.</p> - -<p>Existem alguns pontos que merecem destaque no processo de inicialização:</p> - -<ul> - <li>Os <em>bootloaders</em> normalmente apresentam uma tela inicial vista pelo usuário durante a inicialização; normalmente um logo do fabricante.</li> - <li>As implementações de <em>bootloaders</em> normalmente são feitas copiando uma imagem para a memória flash do dispositivo. Diferentes dispositivos, utilizam diferentes protocolos; muitos dispositivos utilizam o <a href="http://android-dls.com/wiki/index.php?title=Fastboot" title="http://android-dls.com/wiki/index.php?title=Fastboot">protocolo fastboot</a>, mas o Samsung Galaxy S II, por exemplo, utiliza o protocolo odin.</li> - <li>Ao final do processo de inicialização, a imagem do modem é normalmente carragada e executada no processador do modem. Como isso acontece é uma característica muito específica do dispositivo e costuma ser uma tecnologia proprietária.</li> -</ul> - -<h3 id="O_kernel_do_Linux">O kernel do Linux</h3> - -<p>O(s) kernel(s) do Linux utilizado(s) pelo Gonk é muito similar ao original do Linux, do qual é derivado. Existem algumas alterações feitas pelo AOSP (<a href="http://source.android.com/" title="http://source.android.com/">Android Open Source Project</a>) que ainda não foram migradas. Adicionalmente, fabricantes alteram o kernel e geram essas alterações no seu próprio cronograma. Em geral, porém, o kernel do Linux está próximo do original.</p> - -<p>O <a href="http://en.wikipedia.org/wiki/Linux_startup_process" title="http://en.wikipedia.org/wiki/Linux_startup_process">processo de inicialização do Linux</a> está bem documentado em diversos lugares da internet, assim esse artigo não irá cobrí-lo.</p> - -<p>O Kernel do Linux executará processos essenciais definidos em <code>init.rc</code> e o sucessor <a href="https://github.com/mozilla-b2g/gonk-misc/blob/master/init.b2g.rc">init.b2g.rc</a> para inicializar processos como <code>b2g</code> (processo básico do FirefoxOS, que contém o Gecko) e <code>rild</code> (processos relacionados à telefonia e que possuem diversos <em>chipsets</em> proprietários) — veja abaixo para maiores detalhes. Ao final desse processo, um novo processo do <em>userspace</em> chamado <code>init</code> é iniciado, como na maioria do sistemas tipo UNIX.</p> - -<p>Neste ponto da execução, o único "disco" montado é a <em>RAM disk</em>. Que é compilada durante o processo de compilação do Firefox OS, e contém programas utilitários críticos, como o <code>init</code>, assim como outros scripts de inicialização e módulos carregáveis do kernel.</p> - -<p>Uma vez que o processo <code>init</code> é iniciado, o kernel do Linux manipula as chamadas do sistema do <em>userspace</em> e as interrupções vindas dos dispositivos de hardware. Muitas características do hardware são apresentadas ao <em>userspace</em> através do <a href="http://en.wikipedia.org/wiki/Sysfs" title="http://en.wikipedia.org/wiki/Sysfs"><code>sysfs</code></a>. Por exemplo, a seguir um <a href="https://github.com/cgjones/mozilla-central/blob/master/hal/gonk/GonkHal.cpp#L277" title="https://github.com/cgjones/mozilla-central/blob/master/hal/gonk/GonkHal.cpp#L277">trecho do código</a> que lê o estado de carga da bateria a partir do Gecko:</p> - -<pre>FILE *capacityFile = fopen("/sys/class/power_supply/battery/capacity", "r"); -double capacity = dom::battery::kDefaultLevel * 100; -if (capacityFile) { - fscanf(capacityFile, "%lf", &capacity); - fclose(capacityFile); -}</pre> - -<h3 id="O_processo_de_inicialização">O processo de inicialização</h3> - -<p><span class="author-g-ivm1l4nswhut8ons">No Gonk, o processo <code>init</code> faz a montagem dos sistemas de arquivos e dispara os serviços do sistema</span> operacional. Após isso, ele funciona como um gerenciador de processos. Esse processo é semelhante ao <code>init</code> em outros sistemas operacionais tipo UNIX. Ele interpreta scripts (ou seja, os arquivos <code>init*.rc</code>) que consistem em comandos que descrevem o que deve ser feito para iniciar vários serviços. O arquivo <code>init.rc</code> do Firefox OS é basicamente o arquivo <code>init.rc</code> do Android para o dispositivo com as correções necessárias para incluir as funcionalidades exigidas pelo <code>kick-start</code> do Firefox OS, e varia de acordo com o dispositivo.</p> - -<p>Uma tarefa chave que o processo <code>init</code> gerencia é a inicialização do processo <code>b2g</code>; que é o núcleo do sistema operacional Firefox OS.</p> - -<p>O código no arquivo <code>init.rc</code> que faz a inicialização parece com isso:</p> - -<pre>service b2g /system/bin/b2g.sh - class main - onrestart restart media</pre> - -<div class="note"> -<p><strong>Nota:</strong> A maneira exata de como o <code>init.rc</code> difere da versão do Android varia de um dispositivo para o outro; algumas vezes o arquivo <code>init.b2g.rc</code> é simplesmente adicionado, outras vezes as correções são mais significantes.</p> -</div> - -<h2 id="A_arquitetura_do_userspace_de_processos">A arquitetura do <em>userspace</em> de processos</h2> - -<p>Agora é útil uma visão geral de como os vários compontes do Firefox OS se encaixam e interagem uns com os outros. Esse diagrama mostra o processo primário do <em>userspace</em> no Firefox OS.</p> - -<p><a href="/files/3849/B2G userspace architecture.svg"><img alt="Userspace diagram" src="/files/3849/B2G%20userspace%20architecture.svg" style="float: right; height: 491px; position: relative; width: 520px;"></a></p> - -<div class="note"> -<p><strong>Nota:</strong> Tenha em mente que o Firefox OS encontra-se sob desenvolvimento, esse diagrama pode sofrer alterações e pode não estar totalmente correto.</p> -</div> - -<p>O processo <code>b2g</code> é o processo primário de sistema. Ele roda sob alto privilégio; com acesso a maioria dos dispositivos de hardware. <code>b2g</code> comunica-se com o modem, escreve no buffer de tela, interage com GPS, câmeras e outras funcionalidades do hardware. Internamente <code>b2g</code> executa a camada Gecko (implementada por <code>libxul.so</code>). Veja <a href="#Gecko">Gecko</a> para conhecer os detalhes de como a camada Gecko funciona, e como o <code>b2g</code> comunica-se com ele.</p> - -<h3 id="b2g">b2g</h3> - -<p>O processo <code>b2g</code> é responsável por disparar um número de processos de baixo privilégio. Esses processos estão onde as aplicações web e outros conteúdos web são carregados. Eles comunicam-se com o processo principal do servidor Gecko através do <a href="/pt-BR/docs/IPDL" title="/en-US/docs/IPDL">IPDL</a>, um sistema de transmissão de mensagens.</p> - -<p>O processo <code>b2g</code> executa libxul, que faz referência a <code>b2g/chrome/app/b2g.js</code> para obter as preferências padrão. A partir das preferências será aberto o arquivo HTML <code>b2g/chrome/content/shell.html</code>, que é compilado dentro do arquivo <code>omni.ja</code>. <code>shell.html</code> inclui o arquivo <code>b2g/chrome/content/shell.js</code>, que dispara o aplicativo Gaia <code>system</code>.</p> - -<h3 id="rild">rild</h3> - -<p>O processo <code>rild</code> é a interface com o processador do modem. <code>rild</code> é um serviço que implementa a <strong><em>Radio Interface Layer</em></strong> (RIL). É um código proprietário implementado pelo fornecedor do hardware que conversa com o hardware do modem. O <code>processo</code> rild possibilita a conexão com um socket UNIX-domain com o qual é vinculado. O processo é iniciado por um código no script <code>init</code> como descrito abaixo.</p> - -<pre>service ril-daemon /system/bin/rild - socket rild stream 660 root radio</pre> - -<h3 id="rilproxy">rilproxy</h3> - -<p>No Firefox OS, o cliente do processo <code>rild</code> é o processo <code>rildproxy</code>. Atua como um <em>dumb forwarding proxy</em> entre o <code>rild</code> e o <code>b2g</code>. A necessidade desse proxy é um detalhe de implementação; por enquanto podemos resumir que ele é realmente necessário. The <a href="https://github.com/mozilla-b2g/rilproxy" title="https://github.com/mozilla-b2g/rilproxy">o código do <code>rilproxy</code> pode ser encontrado no GitHub</a>.</p> - -<h3 id="mediaserver">mediaserver</h3> - -<p>O processo <a href="https://github.com/android/platform_frameworks_base/tree/ics-mr0-release/media/libmediaplayerservice"><code>mediaserver</code></a> controla a execução de vídeo e audio. O Gecko comunica-se com esse processo através de um mecanismo RPC (<em>Remote Procedure Call</em>) do Android. Algumas das mídias que o Gecko pode executar (audio OGG Vorbis, vídeo OGG Theora, e vídeo <a href="http://www.webmproject.org/about/" title="http://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&cad=rja&ved=0CDUQFjAA&url=http%3A%2F%2Fwww.webmproject.org%2F&ei=8Q84UOnoMoHH6wHZ44DwBA&usg=AFQjCNHK9j6wyhUful5RmKCpU6b8GDfpYQ&sig2=tCl8VxL3mCvrH86EyOwO_A">WebM</a>) são decodificadas pelo Gecko e enviadas diretamente para o processo <code>mediaservice</code>. Outros arquivos de mídia são decoficiados pelo <code>libstagefright</code>, que é capaz de acessar <em>codecs</em> proprietários e <em>encoders</em> de hardware.</p> - -<div class="note"> -<p><strong>Nota:</strong> O processo <code>mediaserver</code> é um componente "temporário" do Firefox OS; ele faz parte do projeto para ajudar o trabalho inicial do desenvolvimento, mas há a expectativa de não ser mais utilizado. Mas provavelmente isso não acontecerá antes do lançamento do Firefox OS 2.0.</p> -</div> - -<h3 id="netd">netd</h3> - -<p>O processo <code>netd</code> é utilizado para configurar interfaces de rede.</p> - -<h3 id="wpa_supplicant">wpa_supplicant</h3> - -<p>O processo <code>wpa_supplicant</code> é um serviço padrão UNIX que gerencia a conectividade com os pontos de acesso WiFi.</p> - -<h3 id="dbus-daemon">dbus-daemon</h3> - -<p>O processo <code>dbus-daemon</code> implementa <a href="http://www.freedesktop.org/wiki/Software/dbus" title="http://www.freedesktop.org/wiki/Software/dbus">D-Bus</a>, um sistema de barramento de mensagens utilizado pelo Firefox OS para comunicação Bluetooth.</p> - -<h2 id="Gecko">Gecko</h2> - -<p>O <a href="/pt-BR/docs/Mozilla/Gecko" title="/en-US/docs/Gecko">Gecko</a>, como já mencionado, é o responsável pela implementação dos padrões web (<a href="/pt-BR/docs/Web/HTML" title="/en-US/docs/HTML">HTML</a>, <a href="/pt-BR/docs/CSS" title="/en-US/docs/CSS">CSS</a>, and <a href="/pt-BR/docs/Javascript" title="/en-US/docs/JavaScript">JavaScript</a>) <span class="author-g-ivm1l4nswhut8ons">que é a infraestrutura que implementa tudo que o usuário vê no Firefox OS.</span></p> - -<div class="note"> -<p><strong>Nota</strong>: Para procurar o Gecko codebase, você pode usar <a href="http://dxr.mozilla.org">http://dxr.mozilla.org</a>. É mais elegante e fornece boas referências futuras, mas com repositórios limitados. Ou você pode tentar o tradicional <a href="http://mxr.mozilla.org">http://mxr.mozilla.org</a>, que contém mais projetos Mozilla.</p> -</div> - -<h3 id="Arquivos_Gecko_relacionados_com_Firefox_OS">Arquivos Gecko relacionados com Firefox OS</h3> - -<h5 id="b2g_2">b2g/</h5> - -<p>O diretório b2g contém principalmente funções relacionadas com o Firefox.</p> - -<h5 id="b2gchromecontent">b2g/chrome/content</h5> - -<p>Contém arquivos JavaScript que são executados acima do aplicativo <em>system</em>.</p> - -<h5 id="b2gchromecontentshell.html">b2g/chrome/content/shell.html</h5> - -<p>É o ponto de entrada do Gaia — o HTML para o aplicativo system. <code>shell.html</code> chamado em <code>settings.js</code> e <code>shell.js</code>:</p> - -<pre class="brush: html language-html"><code class="language-html"><span class="script token"><span class="tag token"><span class="tag token"><span class="punctuation token"><</span>script</span> <span class="attr-name token">type</span><span class="attr-value token"><span class="punctuation token">=</span><span class="punctuation token">"</span>application/javascript;version<span class="punctuation token">=</span>1.8<span class="punctuation token">"</span></span> <span class="attr-name token">src</span><span class="attr-value token"><span class="punctuation token">=</span><span class="punctuation token">"</span>chrome://browser/content/settings.js<span class="punctuation token">"</span></span><span class="punctuation token">></span></span> <span class="tag token"><span class="tag token"><span class="punctuation token"></</span>script</span><span class="punctuation token">></span></span></span> -<span class="script token"><span class="tag token"><span class="tag token"><span class="punctuation token"><</span>script</span> <span class="attr-name token">type</span><span class="attr-value token"><span class="punctuation token">=</span><span class="punctuation token">"</span>application/javascript;version<span class="punctuation token">=</span>1.8<span class="punctuation token">"</span></span> <span class="attr-name token">src</span><span class="attr-value token"><span class="punctuation token">=</span><span class="punctuation token">"</span>chrome://browser/content/shell.js<span class="punctuation token">"</span></span><span class="punctuation token">></span></span> <span class="tag token"><span class="tag token"><span class="punctuation token"></</span>script</span><span class="punctuation token">></span></span></span></code></pre> - -<p><code>settings.js</code> contém parâmetros padrão do sistema.</p> - -<h5 id="b2gchromecontentshell.js">b2g/chrome/content/shell.js</h5> - -<p><code>shell.js</code> é o primeiro script a carregar no aplicativo Gaia <code>system</code>.</p> - -<p><code>shell.js</code> importa todos os módulos necessários, registra <em>listeners</em> chave, define <code>sendCustomEvent</code> e <code>sendChromeEvent</code> para comunicar com o Gaia e fornece a instalação de programas de ajuda de aplicativos web: <code>indexedDB quota</code>, <code>RemoteDebugger</code>, <code>keyboard helper</code> e <code>screenshot tool</code>.</p> - -<p>Mas a função mais importante do <code>shell.js</code> é iniciar o aplicativo Gaia <code>system</code>, em seguida, entregar os sistemas relacionados à gestão para o aplicativo <code>system</code>.</p> - -<pre class="brush: js language-js"><code class="language-js"><span class="keyword token">let</span> systemAppFrame <span class="operator token">=</span> - document<span class="punctuation token">.</span><span class="function token">createElementNS<span class="punctuation token">(</span></span><span class="string token">'http://www.w3.org/1999/xhtml'</span><span class="punctuation token">,</span> <span class="string token">'html:iframe'</span><span class="punctuation token">)</span><span class="punctuation token">;</span> - <span class="punctuation token">.</span><span class="punctuation token">.</span><span class="punctuation token">.</span> - container<span class="punctuation token">.</span><span class="function token">appendChild<span class="punctuation token">(</span></span>systemAppFrame<span class="punctuation token">)</span><span class="punctuation token">;</span></code></pre> - -<h5 id="b2gchromeappb2g.js">b2g/chrome/app/b2g.js</h5> - -<p>Esse script contém configurações pré-definidas, como about:config no navegador, e o mesmo <code>pref.js </code>do Gaia. Essas configurações podem ser alteradas do aplicativos Configurações e podem ser sobre-escritas pelo <code>user.js</code> do Gaia no script de compilação do Gaia.</p> - -<h5 id="domAPI">dom/{API}</h5> - -<p>Novas implementações de API (post-b2g) ficará no diretório <code>dom/</code>. APIs velhas ficarão em <code>dom/base</code>, por examplo <code>navigator.cpp</code>.</p> - -<h5 id="domapps">dom/apps</h5> - -<p><code>.jsm</code> será carregado — <code>.js</code> implementações API como instalação <code>webapp.js</code>, <code>getSelf</code>, etc.</p> - -<h5 id="domappssrc">dom/apps/src/</h5> - -<p>Todas as permissões são definidas em <a href="http://mxr.mozilla.org/mozilla-central/source/dom/apps/src/PermissionsTable.jsm">PermissionsTable.jsm</a></p> - -<h5 id="domwebidl">dom/webidl</h5> - -<p>WebIDL é a linguagem usada para definir APIs web. Para os atributos suportados veja <a href="https://developer.mozilla.org/en-US/docs/Mozilla/WebIDL_bindings">WebIDL_bindings</a>.</p> - -<h5 id="mozillacentralhalgonk">mozilla/central/hal/gonk</h5> - -<p>Esse diretório contém arquivos relacionados à camada de portabilidade do gonk.</p> - -<h4 id="Generated_files">Generated files</h4> - -<h5 id="modulelibprefsrcinitall.js">module/libpref/src/init/all.js</h5> - -<p>Contém todos os arquivos de configuração.</p> - -<h5 id="systemb2g_omni.ja_and_omni.js">/system/b2g/ omni.ja and omni.js</h5> - -<p>Contém o pacote de estilos para recursos do dispositivo.</p> - -<h3 id="Processando_eventos_de_entrada">Processando eventos de entrada</h3> - -<p>Muitas ações dentro do Gecko são desencadeadas por ações de usuários. Essas ações são representadas por eventos (como pressionar botões, toques na tela, assim por diante). Esses eventos entram no Gecko através da <a href="https://dxr.mozilla.org/mozilla-central/source/widget/gonk/nsAppShell.cpp" rel="custom">implementação do Gonk</a> na <code><a href="/pt-BR/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIAppShell" title="">nsIAppShell</a></code>, uma interface Gecko que é usada para representar o ponto primário de entrada para uma aplicação Gecko; ou seja, o driver do dispositivo de entrada deve chamar métodos no objeto <code>nsAppShell</code> que representa o subsistema Gecko a fim de enviar eventos para a interface do usuário.</p> - -<p>Por exemplo:</p> - -<pre>void GeckoInputDispatcher::notifyKey(nsecs_t eventTime, - int32_t deviceId, - int32_t source, - uint32_t policyFlags, - int32_t action, - int32_t flags, - int32_t keyCode, - int32_t scanCode, - int32_t metaState, - nsecs_t downTime) { - UserInputData data; - data.timeMs = nanosecsToMillisecs(eventTime); - data.type = UserInputData::KEY_DATA; - data.action = action; - data.flags = flags; - data.metaState = metaState; - data.key.keyCode = keyCode; - data.key.scanCode = scanCode; - { - MutexAutoLock lock(mQueueLock); - mEventQueue.push(data); - } - gAppShell->NotifyNativeEvent(); -}</pre> - -<p>Esses eventos vêm do sistema padrão do Linux <code>input_event</code>. O Firefox OS usa uma <a href="https://dxr.mozilla.org/mozilla-central/source/widget/gonk/libui/InputReader.cpp" rel="custom">light abstraction layer</a> sobre ela que provê algumas funcionalidades interessantes como filtro de evento. Você pode ver o código que cria os eventos de entrada no método <code>EventHub::getEvents()</code>em <code><a href="https://dxr.mozilla.org/mozilla-central/source/widget/gonk/libui/EventHub.cpp" rel="custom">EventHub.cpp</a></code>.</p> - -<p>Uma vez que os eventos são recebidos pelo Gecko, eles são despacahdos para dentro do DOM por <code><a href="https://dxr.mozilla.org/mozilla-central/source/widget/gonk/nsAppShell.cpp" rel="custom">nsAppShell</a></code>:</p> - -<pre>static nsEventStatus sendKeyEventWithMsg(uint32_t keyCode, - uint32_t msg, - uint64_t timeMs, - uint32_t flags) { - nsKeyEvent event(true, msg, NULL); - event.keyCode = keyCode; - event.location = nsIDOMKeyEvent::DOM_KEY_LOCATION_MOBILE; - event.time = timeMs; - event.flags |= flags; - return nsWindow::DispatchInputEvent(event); -} -</pre> - -<p>Depois disso, os eventos ou são consumidos pelo próprio Gecko ou são enviados para as aplicações Web como <a href="/pt-BR/docs/DOM_Client_Object_Cross-Reference/DOM_Events" title="/en-US/docs/DOM_Client_Object_Cross-Reference/DOM_Events">os eventos DOM</a> <span class="author-g-ivm1l4nswhut8ons">que serão processados posteriormente, nas páginas.</span></p> - -<h3 id="Gráficos">Gráficos</h3> - -<p>No nível mais baixo, o Gecko usa <a href="http://www.khronos.org/opengles/2_X/" title="http://www.khronos.org/opengles/2_X/">OpenGL ES 2.0</a> para desenhar em um contexto do GL que empacota os buffers de <em>hardware frame</em>. Isso é executado na implementação Gonk em <code><a href="https://dxr.mozilla.org/mozilla-central/source/widget/gonk/nsWindow.cpp" rel="custom">nsWindow</a></code> por um código semelhante a esse:</p> - -<pre class="brush:cpp;">gNativeWindow = new android::FramebufferNativeWindow(); -sGLContext = GLContextProvider::CreateForWindow(this);</pre> - -<p>A classe <code>FramebufferNativeWindow</code> veio diretamente do Android; veja <a href="https://github.com/android/platform_frameworks_base/blob/ics-mr1-release/libs/ui/FramebufferNativeWindow.cpp" title="https://github.com/android/platform_frameworks_base/blob/ics-mr1-release/libs/ui/FramebufferNativeWindow.cpp"><code>FramebufferNativeWindow.cpp</code></a>. Utiliza a API <strong>gralloc</strong> API para acessar os drivers gráficos a fim de mapear os buffers dos dispositivos <em>framebuffer</em> na memória.</p> - -<p>O Gecko utiliza o seu sistema de camadas <a href="https://developer.mozilla.org/en-US/docs/Gecko/Layers" title="/en-US/docs/Gecko/Layers">(Layers system)</a> para desenhar um sistema composto na tela. Em resumo, o que acontece é isso:</p> - -<ol> - <li>O Gecko desenha regiões separadas das páginas em buffers de memória. Algumas vezes esses buffers ficam na memória do sistema, outras vezes, são texturas mapeadas no espaço de endereços do Gecko, o que significa que o Gecko desenha diretamente na memória de vídeo. Essa tarefa é feita no método <a href="http://mxr.mozilla.org/mozilla-central/source/gfx/layers/basic/BasicThebesLayer.cpp#83" title="http://mxr.mozilla.org/mozilla-central/source/gfx/layers/basic/BasicThebesLayer.cpp#201"><code>BasicThebesLayer::PaintThebes()</code></a>.</li> - <li>O Gecko então compõe todas essas texturas para a tela usando comandos OpenGL. Esse composição ocorre em <a href="http://mxr.mozilla.org/mozilla-central/source/gfx/layers/opengl/ThebesLayerOGL.cpp#124" title="http://mxr.mozilla.org/mozilla-central/source/gfx/layers/basic/BasicThebesLayer.cpp#201"><code>ThebesLayerOGL::RenderTo()</code></a>.</li> -</ol> - -<p>Os detalhes de como o Gecko lida com a renderização do conteúdo web está fora do escopo desse documento.</p> - -<h3 id="Hardware_Abstraction_Layer_(HAL)">Hardware Abstraction Layer (HAL)</h3> - -<p>O HAL é uma das camadas de portabilidade do Gecko. Ele manipula acessos de baixo nível às interfaces de sistema através de múltiplas plataformas usando uma API C++ que é acessível aos níveis mais altos do Gecko. Essas APIs são implementadas baseadas na plataforma dentro do próprio HAL no Gecko. Essa camada de abstração do hardware (HAL) não é acessível diretamente pelo código JavaScript no Gecko.</p> - -<h4 id="Como_o_HAL_funciona">Como o HAL funciona</h4> - -<p>Vamos considerar a API de <a href="/pt-BR/docs/Web/API/Window/navigator/vibrate" title="The documentation about this has not yet been written; please consider contributing!"><code>Vibração</code></a> como um exemplo. O HAL do Gecko para essa API é definida em <a href="https://dxr.mozilla.org/mozilla-central/source/hal/Hal.h" rel="custom">hal/Hal.h</a>. Em essência (simplificando a assinatura do método por uma questão de clareza), você tem esta função:</p> - -<pre>void Vibrate(const nsTArray<uint32> &pattern);</pre> - -<p>Essa é a função chamada pelo código do Gecko para acionar a vibração do dispositivo de acordo com o padrão especificado, uma função correspondente existe para cancelar qualquer vibração em curso. A implementação Gonk desse método está em <a href="https://dxr.mozilla.org/mozilla-central/source/hal/conk/GonkHal.cpp" rel="custom">hal/conk/GonkHal.cpp</a>:</p> - -<pre class="brush:cpp;">void Vibrate(const nsTArray<uint32_t> &pattern) { - EnsureVibratorThreadInitialized(); - sVibratorRunnable->Vibrate(pattern); -} -</pre> - -<p>Esse código envia uma requisicão ao dispositivo para iniciar a vibração em outra thread, a qual é implementada em <code>VibratorRunnable::Run()</code>. O loop principal dessa thread pode ser vista aqui:</p> - -<pre class="brush:cpp;">while (!mShuttingDown) { - if (mIndex < mPattern.Length()) { - uint32_t duration = mPattern[mIndex]; - if (mIndex % 2 == 0) { - vibrator_on(duration); - } - mIndex++; - mMonitor.Wait(PR_MillisecondsToInterval(duration)); - } - else { - mMonitor.Wait(); - } -} -</pre> - -<p><code>vibrator_on()</code>é uma API do HAL do Gonk que liga o motor que vibra o dispositivo. Internamente esse método envia uma mensagem para o drive do kernel gravando um valor específico o objeto do kernel usando <code>sysfs</code>.</p> - -<h4 id="Implementações_de_API_de_Fallback_do_HAL">Implementações de API de <em>Fallback</em> do HAL</h4> - -<p>As APIs (<span class="st">Application Programming Interface) HAL do Gecko são suportadas por todas as plataformas. Quando o Gecko é compilado para uma plataforma que não existe um motor para vibração (por exemplo, no caso de computadores de mesa), então uma rotina de <em>fallback</em> é usada. Para vibração é usada: </span> <a href="https://dxr.mozilla.org/mozilla-central/source/hal/fallback/FallbackVibration.cpp" rel="custom">hal/fallback/FallbackVibration.cpp</a>.</p> - -<pre class="brush:cpp;">void Vibrate(const nsTArray<uint32_t> &pattern) { -}</pre> - -<h4 id="Implementações_de_Sandbox">Implementações de <em>Sandbox</em></h4> - -<p>Devido ao fato de muitos conteúdos web são executados em processos com poucos privilégios, nós não podemos assumir que esses processos tem os privilégios necessários para, por exemplo, ligar e desligar o motor de vibração de um dispositivo. Adicionalmente, nós queremos ter um local central para lidar com algumas condições específicas em tempo de execução. No HAL do Gecko isso é feito através da implementação de uma <em>sandbox</em> que funciona como um <em>proxy</em> entre as requisições dos processos de conteúdo e as encaminha para o servidor Gecko. As requisições ao <em>proxy</em> são enviadas usando IPDL.</p> - -<p>Para a vibração é utilizada função <code>Vibrate()</code> em <a href="https://dxr.mozilla.org/mozilla-central/source/hal/sandbox/SandboxHal.cpp" rel="custom">hal/sandbox/SandboxHal.cpp</a>:</p> - -<pre class="brush:cpp;">void Vibrate(const nsTArray<uint32_t>& pattern, const WindowIdentifier &id) { - AutoInfallibleTArray<uint32_t, 8> p(pattern); - - WindowIdentifier newID(id); - newID.AppendProcessID(); - Hal()->SendVibrate(p, newID.AsArray(), GetTabChildFrom(newID.GetWindow())); -}</pre> - -<p>Essa função envia uma mensagem definida pela interface <code>PHal</code>, descrita pelo IPDL em <a href="https://dxr.mozilla.org/mozilla-central/source/hal/sandbox/PHal.ipdl" rel="custom">hal/sandbox/PHal.ipdl</a>. Esse método é descrito mais ou menos dessa forma:</p> - -<pre>Vibrate(uint32_t[] pattern);</pre> - -<p>O receptor dessa mensagem é o método <code>HalParent::RecvVibrate()</code> em <a href="https://dxr.mozilla.org/mozilla-central/source/hal/sandbox/SandboxHal.cpp" rel="custom">hal/sandbox/SandboxHal.cpp</a>:</p> - -<pre class="brush:cpp;">virtual bool RecvVibrate(const InfallibleTArray<unsigned int>& pattern, - const InfallibleTArray<uint64_t> &id, - PBrowserParent *browserParent) MOZ_OVERRIDE { - - hal::Vibrate(pattern, newID); - return true; -}</pre> - -<p>Estão omitidos alguns detalhes que não são relevantes para essa discussão, porém mostra o caminho da mensagem desde o processo de conteúdo através do Gecko para o Gonk, então para a implementação <code>Vibrate()</code> do HAL no Gonk e eventualmente para os drivers gráficos.</p> - -<h3 id="APIs_do_DOM_(Document_Object_Model)">APIs do DOM (<em>Document Object Model</em>)</h3> - -<p><strong>Interfaces DOM</strong> são, em essência, como o conteúdo web comunica-se com o Gecko. Na verdade, existe muito mais coisa relacionada com esse assunto e para saber maiores detalhes verifique <a href="https://developer.mozilla.org/pt-BR/docs/DOM/About_the_Document_Object_Model" title="/en-US/docs/DOM/About_the_Document_Object_Model">esse artigo</a>. As interfaces DOM são definidas usando <a href="https://developer.mozilla.org/pt-BR/docs/XPIDL" title="/en-US/docs/XPIDL">IDL</a>, que inclui tanto a FFI (<em>Foreign Funtion Interface</em>) quanto OM (<em>Object Model</em>) entre JavaScript e C++.</p> - -<p>A API de vibração está disponível para o conteúdo web através da interface IDL em <code><a href="https://dxr.mozilla.org/mozilla-central/source/dom/interfaces/base/nsIDOMNavigator.idl" rel="custom">nsIDOMNavigator.idl</a>:</code></p> - -<pre>[implicit_jscontext] void mozVibrate(in jsval aPattern);</pre> - -<p>O argumento <a href="https://developer.mozilla.org/pt-BR/docs/SpiderMonkey/JSAPI_Reference/Jsval" title="/en-US/docs/SpiderMonkey/JSAPI_Reference/JSVAL_IS_OBJECT"><code>jsval</code></a> indica que <code>mozVibrate()</code>aceita como parâmetro de entrada qualquer valor JavaScript. O compilador IDL, <a href="https://developer.mozilla.org/en-US/docs/XPIDL/xpidl" title="/en-US/docs/XPIDL/xpidl"><code>xpidl</code></a>, gera uma interface C++ que é implementada pela classe <code>Navigator</code> em <code><a href="https://dxr.mozilla.org/mozilla-central/source/dom/base/Navigator.cpp" rel="custom">Navigator.cpp</a></code>.</p> - -<pre class="brush:cpp;">NS_IMETHODIMP Navigator::MozVibrate(const jsval& aPattern, JSContext* cx) { - // ... - hal::Vibrate(pattern); - return NS_OK; -}</pre> - -<p>Existe muito mais código nesse método, mas não aprofundaremos por não ser o propósito dessa discussão. O ponto é que a chamada para <code>hal::Vibrate()</code> transfere o controle do DOM para o HAL Gecko. A partir disso, nós entramos na implementação do HAL discutido na seção anterior e trabalhamos em direção ao <em>driver</em> gráfico.</p> - -<p><span id="result_box" lang="pt"><span class="hps">Acima disso</span><span>, a implementação</span> <span class="hps">DOM</span> <span class="hps">não se importa</span> <span class="hps">em qu</span><span class="hps">al plataforma</span> <span class="hps">que está sendo executado</span> <span class="atn hps">(</span><span>Gonk</span><span>, Windows,</span> <span class="hps">Mac</span> <span class="hps">OS X,</span> <span class="hps">ou</span> <span class="hps">qualquer outra)</span><span>.</span> <span class="hps">Ele também</span> <span class="hps">não se importa se</span> <span class="hps">o</span> <span class="hps">código está sendo executado</span> <span class="hps">em um processo de</span> <span class="hps">conteúdo ou</span> <span class="hps">no processo do servidor</span> <span class="hps">Gecko.</span> <span class="hps">Esses</span> <span class="hps">detalhes são</span> tratados em <span class="hps">níveis mais baixos</span> <span class="hps">do sistema</span><span class="hps">.</span></span></p> - -<p>A API de vibração é uma API muito simples, o que a torna um bom exemplo. The <a href="https://developer.mozilla.org/en-US/docs/API/WebSMS" title="/en-US/docs/API/WebSMS">SMS API</a> é um exemplo de uma API mais complexa que usa sua própria camada "remota" conectado o processo de contéudo ao servidor.</p> - -<h2 id="Radio_Interface_Layer_(RIL)">Radio Interface Layer (RIL)</h2> - -<p>A interface RIL foi mencionada na seção <a href="#A_arquitetura_do_userspace_de_processos">A arquitetura do userspace de processos</a>. Essa seção examina como as várias peças dessa camada interage com um maior detalhe.</p> - -<p>Os principais componentes envolvidos no RIL são:</p> - -<dl> - <dt><code>rild</code></dt> - <dd>O processo que conversa com o firmware do modem proprietário.</dd> - <dt><code>rilproxy</code></dt> - <dd>O processo que intermedeia as mensagem entre o <code>rild</code> e o Gecko (que é implementado no processo <code>b2g</code>). Isso supera o problema de permissão que aparece quando tentamos acessar o <code>rild</code> diretamente, uma vez que <code>rild</code> somente pode comunicar-se através do grupo <code>radio</code>.</dd> - <dt><code>b2g</code></dt> - <dd>Esse processo também conhecido como <strong>processo chrome</strong>, implementa o Gecko. As porções desses processo que se relaciona com o RIL (<em>Radio Interface Layer</em>) são <a href="https://dxr.mozilla.org/mozilla-central/source/dom/system/gonk/ril_worker.js" rel="custom">dom/system/gonk/ril_worker.js</a> (que implementa ma thread que conversa com o <code>rild</code> através do <code>rilproxy</code> e implementa o <em>radio state machine</em>. A interface <code><a href="/pt-BR/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIRadioInterfaceLayer" title="">nsIRadioInterfaceLayer</a></code>, que é a thread principal do serviço <a href="https://developer.mozilla.org/en-US/docs/XPCOM" title="/en-US/docs/XPCOM">XPCOM</a> que atua primariamente como uma troca de mensagens entre a thread <code>ril_worker.js</code> e os vários componentes Geko, incluindo o próprio processo de conteúdo Gecko.</dd> - <dt>Processo Gecko de conteúdo</dt> - <dd>Dentro do processo Gecko de conteúdo, a interface <code><a href="/pt-BR/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIRILContentHelper" title="">nsIRILContentHelper</a></code> provê um serviço XPCOM que permite ao código implementar partes do DOM, como as APIs de <a href="https://developer.mozilla.org/en-US/docs/API/WebTelephony" title="/en-US/docs/API/WebTelephony">Telefonia</a> e <a href="https://developer.mozilla.org/en-US/docs/API/WebSMS" title="/en-US/docs/API/WebSMS">SMS</a> conversar com a interface de radio, que está no processo chrome.</dd> -</dl> - -<h3 id="Exemplo_Comunicando_do_rild_para_o_DOM">Exemplo: Comunicando do <code>rild</code> para o DOM</h3> - -<p>Vamos ver um exemplo de como as partes de baixo nível do sistema comunicam-se com o código DOM. Quando o modem recebe uma chamada, o <code>rild</code> é notificado usando um mecanismo proprietário. <code>rild</code> então prepara uma mensagem para seu cliente de acordo com o protocolo "aberto", que é descrito em <a href="https://github.com/mozilla-b2g/android-hardware-ril/blob/master/include/telephony/ril.h" title="https://github.com/mozilla-b2g/android-hardware-ril/blob/master/include/telephony/ril.h"><code>ril.h</code></a>. No caso do recebimento de uma chamada, uma mensagem <code>RIL_UNSOL_RESPONSE_CALL_STATE_CHANGED</code> é gerada e envida pelo <code>rild</code> ao <code>rilproxy</code>.</p> - -<p><code>rilproxy</code>, implementado em <a href="https://github.com/mozilla-b2g/rilproxy/blob/master/src/rilproxy.c" title="https://github.com/mozilla-b2g/rilproxy/blob/master/src/rilproxy.c"><code>rilproxy.c</code></a>, recebe essa mensagem em seu loop principal, que direciona a conexão para o <code>rild</code> usando um código como esse:</p> - -<pre class="brush:cpp;">ret = read(rilproxy_rw, data, 1024); - -if(ret > 0) { - writeToSocket(rild_rw, data, ret); -}</pre> - -<p>Assim que a mensagem é recebida do <code>rild</code> é encaminda ao Gecko pelo socket que conecta <code>rilproxy</code> ao Gecko. Essa mensagem é recebida pelo Gecko no <a href="https://dxr.mozilla.org/mozilla-central/source/ipc/ril/Ril.cpp" rel="custom">IPC thread</a>:</p> - -<pre class="brush:cpp;">int ret = read(fd, mIncoming->Data, 1024); -// ... handle errors ... -mIncoming->mSize = ret; -sConsumer->MessageReceived(mIncoming.forget()); -</pre> - -<p>O consumidor dessas mensagens é <a href="https://dxr.mozilla.org/mozilla-central/source/dom/system/gonk/SystemWorkerManager.cpp" rel="custom">SystemWorkerManager</a>, que decompõe a mensagem e despacha para <code><a href="https://dxr.mozilla.org/mozilla-central/source/dom/system/gonk/ril_worker.js" rel="custom">ril_worker.js</a></code> uma thread que implementa o estado de máquina RIL. Isso é ocorre no método <code>RILReceiver::MessageReceived()</code>:</p> - -<pre class="brush:cpp;">virtual void MessageReceived(RilRawData *aMessage) { - nsRefPtr<DispatchRILEvent> dre(new DispatchRILEvent(aMessage)); - mDispatcher->PostTask(dre); -}</pre> - -<p>A tarefa enviada para essa thread, por sua vez chama a função <code>onRILMessage ()</code>, implementada em JavaScript. Isso é feito usando a função da API JavaScript <code><a href="https://developer.mozilla.org/en-US/docs/SpiderMonkey/JSAPI_Reference/JS_CallFunctionName" title="/en-US/docs/SpiderMonkey/JSAPI_Reference/JS_CallFunctionName">JS_CallFunctionName</a>()</code>:</p> - -<pre>return JS_CallFunctionName(aCx, obj, "onRILMessage", NS_ARRAY_LENGTH(argv), - argv, argv);</pre> - -<p><code>onRILMessage()</code>é implementada em <a href="https://dxr.mozilla.org/mozilla-central/source/dom/system/gonk/ril_worker.js" rel="custom">dom/system/gonk/ril_worker.js</a>, processo no qual processa a mensagem dividindo seus bytes em pedaços (parcelas). Cada pedaço completo é enviada para métodos apropriados para que sejam manipulados individualmente:</p> - -<pre class="brush:js;">handleParcel: function handleParcel(request_type, length) { - let method = this[request_type]; - if (typeof method == "function") { - if (DEBUG) debug("Handling parcel as " + method.name); - method.call(this, length); - } -} -</pre> - -<p>Esse código funciona obtendo o tipo de solicitação do objeto, certificando-se que é definido como uma função no código JavaScript, em seguida, chamando o método. Uma vez que <code>ril_worker.js</code> implementa cada tipo de pedido em um método com o mesmo nome que o tipo de solicitação, isso é muito simples.</p> - -<p>No nosso exemplo, <code>RIL_UNSOL_RESPONSE_CALL_STATE_CHANGED</code>, e o método chamado:</p> - -<pre class="brush:js;">RIL[UNSOLICITED_RESPONSE_CALL_STATE_CHANGED] = function UNSOLICITED_RESPONSE_CALL_STATE_CHANGED() { - this.getCurrentCalls(); -};</pre> - -<p>Como você pode ver no código acima, quando for recebida uma notificação de que o estado de chamada mudou, a máquina de estado simplesmente busca o estado da chamada atual chamando o método <code>getCurrentCall ()</code>:</p> - -<pre class="brush:js;">getCurrentCalls: function getCurrentCalls() { - Buf.simpleRequest(REQUEST_GET_CURRENT_CALLS); -}</pre> - -<p>É enviada de volta uma requisição para <code>rild</code> para solicitar o estado de todas as chamadas ativas no momento. A requisição volta ao longo de um caminho similar ao caminho seguido por <code>RIL_UNSOL_RESPONSE_CALL_STATE_CHANGED</code>, mas numa direção oposta (ou seja, de <code>ril_worker.js</code> para <code>SystemWorkerManager</code> para <code>Ril.cpp</code>, então <code>rilproxy</code> e finalmente para o socket <code>rild</code>). <code>rild</code> então responde de volta pelo mesmo caminho, eventualmente chegando em <code>ril_worker.js</code> que manipula a mensagem <code>REQUEST_GET_CURRENT_CALLS</code>. E assim ocorre a comunicação bidirecional.</p> - -<p>O estado de chamada é então processada e comparada com o estado anterior. Se é identificada uma mudança no estado, ril_worker.js notifica o serviço<code><a href="/pt-BR/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIRadioInterfaceLayer" title="">nsIRadioInterfaceLayer</a></code> na thread principal:</p> - -<pre class="brush:js;">_handleChangedCallState: function _handleChangedCallState(changedCall) { - let message = {type: "callStateChange", - call: changedCall}; - this.sendDOMMessage(message); -}</pre> - -<p><code><a href="/pt-BR/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIRadioInterfaceLayer" title="">nsIRadioInterfaceLayer</a></code> é implementada em <a href="https://dxr.mozilla.org/mozilla-central/source/dom/system/gonk/RadioInterfaceLayer.js" rel="custom">dom/system/gonk/RadioInterfaceLayer.js</a>; a mensagem é recebida pelo método <code>onmessage()</code>:</p> - -<pre class="brush:js;"> onmessage: function onmessage(event) { - let message = event.data; - debug("Received message from worker: " + JSON.stringify(message)); - switch (message.type) { - case "callStateChange": - // This one will handle its own notifications. - this.handleCallStateChange(message.call); - break; - ... -</pre> - -<p>O que tudo isso realmente faz é enviar a mensagem para o processo de conteúdo usando o <em>Parent Process Message Manager</em> (PPMM):</p> - -<pre class="brush:js;">handleCallStateChange: function handleCallStateChange(call) { - [some internal state updating] - ppmm.sendAsyncMessage("RIL:CallStateChanged", call); -}</pre> - -<p>No processo de conteúdo a mensagem é recebida pelo método <code>receiveMessage()</code>no serviço <code><a href="/pt-BR/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIRILContentHelper" title="">nsIRILContentHelper</a></code>, do <em>Child Process Message Manager</em> (CPMM):</p> - -<pre class="brush:js;">receiveMessage: function receiveMessage(msg) { - let request; - debug("Received message '" + msg.name + "': " + JSON.stringify(msg.json)); - switch (msg.name) { - case "RIL:CallStateChanged": - this._deliverTelephonyCallback("callStateChanged", - [msg.json.callIndex, msg.json.state, - msg.json.number, msg.json.isActive]); - break;</pre> - -<p>Esse, por sua vez, chama os métodos <code><a href="https://developer.mozilla.org/pt-BR/docs/XPCOM_Interface_Reference/nsIRILTelephonyCallback#callStateChanged()">nsIRILTelephonyCallback.callStateChanged()</a></code> em todo objeto registrado como <em>telephony callback</em>. Toda aplicação web que acessa a API <a href="/pt-BR/docs/Web/API/Window/navigator/mozTelephony" title="The documentation about this has not yet been written; please consider contributing!"><code>window.navigator.mozTelephony</code></a> tem registado um objeto de retorno de chamada que despacha eventos para o código JavaScript na aplicação web, como uma mudança de estado de um objeto chamada existente ou um novo evento de chamada recebida (<code>incoming</code>).</p> - -<pre class="brush:cpp;">NS_IMETHODIMP Telephony::CallStateChanged(PRUint32 aCallIndex, PRUint16 aCallState, - const nsAString& aNumber, bool aIsActive) { - [...] - - if (modifiedCall) { - // Change state. - modifiedCall->ChangeState(aCallState); - - // See if this should replace our current active call. - if (aIsActive) { - mActiveCall = modifiedCall; - } - - return NS_OK; - } - - nsRefPtr<TelephonyCall> call = - TelephonyCall::Create(this, aNumber, aCallState, aCallIndex); - nsRefPtr<CallEvent> event = CallEvent::Create(call); - nsresult rv = event->Dispatch(ToIDOMEventTarget(), NS_LITERAL_STRING("incoming")); - NS_ENSURE_SUCCESS(rv, rv); - return NS_OK; -}</pre> - -<p>Aplicações podem receber esses eventos e atualizar sua interface de usuário e assim por diante:</p> - -<pre class="brush:js;">handleEvent: function fm_handleEvent(evt) { - switch (evt.call.state) { - case 'connected': - this.connected(); - break; - case 'disconnected': - this.disconnected(); - break; - default: - break; - } -}</pre> - -<p>Verifique a implementação de <a href="https://github.com/mozilla-b2g/gaia/blob/master/apps/communications/dialer/js/dialer.js" title="https://github.com/mozilla-b2g/gaia/blob/master/apps/communications/dialer/js/dialer.js"><code>handleEvent()</code> na aplicação de discagem</a> como um exemplo.</p> - -<h3 id="Dados_3G">Dados 3G</h3> - -<p>Existe uma mensagem RIL que inicia uma chamada de dados para o serviço celular. Isso habilita o modo de transferência de dados no modem. Esta chamada de dados acaba criando e ativando uma interface com Protocolo Ponto-a-Ponto <a href="https://pt.wikipedia.org/wiki/Point-to-Point Protocol" title="Point-to-Point Protocol">Point-to-Point Protocol</a> (PPP) no Kernel do Linux que pode ser configurado utilizando interfaces comuns.</p> - -<div class="note"> -<p><strong>Note:</strong> This section needs to be written.</p> -</div> - -<h3 id="APIs_DOM_relacionadas">APIs DOM relacionadas</h3> - -<p>Essa seção lista as APIs DOMs que são relacionadas com a comunicação RIL</p> - -<ul> - <li><a href="https://developer.mozilla.org/en-US/docs/API/WebTelephony/Introduction_to_WebTelephony" title="/en-US/docs/API/WebTelephony/Introduction_to_WebTelephony">Telephony API</a></li> - <li><a href="https://developer.mozilla.org/en-US/docs/API/WebSMS/Introduction_to_WebSMS" title="/en-US/docs/API/WebSMS/Introduction_to_WebSMS">SMS API</a></li> - <li>Mobile Connection API</li> -</ul> - -<h2 id="WiFi">WiFi</h2> - -<p>No Firefox OS o <em>backend</em> do WiFi simplesment usa <code>wpa_supplicant</code> para realizar a maioria do trabalho. Isso significa que o principal trabalho do <em>backend</em> é gerenciar o <code>supplicant</code> e fazer outras tarefas auxiliares como carregar o driver do WiFi e habilitar ou desabilitar a interface de rede. Em essência, isso significa que o <em>backend</em> é uma máquina de estados cujos estados seguem o estado do <code>supplicant</code>.</p> - -<div class="note"> -<p><strong>Nota:</strong> Muitas das coisas interessantes que acontecem no WiFi depende profundamente das mudanças de estados no processo <code>wpa_supplicant</code>.</p> -</div> - -<p>A implementação do componente WiFi é dividido em dois arquivos:</p> - -<dl> - <dt><a href="https://dxr.mozilla.org/mozilla-central/source/dom/wifi/DOMWifiManager.js" rel="custom">dom/wifi/DOMWifiManager.js</a></dt> - <dd>Implementa o API que é accessível pelo conteúdo web, como definido em <code><a href="/pt-BR/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIWifi.idl" title="">nsIWifi.idl</a></code>.</dd> - <dt><a href="https://dxr.mozilla.org/mozilla-central/source/dom/wifi/WifiWorker.js" rel="custom">dom/wifi/WifiWorker.js</a></dt> - <dd>Implementa a máquina de estados e o código que aciona o <code>supplicant</code>.</dd> -</dl> - -<p>Esses dois arquivos comunicam-se entre sim usando o <a href="https://developer.mozilla.org/en-US/docs/The_message_manager" title="/en-US/docs/The_message_manager">gerenciador de mensagens</a>. O backend escuta as mensagens solicitando determinadas ações, como um "associado", e responde com uma mensagem quando a ação solicitada foi concluída.</p> - -<p>O lado do DOM escuta os métodos de resposta bem como muitas mensagens de eventos que indica a alteração de estado e atualizações de informações.</p> - -<div class="note"> -<p><strong>Nota:</strong> Quaisquer APIs DOM síncronas são implementadas por cache de dados no lado do "pipe". Mensagens síncronas são evitadas sempre que possível.</p> -</div> - -<h3 id="WifiWorker.js">WifiWorker.js</h3> - -<p>Esse arquivo implementa a lógica principal por trás da interface WiFi. Ele é executado no processo chrome (em compilações multiprocessadas) e é instanciada pelo SystemWorkerManager. O arquivo é geralmente dividido em duas seções: uma função "gigante" anônima e o <code>WifiWorker</code> (e seu protótipo). A função anônima acaba sendo o <code>WifiManager</code> fornecido pela API local, incluindo notificações para eventos como a conexção ao <code>supplicant</code> e pesquisa de resultados disponíveis. Em geral contém pouca lógica e deixa exclusivamente o controle de suas ações ao consumidor enquanto ele simplesmente responde com as informações solicitadas controlando os detalhes da conexão com o <code>supplicant</code>.</p> - -<p>Os objetos <code>WifiWorker</code> ficam entre o <code>WifiManager</code> e o DOM. Repondem a eventos e os encaminham ao DOM, depois recebe as requisições do DOM e executa as ações apropriadas no <code>supplicant</code>. Também mantém a informação do estado do <code>supplicant</code> e o que é necessário fazer em seguida.</p> - -<h3 id="DOMWifiManager.js">DOMWifiManager.js</h3> - -<p>Implementa a API DOM, transmitindo as mensagens para/de os chamadores e o real WiFi <em>worker</em>. Tem pouca lógica envolvida.</p> - -<div class="note"> -<p><strong>Nota:</strong> A fim de evitar mensagens síncronas para o processo chrome, o Gerenciador de Wi-Fi não precisa armazenar o estado com base no evento recebido.</p> -</div> - -<p>Existe uma mensagem síncrona que é enviada no momento que a API DOM é instanciada, a fim de obter o estado atual do <code>supplicant</code>.</p> - -<h3 id="DHCP">DHCP</h3> - -<p>DHCP e DNS são gerenciados pelo <code>dhcpcd</code>, o cliente DHCP padrão do Linux. Portanto, não é capaz de responder quando a conexão da rede é perdida. Por causa disso, o Firefox OS derruba e reinicia o processo <code>dhcpcd</code> assim que é conectado a uma rede wireless.</p> - -<p><code>dhcpcd</code> também é responsável por definir a rota padrão, chamando no gerenciador de rede para informar ao kernel sobre os servidores DNS.</p> - -<h2 id="Gerenciador_de_Rede">Gerenciador de Rede</h2> - -<p>O Gerenciador de Rede configura as interfaces de rede abertas pelos Dados 3G e os componentes WiFi.</p> - -<div class="note"> -<p><strong>Nota:</strong> Isso precisa ser escrito.</p> -</div> - -<h2 id="Processos_e_threads">Processos e threads</h2> - -<p>Firefox OS usa threads POSIX para implementar as threads de aplicações, isso inclui a thread principal de cada aplicação bem como as <code>Web workers</code> e <code>helper threads</code>. Valores "Nice" são usados para priorizar os processos e a execução das threads confiando no agendador padrão do kernel do Linux. Dependendo do status do processo nós atribuimos um diferente valor "Nice" do nível. Temos atualmente 7 níveis:</p> - -<table class="standard-table"> - <caption>Process priority levels</caption> - <thead> - <tr> - <th scope="col">Priority</th> - <th scope="col">Nice</th> - <th scope="col">Used for</th> - </tr> - </thead> - <tbody> - <tr> - <td><code>MASTER</code></td> - <td>0</td> - <td>main b2g process</td> - </tr> - <tr> - <td><code>FOREGROUND_HIGH</code></td> - <td>0</td> - <td>applications holding a CPU wakelock</td> - </tr> - <tr> - </tr> - <tr> - <td><code>FOREGROUND</code></td> - <td>1</td> - <td>foreground applications</td> - </tr> - <tr> - <td><code>FOREGROUND_KEYBOARD</code></td> - <td>1</td> - <td>keyboard application</td> - </tr> - <tr> - <td><code>BACKGROUND_PERCEIVABLE</code></td> - <td>7</td> - <td>background applications playing audio</td> - </tr> - <tr> - <td><code>BACKGROUND_HOMESCREEN</code></td> - <td>18</td> - <td>homescreen application</td> - </tr> - <tr> - <td><code>BACKGROUND</code></td> - <td>18</td> - <td>all other applications running in the background</td> - </tr> - </tbody> -</table> - -<p>Alguns níveis possuem os mesmos "<em>nice values</em>", isso acontece porque esses níveis diferem da forma que são tratados pelo "out-of-memory killer". Todas as prioridades podem ser ajustadas em tempo de compilação via "Preferências". Os valores relevantes podem ser encontrados no arquivo <a href="http://hg.mozilla.org/mozilla-central/file/54e8c6492dc4/b2g/app/b2g.js#l610"><code>b2g/app/b2g.js</code></a>.</p> - -<div class="note"> -<p><strong>Nota</strong>: para mais informações sobre out-of-memory killer, e como o Firefox OS gerencia situações com baixa memória, leia o artigo <a href="https://developer.mozilla.org/pt-BR/Firefox_OS/Platform/Out_of_memory_management_on_Firefox_OS">Gerenciamento de falta de memória no Firefox OS</a>.</p> -</div> - -<p>Dentro de um processo a thread principal herda o "<em>nice value</em>" do processo, enquanto às threads do <code>web worker</code> é atribuido um "<em>nice value</em>" um ponto maior que a thread principal que roda na menor prioridade. Isso é feito para evitar que processos que utilizem muita CPU degradem a performance da thread principal. Prioridades de processos são alterados sempre que acontece um grande evento como quando uma aplicação é enviada para rodar em background ou foreground, uma nova aplicação é iniciada, ou uma aplicação existente executa uma <em>wake-lock </em>da CPU. Toda vez que a prioridade de um processo é ajustada todas as prioridades de suas threads também são ajustadas em conformidade.</p> - -<div class="note"> -<p><strong>Nota:</strong> cgroups não são usadas atualmente para gerenciamento de recursos por não serem confiáveis em certos dispositivos e kernels.</p> -</div> - -<p> </p> diff --git a/files/pt-br/archive/b2g_os/platform/arquitetura_aplicacoes_firefox_os/index.html b/files/pt-br/archive/b2g_os/platform/arquitetura_aplicacoes_firefox_os/index.html deleted file mode 100644 index e55c1148c1..0000000000 --- a/files/pt-br/archive/b2g_os/platform/arquitetura_aplicacoes_firefox_os/index.html +++ /dev/null @@ -1,39 +0,0 @@ ---- -title: Arquitetura de Aplicativos do Firefox OS -slug: Archive/B2G_OS/Platform/Arquitetura_aplicacoes_Firefox_OS -tags: - - B2B - - Firefox OS - - Guía -translation_of: Archive/B2G_OS/Platform/Apps_architecture ---- -<div class="boxed translate-display"> -<div class="summary"> -<p>Esse artigo explica o mecanismo interno de como as aplicações são executadas e gerenciadas no Firefox OS. Essa informação será útil para desenvolvedores da plataforma Firefox OS, bem como as equipes que trabalham na portabilidade do sistema operacional para novos hardwares. Você não precisa saber isso se for desenvolver um aplicativo para o Firefox OS, mas pode ser interessante.</p> -</div> -</div> - -<h2 id="O_processo_de_inicialização_do_aplicativo">O processo de inicialização do aplicativo</h2> - -<p>Quando o usuário seleciona um aplicativo para execução, ou um outro aplicativo precisa ser lançado, o aplicativo Tela Inicial pega a referência do aplicativo na API {{domxref("App")}}, então chama o método {{domxref("App.launch()")}} que lança o aplicativo.</p> - -<p>O Gecko recebe a requisição e envia o evento {{domxref("mozChromeEvent")}} para o <em>System app</em> com os detalhes do aplicativo que manipula o evento inserindo um novo {{HTMLElement("iframe")}} na sua árvore DOM carregando o aplicativo em {{HTMLElement("iframe")}}. Esse <em>frame</em> será a <em>home</em> do aplicativo até o mesmo terminar.</p> - -<p>Todo aplicativo requer um manifesto que detalha o aplicativo que possui uma hierarquia particular no pacote. Para maiores detalhes, veja o artigo <a href="/pt-BR/docs/Apps/Manifest">Manifesto do aplicativo</a>.</p> - -<h2 id="Comunicação_com_o_Gecko">Comunicação com o Gecko</h2> - -<p>A comunicação entre o Gecko e o <em>System app</em> do Gaia é feito via {{domxref("mozChromeEvent")}} e {{domxref("mozContentEvent")}}. <code>mozChromeEvent</code>s são transmitidos do chrome para o conteúdo e <code>mozContentEvent</code>s são transmitidos do conteúdo para o chrome. Esta comunicação é usada para controlar a criação e encerramento da IU (Interface do Usuário) confiável e injetar as funções necessárias para as notificações e outras tarefas, incluindo a notificação ao <em>System app</em> para iniciar um aplicativo.</p> - -<div class="note"> -<p><strong>Nota:</strong> Você encontra mais informações sobre como esses eventos funcionam na página <a href="/pt-BR/docs/Mozilla/Firefox_OS/Platform/Gaia/Gaia_apps/Sistema">Documentação do sistema</a>. Você também pode conseguir muita informação de como é usado olhando o código em {{source("b2g/chrome/content/shell.js")}}.</p> -</div> - -<h2 id="Veja_também">Veja também</h2> - -<ul> - <li><a href="/pt-BR/docs/Apps">Aplicativos</a></li> - <li>{{domxref("App")}}</li> - <li><a href="https://developer.mozilla.org/pt-BR/docs/Mozilla/Firefox_OS/Platform/Gaia/Gaia_apps/Sistema">Sistema</a></li> - <li><a href="https://developer.mozilla.org/pt-BR/docs/Mozilla/Firefox_OS/Architecture">Arquitetura do Firefox OS</a></li> -</ul> diff --git a/files/pt-br/archive/b2g_os/platform/gaia/gaia_apps/index.html b/files/pt-br/archive/b2g_os/platform/gaia/gaia_apps/index.html deleted file mode 100644 index 094d9ff279..0000000000 --- a/files/pt-br/archive/b2g_os/platform/gaia/gaia_apps/index.html +++ /dev/null @@ -1,90 +0,0 @@ ---- -title: Aplicativos Gaia -slug: Archive/B2G_OS/Platform/Gaia/Gaia_apps -tags: - - Apps - - Architecture - - B2G - - Firefox OS - - Gaia - - NeedsTranslation - - TopicStub -translation_of: Archive/B2G_OS/Platform/Gaia/Gaia_apps ---- -<div class="boxed translate-display"> - <div class="summary"> - <p><span class="seoSummary">Gaia é o front-end do Firefox OS, que contem a funcionalidade de administração do sistema e uma suíte interna de aplicativos distribuídos com os dispositivos Firefox OS. Todo o código fonte do Gaia, mesmo o sistema e os IMEs de teclado - é totalmente desenvolvido em HTML5 (HTML + CSS + JavaScript) e WebAPIs abertas. Esse conjunto de documentos contém informações de como cada um dos aplicativos padrões disponíveis na família Gaia funciona</span></p> - </div> - <h2 id="Categoria_de_funcionalidades_Gaia">Categoria de funcionalidades Gaia</h2> - <p>Os diferentes aplicativos Gaia podem ser agrupados na lista abaixo.</p> - <div class="note"> - <p><strong>Nota</strong>: Muitas as páginas indicadas nesse documento são na verdade páginas README dentro do <a href="https://github.com/mozilla-b2g/gaia/">repo Gaia no Github</a>. Isso é porque muitos dos aplicativos são produzidos em ciclos de desenvolvimento rápido, o que significa ser muito comum haver atualizações diárias, não fazendo muito sentido manter atualizada a documentação no MDN. Os arquivos README atualizados pela equipe de engenharia é uma fonte mais precisa de informação.</p> - </div> - <h3 id="Plataforma">Plataforma</h3> - <p>Incluindo o Sistema, Configurações, Bloqueio de tela, scripts de compilação e aplicativos Bluetooth.</p> - <p><img alt="" src="https://mdn.mozillademos.org/files/7503/platform_team.png" style="width: 355px; height: 269px; margin: 0px auto; display: block;"></p> - <h4 id="Aplicativos_da_plataforma_apps_maiores_explicações">Aplicativos da plataforma apps: maiores explicações</h4> - <dl> - <dt> - <a href="https://developer.mozilla.org/pt-BR/Firefox_OS/Platform/Gaia/Gaia_apps/System">Aplicativo System</a></dt> - <dd> - O aplicativo System é o primeiro aplicativo carregado pelo Gecko durante <a href="https://developer.mozilla.org/pt-BR/Firefox_OS/Platform/Architecture#Firefox_OS_bootup_procedure">o procedimento de boot do Firefox OS</a>, e ele lida com inúmeras responsabilidades que são necessárias para o funcionamento geral do sistema não sendo escopo de cada um dos demais aplicativos</dd> - <dt> - <a href="https://developer.mozilla.org/pt-BR/Firefox_OS/Platform/Gaia/Gaia_apps/Browser">Aplicativo Browser</a></dt> - <dd> - O aplicativo Browser (que não é parte do aplicativo System) fornece as funcionalidades de um navegador onde for necessário — incluindo a navegação em uma página, busca e gerenciamento de favoritos.</dd> - <dt> - <a href="https://developer.mozilla.org/pt-BR/Firefox_OS/Platform/Gaia/Gaia_apps/Window_Management">Gerenciamento das janelas</a></dt> - <dd> - A funcionalidade do gerenciamento de janelas do Firefox OS — incluindo o ciclo de vida do aplicativo e suas interações, animações e muito mais — é negociado por uma parte específica do aplicativo System. Esse artigo detalha o gerenciamento das janelas.</dd> - <dt> - <a href="https://developer.mozilla.org/pt-BR/Firefox_OS/Platform/Gaia/Gaia_apps/Settings">Preferências</a></dt> - <dd> - O Aplicativo de preferências possibilita os usuários do Firefox OS configurar o dispositivo e responder as atividades de entrada (<a href="https://developer.mozilla.org/pt-BR/docs/WebAPI/Web_Activities">API Web activities</a> com um nome de <code>configure</code>), que possibilita outros aplicativos pular para paineis diferentes dentro do aplicativo Preferências para manipular as configurações requisitadas (por exemplo mostrando o painel de configuração do WiFi quando não houver conexão disponível).</dd> - </dl> - <h3 id="Comunicação">Comunicação</h3> - <p>Incluindo os aplicativos Discador, contatos, aplicativos de SMS e de FTU.</p> - <p><img alt="" src="https://mdn.mozillademos.org/files/7499/comms_team.png" style="width: 317px; height: 246px; margin: 0px auto; display: block;"></p> - <h4 id="Aplicativos_de_comunicação_maiores_explicações">Aplicativos de comunicação: maiores explicações</h4> - <p>A ser definido</p> - <h3 id="Produtividade">Produtividade</h3> - <p>Incluindo os aplicativos Email, calendário e relógio.</p> - <p><img alt="" src="https://mdn.mozillademos.org/files/7505/productivity_team.png" style="width: 303px; height: 178px; margin: 0px auto; display: block;"></p> - <h4 id="Aplicativos_de_produtividade_maiores_explicações">Aplicativos de produtividade: maiores explicações</h4> - <dl> - <dt> - <a href="https://github.com/mozilla-b2g/gaia/blob/master/apps/calendar/README.md">Calendário</a></dt> - <dd> - O aplicativo de calendário interno do Firefox OS.</dd> - <dt> - <a href="https://github.com/mozilla-b2g/gaia/blob/master/apps/clock/README.md">Relógio</a></dt> - <dd> - Aplicativo padrão do Firefox OS que inclui as funcionalidades de alarme, temporizador e cronômetro.</dd> - <dt> - <a href="https://github.com/mozilla-b2g/gaia/blob/master/apps/email/README.md">Email</a></dt> - <dd> - O aplicativo de email do Gaia.</dd> - </dl> - <h3 id="Mídia">Mídia</h3> - <p>Incluindo os aplicativos Camera, Galeria, Música e Vídeo e algumas funções relacionadas com mídias como bloqueio a DRM e papeis de parede.</p> - <p><img alt="" src="https://mdn.mozillademos.org/files/7501/media_team.png" style="width: 386px; height: 250px; margin: 0px auto; display: block;"></p> - <h4 id="Aplicativos_de_mídia_maiores_explicações">Aplicativos de mídia: maiores explicações</h4> - <dl> - <dt> - <a href="https://developer.mozilla.org/pt-BR/docs/Mozilla/Firefox_OS/Platform/Gaia/Gaia_apps/Video">Video</a></dt> - <dd> - Video é um aplicativo simples que executa arquivos de vídeo armazenados no seu dispositivo.</dd> - <dt> - <a href="https://github.com/mozilla-b2g/gaia/blob/master/apps/camera/README.md">Camera</a></dt> - <dd> - Camera possibilita ao usuário do Firefox OS capturar e gerenciar vídeos e fotos da câmera do dispositivo e respondendo <a href="https://developer.mozilla.org/pt-BR/docs/WebAPI/Web_Activities">Web activities</a> do tipo <code>pick</code> originado de outros aplicativos que querem capturar mídias usando as funcionalidades da câmera.</dd> - </dl> - <h3 id="Outros_recursos_Gaia">Outros recursos Gaia</h3> - <p>Além dessas funções, há várias outras características importantes, como navegador, tela de início, market place, framework de teste, visualizador de PDF, e gerenciador de aplicativo, que são desenvolvidas em estreita colaboração com o Gaia.</p> - <a href="https://github.com/mozilla/pdf.js/blob/master/README.md">pdf.js</a> - <dl> - <dd> - pdf.js um aplicativo de visualização de arquivos PDF baseado em HTML5. Observer que o código é mantido em um repo separado do repo do Gaia.</dd> - </dl> -</div> -<p> </p> diff --git a/files/pt-br/archive/b2g_os/platform/gaia/gaia_apps/navegador/index.html b/files/pt-br/archive/b2g_os/platform/gaia/gaia_apps/navegador/index.html deleted file mode 100644 index c33c466e53..0000000000 --- a/files/pt-br/archive/b2g_os/platform/gaia/gaia_apps/navegador/index.html +++ /dev/null @@ -1,137 +0,0 @@ ---- -title: Navegador -slug: Archive/B2G_OS/Platform/Gaia/Gaia_apps/Navegador -tags: - - Apps - - Browser - - Firefox OS - - Gaia - - Guía - - Navegador -translation_of: Archive/B2G_OS/Platform/Gaia/Gaia_apps/Browser ---- -<div class="summary"> -<p><span class="seoSummary">O <a href="https://github.com/mozilla-b2g/gaia/tree/v1.4/apps/browser">app Browser </a> (que agora faz parte do sistema) fornece a funcionalidade do tipo navegador onde ele é necessário</span> — <span class="seoSummary"> incluindo navegação de página, pesquisa, e bookmarks. Este artigo explica como a funcionalidade básica do aplicativo do navegador funciona, e como ele se encaixa no sistema maior.</span></p> -</div> - -<p>Já que o Gaia é feito para rodar a partir do Gecko, foi possível projetar um navegador app/System Browser para navegação regular de páginas web com base nessa instância Gecko. Este pode ser manipulado pela <a href="https://developer.mozilla.org/pt-BR/docs/DOM/Using_the_Browser_API">API mozBrowser</a>.</p> - -<div class="note"> -<p><strong>Nota</strong>: DoFirefox OS 2.1 em diante, o app Browser é parte do System app. Isto significa que a navegação na web pode ser feita tanto clicando no ícone do Browser para abrir o aplicativo do navegador ou acessando o recurso de pesquisa e navegação universal. As abas de aplicativos e de navegação são então unificadas para uma experiência comum e existem na visão do gerenciador de tarefas e folhas (por gestos de ponta), como parte da <a href="https://wiki.mozilla.org/FirefoxOS/Haida">experiência do usuário Haida</a>.</p> -</div> - -<h2 id="Navegador_do_sistema_(Navegador_Chrome)">Navegador do sistema (Navegador Chrome)</h2> - -<p>Quando um usuário Firefox OS marca uma página web para que ela apareça na tela inicial, a página web será posteriormente aberta no Navegador do sistema, ao invés do aplicativo Browser. Ele inclui uma barra de ferramentas na parte inferior contendo as funções gerais voltar/avançar/atualizar. Em Gaia isso é chamado de navegador Chrome ou wrapper. Você pode ver isso em ação no lado direito da imagem abaixo.</p> - -<p><img alt="A diagram showing that when a web page is opened in the system browser, it is given a toolbar." src="https://mdn.mozillademos.org/files/7869/browser-app.png" style="display: block; height: 500px; margin: 0px auto; width: 738px;"></p> - -<p>Se você quer que sua página da web ainda apresente as funções voltar/avançar/atualizar, você pode declarar o seguinte no manifesto do aplicativo que habilita o navegador Chrome.</p> - -<pre class="brush: json">declare { chrome: { navigation: true } }</pre> - -<div class="note"> -<p><strong>Nota</strong>: A barra de ferramentas do navegador Chrome afeta a altura do conteúdo, de modo que este precisa ser levado em consideração para seus layouts de páginas web.</p> -</div> - -<h3 id="O_fluxo_de_código">O fluxo de código</h3> - -<p>Ao abrir uma nova página web no Firefox OS, o fluxo de chamadas é</p> - -<pre>Gecko > WrapperFactory > Window Manager > AppWindow > BrowserFrame</pre> - -<p>Wrappers herdados a partir do <a href="https://github.com/mozilla-b2g/gaia/blob/master/apps/system/js/wrapper_factory.js">system/js/wrapper_factory</a> receberão o evento <code>mozbrowseropenwindow</code> para uma página Web marcada.</p> - -<p>Na seção <a href="https://github.com/mozilla-b2g/gaia/blob/master/apps/system/js/wrapper_factory.js#L15">handleEvent</a>, o manipulador irá verificar o evento para decidir se a página web deve ser aberta como um aplicativo ou no browser chrome.</p> - -<p>Finalmente, o <a href="https://github.com/mozilla-b2g/gaia/blob/master/apps/system/js/wrapper_factory.js#L115">launchWrapper</a> é chamado para abrir a janela correspondente.</p> - -<h2 id="Navegação_Busca_Universais">Navegação & Busca Universais</h2> - -<p>Com a nova barra de pesquisa e navegação, os usuários podem acessar seus favoritos, digitar uma URL, ou descobrir um novo aplicativo, a partir de qualquer lugar no Firefox OS. A barra de pesquisa vive no topo da tela, e os usuários podem simplesmente tocar ou arrastar para abri-la.<br> - <br> - Pense nisso como uma combinação do <a href="https://support.mozilla.org/pt-BR/kb/awesome-bar-find-your-bookmarks-history-and-tabs">Awesome Bar</a> do navegador e o <a href="https://support.mozilla.org/pt-BR/kb/use-adaptive-search-discover-personalized-apps">app de pesquisa adaptativa</a> do homescreen. Já que o Firefox OS usa aplicativos da web, quando você encontrar o que deseja, mesmo que seja um novo aplicativo, ele abrirá imediatamente. Você não precisa instalar nada, porque tudo é instantâneo e web-like.</p> - -<h2 id="App_Browser">App Browser</h2> - -<p>O aplicativo Browser é um webapp certificado que proporciona uma experiência geral de navegador web. A função principal está localizada no <a href="https://github.com/mozilla-b2g/gaia/tree/v1.4/apps/browser/js/browser.js">apps/browser/js/browser.js</a>:</p> - -<pre class="brush: js">var Browser = { - init: function browser_init() { - this.getAllElements(); - ... - BrowserDB.init((function() { - ... - } - } -}; - -window.addEventListener('load', function browserOnLoad(evt) { - window.removeEventListener('load', browserOnLoad); - Browser.init(); -});</pre> - -<p>O navegador irá chamar sua função <code>init()</code>, enquanto o DOM é carregado.</p> - -<pre class="brush: js">getAllElements: function browser_getAllElements() { - var elementIDs = [ - 'toolbar—start', ... 'danger—dialog']; - - // Loop and add element with camel style name to Modal Dialog attribute. - elementIDs.forEach(function createElementRef(name) { - this[this.toCamelCase(name)] = document.getElementById(name); - }, this); -},</pre> - -<p>A função <code>getAllElements</code> é usada para obter todos os manipuladores de elementos camelCase, após o qual o <a href="https://github.com/mozilla-b2g/gaia/tree/v1.4/apps/browser/js/browser_db.js">apps/browser/js/browser_db.js</a> é chamado, para se preparar para adicionar o mecanismo de pesquisa padrão e bookmarks.</p> - -<h2 id="Bookmarks">Bookmarks</h2> - -<p>Do Firefox OS 2.0, o <a href="https://github.com/mozilla-b2g/gaia/tree/master/apps/bookmark">apps/bookmark</a> é usado para lidar com atividades bookmark salvar/remover.</p> - -<p>A parte mais interessante <a href="https://github.com/mozilla-b2g/gaia/blob/master/apps/bookmark/manifest.webapp">apps/bookmark/webapp.manifest,</a> é:</p> - -<pre class="brush: json">"activities": { - "save—bookmark": { - "filters": { - "type": "url", - "url": { "required":true, "pattern":"https?:.{1,16384}" } - }, - "disposition": "inline", - "href": "/save.html", - "returnValue": true - }, - "remove—bookmark": { - "filters": { - "type": "url", - "url": { "required":true, "pattern":"https?:.{1,16384}" } - }, - "disposition": "inline", - "href": "/remove.html", - "returnValue": true - } -},</pre> - -<p>Conforme visto acima, a atividade é tratada pelo save.html e remove.html. Ambas as operações são delegadas para <a href="https://github.com/mozilla-b2g/gaia/blob/master/apps/bookmark/js/activity_handler.js">apps/bookmark/js/activity_handler.js</a>:</p> - -<pre class="brush: js">var ActivityHandler = { - 'save—bookmark': function ah_save(activity) { - }, - - 'remove—bookmark': function ah_remove(activity) { - } -}; - -navigator.mozSetMessageHandler('activity', function onActivity(activity) { - var name = activity.source.name; - switch (name) { - case 'save—bookmark': - case 'remove—bookmark': - if (activity.source.data.type === 'url') { - ActivityHandler[name](activity); - } - ... - } -}</pre> - -<p>Quando o manipulador ouvinte de mensagem <code>navigator.mozSetMessageHandler('activity')</code> recebe as atividades salvar-bookmark ou remover-bookmark, a função <code>ActivityHandler</code> é acionada para lidar com operações correspondentes.</p> diff --git a/files/pt-br/archive/b2g_os/platform/gaia/gaia_apps/sistema/index.html b/files/pt-br/archive/b2g_os/platform/gaia/gaia_apps/sistema/index.html deleted file mode 100644 index 6ae8e4a230..0000000000 --- a/files/pt-br/archive/b2g_os/platform/gaia/gaia_apps/sistema/index.html +++ /dev/null @@ -1,226 +0,0 @@ ---- -title: Aplicativo System -slug: Archive/B2G_OS/Platform/Gaia/Gaia_apps/Sistema -translation_of: Archive/B2G_OS/Platform/Gaia/Gaia_apps/System ---- -<div class="summary"> - <p><span class="seoSummary">O aplicativo System e o primeiro aplicativo carregado pelo Gecko durante o <a href="https://developer.mozilla.org/pt-BR/Firefox_OS/Platform/Architecture#Firefox_OS_bootup_procedure">procedimento de bootup do Firefox OS</a>, e lida com um número grande de responsabilidades que são requeridas para executar o sistema e geralmente não é o escopo dos demais aplicativos. Esse artigo explica em detalhes como o aplicativo System funciona.</span></p> -</div> -<blockquote> - <p>Qualquer aplicativo que pode ser escrito em JavaScript acabará sendo escrito em JavaScript. -- Lei de Atwood</p> -</blockquote> -<div class="note"> - <p><strong>Nota</strong>: Você pode encontrar o <a href="https://github.com/mozilla-b2g/gaia/tree/master/apps/system">código fonte do aplicativo System</a> no repo do Gaia no Github.</p> -</div> -<h2 id="Como_o_aplicativo_system_faz_o_boot">Como o aplicativo system faz o boot</h2> -<p>Quando o Gecko tenta iniciar o aplicativo System, ele referencia o manifesto manifest.webapp e carrega o arquivo index.html referenciado pelo parâmetro <code>launch_path</code> (o <code>launch_path</code> sempre é o arquivo /index.html para aplicativos Gaia). <code>index.html</code> conecta a todos os estilos do sistema e JavaScripe. Para gerenciar um sistema móvel completo, o aplicativo System deve carregar um grande número de recursos.</p> -<p>O processo de boot é iniciado pelo programa <code>bootstrap.js</code>, com o seguinte código:</p> -<pre class="brush: js">window.addEventListener('load', function startup() { -// define safelyLaunchFTU -function safelyLaunchFTU() { - ... -} - -if (Applications.ready) { - safelyLaunchFTU(); -} else { - ... -} - -window.addEventListener('ftudone', function doneWithFTU() { - window.removeEventListener('ftudone', doneWithFTU); - - var lock = window.navigator.mozSettings.createLock(); - lock.set({ - 'gaia.system.checkForUpdates': true - }); -} - - ... - -// With all important event handlers in place, we can now notify -// Gecko that we're ready for certain system services to send us -// messages (e.g. the radio). -var evt = new CustomEvent('mozContentEvent', -{ bubbles: true, cancelable: false, - detail: { type: 'system-message-listener-ready' } }); - window.dispatchEvent(evt); -}</pre> -<p>O código funciona da seguinte maneira:</p> -<ol> - <li>O aplicativo System é um aplicativo web real executando num navegador e precisa que todos os recursos dependentes estejam carregados — incluindo as imagens e estilos. Assim, tudo é iniciado de uma só vez pelo {{ domxref("window.onload") }}.</li> - <li>Primeiro, preparamos para executar o FTU (First Time Experience, ou Primeiro uso) e a tela de início com a função <code>safelyLaunchFTU()</code>. Como o nome sugerir, FTU somente é executado quando o usuário inicia o Firefox OS pela primeira vez.</li> - <li>Quando o usuário pressiona DONE dentro do FTU o evento <code>ftudone</code> é disparado e o programa <code>bootstrap.js</code> recebe e trabalha esse evento.</li> - <li>No próximo passo, é utilizado a API {{domxref("Settings") }} (<code>navigator.mozSettings</code>) para configurar o parâmetro <code>gaia.system.checkForUpdates</code> para <code>true</code>, indicando que o sistema irá verificar se há atualizações.</li> - <li>Finalmente, é executado <code>window.dispatchEvent</code>, via <code>CustomEvent</code>. Isso é um padrão muito importante utilizado pelo Gaia para notificações do sistema e comunicação com o Gecko. Nesse caso, o aplicativo System é notificado pelo Gecko que está pronto para receber e lidar com os eventos.</li> -</ol> -<h2 id="Modularização_instanciável">Modularização instanciável</h2> -<p>O próprio sistema está constantemente evoluindo para alcançar a melhor modularização e flexibilidade. A partir da versão 1.4 há uma iniciativa em andamento para <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=912952">refazer o módulo do sistema como um objeto instanciável</a>.</p> -<p>Depois do código abaixo ter sido executado, as referências a cada componente do sistema em <code>bootstrap.js</code> será da seguinte forma:</p> -<pre class="brush: js">window.telephonySettings = new TelephonySettings(); -window.telephonySettings.start();</pre> -<p>O esqueleto do código fonte para <code>TelephonySettings()</code>será:</p> -<pre class="brush: js">(function(exports) { - 'use strict'; - function TelephonySettings() { - this.init_param = false; - } - - TelephonySettings.prototype = { - // Initialzes all settings. - start: function() { - ... - }, - - // Clean all settings. - stop: function() { - ... - }, - - 1st_method: function ts_1st_method() { - ... - }, - - 2nd_method: function ts_2nd_method() { - ... - } - }; - - exports.TelephonySettings = TelephonySettings; - -}(window));</pre> -<p>Esse padrão ajuda a modularizar cada componente do sistema e facilita o processo de teste.</p> -<h2 id="Animações_do_boot_e_shut_down">Animações do boot e shut down</h2> -<p>Essa seção explica como o aplicativo System controla as animações durante o boot e shut down. Os programas <code>init_logo_handler.js</code> e <code>sleep_menu.js</code> são os responsáveis por manipular as animações.</p> -<h3 id="Animações_de_Boot_up">Animações de Boot up</h3> -<p>A animação do boot up na verdade não está no procedimento principal de bootup, mas pelo <code>EventListeners</code>.</p> -<p>O código da animação de boot up <code>init_logo_handler.js</code> parece com isso:</p> -<p>Para desenhar o logo ou a animação uma vez que o Gecko esteja pronto para desenhar algo na tela, nós executamos o manipulador do sistema uma vez que o DOM é carregado, então escondemos o log uma vez que o evento <code>ftudone</code> ou <code>ftuskip</code> é disparado. O método <code>_appendCarrierPowerOn</code>, presente em <code>init_logo_handler.js</code>, mostra como o Gaia prepara para executar a animação ou mostrar o logo respondendo o evento<code> DOMContentLoaded</code> event. O <code>logoLoader</code> é definido em <code>logo_loader.js</code>.</p> -<pre class="brush: js">var self = this; -document.addEventListener('DOMContentLoaded', function() { - self.carrierLogo.appendChild(self.logoLoader.element); - self._setReady(); -});</pre> -<p>Uma vez que o logo é preparado, o sistema chama o método <code>_setReady()</code>, que configura um listener para responder a um evento especial <code>mozChromeEvent</code> com um tipo de <code>system-first-paint</code> para denotar que o sistema está pronto para desenhar na tela.</p> -<pre class="brush: js">var elem = this.logoLoader.element; - ... -window.addEventListener('mozChromeEvent', function startVideo(e) { - if (e.detail.type == 'system-first-paint') { - window.removeEventListener('mozChromeEvent', startVideo); - if (elem &amp;&amp; elem.ended === false) { - elem.play(); - } - } -});</pre> -<p>Nesse ponto o elemento gráfico entra em ação. Uma vez que o evento <code>ftuopen</code> ou <code>ftuskip</code> é disparado, <code>init_logo_handler.js</code> chama o método <code>handleEvent()</code> que dispara o método <code>animate()</code>para terminar a animação com um efeito de transição em fadeout.</p> -<pre class="brush: js">init: function ilh_init(logoLoader) { - window.addEventListener('ftuopen', this); - window.addEventListener('ftuskip', this); - ... -}, - -handleEvent: function ilh_handleEvent() { - this.animate(); -},</pre> -<h3 id="Animações_de_Shut_down">Animações de Shut down</h3> -<p>Uma vez que o sistema está pronto, uma pressão longa no botão power dispara o evento <code>holdsleep</code>, como definido no programa <code>hardware_button.js</code>. Esse script manipula todos os eventos vindos do pressionamento de botões físicos, incluindo o botão power, home, volume para cima e para baixo.</p> -<pre class="brush: js">HardwareButtonsSleepState.prototype.enter = function() { - this.timer = setTimeout(function() { - / * When the user holds Sleep button more than HOLD_INTERVAL. */ - this.hardwareButtons.publish('holdsleep'); - this.hardwareButtons.setState('base'); - }.bind(this), this.hardwareButtons.HOLD_INTERVAL); -};</pre> -<p>A animação de shut down é manipulada pelo script <code>sleep_menu.js</code>. Ele responde ao evento <code>holdsleep</code> e mostra o menu quando é disparado.</p> -<pre class="brush: js">init: function sm_init() { - ... - window.addEventListener('holdsleep', this.show.bind(this)); - ... -}</pre> -<p>Se o usuário escolher desligar ou reiniciar o dispositivo a função <code>startPowerOff()</code> é chamada que dispara a função <code>LogoLoader()</code>para manipular a animação de shutdown.</p> -<pre class="brush: js">handleEvent: function sm_handleEvent(evt) { - switch (evt.type) { - case 'click': - ... - this.handler(action); - break; - ... - } -} - -handler: function sm_handler(action) { - switch (action) { - ... - case 'restart': - this.startPowerOff(true); - break; - - case 'power': - this.startPowerOff(false); - break; - ... - } -}</pre> -<h2 id="Funções_do_sistema">Funções do sistema</h2> -<p>Existe um grande número de funções e responsabilidades gerenciadas pelo aplicativo System, algumas dos quais podem supreender você. O aplicativo System manipula a barra de status e bandeja de utilitários, o travamento do SIM, gerenciador de atualizações, a chamada à tela de início, gerenciador dos aplicativos web e mais. Essa seção explora uma das mais importantes funções providas pelo aplicativo System.</p> -<h3 id="Barra_de_status_e_a_bandeja_de_utiliários">Barra de status e a bandeja de utiliários</h3> -<p>A barra de status do sistema e o menu dropdown (Gaia chama isso de <em>utility tray</em>, já no Android é utilizado o termo barra de notificação) são manipulados pelos programas <code>statusbar.js</code> e <code>utility_tray.js</code>. Dentro do aplicativo <code>index.html</code>, a barra de status é definida em <code><div id="statusbar" data-z-index-level="statusbar"></code> enquanto que a bandeja de utilitários ficam na seguinte estrutura:</p> -<pre class="brush: html"><div id="utility-tray" data-z-index-level="utility-tray"> - <div id="notifications-container"> - ... - </div> -</div></pre> -<p>Existem alguns paineis especiais dentro da bandeja de utilitários como o gerenciador de atualização, gerenciador de chamadas de emergência, notificação de armazenamento, controles e notificações do tocador de mídias, status de transferência via bluetooth, troca do IME, ou método de entrada no teclado. Os estilos e gerenciadores relacionados estão nos diretórios <code>js</code>/ e <code>style/</code>.</p> -<h3 id="Lançadores_especiais_de_aplicativos">Lançadores especiais de aplicativos</h3> -<p>O aplicativo System tem três lançadores especiais, que chamam aplicativos web quando necessário:</p> -<ul> - <li>O lançador da tela inicial: Executa o aplicativo Homescreen, que mostra a tela inicial quando o usuário pressiona o botão Home ou se um aplicativo web é encerrado, seja de forma normal ou devido a um erro.</li> - <li>O lançador da tela bloqueada: Executa o aplicativo Lockscreen, que mostra a tela bloqueada toda vez que o usuário liga a tela.</li> - <li>O lançador do FTU (Firts time user): Executa o aplicativo FTU experience. Isso é único porque todo usuário verá o resultado desse aplicativo na primeira vez que liga um dispositivo Firefox OS (ou reinicia o dispositivo com as configurações de fábrica). O aplicativo FTU não permite o usuário utilizar o botão Home ou sair do aplicativo.</li> -</ul> -<h3 id="Tela_de_bloqueio">Tela de bloqueio</h3> -<p>O ponto de entrada principal para o aplicativo Lockscreen app é <code>system/js/lockscreen.js</code>. Dessa tela o usuário pode desbloquear o telefone, chamar a câmera ou controlar o tocador de mídia.</p> -<h3 id="Discagem_de_emergência">Discagem de emergência</h3> -<p>O código para a discagem de emergência está no diretório <code>gaia/apps/system/emergency-call/</code>. É uma versão simplificada do aplicativo Dialer que possibilita que o usuário acesse do {{ anch("SIM PIN unlock dialog") }} para chamar os serviços de emergência como por exemplo a polícia.</p> -<h2 id="IU_(Interface_do_Usuário_de_todo_o_sistema)">IU (Interface do Usuário de todo o sistema)</h2> -<p>O aplicativo System manipula a grande maioria da interface com o usuário que basicamente consiste-se de diálogos como os avisos de volume, desbloqueio da senha do SIM e elementos de IU que afetam o comportamento da janela como o botão home por software.</p> -<h3 id="z-index_level">z-index level</h3> -<p>com o arquivo <code>index.html</code> do aplicativo do sistema, muitos componentes são reuinidos com o atributo<code> data-z-index-level</code> attribute, por examplo:</p> -<pre class="brush: html"><div id="sleep-menu" data-z-index-level="sleep-menu"> - ... -</div></pre> -<p>Os <code>z-index-levels</code> correspondentes são definidos dentro de <code>system/style/zindex.css</code>, por exemplo:</p> -<pre class="brush: css">#screen > [data-z-index-level="sleep-menu"] { - z-index: 65536; -} - -... - -#screen > [data-z-index-level="app"] > .appWindow { - z-index: 3; -}</pre> -<p>As configurações z-index são arranjadas de acordo com a ordem que os elementos são mostrados na tela — elementos que necessitam aparecer num nível maior da hierarquia recebem um número maior. Essa é a maneira que o aplicativo System lida com o gerenciamento das janelas num nível básico.</p> -<h3 id="O_botão_home_por_software">O botão home por software</h3> -<p>O botão home por software é uma alternativa ao botão físico. É habilitado automaticamente em dispositivos que não possuem o botão físico, por exemplo o Nexus 4. Para controlar sua aparência o Gecko provê um recurso de mídia proprietário chamado<code>-moz-physical-home-button</code>, que pode ser usado dentro de um "media query" para aplicar estilos baseados na presença de um botão home físico. O gerenciador de janelas reserva algum espaço na tela para o botão home se for solicitado.</p> -<p>No arquivo <code>system/style/window.css</code> (e muitos outros arquivos de estilo do sistema), você pode ver isso:</p> -<pre class="brush: css">@media not all and (-moz-physical-home-button) { - #screen:not(.software-button-disabled) > #windows > .appWindow { - bottom: 5rem; - } - }</pre> -<h3 id="Gesto_do_botão_Home_(deslizar_para_cima_a_partir_da_parte_de_baixo_da_tela)">Gesto do botão Home (deslizar para cima a partir da parte de baixo da tela)</h3> -<p>O gesto do botão home é outra alternativa ao botão home físico, pode ser habilitado em <a href="/pt-BR/Firefox_OS/Debugging/Developer_settings">configurações do desenvolvedor</a> e o código que o controla pode ser encontrado em <code>system/js/home_gesture.js</code>. O gesto consiste-se em deslizar o dedo de baixo para cima na tela e pode ser usado, por exemplo, para fechar os aplicativos:</p> -<p>O gesto será automaticamente habilitado nos tablets Firefox OS. The gesture will be automatically enabled on Firefox OS tablet devices. Os limites da tela definidos em <code>gaia/shared/js/screen_layout.js</code> é usado para detectar se o dispositivo é um tablet ou não.</p> -<h3 id="Diálogo_de_aviso_do_Volume">Diálogo de aviso do Volume</h3> -<p>O código que controla o diálogo de aviso de volume pode ser encontrado em <code>system/js/sound_manager.js</code>. Ele aparece quando ocorre algumas das situações:</p> -<ul> - <li>O fone de ouvido é conectado.</li> - <li>O volume de 85dB é atingido.</li> - <li>É executado um conteúdo no canal de audio.</li> -</ul> -<h3 id="Diálogo_de_desbloqueio_de_senha_(PIN)_do_SIM"><a name="SIM PIN unlock dialog"></a>Diálogo de desbloqueio de senha (PIN) do SIM</h3> -<p>O código que controla esse diálogo está em <code>system/js/simcard_dialog.js</code> — esse diálogo é apresentado quando a opção de bloqueio por senha está habilitada. É necessário ter permissões de telefonia descritas no arquivo <code>manifest.webapp</code> (que o aplicativo System faz).</p> -<div class="note"> - <p><strong>Nota</strong>: O diálogo de desbloqueio não aparece quando o telefone está em modo avião.</p> -</div> -<p> </p> diff --git a/files/pt-br/archive/b2g_os/platform/gaia/gaia_apps/video/index.html b/files/pt-br/archive/b2g_os/platform/gaia/gaia_apps/video/index.html deleted file mode 100644 index cd7e2ccecc..0000000000 --- a/files/pt-br/archive/b2g_os/platform/gaia/gaia_apps/video/index.html +++ /dev/null @@ -1,20 +0,0 @@ ---- -title: Aplicativo Video do Gaia -slug: Archive/B2G_OS/Platform/Gaia/Gaia_apps/Video -translation_of: Archive/B2G_OS/Platform/Gaia/Gaia_apps/Video ---- -<div class="summary"> - <p>O aplicativo Video é um tocador de vídeo simples que permite executar qualquer vídeo armazenado no seu dispositivo Firefox OS.</p> -</div> -<p><img alt="video app screenshot with single video shown called ha ha size 13mb, 4 minutes long, mp4" src="https://mdn.mozillademos.org/files/6415/video-app.png" style="width: 320px; height: 480px; float: left; padding: 0 10px 10px 0;"></p> -<h2 id="Uso_básico">Uso básico</h2> -<p>Por padrão quando você abre seu aplicativo você recebe uma mensagem informando que não há vídeos disponíveis e que você deve adicionar alguns vídeos. Isso pode ser feito usando a câmera para gravar um vídeo ou copiar os vídeos do seu computador para o seu dispositivo. Existem dois botões na parte de baixo do aplicativo: o da esquerda leva você para o aplicativo Camera para gravar vídeos ou tirar fotos e o da esquerda leva você para o aplicativo Gallery onde você pode selecionar vídeos ou fotos.<br> - <br> - Para copiar os arquivos do seu computador para o dispositivo, certifique-se de habilitar o parâmetro correspondente nas preferências (Settings > Media Storage > Enable USB Storage). Se o diretório “Videos” não existe, crie um exatamente com esse nome.<br> - <br> - Você pode alterar o local os vídeos são armazenados alterando a localização padrão das mídias (dentro de Settings > Media Storage) que pode ser selecionado “SD Card” ou "Internal".</p> -<div class="note"> - <p><strong>Nota</strong>: Se você estiver enfrantando algum problema para executar vídeos no Firefox OS, observe duas coisas: algumas versões do Firefox OS ignora arquivos muito grantes - isso será corrigido nas próximas versões. A outra coisa a ser observada: O Firefox executa a maioria dos formatos de vídeos mas não todos. Você pode verificar quais são suportados nesse <a href="/pt-BR/docs/HTML/Supported_media_formats#Browser_compatibility">artigo</a>.</p> -</div> -<h2 id="Modificando_o_aplicativo_Video">Modificando o aplicativo Video</h2> -<p>A ser definido</p> diff --git a/files/pt-br/archive/b2g_os/platform/gaia/gaia_apps/window_management/index.html b/files/pt-br/archive/b2g_os/platform/gaia/gaia_apps/window_management/index.html deleted file mode 100644 index 3b81989493..0000000000 --- a/files/pt-br/archive/b2g_os/platform/gaia/gaia_apps/window_management/index.html +++ /dev/null @@ -1,405 +0,0 @@ ---- -title: Gerenciamento de Janelas -slug: Archive/B2G_OS/Platform/Gaia/Gaia_apps/Window_Management -tags: - - Apps - - Firofox OS - - Gerenciamento de Janelas - - Sistema -translation_of: Archive/B2G_OS/Platform/Gaia/Gaia_apps/Window_Management ---- -<div class="summary"> -<p><span id="result_box" lang="pt"><span class="hps">Em geral,</span> <span class="hps">um gerenciador de janelas (ou window management)</span> <span class="hps">é a parte</span> <span class="hps">de um aplicativo que</span> <span class="hps">controla o posicionamento</span> <span class="hps">e</span> <span class="hps">aparência das janelas</span> <span class="hps">em uma interface</span> <span class="hps">gráfica de usuário.</span> <span class="hps">Este artigo</span> <span class="hps">analisa a forma como</span> <span class="hps">o Firefox</span> <span class="hps">OS</span> <span class="hps">lida com o</span> <span class="hps">Gerenciamento de Janela</span><span>s.</span></span></p> -</div> - -<p><span id="result_box" lang="pt"><span class="alt-edited">No Firefox OS, o Gerenciamento de Janelas é parte do </span></span><a href="/pt-BR/Firefox_OS/Platform/Gaia/Gaia_apps/System">app do sistema</a><span lang="pt"><span class="alt-edited">, que é responsável por:</span></span></p> - -<ul> - <li><span class="short_text" id="result_box" lang="pt"><span class="hps">Ciclo de vida do app e</span> <span class="hps">interação entre</span> <span class="hps">aplicativos</span></span></li> - <li><span id="result_box" lang="pt"><span class="hps">Layout,</span> <span class="hps">redimensionamento</span><span>, orientação,</span> <span class="hps">visibilidade e</span> <span class="hps">animação /</span> <span class="hps">transições</span> <span class="hps">de elementos</span> <span class="hps">de interface do usuário</span><span>.</span></span></li> - <li><span id="result_box" lang="pt"><span class="hps">Lógica</span> <span class="hps">UI</span> <span class="hps">de todo o sistema</span><span>, tais</span> <span class="hps">como</span> <span class="hps">atividades na web</span><span>, notificações</span> <span class="hps">de aplicativos,</span> <span class="hps">e</span><span class="hps"> gerenciador de tarefas</span><span>.</span></span></li> - <li><span id="result_box" lang="pt"><span class="hps">UI características</span> <span class="hps">específicas de cada aplicação</span><span>, tais como</span> <span class="hps">pop-ups,</span> <span class="hps">menus de contexto,</span> <span class="hps">e páginas de erro</span><span>.</span></span></li> -</ul> - -<p><span id="result_box" lang="pt"><span class="alt-edited">Antes de mergulharmos em detalhes de tais itens, vamos ver como os aplicativos são lançados em Gaia.</span></span></p> - -<h2 id="Como_os_aplicativos_são_lançados_em_Gaia"><span class="short_text" id="result_box" lang="pt"><span class="hps">Como</span> <span class="hps">os aplicativos são</span> <span class="hps">lançados em</span> <span class="hps">Gaia</span></span></h2> - -<p><span id="result_box" lang="pt"><span class="alt-edited">Um aplicativo pode ser lançado em Firefox OS em diversas maneiras, por exemplo, através de uma mensagem do sistema criada por outro aplicativo, ou através de um clique no ícone na tela inicial.</span></span></p> - -<p><img alt="" src="https://mdn.mozillademos.org/files/7709/app-launch-flow.png" style="display: block; height: 414px; margin: 0px auto; width: 728px;"></p> - -<p><span id="result_box" lang="pt"><span class="alt-edited">Os eventos que controlam a abertura das aplicações são tratadas pelo motor gecko e Sistema APP, que será explicado em mais detalhes abaixo.</span></span></p> - -<h3 id="Estrutura_do_App">Estrutura do App</h3> - -<p><span id="result_box" lang="pt"><span class="alt-edited">Todos os aplicativos webapps Gaia são <a href="/pt-BR/Marketplace/Publishing/Packaged_apps">apps empacotados</a>, eles são essencialmente arquivos zip contendo todos os ativos do aplicativo: HTML, CSS, JavaScript, imagens, manifesto etc. Cada webapp em Gaia é organizado seguindo a seguinte estrutura básica:</span></span></p> - -<div class="code-block"> -<div class="highlight"> -<pre><code class="brush: bash">apps</code><code class="o">/</code><code class="p">[</code><code class="n">app</code> <code class="n">name</code><code class="p">]</code><code class="o">/</code> - <code class="o">-</code> <code class="n">js</code> - <code class="o">-</code> <code class="n">styles</code> - <code class="o">-</code> <code class="n">locales</code> - <code class="o">-</code> <code class="n">test</code> - <code class="o">-</code> <code class="n">index</code><code class="p">.</code><code class="n">html</code> - <code class="o">-</code> <code class="n">manifest</code><code class="p">.</code><code class="n">webapp</code> -</pre> -</div> -</div> - -<p><img alt="" src="https://mdn.mozillademos.org/files/7497/app_load_process.png" style="display: block; height: 1979px; margin: 0px auto; width: 2262px;"></p> - -<p><span id="result_box" lang="pt"><span class="hps">Quando</span> <span class="hps">um dos </span><span class="hps">aplicativos</span> <span class="hps">Gaia built</span><span>-in</span></span><span lang="pt"> <span class="hps">for iniciado a partir</span> <span class="hps">da tela inicial</span><span>,</span> <span class="hps">Gecko</span> <span class="hps">tentará abrir</span> <span class="hps">um</span> <span class="hps">URL</span> <span class="hps">de</span></span> <code>manifest://[app name].gaiamobile.org:8080</code>, analisando <code>manifest.webapp</code> at that location, e então rodando o arquivo index definido no manifesto <code>launch_path</code> — which is <code>index.html</code> para todos os webapps built-in. O arquivo <code>index.html</code> <span id="result_box" lang="pt"><span class="hps">vai puxar</span> <span class="hps">todos os estilos e</span> <span class="hps">JavaScript</span> <span class="hps">necessários.</span></span></p> - -<div class="note"> -<p><strong>Nota</strong>: <span id="result_box" lang="pt"><span class="hps">Como</span> <span class="hps">uma convenção</span> <span class="hps">informal</span><span>, o principal</span> <span class="hps">ponto de entrada</span> <span class="hps">JavaScript</span> <span class="hps">para aplicativos</span> <span class="hps">Gaia</span> <span class="hps">é geralmente</span> </span><code>[app name].js</code><span lang="pt"> <span class="hps">ou</span> <span class="hps">main.js.</span></span></p> -</div> - -<h3 id="Seqüência_de_lançamento_do_App"><span class="short_text" id="result_box" lang="pt"><span class="hps">Seqüência de lançamento </span></span><span class="short_text" lang="pt"><span class="hps">do App</span> </span></h3> - -<p>Os eventos são enviados para o Gecko. Uma vez que o Gecko está pronto, a <code>AppwindowFactory</code> do <a href="https://github.com/mozilla-b2g/gaia/blob/master/apps/system/js/app_window_factory.js">system/js/app_window_factory.js</a> irá receber um evento de lançamento <code>webapps-launch</code> para um app, ou um evento <code>open-app </code>para lidar com uma mensagem do sistema pendente.</p> - -<pre class="brush: js">window.addEventListener('applicationready', function appReady(e) { - window.removeEventListener('applicationready', appReady); - window.addEventListener('webapps-launch', self); - window.addEventListener('webapps-close', self); - window.addEventListener('open-app', self); -});</pre> - -<p><span style="background-color: #ffff00;">Para detalhes sobre a sessão handleEvent, o </span><code><span style="background-color: #ffff00;">this.launch(config)</span></code><span style="background-color: #ffff00;"> irá lançar uma janela app ou uma atividade. Uma vez que o app é fechado, a </span><code><span style="background-color: #ffff00;">Appwindow</span></code><span style="background-color: #ffff00;"> receberá o evento </span><code><span style="background-color: #ffff00;">webapps-close</span></code><span style="background-color: #ffff00;">.</span></p> - -<p>O processo principal no método <code>launch()</code> é:</p> - -<pre class="brush: js">var app = AppWindowManager.getApp(config.origin); -if (app) { - app.reviveBrowser(); -} else if (config.origin !== homescreenLauncher.origin) { - new AppWindow(config); -} else if (config.origin == homescreenLauncher.origin) { - homescreenLauncher.getHomescreen().ensure(); -}</pre> - -<p><span id="result_box" lang="pt"><span class="hps">Primeiro o</span> <span class="hps">código verifica</span> <span class="hps">se a variável</span> <span class="hps">app</span> <span class="hps">existe e</span> <span class="hps">tenta</span> <span class="hps">reanimá-lo</span> <span class="hps">no</span> <span class="hps">Gecko</span><span>. </span><span class="hps">Por outro lado</span><span>,</span> <span class="hps">se é um</span> <span class="hps">app</span> <span class="hps">normal,</span> <span class="hps">criamos uma instância</span> </span><code>AppWindow</code><span lang="pt"> <span class="hps">para o</span> <span class="hps">app</span><span>.</span> <span class="hps">O outro caso</span> <span class="hps">especial é o</span> </span><code>homescreenLauncher</code><span lang="pt"> <span class="hps">- neste caso,</span> <span class="hps">fazemos</span> <span class="hps">as operações necessárias</span><span>.</span></span></p> - -<h3 id="AppWindow">AppWindow</h3> - -<p>O Firefox OS utiliza uma <a href="https://developer.mozilla.org/pt-BR/docs/WebAPI/Browser">API mozBrowser</a> especial para fazer com que uma web page se comporte como um app. A raíz <span id="result_box" lang="pt"><span class="hps">do Gerenciamento de Janelas é</span> <span class="hps">apenas um invólucro</span> <span class="hps">API</span> <span class="hps">mozBrowser</span> <span class="hps">para lidar com</span> <span class="hps">iFrames</span> <span class="atn hps">interiores (</span><span>da janela).</span> <span class="hps">Um</span> <span class="hps">iFrame</span> <span class="hps">especial do tipo</span> <span class="hps">moz</span><span>-browser</span> <span class="hps">é criado</span> <span class="hps">para tornar o</span> <span class="hps">ato</span> <span class="hps">iFrame</span> <span class="hps">como</span> <span class="hps">uma janela do navegador</span> <span class="hps">real.</span></span></p> - -<p><code>A AppWindow</code> cria, contém e gerencia um <code>mozBrowser</code> iFrame. <code>A AppWindow</code> <span id="result_box" lang="pt"><span class="hps">vai</span> <span class="hps">manipular</span> <span class="hps">todos os eventos</span></span> <code>mozBrowser</code> <span id="result_box" lang="pt"><span class="hps">disparados</span> <span class="hps">a partir do próprio </span></span>iFrame <code>mozBrowser</code> <span id="result_box" lang="pt"><span class="hps">e mostrar</span> <span class="hps">as características</span> <span class="hps">de interface do usuário</span> <span class="hps">relevantes.</span></span></p> - -<h2 id="Ciclo_de_gerenciamento_de_vida_do_App">Ciclo de gerenciamento de vida do App</h2> - -<p><span class="short_text" id="result_box" lang="pt"><span class="hps">O ciclo de vida</span> <span class="hps">completo de um</span> <span class="hps">app</span> <span class="hps">é o seguinte:</span></span></p> - -<ul> - <li>Lançamento do App</li> - <li>Anexa o iframe para o System DOM tree</li> - <li><span class="short_text" id="result_box" lang="pt"><span class="hps">Inicia o</span> <span class="hps">App</span> com <span class="hps">animação de abertura</span></span></li> - <li>O App é aberto</li> - <li>O App fecha a animação</li> - <li>O App é fechado</li> - <li>Remove o iframe do DOM tree</li> - <li>O App é encerrado</li> -</ul> - -<h3 id="Lançando_apps">Lançando apps</h3> - -<p>Quando um usuário toca nos ícones na tela inicial, a tela inicial usa a <a href="/pt-BR/docs/Web/API/Navigator.mozApps">mozApps API</a> para notificar o motor Gecko para abrir o aplicativo correspondente. Quando Gecko está pronto, ele irá enviar o evento apropriado para aplicação do sistema</p> - -<h3 id="Eliminando_apps">Eliminando apps</h3> - -<p>Aplicativos serão eliminados nas seguintes circunstâncias:</p> - -<ul> - <li>Um app falha</li> - <li>O <a href="https://developer.mozilla.org/pt-BR/Firefox_OS/Debugging/Debugging_OOMs#Process_priorities">OOM killer</a> o elimina</li> - <li>O app é fechado via Gerenciador de Tarefas</li> - <li><code>O window.close()</code> é chamado</li> -</ul> - -<p>Para aplicativos ativos, após a animação de encerramento, o iFrame do app eliminado é retirado do DOM tree. Para aplicativos inativos, o iframe é removido imediatamente após ser eliminado.</p> - -<p>Os apps serão interrompidos nas seguintes circunstâncias:</p> - -<ul> - <li>Para as atividades web: quando o chamador de atividade é aberto</li> - <li>Popups: quando o chamador window.open é aberto</li> - <li>App: nada a ver</li> -</ul> - -<h3 id="Relançando_apps">Relançando apps</h3> - -<p>Os Apps serão relançados nas seguintes circunstâncias:</p> - -<ul> - <li>homescreen app: Quando o botão home é pressionado</li> - <li>Os aplicativos zombie são ressucitados com o mesmo URL, se aberto a partir do Gerenciador de Tarefas ou fraudado em um gesto de borda. (Recurso Experimental)</li> -</ul> - -<h2 id="Como_o_app_é_renderizado">Como o app é renderizado</h2> - -<p>Quando nós lançamos um app, a tela será renderizada com os seguintes blocos:</p> - -<ul> - <li>Header do sistema</li> - <li>iframe do App</li> - <li>Barra de invólucro inferior (se estiver no browser chrome)</li> -</ul> - -<p><img alt="" src="https://mdn.mozillademos.org/files/7711/app-window-layout.png" style="display: block; height: 348px; margin: 0px auto; width: 393px;"></p> - -<h3 id="Layout_do_App">Layout do App</h3> - -<p>O principal recipiente do iframe do aplicativo é o seguinte:</p> - -<pre class="brush: html"><iframe id="browser2" mozallowfullscreen="true" mozbrowser="true" remote="true"... -... src="", data-url="" data-frame-type="window" data-frame-origin="..."> -</iframe></pre> - -<p>O iframe contém:</p> - -<ul> - <li>Caminho de inicialização (<code>data-url</code>, <code>data-frame-origin</code>)</li> - <li>Atributos iframe mozbrowser (<code>mozallowfullscreen="true"</code>, <code>mozbrowser="true"</code>)</li> - <li>Recipiente, sobreposição, UI específica do app</li> -</ul> - -<h3 id="Redimensionando_o_AppWindow">Redimensionando o AppWindow</h3> - -<p>O AppWindow será redimensionado em várias situações:</p> - -<ul> - <li>O sistema app não será redimensionado até que as mudanças de orientação sejam feitas</li> - <li>Para aplicações gerais, o redimensionamento ocorre quando: - <ul> - <li>O app do sistema é redimensionado</li> - <li>O teclado de animação abertura/fechamento termina</li> - <li>A barra de status muda</li> - <li><code>window.resizedBy()</code> ou <code>window.resizeTo()</code> é chamado</li> - <li>O botão home do software é alternado</li> - </ul> - </li> -</ul> - -<p><img alt="" src="https://mdn.mozillademos.org/files/7713/app-area.png" style="display: block; height: 305px; margin: 0px auto; width: 715px;"></p> - -<p>Em resumo, o tamanho da janela é afetado pelo:</p> - -<ul> - <li>Estado da orientação </li> - <li>Estado do teclado</li> - <li>Estado do AttentionScreen (possui ligação, possui mensagem etc.) </li> - <li>Estado de navegação do Chrome</li> - <li>Estado de tela cheia <code>manifest.fullscreen</code> / <code>parentWindow</code></li> - <li>Estado do homebutton do software</li> -</ul> - -<p><img alt="" src="https://mdn.mozillademos.org/files/7715/app-area2.png" style="display: block; height: 330px; margin: 0px auto; width: 687px;"></p> - -<h3 id="Orientação_da_AppWindow">Orientação da AppWindow</h3> - -<p>A orientação de aplicativos pode ser controlada a partir de cada aplicativo individual ou globalmente pelo sistema. Você pode definir a orientação no arquivo <code>manifest.webapp</code> do aplicativo com a propriedade de orientação, por exemplo:</p> - -<pre class="brush: json">"orientation": "default",</pre> - -<p>Você também é capaz de usar a API de orientação para bloquear ou desbloquear a orientação:</p> - -<pre class="brush: js">screen.mozLockOrientation([‘portrait-primary’]); - -screen.mozUnlockOrientation();</pre> - -<p>Existem vários valores de parâmetros que podem ser utilizados para forçar a orientação:</p> - -<ul> - <li><code>default</code>: orientação padrão do sistema</li> - <li><code>portrait</code>: força a tela a ser renderizada em retrato </li> - <li><code>landscape</code>: força a tela a ser renderizada em paisagem </li> -</ul> - -<p>Mais detalhes estão disponíveis na referência <a href="/pt-BR/docs/Web/API/Screen.lockOrientation">Screen.lockOrientation</a>, e você pode ver um exemplo em <a href="https://github.com/mozilla-b2g/gaia/blob/master/dev_apps/uitest/js/API/orientation.js">gaia/dev_apps/uitest/js/API/orientation.js</a>.</p> - -<p><img alt="" src="https://mdn.mozillademos.org/files/7717/app-orientation.png" style="display: block; height: 530px; margin: 0px auto; width: 745px;"></p> - -<h3 id="Visibilidade_do_App">Visibilidade do App</h3> - -<p>O app do sistema vai para o segundo plano apenas quando a tela está desligada, enquanto aplicativos normais vão para o segundo plano dependendo de alguns fatores:</p> - -<ul> - <li>Competição de audio</li> - <li>Política de processo</li> - <li>Renderização</li> -</ul> - -<div class="note"> -<p><strong>Nota</strong>: A visibilidade da página é herdada enquanto o iframe pai está inativo.</p> -</div> - -<p>Os apps estão sempre em primeiro plano quando: </p> - -<ul> - <li>Animações de abertura começam</li> - <li>Animações swipe-in animation terminam</li> - <li>A tela é desbloqueada</li> -</ul> - -<p>Os app estão sempre no segundo plano quando:</p> - -<ul> - <li>A animação de fechamento termina </li> - <li>3 segundos após uma tela de chamado torna-se visível </li> - <li>A tela é desligada</li> -</ul> - -<p>Existem algumas exeções para as regras acima:</p> - -<ul> - <li>App ativo com reprodução de áudio no canal normal</li> - <li>Apps chamando atividades web em linha </li> - <li>Apps abrindo <code>window.open('', '', 'dialog')</code></li> -</ul> - -<h3 id="Animação_e_transição_da_AppWindow">Animação e transição da AppWindow</h3> - -<p>O Gerenciador de Janelas Gaia também proporciona uma animação app e transições para uma experiência do usuário mais suave.</p> - -<p>A animação e as transições AppWindow são gerenciadas pelas seguintes estatísticas:</p> - -<ul> - <li><code>displayedApp</code> — o app atual</li> - <li><code>runningApps</code> / <code>numRunningApps</code> — o conjunto de apps em execução</li> - <li><code>openFrame</code> / <code>closeFrame</code> — o quadro de transição para abertura/fechamento de animações</li> -</ul> - -<p>Ao chamar o método <code>setDisplayedApp()</code>, o aplicativo será lançado via estatísticas ilustradas pelo diagrama a seguir.</p> - -<p><img alt="" src="https://mdn.mozillademos.org/files/7719/app-animations-state-manchine.png" style="display: block; height: 358px; margin: 0px auto; width: 704px;"></p> - -<p>Existem vários truques envolvidos no controle do fluxo de animação do app do Firefox OS:</p> - -<ul> - <li>Antes de um aplicativo ser aberto, nós precisamos de assegurar que ele esteja recuperado de seu plano de fundo. Costumamos ter uma imagem de tela 1x1 para forçar o redesenho. </li> - <li>Depois que o app está pronto para ser aberto, rodamos a animação de abertura do próximo app e a animação de fechamento do app atual ao mesmo tempo.</li> - <li>Rodamos o código para bloquear/desbloquear as orientações da tela, ambos durante a abertura e o fechamento do app. </li> - <li>Realizamos um redimensionamento na abertura somente se o app é redimensionado uma vez. Caso contrário, ignoramos esta etapa de redimensionamento. </li> - <li>Nós mudamos a visibilidade da página, tirando novamente um screenshot 1x1 (veja acima).</li> -</ul> - -<p><img alt="" src="https://mdn.mozillademos.org/files/7721/app-switching-flow.png" style="display: block; height: 258px; margin: 0px auto; width: 530px;"></p> - -<h2 id="UI_específica_da_AppWindow">UI específica da AppWindow</h2> - -<p>Existem vários elementos de interface do usuário que são relevantes apenas para determinadas aplicações, tais como o browser Chrome, diálogos modais, menus de contexto e páginas de erro.</p> - -<p>Vamos discutir alguns deles.</p> - -<h3 id="Diálogos_modais">Diálogos modais</h3> - -<p>No desktop Firefox, se você abrir o console de desenvolvedor em seu navegador e digitar comandos como <code>alert()</code>, <code>confirm()</code>, e <code>prompt()</code>, você irá visualizar um diálogo centrado na tela que bloqueia o conteúdo subjacente. O equivalente no Firefox OS são os diálogos modais.<br> - <br> - <img alt="" src="https://mdn.mozillademos.org/files/7723/modal-dialogs.png" style="display: block; height: 357px; margin: 0px auto; width: 715px;"></p> - -<h3 id="Diálogos_de_menu_contextuais">Diálogos de menu contextuais</h3> - -<p>Os menus de contexto (ou long press menus) são conceitos familiares para os desenvolvedores mobile. Em geral, no design de apps, as ações utilizadas com mais freqüência devem estar visíveis para os usuários de modo que eles possam controlar o aplicativo facilmente. Menus contextuais fornecem um lugar para conter ações que não cabem na interface imediata do usuário, mas ainda deve estar facilmente disponível.<br> - <br> - <img alt="" src="https://mdn.mozillademos.org/files/7725/context-menu-dialogs.png" style="display: block; height: 360px; margin: 0px auto; width: 722px;"></p> - -<h3 id="Diálogo_de_autenticação_(https)">Diálogo de autenticação (https)</h3> - -<p>Definido em <a href="https://github.com/mozilla-b2g/gaia/blob/master/apps/system/js/app_authentication_dialog.js">system/js/app_authentication_dialog.js</a>.</p> - -<h3 id="Seletor_de_valor_tempo_diálogos_de_data">Seletor de valor, tempo, diálogos de data</h3> - -<p>Definido em <a href="https://github.com/mozilla-b2g/gaia/tree/master/apps/system/js/value_selector">system/js/value_selector/</a>.</p> - -<h3 id="Diálogos_de_permissões">Diálogos de permissões</h3> - -<p>Definido em <a href="https://github.com/mozilla-b2g/gaia/blob/master/apps/system/js/permission_manager.js">system/js/permission_manager.js</a> e <a href="https://github.com/mozilla-b2g/gaia/blob/master/apps/system/js/media_recording.js">system/js/media_recording.js</a> (para o painel de bandeja utilitário).</p> - -<h2 id="Apps_especiais">Apps especiais</h2> - -<p>Alguns aplicativos necessitam de um objeto especial <code>appWindow</code> para lidar com funcionalidades especiais que eles contenham. Exemplos incluem:</p> - -<ul> - <li>Tela inicial</li> - <li>FTU</li> - <li>Teclado</li> - <li>Controle de custo</li> - <li>Câmera de segurança</li> - <li>Bloqueio de tela</li> -</ul> - -<h2 id="Gerenciamento_de_janela_filha">Gerenciamento de janela filha</h2> - -<p>Janelas de aplicativos filha são abertas diretamente ou indiretamente por outros aplicativos/páginas. Alguns exemplos são:</p> - -<ul> - <li>Janela de atenção</li> - <li>Janela PopUp</li> - <li>Janela de atividade</li> - <li>UI Confiável / janela confiável</li> -</ul> - -<p>Quando uma janela filha termina normalmente, sua janela pai deverá ser reaberta. Algum tipo de janela filha também pode ter outra janela filha. A gestão do processo de gestão entre janelas pai e filho é um problema.</p> - -<h2 id="Janela_de_atenção">Janela de atenção</h2> - -<p>Janelas de atenção são utilizadas para obter sua atenção:</p> - -<ul> - <li>Tela de chamada - dialer</li> - <li>Tela de alarme - relógio</li> - <li>Confirmações de permissão </li> -</ul> - -<p>Atualmente as janela de atenção são forçadas para uma orientação padrão (retrato primário).</p> - -<h2 id="UI_confiável">UI confiável</h2> - -<p>Persona e a API mozPay são UI confiáveis. Elas utilizam um dimensionamento específico: 80%. A tela inicial é parcialmente visível durante o tempo em que a UI confiável está em execução.<br> - <br> - <img alt="" src="https://mdn.mozillademos.org/files/7727/trusted-ui.png" style="display: block; height: 516px; margin: 0px auto; width: 737px;"></p> - -<h2 id="Gerenciamento_de_histórico">Gerenciamento de histórico</h2> - -<p>Nesta seção, vamos olhar para alguns dos componentes que lidam com a gestão do histórico no Firefox OS.</p> - -<h3 id="Gerenciador_de_tarefas">Gerenciador de tarefas</h3> - -<p>O Gerenciador de Tarefas (vista do cartão) pode ser acionado por um toque longo do botão home. Ele mostra a história do app no dispositivo, e é capaz de eliminar ativamente um aplicativo.</p> - -<p>No Firefox OS versão 2.0, há um recurso experimental disponível para manter aplicativos zumbis presentes e fingir que eles ainda estão vivos.</p> - -<h3 id="Disposições_de_atividades_Web">Disposições de atividades Web</h3> - -<p>Atividades inline criam uma nova página de referência para fornecer os dados para a atividade.<br> - Atividades de janela irão reutilizar a janela de aplicativo existente para consumir os dados da atividade.</p> - -<h3 id="Gestos_de_Borda_(experimental)">Gestos de Borda (experimental)</h3> - -<p>O recurso de gesto de Borda experimental está disponível no modo de desenvolvedor no Firefox OS 2.0+, e permite que você utilize um simples arraste de dedo da direita para a esquerda a partir da borda do dispositivo para navegar entre aplicativos e páginas da web.</p> - -<h4 id="Como_é_escolhido_o_próximo_aplicativo_para_exibição">Como é escolhido o próximo aplicativo para exibição? </h4> - -<ul> - <li>Janela filha do aplicativo ativo</li> - <li>O tempo de lançamento é mais recente</li> - <li>Encontrar a janela guia do próximo app stack </li> -</ul> - -<h4 id="Como_o_app_anterior_é_escolhido">Como o app anterior é escolhido?</h4> - -<ul> - <li>Parent window of the active app</li> - <li>Launch time is older</li> - <li>Find the rear window of the previous app stack</li> -</ul> - -<h3 id="Gestão_de_captura_de_tela">Gestão de captura de tela</h3> - -<p>A ferramenta de captura de tela é usada pelo gerenciador de tarefas (exibição do cartão) para mostrar como os apps aparecem no histórico. Uma captura de tela do app é tirada quando a animação de fechamento termina. </p> - -<h2 id="Veja_também">Veja também</h2> - -<p><a href="http://alivedise.github.io/blog/2013/02/23/from-browser-to-browser/"> De navegador para navegador</a></p> diff --git a/files/pt-br/archive/b2g_os/platform/gaia/hacking/index.html b/files/pt-br/archive/b2g_os/platform/gaia/hacking/index.html deleted file mode 100644 index b2ed7ba52b..0000000000 --- a/files/pt-br/archive/b2g_os/platform/gaia/hacking/index.html +++ /dev/null @@ -1,361 +0,0 @@ ---- -title: Modificando o Gaia -slug: Archive/B2G_OS/Platform/Gaia/Hacking -translation_of: Firefox_OS/Developing_Gaia ---- -<div class="warning"> - <p>Esta página é destinada para os desenvolvedores do Gaia, se você está procurando como compilar e rodar o Firefox Os, você deveria consultar a página <a href="https://developer.mozilla.org/pt-BR/Firefox_OS/Building_and_installing_Firefox_OS">Compilando e Instalando o Firefox OS</a>.</p> -</div> -<p>Gaia é uma coleção de <a href="https://developer.mozilla.org/apps" rel="nofollow">web apps</a> que compõem a interface do <a href="https://developer.mozilla.org/en-US/docs/Mozilla/Firefox_OS">Firefox OS</a>. Tudo que você vê na tela do Firefox OS é construido sobre tecnologias web abertas. Isto inclui a tela inicial e todas as aplicações padrões.</p> -<h2 id="Pegando_o_código_fonte">Pegando o código fonte</h2> -<p>Para pegar o código fonte do Gaia, faça o <a href="https://github.com/mozilla-b2g/gaia" title="https://github.com/mozilla-b2g/gaia">fork no GitHub</a> e depois clone seu fork utilizando o <a href="http://git-scm.com/" title="http://git-scm.com/">git</a>.</p> -<pre>$ git clone https://github.com/mozilla-b2g/gaia.git</pre> -<h2 id="Rodando_o_Gaia">Rodando o Gaia</h2> -<p>Você pode rodar o Gaia no B2G Desktop, no Firefox ou em um aparelho compatível.</p> -<h3 id="B2G_desktop">B2G desktop</h3> -<p>B2G desktop é uma compilação do aplicativo <em>runtime</em> usado nos dispositivos Firefox OS o qual você pode executar o Gaia no seu computador desktop.</p> -<p>Você pode baixar a imagem nightly do B2G desktop <a href="http://ftp.mozilla.org/pub/mozilla.org/b2g/nightly/" title="http://ftp.mozilla.org/pub/mozilla.org/b2g/nightly/">aqui</a>. Dependendo de qual versão você deseje, você pode querer uma versão específica do latest-mozilla-b2g18. Existems imagens para Linux (32 bit and 64 bit), Mac OS X e Windows.</p> -<p>Imagens Nightly vem empacotadas com a versão mais recente do Gaia. Uma vez que você baixou o arquivo, tudo que você precisa é extrair para um diretório e executar o binário <code>b2g</code>,</p> -<div class="note"> - <p><strong>Nota:</strong> Imagens para Linux 64-bit não funciona em algumas distros, veja o bug {{bug(812484)}}. Se você tiver esse tipo de problema tente a versão 32-bit.</p> -</div> -<pre>$ cd b2g -$ ./b2g</pre> -<p>Para executar o B2G com sua própria versão do Gaia para propósitos de desenvolvimento, primeiramente você precisa construir um perfil do seu clone:</p> -<pre class="language-html">$ cd /path/to/gaia -$ DEBUG=1 DESKTOP=0 make</pre> -<p>Isso irá gerar um subdiretório no seu diretório <code>gaia</code> chamado <code>profile</code>. A parte <code>DEBUG</code> executa Gaia como aplicação hospedada no servidor web interno, ao invés do pacote padrão de aplicativos que você tem que reempacotar a cada mudança. Você pode encontrar o caminho para o diretório <code>profile</code> observando a última linha da saída do comando acima. Algo parecido como:</p> -<pre class="language-html">Profile Ready: please run [b2g|firefox] -profile /path/to/gaia/profile</pre> -<p>Então você pode executar o B2G Desktop com o perfil gerado dessa forma:</p> -<pre class="language-html">$ ./b2g /path/to/gaia/profile</pre> -<p>Se você quiser você pode compilar seu próprio B2G desktop a partir do fonte.</p> -<div class="note"> - <p><strong>Nota :</strong> No Mac OS X, o bintário <code>b2g</code> estará dentro de B2G.app. Você precisa rodar dessa forma:</p> - <p><code>./B2G.app/Contents/MacOS/b2g /path/to/gaia/profile</code></p> -</div> -<h3 id="Usando_o_Gaia_no_Firefox">Usando o Gaia no Firefox</h3> -<p>Também é possível executar o Gaia dentro do Firefox. Isso dá a vantagem de ter um ciclo de desenvolvimento rápido, bem como a utilização de ferramentas padrões de desenvolvimento web e depuração. Veja <a href="https://developer.mozilla.org/pt-BR/Firefox_OS/Hacking_Firefox_OS/Quickstart_guide_to_Gaia_development">Guia rápido para desenvolvimento Gaia</a> para maiores detalhes.</p> -<h3 id="Usando_um_dispositivo_Gaia">Usando um dispositivo Gaia</h3> -<p>Se você possui um dispositivo compatível você também pode executar o Gaia fazendo um <em>flash</em> do Firefox OS. Você pode fazer um flash de uma versão compatível do Gaia com sua versão atual do Firefox OS, veja a seção <a href="https://developer.mozilla.org/pt-BR/Firefox_OS/Platform/Gaia/Hacking$edit#Push_to_device">Carregar no dispositivo</a>, ou você pode <a href="https://developer.mozilla.org/pt-BR/docs/Mozilla/Firefox_OS/Building_and_installing_Firefox_OS" title="Mozilla/Firefox_OS/Building_and_installing_Firefox_OS">compilar sua própria versão do Firefox OS</a>. Nós também temos documentação de <a href="https://developer.mozilla.org/pt-BR/docs/Mozilla/Firefox_OS/Platform/Testing" title="https://developer.mozilla.org/en-US/docs/Mozilla/Firefox_OS/Platform/Testing">como testar o Firefox OS</a>.</p> -<h2 id="Teste_unitários">Teste unitários</h2> -<p>Veja o artigo <a href="https://developer.mozilla.org/pt-BR/docs/Mozilla/Firefox_OS/Platform/Testing/Gaia_unit_tests" title="Mozilla/Firefox_OS/Platform/Testing/Gaia_unit_tests">Testes unitários do Gaia</a> para saber como criar e executar testes para o Gaia.</p> -<h2 id="Registrando_bugs">Registrando bugs</h2> -<p>Bugs são registrado no Bugzilla em <a href="https://bugzilla.mozilla.org/buglist.cgi?product=Firefox%20OS&component=Gaia&resolution=---" rel="nofollow">Firefox OS > Gaia</a>. Registre um novo bug<a href="https://bugzilla.mozilla.org/enter_bug.cgi?product=Firefox%20OS" title="https://bugzilla.mozilla.org/enter_bug.cgi?product=Firefox OS"> no componente Gaia</a> (ou em algum do seus subcomponentes).</p> -<h2 id="Contribuindo_com_o_Gaia">Contribuindo com o Gaia</h2> -<p>Mozilla depende de contribuições da comunidade open source para ajuda no desenvolvimento de aplicativos Gaia e adoraríamos que você se envolvesse.</p> -<p>Alguns dos locais para encontrar alguns bugs para se trabalhar:</p> -<ul> - <li><a href="https://bugzilla.mozilla.org/buglist.cgi?quicksearch=component:gaia%20sw:polish%20@nobody;list_id=4566236" rel="nofollow">Bugs sem donos no Bugzilla</a></li> - <li><a href="http://www.joshmatthews.net/bugsahoy/?b2g=1" rel="nofollow">Bugs com ajuda de um mentor</a></li> -</ul> -<h3 id="Estilo_de_codificação_básica">Estilo de codificação básica</h3> -<ul> - <li>Background: - <ul> - <li><a href="https://developer.mozilla.org/pt-BR/docs/Developer_Guide/Coding_Style#General_practices" title="Developer_Guide/Coding_Style#General_practices">Estilo de codificação: Práticas gerais</a></li> - <li><a href="https://developer.mozilla.org/pt-BR/docs/Developer_Guide/Coding_Style#JavaScript_practices" title="Developer_Guide/Coding_Style#JavaScript_practices">Estilo de codificação: JavaScript</a></li> - <li><a href="https://developer.mozilla.org/pt-BR/docs/Developer_Guide/Coding_Style#Naming_and_formatting_guide" title="Developer_Guide/Coding_Style#Naming_and_formatting_guide">Estilo de codificação: Guia para nomes e formatos</a></li> - </ul> - </li> - <li>Certifique-se que os arquitos HTML possuem <code><!DOCTYPE html></code> (ou seja, são documentos HTML5). Se não fizer isso, o Internet Explorer 9 e anteriores vão carregá-lo em modo de compatibilidade.</li> - <li>Inclua o comando<code>"use strict";</code> (exatamente assim, com aspas) no início do seus arquivos JavaScript para colocá-lo em modo <em>strict</em>.</li> - <li>Sempre use dois espaços para identação ao invés de tabs.</li> - <li>Por favor utilize quebras de linhas para separar blocos lógicos do código!</li> - <li>Utilize <em>underscore</em> "_" para separar as palavras em nomes de arquivos e diretórios, por exemplo: <code>like_this.js</code>.</li> - <li>Utilize apóstrofo no lugar de aspas para strings.</li> -</ul> -<h4 id="Regras_adicionais">Regras adicionais</h4> -<p>Ruim:</p> -<pre class="language-html">if (expression) doSomething(); -</pre> -<p>Correto:</p> -<pre class="language-html">if (expression) { - doSomething(); -} -</pre> -<p>Se você está trabalhando um aplicativo de sistema, verifique o guia listado <a href="https://groups.google.com/d/msg/mozilla.dev.gaia/rEhSrw6XmT4/UNvE7qW9pgYJ" title="See_here_for_some_rules._https://groups.google.com/d/msg/mozilla.dev.gaia/rEhSrw6XmT4/UNvE7qW9pgYJ">aqui</a>.</p> -<p>Antes de submeter uma correção nós recomendamos você executar <a href="https://developers.google.com/closure/utilities/docs/linter_howto" title="http://closure-linter.googlecode.com/svn/trunk/closure_linter/gjslint.py">gjslint</a> para verificar algum erro no estilo:</p> -<pre class="language-html">gjslint --nojsdoc my_file.js</pre> -<h3 id="Submetendo_uma_correção_(patch)">Submetendo uma correção (patch)</h3> -<p>Primeiramente assinale o bug para você no <a href="https://bugzilla.mozilla.org/buglist.cgi?product=Firefox%20OS&component=Gaia&resolution=---" title="https://bugzilla.mozilla.org/buglist.cgi?product=Firefox OS&component=Gaia&resolution=---">Bugzilla</a>, você precisará de uma conta no Bugzilla.</p> -<p>Então crie um <em>branch</em> no seu <em>fork</em> do Gaia:</p> -<pre class="language-html">$ git branch branchname -$ git checkout branchname</pre> -<p>Faça um <em>commit</em> das suas alterações:</p> -<pre class="language-html">$ git add /file/to/add -$ git commit -m "Bug XXXXX - Fix the broken Gaia and save the world"</pre> -<p>Carregue seu <em>branch</em>:</p> -<pre class="language-html">$ git push origin branchname</pre> -<p>Envie um <em>pull request</em> navegando no <em>branch</em> do seu <em>fork</em> no GitHub e encontre o botão "Pull Request".</p> -<div class="note"> - <p><strong>Nota</strong>: Exceto em circunstâncias não usuais, correções devem ser carregadas primeiro no master branch, não em um release branch como v1-train, v1.3, etc. Se você precisa carregar em um release branch, deve-se seguir um processo de aprovacão descrito em <a href="https://wiki.mozilla.org/Release_Management/B2G_Landing">B2G Landing wiki page</a>.</p> -</div> -<p>Para requerer uma revisão de sua correção, inclua <a href="http://globau.wordpress.com/2013/10/21/github-pull-requests-and-bugzilla/">o <em>pull request</em></a><em> </em>ao bug no Bugzilla, referenciando a URL do <em>pull request </em>e configurar a flag review ("r") para "?" e informar o ID Bugzilla de um dos <a href="https://wiki.mozilla.org/Modules/FirefoxOS" title="https://wiki.mozilla.org/Modules/FirefoxOS">donos dos modulos ou um de seus pares</a> (isso é muito importante - caso contrário, seu erro provavelmente não será visto por ninguém). O <a href="https://addons.mozilla.org/pt-BR/firefox/addon/github-tweaks-for-bugzilla/" title="https://addons.mozilla.org/en-US/firefox/addon/github-tweaks-for-bugzilla/">Github pode ser configurar para extensão do bugzilla</a> o que pode ajudar a automtizar o processo automaticamente criando um anexo e adicionando-o ao bug, mas você ainda precisará configurar o flag de revisão no Bugzilla.</p> -<p>O revisor pode pedir a você para fazer algumas alterações, você pode necessitar corrigir o <em>commit</em> original e forçar uma carga para o <em>branch</em>/<em>pull request</em> original. Uma vez que eles estiverem satisfeitos com sua correção, eles podem fazer um <em>merge</em> ao master branch para você. Antes de fazer isso eles podem preferir registrar todas as suas alterações em um único <em>commit</em> e assim sua contribuição fica facilmente rastreável.</p> -<p>Quem for fazer o merge do <em>commit</em> (normalmente um revisor) adicionará um flag <code>r=</code> nos comentários do <em>commit</em>.</p> -<h2 id="Opções_do_Make"><a name="Make_options"></a>Opções do Make</h2> -<p>Você usa o comando <code>make</code> dentro do repositório Gaia para criar o perfil Gaia que pode ser carregado no seu dispositivo ou na imagem de um <a href="https://developer.mozilla.org/pt-BR/Firefox_OS/Using_the_B2G_desktop_client">B2G Desktop</a>. Essa seção mostra em detalhes as diferentes opções disponíveis do <code>make</code>.</p> -<p>Existem muitas variáveis de ambiente presentes no <code>Makefile</code>. Independente delas poderem ser removidas no futuro.</p> -<p>Os perfis criados são armazenados em <code>/gaia/profile</code>, e contém os seguintes itens:</p> -<ul> - <li>defaults: Diretório que contem configurações padrão para ser recarregado depois que você fizer um reset no telefone.</li> - <li>extensions: Diretório contendo as extensões.extensions.</li> - <li>settings.json: Arquivo de configurações.</li> - <li>user.js: Outro arquivo contendo mais configurações e preferências.</li> - <li>webapps: Diretório contendo todos os aplicativos web que serão instalados no seu telefone.</li> -</ul> -<div class="note"> - <p><strong>Nota</strong>: Quando você já criou um perfil e gostaria de fazer um novo, você deve apagar o diretório de perfil existente antes de tentar gerar um novo.</p> -</div> -<h3 id="Padrão">Padrão</h3> -<pre class="brush: bash language-html"><code class="language-html">make</code></pre> -<p>Isso simplesmente gera uma imagem sem rótulo e sem possibilidade de depuração. Para uma imagem com ródulo você precisa usar {{ anch("make com o rótulo oficial Mozilla") }}; para uma imagem com depuração use {{ anch("make com depuração") }}.</p> -<h3 id="Carregar_no_dispositivo"><a name="Push_to_device"></a>Carregar no dispositivo</h3> -<pre class="brush: bash language-html"><code class="language-html">make install-gaia - -make reset-gaia - -make profile</code></pre> -<p>Com a configuração do <a href="https://developer.mozilla.org/pt-BR/Firefox_OS/Debugging/Installing_ADB">ADB</a> (Android Debug Bridge), esses makes copiarão o Gaia para o dispositivo.<code> install-gaia</code> irá copiar as atualizações do Gaia do seu diretório de trabalho para o dispositivo. <code>reset-gaia</code> limpará toda configuração existente, perfis, aplicativos e banco de dados (um novo conjunto de banco de dados será inicializado) antes de copiar o Gaia.</p> -<h3 id="Compilando_aplicativos_específicos">Compilando aplicativos específicos</h3> -<pre class="brush: bash language-html"><code class="language-html">APP=system make - -APP=system make install-gaia</code></pre> -<p>Quando um perfil existe, <code>APP</code> permite você especificar quais aplicativos serão empacatodas ao invés de empacotar todos os aplicativos Gaia.</p> -<h3 id="Diretório_de_perfil_personalizado">Diretório de perfil personalizado</h3> -<p>Você pode especificar um diretório personalizado para compilar seu perfil, usando <code>PROFILE_FOLDER</code>, por exemplo:</p> -<pre class="brush: bash language-html"><code class="language-html">PROFILE_FOLDER=profile-b2g-desktop make</code></pre> -<h3 id="Compilações_para_diferentes_dispositivos">Compilações para diferentes dispositivos</h3> -<p>Há algumas opções do make para criar compilações para diferentes dispositivos com diversos propósitos.</p> -<h4 id="Criando_uma_compilação_Gaia_para_Telefone">Criando uma compilação Gaia para Telefone</h4> -<pre class="brush: bash language-html"><code class="language-html">GAIA_DEVICE_TYPE=phone make</code></pre> -<p>Essa compilação pega os aplicativos do diretório <code>/gaia/build/config/phone/apps-engineering.list</code>.</p> -<h4 id="Criando_uma_compilação_Gaia_para_Tablet">Criando uma compilação Gaia para Tablet</h4> -<pre class="brush: bash language-html"><code class="language-html">GAIA_DEVICE_TYPE=tablet make</code></pre> -<p>Essa compilação pega os aplicativos do diretório <code>/gaia/build/config/phone/apps-engineering.list</code>.</p> -<h3 id="Tipos_diferentes_de_compilação">Tipos diferentes de compilação</h3> -<p>Há algumas opções de make que criam diferentes tipos de compilação, com finalidades diferentes.</p> -<h4 id="make_production">make production</h4> -<pre class="brush: bash language-html"><code class="language-html">PRODUCTION=1 make</code></pre> -<p>Isso cria uma imagem de produção do Gaia:</p> -<ul> - <li>Gaia é executado como um pacote de aplicativos, que são difíceis de depurar, mas é o melhor estado disponível para as aplicações em termos de permissões disponíveis para API, etc.</li> - <li>Teste de aplicativos não estão incluídos na imagem</li> - <li>Depuração remota é desabilitada por padrão</li> - <li>Tela de bloqueio foi ativada (que por sua vez vai cortar ligações USB)</li> - <li>Marionette é desligado</li> - <li>Experiência de primeiro uso é ligada</li> - <li>Cache offline é usado</li> -</ul> -<div class="note"> - <p><strong>Nota</strong>: Você também pode usar o alias <code>make production</code>.</p> -</div> -<h4 id="make_com_depuração">make com depuração</h4> -<pre class="brush: bash language-html"><code class="language-html">DEBUG=1 make</code></pre> -<p>A variável <code>DEBUG</code> executa o Gaia como um aplicativo hospedado no servidor interno numa <code>GAIA_PORT</code> específica, ao invés de aplicativos empacotados, como é no padrão, que é necessário reempacotar depois de cada alteração. Isso torna as coisas mais fáceis para testar. Lançamento do perfil com o mais recente Firefox Nightly também lhe dará bons painéis específicos B2G sobre as Ferramentas de Desenvolvedor Firefox.</p> -<p>E mais:</p> -<ul> - <li>Teste de aplicativos incluído na imagem.</li> - <li>Depuração remota habilitada por padrão.</li> - <li>Bloqueio de tela desabilitada (Conexões USB não são interrompidas).</li> - <li><a href="https://developer.mozilla.org/pt-BR/docs/Mozilla/QA/Marionette">Marionette</a> habilitado, o que é necessário para executar <a href="https://developer.mozilla.org/pt-BR/docs/Mozilla/Firefox_OS/Platform/Testing/Gaia_unit_tests" title="/en-US/docs/Mozilla/Firefox_OS/Platform/Testing/Gaia_unit_tests">testes unitários</a> do Gaia.</li> - <li>Experiência de primeiro uso é desabilitadada.</li> - <li>Cache Offline não é usado, nem memsmo é gerado.</li> -</ul> -<h4 id="make_com_depuração_do_dispositivo">make<a name="Debug_desktop_make"></a> com depuração do dispositivo</h4> -<pre class="brush: bash language-html"><code class="language-html">DEVICE_DEBUG=1 make</code></pre> -<p>Isso desabilita a tela de bloqueio no dispositivo, e habilita a depuração com a ferramenta ADB, isso é muito útil para a depuração do dispositivo.</p> -<p>No Firefox OS versão 1.2 e superiores, utilize esse parâmertro quando você quer depurar aplicativos web com o <a href="https://developer.mozilla.org/pt-BR/Firefox_OS/Using_the_App_Manager">App Manager</a>.</p> -<h4 id="make_com_depuração_desktop">make com depuração desktop</h4> -<pre class="brush: bash language-html"><code class="language-html">DEBUG=1 DESKTOP=0 make</code></pre> -<p>Essa opção cria a versão de depuração do desktop para rodar no <a href="https://developer.mozilla.org/pt-BR/Firefox_OS/Using_the_B2G_desktop_client">B2G desktop</a>.</p> -<h4 id="make_com_o_rótulo_oficial_Mozilla">make com o rótulo oficial Mozilla</h4> -<pre class="brush: bash language-html"><code class="language-html">MOZILLA_OFFICIAL=1 make</code></pre> -<p>Use para criar uma imagem com o rótulo oficial Mozilla.</p> -<h4 id="make_Dogfood">make Dogfood</h4> -<pre class="brush: bash language-html"><code class="language-html">DOGFOOD=1 make</code></pre> -<p>Opções Dogfooding e utilitários são habilitados, por exemplo, aplicativo Feedback, que for example the Feedback app, que permite "Dog fooders" facilmente enviar feedbacks do sistema operacional.</p> -<h4 id="make_System_apps">make System apps</h4> -<pre class="brush: bash language-html"><code class="language-html">B2G_SYSTEM_APPS=1 make</code></pre> -<p>Essa variável de ambiente permite você enviar um aplicativo para <code>/system/b2g</code> ao invés de <code>/data/local</code>. Você deve usar isso quando trabalha com uma imagem do usuário. Essa variável é automaticamente selecionada quando executar <code>make production</code>. Isso pode ser usado para <code>install-gaia</code> ou <code>reset-gaia</code>.</p> -<h4 id="Compilação_para_Distribuição_e_personalização_de_mercado">Compilação para Distribuição e personalização de mercado</h4> -<pre class="brush: bash language-html"><code class="language-html">GAIA_DISTRIBUTION_DIR=./dir</code></pre> -<div class="note"> - <p><strong>Note</strong>: Read <a href="https://developer.mozilla.org/pt-BR/Firefox_OS/Hacking_Firefox_OS/Market_customizations_guide">Personalização de Mercado</a> para maiores detalhes.</p> -</div> -<h3 id="Opções_para_desenvolvimentodepuração">Opções para desenvolvimento/depuração</h3> -<p>Também existem opções para adicionar ou remover recursos ou modificar configurações para facilitar a depuração.</p> -<h4 id="Habilitar_depuração_remota">Habilitar depuração remota</h4> -<pre class="brush: bash language-html"><code class="language-html">REMOTE_DEBUGGER=1</code></pre> -<p>Isso habilita a depuração remota no dispositivo, o mesma opção usada emThis enables remote debugging on the device, the same as using the option in the <a href="https://developer.mozilla.org/pt-BR/Firefox_OS/Debugging/Configura%C3%A7%C3%B5es_do_Desenvolvedor#Depura.C3.A7.C3.A3o_Remota">Configurações do Desenvolvedor</a>.</p> -<h4 id="make_otimizção_do_JavaScript">make otimizção do JavaScript</h4> -<pre class="brush: bash language-html"><code class="language-html">GAIA_OPTIMIZE=1 make</code></pre> -<p>Isso dispara a otimização no JavaScript do Gaia, concatenando/comprimindo os arquivos. Isso é automaticamente configurado quando é executado <code>make production</code>. Também pode ser usado para <code>install-gaia</code> ou <code>reset-gaia</code>.</p> -<h4 id="Ativos_de_imagem_de_alta_resolução">Ativos de imagem de alta resolução</h4> -<pre class="brush: bash language-html"><code class="language-html">GAIA_DEV_PIXELS_PER_PX=1.5 make</code></pre> -<p>Quando empacota o aplicativo, essa opção substitui as imagens com seus arquivos equivalentes <code>*@1.5x.(gif|jpg|png)</code> se existirem. Você precisar usar a opção acima como parte do comando <code>make</code> padrão, por exemplo:</p> -<pre class="brush: bash language-html"><code class="language-html">GAIA_DEV_PIXELS_PER_PX=1.5 make reset-gaia - -GAIA_DEV_PIXELS_PER_PX=1.5 make install-gaia</code></pre> -<p>Atualmente o Gaia é gerado com as seguintes resoluções de tela:</p> -<ul> - <li>qHD: ~540×960; device pixel ratio = 1.6875</li> - <li>WVGA: ~480×800; device pixel ratio = 1.5</li> - <li>HBGA (320x240); device pixel ratio = 1</li> -</ul> -<p>Use <code>GAIA_DEV_PIXELS_PER_PX</code> para certificar-se que as imagens fiquem visíveis em dispositivos qHD and WVGA. Veja o artigo <a href="https://developer.mozilla.org/pt-BR/docs/Mozilla/Mobile/Viewport_meta_tag#A_pixel_is_not_a_pixel" title="https://developer.mozilla.org/en-US/docs/Mozilla/Mobile/Viewport_meta_tag#A_pixel_is_not_a_pixel">Um pixel não é um pixel</a> para mais informações sobre pixels de dispositivos por pixels de css.</p> -<h4 id="Compilação_de_perfil_com_pouca_memória">Compilação de perfil com pouca memória</h4> -<pre class="brush: bash language-html"><code class="language-html">GAIA_MEMORY_PROFILE=low make</code></pre> -<p>Essa variável gera um perfil do Gaia com pouca memória, destinado a dispositivos com pouca memória como o Tarako.</p> -<h4 id="Recursos_Haida">Recursos Haida</h4> -<pre class="brush: bash language-html"><code class="language-html">HAIDA=1 make reset-gaia</code></pre> -<p>Essa compilação habilita o conjunto de recursos Haida, que atualmente é limitado aos gestos <a href="https://wiki.mozilla.org/FirefoxOS/systemsfe/epm#Rocketbar_Results"><em>rocketbar</em></a> e <a href="https://wiki.mozilla.org/FirefoxOS/Haida#Edge_Gestures_Between_Open_Content"><em>edge</em></a>, mas provavelmente incluirão outros recursos num futuro próximo.</p> -<h4 id="Desabilitar_Experiência_do_primeiro_uso_(FTU_-_First_Time_Use)">Desabilitar Experiência do primeiro uso (FTU - First Time Use)</h4> -<pre class="brush: bash language-html"><code class="language-html">NOFTU=1</code></pre> -<p>Desabilte o FTU com essa variável de ambiente.</p> -<h4 id="Desabilitar_a_tela_de_bloqueio">Desabilitar a tela de bloqueio</h4> -<p>Você pode desabilitar a tela de bloqueio usando a opção NO_LOCK_SCREEN, por exemplo:</p> -<pre class="brush: bash language-html"><code class="language-html">NO_LOCK_SCREEN=1 make</code></pre> -<h4 id="Carga_de_trabalho_de_referência"><a name="Reference_Workloads"></a>Carga de trabalho de referência</h4> -<p>Possibilita desenvolvedores e testadores instalar uma grande quantidade de dados em diversos aplicativos, tipicamente em um telefone recém formatado.</p> -<p>Os comandos são (a patir do diretório gaia):</p> -<pre class="brush: bash language-html"><code class="language-html">make reference-workload-light</code></pre> -<ul> - <li>200 contatos</li> - <li>200 mensagens SMS</li> - <li>50 ligações</li> - <li>20 images na galeria</li> - <li>20 músicas</li> - <li>5 vídeos</li> -</ul> -<pre class="brush: bash language-html"><code class="language-html">make reference-workload-medium</code></pre> -<ul> - <li>500 contatos</li> - <li>500 mensagens SMS</li> - <li>100 ligações</li> - <li>50 images na galeria</li> - <li>50 músicas</li> - <li>10 vídeos</li> -</ul> -<pre class="brush: bash language-html"><code class="language-html">make reference-workload-heavy</code></pre> -<ul> - <li>1000 contatos</li> - <li>1000 mensagens SMS</li> - <li>200 ligações</li> - <li>100 images na galeria</li> - <li>100 músicas</li> - <li>20 vídeos</li> -</ul> -<pre class="brush: bash language-html"><code class="language-html">make reference-workload-x-heavy</code></pre> -<ul> - <li>2000 contatos</li> - <li>2000 mensagens SMS</li> - <li>500 ligações</li> - <li>250 images na galeria</li> - <li>250 músicas</li> - <li>50 vídeos</li> -</ul> -<p>Essas metas aceitam a variável de ambiente <code>APP</code>, ou a variável <code>APPS</code> que deve conter os nomes das aplicações separados por espaço, ou seja:</p> -<pre class="brush: bash language-html"><code class="language-html">APP=sms make reference-workload-light -APPS="sms communications/contacts" make reference-workload-heavy</code></pre> -<p>Os aplicativos disponíveis são:</p> -<pre class="brush: bash language-html"><code class="language-html">APPS="gallery music video communications/contacts sms communications/dialer"</code></pre> -<p>Com o objetivo de insatalar músicas com cargas de trabalho de referência o utilitário <code>mid3v2</code> deve ser instalado. Esse utilitário pode ser instalado com:</p> -<pre class="brush: bash language-html"><code class="language-html">sudo apt-get install python-mutagen</code></pre> -<p>Se você estiver executando Fedora ou RHEL, use:</p> -<pre class="brush: bash language-html"><code class="language-html">sudo yum install python-mutagen</code></pre> -<h4 id="make_documentação">make documentação</h4> -<p>A documentaão do Gaia pode ser gerada via jsdoc3. Para gerar isso, utilize o seguinte comando:</p> -<pre class="brush: bash language-html"><code class="language-html">make docs</code></pre> -<h4 id="Habilitando_layout_IME_e_dicionários">Habilitando layout IME e dicionários</h4> -<p>Para habilitar o layout de teclado IME e os dicionários, use a seguinte estrutura de comando:</p> -<pre class="brush: bash language-html"><code class="language-html">GAIA_KEYBOARD_LAYOUTS=en,zh-Hant-Zhuyin,el,de,fr,zh-Hans-Pinyin make</code></pre> -<h2 id="Padronizando_os_aplicativos_em_tempo_de_compilação">Padronizando os aplicativos em tempo de compilação</h2> -<p>Os aplicativos que são executados no Firefox OS ficam todos na árvore de fontes do Gaia, nas seguintes posições:</p> -<ul> - <li><code>gaia/apps</code>: Aqui é onde os aplicativos padrão do sistem são encontrados, como: <code>calendar</code>, <code>email</code>, <code>settings</code>, etc.</li> - <li><code>gaia/external-apps</code>: Nesse diretório fica o aplicativo Firefox Marketplace (<code>marketplace.firefox.com</code>), e onde são armazenados os aplicativos instalados pelo usuário.</li> - <li><code>gaia/showcase-apps</code>: Ficam os aplicativos showcase, por exemplo: 3D Crystal Skull para mostrar a performance WebGL do dispositivo.</li> - <li><code>gaia/test-apps</code>: Esse diretório é um repositório para testes simples, desenhado para testar recursos simples do B2G.</li> - <li><code>gaia/external-apps</code>: Esse This diretório contém mais testes.</li> - <li>Existem outros também, dependendo da versão do Gaia que você clonou.</li> -</ul> -<div class="note"> - <p><strong>Nota</strong>: Se você está compilando o B2G ao invés do Gaia, os diretórios são precedidos pelo <code>B2G/</code>, por exemplo: <code>B2G/gaia/apps</code> e <code>B2G/gaia/external-apps</code>.</p> -</div> -<p>Se você quiser omitir alguns desse aplicativos de sua imagem do Gaia/B2G, você pode fazer isso de diferentes maneiras:</p> -<ol> - <li> - <p>O método "força bruta" no qual você simplesmente apaga os aplicativos que você não quer que estejam presentes antes de iniciar a compilação.</p> - </li> - <li> - <p>O método mais refinado de fazer isso é editar os arquivos <code>gaia/build/config/device-type/apps-*.list</code> onde <code>device-type</code> pode ser <code>phone</code>, <code>tablet</code> ou <code>tv</code>, para incluir os aplicativos que você quer incluir em tempo de compilação. Por exemplo, <code>gaia/build/config/apps-production.list</code> vai parecer mais ou menos como isso:</p> - <pre class="brush: bash language-html"><code class="language-html">apps/* -external-apps/* -outoftree_apps/*</code></pre> - <p>Mas você pode também incluir aplicativos específicos ao invés de apenas pegar todos, por exemplo:</p> - <pre class="brush: bash language-html"><code class="language-html">apps/clock</code></pre> - <p>O mecanismo para escolher qual arquivo<code> apps-*.list</code> é usado durante a compilação está contido em <code>gaia/Makefile</code>:</p> - <pre class="brush: cpp language-cpp"><code class="language-cpp">GAIA_APP_TARGET<span class="token operator">?</span><span class="token operator">=</span>engineering -<span class="token punctuation">.</span><span class="token punctuation">.</span><span class="token punctuation">.</span> -ifeq <span class="token punctuation">(</span>$<span class="token punctuation">(</span>MAKECMDGOALS<span class="token punctuation">)</span><span class="token punctuation">,</span> demo<span class="token punctuation">)</span> -GAIA_DOMAIN<span class="token operator">=</span>thisdomaindoesnotexist<span class="token punctuation">.</span>org -GAIA_APP_TARGET<span class="token operator">=</span>demo -<span class="token keyword">else</span> ifeq <span class="token punctuation">(</span>$<span class="token punctuation">(</span>MAKECMDGOALS<span class="token punctuation">)</span><span class="token punctuation">,</span> dogfood<span class="token punctuation">)</span> -DOGFOOD<span class="token operator">=</span><span class="token number">1</span> -<span class="token keyword">else</span> ifeq <span class="token punctuation">(</span>$<span class="token punctuation">(</span>MAKECMDGOALS<span class="token punctuation">)</span><span class="token punctuation">,</span> production<span class="token punctuation">)</span> -PRODUCTION<span class="token operator">=</span><span class="token number">1</span> -endif -<span class="token punctuation">.</span><span class="token punctuation">.</span><span class="token punctuation">.</span> -ifeq <span class="token punctuation">(</span>$<span class="token punctuation">(</span>PRODUCTION<span class="token punctuation">)</span><span class="token punctuation">,</span> <span class="token number">1</span><span class="token punctuation">)</span> -GAIA_OPTIMIZE<span class="token operator">=</span><span class="token number">1</span> -GAIA_APP_TARGET<span class="token operator">=</span>production -endif - -ifeq <span class="token punctuation">(</span>$<span class="token punctuation">(</span>DOGFOOD<span class="token punctuation">)</span><span class="token punctuation">,</span> <span class="token number">1</span><span class="token punctuation">)</span> -GAIA_APP_TARGET<span class="token operator">=</span>dogfood -endif -<span class="token punctuation">.</span><span class="token punctuation">.</span><span class="token punctuation">.</span> -<code class="language-cpp">ifndef GAIA_APP_CONFIG -GAIA_APP_CONFIG<span class="token operator">=</span>$<span class="token punctuation">(</span>GAIA_DIR<span class="token punctuation">)</span>$<span class="token punctuation">(</span>SEP<span class="token punctuation">)</span>build$<span class="token punctuation">(</span>SEP<span class="token punctuation">)</span>config$<span class="token punctuation">(</span>SEP<span class="token punctuation">)</span>$<span class="token punctuation">(</span>GAIA_DEVICE_TYPE<span class="token punctuation">)</span>$<span class="token punctuation">(</span>SEP<span class="token punctuation">)</span>apps<span class="token operator">-</span>$<span class="token punctuation">(</span>GAIA_APP_TARGET<span class="token punctuation">)</span><span class="token punctuation">.</span>list -endif</code></code></pre> - <p>Inicialmente, a variável <code>GAIA_APP_TARGET</code> é configurada como <code>engineering</code>, assim por padrão o gaia usará <code>app-engineering.list</code> (que inclui todos os testes, demos, etc.):</p> - <pre class="brush: bash language-html"><code class="language-html">make</code></pre> - <p>Para especificar o uso de uma diferente lista de aplicativos você deve especificar diferentes opções quando executar o comando make. Por exemplo, para compilar com <code>apps-production.list</code></p> - </li> - <li> - <pre class="brush: bash language-html"><code class="language-html">PRODUCTION=1 make</code></pre> - <ul> - <li>Se você compilar com <code>DEMO=1</code>, então será usado <code>apps-demo.list</code>.</li> - <li>Se você compilar com <code>DOGFOOD=1</code>, então será usado <code>apps-dogfood.list</code>.</li> - <li>Você pode suplantar a decisão usando<code> GAIA_APP_CONFIG</code> e prover seu próprio arquivo <code>apps-*.list</code>.</li> - </ul> - <p><code>gaia/Android.mk</code> contém essas linhas:</p> - <pre class="brush: cpp language-cpp"><code class="language-cpp">ifneq <span class="token punctuation">(</span>$<span class="token punctuation">(</span>filter user userdebug<span class="token punctuation">,</span> $<span class="token punctuation">(</span>TARGET_BUILD_VARIANT<span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">,</span><span class="token punctuation">)</span> -GAIA_MAKE_FLAGS <span class="token operator">+</span><span class="token operator">=</span> PRODUCTION<span class="token operator">=</span><span class="token number">1</span> -B2G_SYSTEM_APPS <span class="token punctuation">:</span><span class="token operator">=</span> <span class="token number">1</span> -endif</code></pre> - <p>Quando você compilar, se <code>VARIANT=user</code> ou <code>VARIANT=userdebug</code> forem configuradas (vão ser refletidas na variável <code>TARGET_BUILD_VARIANT</code>), <code>PRODUCTION=1</code> será automaticamente configurada quando compilar o Gaia.</p> - </li> - <li> - <p>O terceiro, e mais refinado método (porém mais complexo) é usar customizações. Isso permite que você especifique instruções de customização em tempo de compilação em diretórios serpardos, sem modificar o repositório Gaia principal. Você pode incluir suas próprias customizações em diretórios distintos ou usar diretórios pré-existentes que vêm no fonte.</p> - </li> - <li> - <p>Por exemplo, a lista customizada de aplicativos básicos para Firefox OS tablet é definida em <code>apps.list</code> no diretório <a href="https://github.com/mozilla-b2g/gaia/tree/master/distribution_tablet"><code>distribution_tablet</code></a> (<code>gaia/distribution_tablet</code>). Essas customizações podem ser aplicadas durante a compilação usando opções como essa:</p> - <pre class="brush: bash language-html"><code class="language-html">GAIA_DISTRIBUTION_DIR=distribution_tablet make</code></pre> - <div class="note"> - <p><strong>Nota</strong>: Customizações / personalizações possuem um tópico próprio. Para saber mais a respeito leia <a href="https://developer.mozilla.org/pt-BR/Firefox_OS/Hacking_Firefox_OS/Market_customizations_guide">Customizações de Mercado</a>.</p> - </div> - <div class="note"> - <p><strong>Nota</strong>: Se você quiser incluir aplicações externas customizadas como parte da sua imagem Gaia, você precisa compilá-las de uma forma específica, e colocá-las no diretório <code>gaia/external-apps/</code>. Leia o <a href="https://developer.mozilla.org/pt-BR/Firefox_OS/Hacking_Firefox_OS/Market_customizations_guide#Building_Prebundled_web_apps">artigo</a> para saber como.</p> - </div> - </li> -</ol> -<div class="warning"> - <p><strong>Important</strong>e: Se você é um fornecedor de disposito e quer criar sua própria imagem B2G/Gaia para distribuição, você precisa satisfazer um certo critério antes de incluir o aplicativo FIrefox Marketplace nos seus telefones/tablets/etc. Contacte a Mozilla para maiores detalhes.</p> -</div> -<h2 id="Contacte_o_time">Contacte o time</h2> -<ul> - <li><a href="https://lists.mozilla.org/listinfo/dev-gaia" rel="nofollow">Gaia Mailing List</a></li> - <li>Canal do IRC em irc.mozilla.org: #gaia IRC</li> -</ul> diff --git a/files/pt-br/archive/b2g_os/platform/gaia/index.html b/files/pt-br/archive/b2g_os/platform/gaia/index.html deleted file mode 100644 index 2e6b595649..0000000000 --- a/files/pt-br/archive/b2g_os/platform/gaia/index.html +++ /dev/null @@ -1,74 +0,0 @@ ---- -title: Gaia -slug: Archive/B2G_OS/Platform/Gaia -tags: - - Alteração do Gaia - - B2G - - Dispositivos Móveis - - Gaia - - Hacking Gaia -translation_of: Archive/B2G_OS/Platform/Gaia ---- -<p>Gaia é a parte responsável pela interface gráfica do <a href="/pt-BR/docs/Mozilla/Firefox_OS" title="Mozilla/Firefox_OS">Firefox OS</a>. Tudo que aparece na tela após o Firefox OS iniciar é desenhado pela Gaia, isto inclui a tela de segurança (lock screen), a tela inicial, a tela para realizar ligações, e outras aplicações. Gaia é escrita totalmente em <a href="/pt-BR/docs/Web/HTML" title="HTML">HTML</a>, <a href="/pt-BR/docs/CSS" title="CSS">CSS</a>, e <a href="/pt-BR/docs/JavaScript" title="JavaScript">JavaScript</a>. Sua única ligação com o sistema operacional e o aparelho é a partir de APIs Web padrão, que são implementado pelo <a href="/pt-BR/docs/Mozilla/Gecko" title="Gecko">Gecko</a>.</p> - -<p><span style="line-height: inherit;">Por causa da sua arquitetura, Gaia não roda apenas em aparelhos com Firefox OS, mas pode rodar também em aparelhos com outros sistemas operacionais ou em Navegadores Web (embora com a possibilidade de perda de algumas funcionalidades dependendo das capacidades do navegador)</span><span style="line-height: inherit;">.</span></p> - -<p><span style="line-height: inherit;">Aplicações de terceiros que existam no aparelho podem ser instaladas em conjunto com Gaia e podem ser inicializadas por Gaia</span>.</p> - -<table class="topicpage-table"> - <tbody> - <tr> - <td> - <h2 id="Documentação_sobre_Gaia">Documentação sobre Gaia</h2> - - <dl> - <dt><a href="/pt-BR/docs/Mozilla/Firefox_OS/Platform/Gaia/Introducao_ao_Gaia" title="Mozilla/Boot_to_Gecko/Introduction to Gaia">Introdução a Gaia</a></dt> - <dd>Gaia é a parte responsável pela interface gráfica dos aparelhos que rodam o Firefox OS; Que é simplesmente uma aplicação Web que roda encima das funcionalidas disponibilizadas pelo Firefox OS. Este guia vai te ajudar a ter uma ideia geral sobre o que é Gaia.</dd> - <dt><a href="/pt-BR/docs/Mozilla/Firefox_OS/Platform/Gaia/Hacking" title="Mozilla/Boot_to_Gecko/Gaia hacking guide">Guia de como alterar Gaia</a></dt> - <dd>Entenda como funciona o código de Gaia e como realizar modificações e melhorias.</dd> - <dt><a href="/pt-BR/docs/Mozilla/Firefox_OS/Platform/Gaia/Build_System_Primer" title="/en-US/docs/Mozilla/Firefox_OS/Platform/Gaia/Build_System_Primer">Compilação do Gaia</a></dt> - <dd>Muitas das principais tarefas das etapas de compilação são executadas através de scripts armazenados no subdiretório <code>build/</code> do Gaia.</dd> - <dt><a href="/pt-BR/docs/Mozilla/Firefox_OS/Platform/Gaia/Hacking_Tips_And_FAQ" title="/en-US/docs/Mozilla/Firefox_OS/Platform/Gaia/Hacking_Tips_And_FAQ">Alteração do Gaia: Dicas e Perguntas frequentes</a></dt> - <dd>Uma lista de dicas e Perguntas Frequentes sobre alteração do Gaia.</dd> - </dl> - - <p><span class="alllinks"><a href="/pt-BR/docs/tag/Gaia" title="tag/B2G">Outros artigos do Gaia...</a></span></p> - </td> - <td> - <h2 id="Obtenha_ajuda_da_comunidade">Obtenha ajuda da comunidade</h2> - Se você esta trabalhando com Gaia, ou desenvolvendo aplicações que utilizam Gaia, existem recursos na comunidade para ajudar<span style="line-height: inherit;">!</span> - - <ul> - <li>Consulte o forum do projeto Boot to Gecko: {{ DiscussionList("dev-gaia", "mozilla.dev.gaia") }}</li> - </ul> - - <ul> - <li>Faça sua pergunta no IRC da Mozilla, canal: <a href="irc://irc.mozilla.org/gaia" title="irc://irc.mozilla.org/gaia">#gaia</a></li> - </ul> - - <p><span class="alllinks"><a class="external" href="http://www.catb.org/~esr/faqs/smart-questions.html" title="http://www.catb.org/~esr/faqs/smart-questions.html">Não se esqueça da <em>netiquette</em>...</a></span></p> - - - <h2 class="Related_Topics" id="Related_Topics" name="Related_Topics">Tópicos relacionados</h2> - - <ul> - <li><a href="/pt-BR/docs/Mozilla/Mobile" title="Mobile">Dispositivos móveis</a></li> - <li><a href="/pt-BR/docs/Web" title="/en-US/docs/Web">Web Technology for developer</a> - <ul> - <li><a href="/pt-BR/docs/HTML" title="HTML">HTML</a></li> - <li><a href="/pt-BR/docs/CSS" title="CSS">CSS</a></li> - <li><a href="/pt-BR/docs/JavaScript" title="JavaScript">JavaScript</a></li> - </ul> - </li> - <li><a href="/pt-BR/docs/WebAPI" title="/en-US/docs/WebAPI">WebAPI</a></li> - </ul> - - <h2 class="Tools" id="Resources" name="Resources">Recursos</h2> - - <ul> - <li><a href="/pt-BR/docs/Mozilla/Firefox_OS/Architecture" title="Mozilla/Firefox_OS/Architecture">Arquitetura do Firefox OS</a></li> - </ul> - </td> - </tr> - </tbody> -</table> diff --git a/files/pt-br/archive/b2g_os/platform/gaia/introducao_ao_gaia/index.html b/files/pt-br/archive/b2g_os/platform/gaia/introducao_ao_gaia/index.html deleted file mode 100644 index 1f30e92b03..0000000000 --- a/files/pt-br/archive/b2g_os/platform/gaia/introducao_ao_gaia/index.html +++ /dev/null @@ -1,21 +0,0 @@ ---- -title: Introdução ao Gaia -slug: Archive/B2G_OS/Platform/Gaia/Introducao_ao_Gaia -translation_of: Archive/B2G_OS/Platform/Gaia/Introduction_to_Gaia ---- -<p>Gaia é a interface do usuário para o <em>Boot to Gecko </em>(B2G); é um conjunto de aplicações Web que roda localmente em um dispositivo B2G, emulador, desktop ou compilação Firefox. Tudo o que você precisa saber para criar aplicativos ou fazer alterações no Gaia são as tecnologias de desenvolvimento Web como <a href="/pt-BR/JavaScript" title="en/JavaScript">JavaScript</a>, <a href="/pt-BR/HTML" title="en/HTML">HTML</a> e <a href="/pt-BR/CSS" title="en/CSS">CSS</a>.</p> -<h2 id="A_tela_de_bloqueio_do_Gaia">A tela de bloqueio do Gaia</h2> -<p>A tela de bloqueio mostra a operadora de telefonia móvel, o dia e a hora atual e uma barra deslizante que possibilita o usuário desbloquear o telefone ou acessar direto a câmera fotográfica. Se o usuário possui um código de desbloqueio será apresentada uma tela para o usuário digitar o seu código.</p> -<p><img alt="" src="https://mdn.mozillademos.org/files/7611/gaia-lockscreen.png" style="width: 320px; height: 480px; display: block; margin: 0px auto;"></p> -<p>Em alguns dispositivos o código de desbloqueio é habilitado por padrão, nesses casos o código padrão de desbloquieo é "0000". Provavelmente isso será alterado ao longo do tempo.</p> -<h2 id="A_interface_padrão_no_Gaia">A interface padrão no Gaia</h2> -<p>A interface padrão no Gaia é similar a qualquer outra que você encontra nos diversos smartphones, como visto abaixo.</p> -<p><a href="/@api/deki/files/6276/=screenshot.png" title="screenshot.png"><img alt="Gaia Home" class="internal lwrap" src="/files/4601/device-2013-01-24-163623.png" style="width: 320px; height: 480px; float: left;"></a>Essa imagem é um versão prévia do sistema operacional, com ícones de aplicativos. A barra de status no topo indica a rede na qual o telefone está operando (ou com o aviso de ausência do chip da operadora, quando for o caso), a potência dos sinais da rede celular e da rede sem fio, a indicação da carga da bateria e o horário atual.</p> -<p> </p> -<p>A área central da tela mostra os ícones das aplicações; é possível arrastar o dedo para esquerda e para a direita para visualizar outras páginas de aplicativos.</p> -<p>Na parte de baixo da tela, uma <em>dock</em> com espaço para até sete aplicativos mais utilizados pelo usuário. É possível arrastar aplicativos da área central da tela para a <em>dock</em>.</p> -<h2 id="Veja_também" style="">Veja também</h2> -<ul> - <li><a href="https://developer.mozilla.org/pt-BR/docs/Mozilla/Firefox_OS/Platform/Gaia/Gaia_apps">Aplicativos Gaia</a>: Essa página possui informações sobre cada aplicativo, como usá-los e modificá-los.</li> - <li><a href="https://developer.mozilla.org/pt-BR/docs/Mozilla/Firefox_OS/Debugging/Configura%C3%A7%C3%B5es_do_Desenvolvedor">Configurações do Desenvolvedor</a>: Uma explicação de cada uma das opções de configuração de desenvolvedor que você pode habilitar através do aplicativos de configuração do Gaia.</li> -</ul> diff --git a/files/pt-br/archive/b2g_os/platform/gaia/sistema_compilacao_primario/index.html b/files/pt-br/archive/b2g_os/platform/gaia/sistema_compilacao_primario/index.html deleted file mode 100644 index 744b62a11b..0000000000 --- a/files/pt-br/archive/b2g_os/platform/gaia/sistema_compilacao_primario/index.html +++ /dev/null @@ -1,106 +0,0 @@ ---- -title: Sistema de Compilação Primário -slug: Archive/B2G_OS/Platform/Gaia/Sistema_compilacao_primario -translation_of: Archive/B2G_OS/Developing_Gaia/Build_System_Primer ---- -<div class="boxed translate-display"> - <div class="summary"> - <p><span class="seoSummary">Esse artigo explica como o sistema de compilação do Gaia funciona, incluindo o makefile, o processo de compilação, as variáveis de ambiente e potenciais customizações.</span></p> - </div> - <p>A maioria do trabalho significativo das etapas de uma compilação é executado por scripts que estão no subdiretório <code>build/</code> do Gaia, que são executados usando make, node.js e <a href="https://developer.mozilla.org/pt-BR/docs/XPConnect/xpcshell" title="https://developer.mozilla.org/en-US/docs/XPConnect/xpcshell">XPCShell</a> (também conhecido como JS Shell), um ambiente de execução do <a href="https://developer.mozilla.org/pt-BR/docs/Mozilla/Projects/XULRunner">XULRunner</a>. O sistema de compilação do Gaia contem mutas ferramentas de ajuda que o auxiliam para instalar, testar, localizar e empacotar aplicativos web em um dispositivo real. Também possibilita os desenvolvedores customizar o Gaia, por exemplo, trocando o papel de parede padrão, toques do telefone e configurações.</p> - <div class="note"> - <p><strong>Nota</strong>: XPCShell e similar ao node.js, mas com a capacidade adicional de executar alguns scripts de JavaScript "Mozilla-flavored". Possibilitando do Gaia compilar scripts para ser executado dentro de uma extensão Firefox.</p> - </div> - <h2 id="O_Makefile">O Makefile</h2> - <p>O make file é composto por um grupo de objetivos. Essa seção explica os mais úteis.</p> - <h3 id="install-gaia">install-gaia</h3> - <p>Instalar todos os aplicativos Gaia para seu dispositivo. Se você quiser trazer somente um aplicativo específico, você pode utilizar o parâmetro APP como descrito a seguir:</p> - <pre class="brush: bash language-html"><code class="language-html">APP=calendar make install-gaia</code></pre> - <p>Esse diretório deve existir dentro do diretório de aplicativos Gaia (por exemplo., <code>apps</code>).</p> - <h3 id="reset-gaia">reset-gaia</h3> - <p>Funciona da mesma forma que <code>install-gaia</code> mas, primeiro apaga tudo e configura para as permissões padrão depois de instalar todos os aplicativos. Os aplicativos ficarão em <code>/data/local</code> da mesma forma como ocorre nas compilações da engenharia. Isso também traz as aplicações de teste e depuração.</p> - <div class="warning"> - <p><strong>Cuidado</strong>: Utilizando a variável de ambiente <code>APP</code> com <code>reset-gaia</code> aparementemente funciona, mas colocará seu telefone em um estado no qual fica inutilizado (que pode ser recupardo executando esse objetivo novamente sem a variável <code>APP</code>). Assim não faça isso.</p> - </div> - <h3 id="production">production</h3> - <p>O mesmo que <code>reset-gaia </code>mas instala os aplicativos web em webapps <code>/system/b2g</code> ao invés de <code>/data/local</code>. Esse objetivo basicamente possibilita você emular compilações de usuário. Também traz o mesmo conjunto de de aplicativos instalados na compilação do usuário.</p> - <div class="warning"> - <p><strong>Cuidado</strong>: Utilizando a variável de ambiente <code>APP</code> com <code>production</code> aparementemente funciona, mas colocará seu telefone em um estado no qual fica inutilizado (que pode ser recupardo executando esse objetivo novamente sem a variável <code>APP</code>). Assim não faça isso.</p> - </div> - <h3 id="reference_workloads">reference workloads</h3> - <p>Esses objetivos trazem tamanhos variáveis de carga de trabalho para o dispositivo, nos ajudando a corrigir problemas de performance e escalabilidade. Esses objetivos aceitam a variável de ambiente APP, ou APPS que pode conter nomes dos aplicativos separados por espaço, por exemplo:</p> - <pre class="brush: bash language-html"><code class="language-html">APP=sms make reference-workload-light -APPS="sms communications/contacts" make reference-workload-heavy</code></pre> - <div class="note"> - <p><strong>Nota</strong>: Para maiores informações, leia <a href="https://developer.mozilla.org/pt-BR/Firefox_OS/Platform/Gaia/Hacking#Reference_Workloads">Modificando o Gaia: Reference workloads</a>.</p> - </div> - <h2 id="Variáveis_de_ambiente">Variáveis de ambiente</h2> - <p>Algumas variáveis de ambiente permitem você controlar alguns aspectios da compilação e instalação em seu dispositivo, por exemplo:</p> - <h4 id="B2G_SYSTEM_APPS1">B2G_SYSTEM_APPS=1</h4> - <p>Essa variável de ambiente permite você enviar um aplicativo para <code>/system/b2g</code> ao invés de <code>/data/local</code>. Você pode usar isso quando você trabalhar com uma compilação de usuário. Essa variável é automaticamente ajustada ao executar<code> make production</code>. Isso pode ser usado para <code>install-gaia</code> ou <code>reset-gaia</code>.</p> - <h4 id="GAIA_OPTIMIZE1">GAIA_OPTIMIZE=1</h4> - <p>Isso dispara um passo de otimização nos arquivos JavaScript. É automaticamente ajustada ao executar <code>make production</code>. Pode ser utilizada para <code>install-gaia</code> ou <code>reset-gaia</code>.</p> - <h4 id="PRODUCTION1">PRODUCTION=1</h4> - <p>Basicamente é um <em>alias</em> para <code>make production</code>.</p> - <h4 id="DEBUG1">DEBUG=1</h4> - <p>Gera um perfil de depuaração para ser usado com <a href="https://developer.mozilla.org/pt-BR/Firefox_OS/Platform/Automated_testing/Gaia_unit_tests" title="/en-US/docs/Mozilla/Firefox_OS/Platform/Testing/Gaia_unit_tests">testes unitários do Gaia</a> ou quando for desenvolver seu aplicativo Firefox OS no Firefox. Você deve apagar o diretório de perfil existente antes de gerar um outro.</p> - <h4 id="DEVICE_DEBUG1">DEVICE_DEBUG=1</h4> - <p>Desabilitar o bloqueio de tela no dispositivo.</p> - <h4 id="GAIA_DEVICE_TYPEphone">GAIA_DEVICE_TYPE=phone</h4> - <p>Essa variável permite você compilar para um dispositivo específico de uma diferente 'app.list'. Todos os arquivos 'app.list' estão armazenados em subdiretórios de /build/config/$(GAIA_DEVICE_TYPE)/.</p> - <p>O valor padrão de GAIA_DEVICE_TYPE é <strong>phone</strong>.</p> - <div class="note"> - <p><strong>Nota</strong>: para maiores detalhes e mais opções consulte nosso guia de <a href="https://developer.mozilla.org/pt-BR/Firefox_OS/Platform/Gaia/Hacking#Make_options">Opções do Make</a>.</p> - </div> - <h2 id="Processo_de_compilação">Processo de compilação</h2> - <p>Esse é o processo de compilação quando o <code>make</code> é executado no diretório do Gaia. As regras são executadas na seguinte ordem:</p> - <ol> - <li><strong>xulrunner-sdk-30</strong>: Xulrunner é usado para executar os scripts xpcshell no diretório <code>GAIA_DIR/build/</code>.</li> - <li><strong>preferences</strong>: Gera as preferências padrões para o Firefox OS; gera o arquivo <code>user.js</code> e o coloca no dispositivo, onde possa ser lido pelo Gecko. Observer que os valores devem ser alterados com variáveis de ambiente diferentes como <code>DEBUG=1</code>.</li> - <li><strong>webapp-manifests</strong>: Gera metadados dos aplicativos web para o process de compilação</li> - <li><strong>keyboard-layouts</strong>: Gera a configuração de layout padrão do teclado</li> - <li><strong>svoperapps</strong>: Baixa os aplicativos e gera os arquivos de configuração para a instalação dos aplicativos dependendo do país e operadora</li> - <li><strong>webapp-shared</strong>: Pega os arquivos que são usados em cada aplicativo do diretório compartilhado para o diretório build_stage.</li> - <li><strong>app-makefiles</strong>: Makefiles no diretório <code>app</code>: São executados se existirem. Para os aplicativos que não possuírem um Makefile associado, o Makefile do Gaia copia o diretório do aplicativo para <code>build_stage</code>, e executa <code>[app-directory]/build/build.js</code>. Caso exista veja {{ anch("Build script for apps") }} para detalhes.</li> - <li><strong>test-agent-bootstrap & test-agent-config</strong>: inclui duas regras de make, <code>test-agent-config</code> e <code>test-agent-bootstrap-apps</code>, que são usadas para configurar ambientes de teste para os aplicativos.</li> - <li><strong>webapp-optimize</strong>: Esse script contém vários procedimentos de otimização incluindo minificação de JavaScript, concatenação de localização de arquivos de recursos em arquivos JSON e geração de arquivos HTML para o idioma padrão se necessário.</li> - <li><strong>webapp-zip</strong>: Comprime cada aplicativo em arquivos zip separados e os coloca no diretório <code>profile/</code>. Arquivos no diretório <code>shared/</code> declarados nos arquivos HTML dos aplicativos web são incluídos nessa etapa.</li> - <li><strong>optimize-clean</strong>: <code>optimize-clean</code> apaga os arquivos HTML para o idioma padrão</li> - <li><strong>settings.json (settings.js)</strong>: Esse JavaScript gera as configurações padrão para o Firefox OS, que serão lidos pelo Gaia.</li> - <li><strong>contacts</strong>: Copia um arquivo de contatos pré-carregado para o seu perfil, se existir em <code>GAIA_DISTRIBUTION_DIR</code>.</li> - <li><strong>extensions</strong>: Copia as extensões de <code>GAIA_DIR/tools/extensions</code> para o seu diretório do perfil, configurações diferentes permitem especificar a cópia de extensões diferentes.</li> - <li><strong>create-default-data</strong>: Copia os dados padrão para o seu diretório de perfil.</li> - <li><strong>installed-extensions.json (additional-extensions.js)</strong>: Finalmente, esse script baixa algumas extensões adicionais para o seu perfil.</li> - </ol> - <p>Diagrama de dependência do makefile do Gaia:</p> - <p style="text-align: center;"><img alt="" src="https://mdn.mozillademos.org/files/7773/dependencies.png" style="width: 800px; height: 631px;"></p> - <h2 id="Build_Script_para_os_aplicativos"><a name="Build script for apps"></a>Build Script para os aplicativos</h2> - <p>Por padrão, o Makefile do Gaia copiará todos os aplicativos para o diretório <code>build_stage</code> e executará <code>[app directory]/build/build.js</code> se existir. Se o aplicativo possuir um Makefile para compilá-lo, você precisa publicar um comando no Makefile para copiar os arquivos do aplicativo para o diretório <code>build_stage</code> e executar <code>build/build.js</code> caso necessário.</p> - <p>Por exemplo, o aplicativo Camera precisa do arquivo <code>r.js</code> para <code>require.js</code> e também executar um script de compilação JavaScript para customizar a máxima resolução, assim existe um Makefile e um arquivo <code>build/build.js</code> no diretório do aplicativo Camera para customizar o processo de compilação:</p> - <p>Abaixo um fluxograma para ilustrar como o app-makefiles funciona:</p> - <p style="text-align: center;"><img alt="" src="https://mdn.mozillademos.org/files/7651/app-makefile.png" style="width: 544px; height: 579px;"></p> - <h2 id="Customizando_as_preferências">Customizando as preferências</h2> - <p>Se você tiver um conjunto de preferências customizadas e precisar configurá-las toda vez que fazer um <em>flash</em> para seu dispositivo, você pode criar um arquivo chamado <code>custom-prefs.js</code> dentro do diretório <code>build/config</code>. Isso o protege de ser sobrescrito.</p> - <p>Abaixo algumas preferências úteis:</p> - <pre class="brush: js language-js"><code class="language-js"><span class="token comment">// this enables marionette which lets you run performance tests -</span><span class="token comment">// see https://developer.mozilla.org/en-US/docs/Mozilla/Firefox_OS/Platform/Testing/Gaia_performance_tests -</span><span class="token function">user_pref<span class="token punctuation">(</span></span><span class="token string">"marionette.defaultPrefs.enabled"</span><span class="token punctuation">,</span> <span class="token boolean">true</span><span class="token punctuation">)</span><span class="token punctuation">;</span> -<span class="token comment"> -// this sets the port for remote debugging your application on the device -</span><span class="token function">user_pref<span class="token punctuation">(</span></span><span class="token string">"devtools.debugger.remote-port"</span><span class="token punctuation">,</span> <span class="token number">60000</span><span class="token punctuation">)</span><span class="token punctuation">;</span> -<span class="token comment"> -// this enables the remote debugger -</span><span class="token function">user_pref<span class="token punctuation">(</span></span><span class="token string">"devtools.debugger.remote-enabled"</span><span class="token punctuation">,</span> <span class="token boolean">true</span><span class="token punctuation">)</span><span class="token punctuation">;</span> -<span class="token comment"> -// this outputs debug information about the Radio Interface Layer in logcat -</span><span class="token function">user_pref<span class="token punctuation">(</span></span><span class="token string">"ril.debugging.enabled"</span><span class="token punctuation">,</span> <span class="token boolean">true</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></pre> - <p>Esse arquivo é lido a cada vez que um perfil é gerado. A maneira mais segura de garantir que tudo será gerado é apagar o seu perfil antes de iniciar o processo:</p> - <pre class="brush: bash language-html"><code class="language-html">rm -rf profile && make profile</code></pre> - <p>Então você pode usar o objetivo <code>install-gaia</code>.</p> - <h2 id="Perguntas_frequentes">Perguntas frequentes</h2> - <h3 id="O_dispositivo_permanece_preto_depois_de_um_flash">O dispositivo permanece preto depois de um <em>flash</em></h3> - <p>Isso pode acontecer se você fizer um <em>flash</em> no seu dispositivo enquanto ele estiver no modo "<em>idle</em>". Para consertar isso apenas reinice o B2G usando o seguinte comando a partir do terminal:</p> - <pre class="brush: bash language-html"><code class="language-html">adb shell stop b2g && adb shell start b2g</code></pre> - <p> </p> -</div> -<p> </p> diff --git a/files/pt-br/archive/b2g_os/platform/gonk/index.html b/files/pt-br/archive/b2g_os/platform/gonk/index.html deleted file mode 100644 index 3ffca8cb30..0000000000 --- a/files/pt-br/archive/b2g_os/platform/gonk/index.html +++ /dev/null @@ -1,25 +0,0 @@ ---- -title: Gonk -slug: Archive/B2G_OS/Platform/Gonk -tags: - - B2G - - Firefox OS - - Gonk - - NeedsContent -translation_of: Archive/B2G_OS/Platform/Gonk ---- -<p>{{draft()}}</p> -<div class="summary"> - <p>Gonk é o nível mais baixo da plataforma do sistema operacional <a href="/pt-BR/docs/Mozilla/Firefox_OS" title="/en-US/docs/Mozilla/Firefox_OS">Firefox OS</a>, composto por um kernel Linux baseado no <a class="external" href="http://source.android.com/">Android Open Source Project</a> (AOSP) e userspace hardware abstraction layer (HAL). Esse artigo tem como objetivo explicar como o Gonk é constituído.</p> - <p>Para saber mais sobre a arquitetura do Firefox OS e como o Gonk se encaixa nisso, leia o artigo <a href="/pt-BR/docs/Mozilla/Firefox_OS/Architecture">Arquitetura do Firefox OS</a>.</p> -</div> -<h2 id="Visão_geral_do_Gonk">Visão geral do Gonk</h2> -<p>No fonte do Gecko existe o diretório <code>b2g/</code> que contém o <em>port</em> do Gonk, que libera recursos de hardware específicos dos dispositivos móveis para acesso à Web que são: o Kernel do Linux, HAL e outras bibliotecas OEM específicas. Muitas das bibliotecas do Gonk são projetos comuns de código aberto: libusb, bluez, entre outras. Algumas outras partes do HAL são compartilhadas com o projeto Android: GPS, câmera e outras.</p> -<p>Gonk é uma camada de portabilidade do dispositivo: um adaptador entre o hardware e o Gecko. Gonk é uma distribuição Linux relativamente simples que pode ser tratada como uma porta Gecko equiparada com camadas de portabilidade do Gecko — assim, Gonk é uma <strong>portabilidade alvo</strong> do <a href="/pt-BR/docs/Mozilla/Gecko" title="/en-US/docs/Gecko">Gecko</a>, da mesma forma que existe um port do Gecko para OS X, Windows e Android.</p> -<div class="note"> - <p><strong>Nota</strong>: Uma vez que diferentes dispositivos podem ter diferentes chipsets e outras especificações de hardware, dispositivos podem conter diferentes distribuições Gonk.</p> -</div> -<p>Como o projeto Firefox OS tem total controle sobre o Gonk, nós podemos disponibilizar interfaces ao Gecko que não poderiam ser disponibilizadas em outros sistemas operacionais. Por exemplo, Gecko tem acesso direto ao <em>stack</em> do telefone e ao buffer de tela, ambos do Gonk.</p> -<h2 id="Código_fonte_do_Gonk">Código fonte do Gonk</h2> -<p>O <a href="https://github.com/mozilla-b2g/B2G">repositório principal B2G no Github</a> contém <em>ports</em> oficiais do Gonk suportados para uma variedade de dispositivos. Que pode ser tratado como o repositório do Gonk. A lista de dispositivos suportados está disponível em <code>B2G/config.sh</code>.</p> -<p>A rotina de trabalho no Gonk basicamente é portar o sistema para diferentes placas e garantir que o Gecko irá funcionar bem em diferentes dispositivos.</p> diff --git a/files/pt-br/archive/b2g_os/platform/index.html b/files/pt-br/archive/b2g_os/platform/index.html deleted file mode 100644 index 1762ea3894..0000000000 --- a/files/pt-br/archive/b2g_os/platform/index.html +++ /dev/null @@ -1,87 +0,0 @@ ---- -title: Plataforma Firefox OS -slug: Archive/B2G_OS/Platform -tags: - - B2G - - Firefox OS -translation_of: Archive/B2G_OS/Platform ---- -<p>A plataforma do Firefox OS é composta por muitos componentes. Você não precisa entender toda a arquitetura para construir aplicações que executem no Firefox OS, se você trabalha com desenvolvimento ou portabilidade de plataforma <span style="line-height: inherit;">— ou é simplesmente um curioso </span><span style="line-height: inherit;">— a seguinte documentação pode te interessar.</span></p> -<table class="topicpage-table"> - <tbody> - <tr> - <td> - <h2 class="Documentation" id="Documentation" name="Documentation">Documentação sobre a plataforma Firefox OS</h2> - <dl> - <dt> - <a href="https://developer.mozilla.org/pt-BR/docs/Mozilla/Firefox_OS/Platform/Architecture" title="/en-US/docs/Mozilla/Firefox_OS/Platform/Architecture">Visão Geral da arquitetura do Firefox OS</a></dt> - <dd> - Uma visão geral de como o Firefox OS é estruturado internamente. Particularmente interessante aos desenvolvedores da plataforma e pessoas que estão trabalhando para portar o sistema para outros dispositivos.</dd> - <dt> - <a href="/en-US/docs/Mozilla/Firefox_OS/Platform/Apps_architecture" title="/en-US/docs/Mozilla/Firefox_OS/Platform/Apps_architecture">Arquitetura das aplicações para Firefox OS</a></dt> - <dd> - Uma visão geral do modelo de aplicação para o Firefox OS.</dd> - <dt> - <a href="/en-US/docs/Mozilla/Firefox_OS/Platform/Gaia" title="/en-US/docs/Mozilla/Firefox_OS/Platform/Gaia">Gaia</a></dt> - <dd> - Documentação sobre o Gaia, a interface de usuário da aplicação para os dispositivos Firefox OS; esta é uma aplicação web que executa em cima da pilha de softwares do Firefox OS.</dd> - <dt> - <a href="/en-US/docs/Mozilla/Firefox_OS/Platform/Gonk" title="/en-US/docs/Mozilla/Firefox_OS/Platform/Gonk">Gonk</a></dt> - <dd> - Documentação sobre o Gonk, a camada de sistema operacional abaixo do Gaia. Isto consiste de um kernel Linux e uma camada de abstração de hardware que comunica com o Gecko.</dd> - <dt> - <a href="/en-US/docs/Mozilla/Gecko" title="/en-US/docs/Mozilla/Gecko">Gecko</a></dt> - <dd> - Gecko é a camada do Firefox OS que fornece as mesmas implementações dos padrões da web aberta usada no Firefox e no Thunderbird, bem como outras aplicações.</dd> - </dl> - <dl> - <dt> - <a href="https://developer.mozilla.org/en-US/docs/Mozilla/Firefox_OS/Security" title="/en-US/docs/Mozilla/Firefox_OS/Security"> Segurança</a></dt> - <dd> - Documentação sobre segurança no Firefox OS. Inclui tópicos sobre segurança nos dispositivos sob todas as perspectivas: para desenvolvedores de aplicativos, integradores e assim por diante.</dd> - <dt> - <a href="https://developer.mozilla.org/pt-BR/Firefox_OS/Debugging/Out_of_memory_management_on_Firefox_OS">Gerenciamento de problemas de falta de memória no Firefox OS</a></dt> - <dd> - Esse artigo explica como situações de falta de memória são gerenciadas no Firefox OS, usando procediementos de encerramento de processos e notificações.</dd> - </dl> - <dl> - <dt> - <a href="/en-US/docs/Mozilla/Firefox_OS/Platform/Feature_support_chart" title="/en-US/docs/Mozilla/Firefox_OS/Platform/Feature_support_chart">Tabela de suporte dos recursos</a></dt> - <dd> - Uma tabela os recursos disponíveis para cada construção do Firefox OS.</dd> - <dt> - <a href="https://developer.mozilla.org/pt-BR/docs/Mozilla/Firefox_OS/Platform/Settings_list" title="/en-US/docs/Mozilla/Firefox_OS/Platform/Settings_list">Lista de configurações do Firefox </a></dt> - <dd> - Uma lista de configurações que podem ser utilizadas com as <a href="https://developer.mozilla.org/pt-BR/docs/WebAPI/Settings" title="/en-US/docs/WebAPI/Settings">APIs de Configurações</a>.</dd> - </dl> - <p><span class="alllinks"><a href="/en-US/docs/tag/B2G" title="/en-US/docs/tag/B2G">Veja mais...</a></span></p> - </td> - <td> - <h2 class="Community" id="Community" name="Community"><span style="line-height: 1;">Obtendo ajuda da comunidade</span></h2> - <span style="line-height: 21px;">Se você está trabalhando com Firefox OS, ou desenvolvendo aplicações que você gostaria de rodar em dispositivos com Firefox OS, aqui estão alguns recursos da comunidade para te ajudar!</span> - <ul> - <li>Consultar o fórum do projeto Boot to Gecko: {{ DiscussionList("dev-b2g", "mozilla.dev.b2g") }}</li> - </ul> - <ul> - <li>Faça sua pergunta no canal IRC da Mozilla - Boot to Gecko: <a class="link-irc" href="irc://irc.mozilla.org/b2g" title="irc://irc.mozilla.org/b2g">#b2g</a></li> - </ul> - <p><span class="alllinks"><a class="external" href="http://www.catb.org/~esr/faqs/smart-questions.html" title="http://www.catb.org/~esr/faqs/smart-questions.html">Não esqueça do uso da <em>netiqueta</em>...</a></span></p> - <br> - <h2 class="Related_Topics" id="Related_Topics" name="Related_Topics"><span style="line-height: 1;">Tópicos Relacionados</span></h2> - <ul> - <li><a href="/en-US/docs/Mobile" title="en-US/docs/Mobile">Mobile</a></li> - <li><a href="/en-US/docs/HTML" title="en-US/docs/HTML">HTML</a></li> - <li><a href="/en-US/docs/CSS" title="en-US/docs/CSS">CSS</a></li> - <li><a href="/en-US/docs/JavaScript" title="en-US/docs/JavaScript">JavaScript</a></li> - </ul> - <h2 class="Tools" id="Recursos"><span style="line-height: 1;">Recursos</span></h2> - <ul> - <li><a class="link-https" href="https://wiki.mozilla.org/B2G/FAQ" title="B2G/FAQ">Mozilla wiki FAQ</a></li> - <li><a class="link-https" href="https://wiki.mozilla.org/B2G/Schedule_Roadmap" title="https://wiki.mozilla.org/B2G/Schedule_Roadmap">Roadmap</a></li> - <li><a href="/en-US/docs/Mozilla/Firefox_OS/Feature_support_chart" title="/en-US/docs/Mozilla/Firefox_OS/Feature_support_chart">Tabela de suporte dos recursos</a></li> - </ul> - </td> - </tr> - </tbody> -</table> -<p> </p> diff --git a/files/pt-br/archive/b2g_os/platform/lista_configuracao/index.html b/files/pt-br/archive/b2g_os/platform/lista_configuracao/index.html deleted file mode 100644 index da6a1a85dc..0000000000 --- a/files/pt-br/archive/b2g_os/platform/lista_configuracao/index.html +++ /dev/null @@ -1,708 +0,0 @@ ---- -title: Lista de configuração do Firefox OS -slug: Archive/B2G_OS/Platform/Lista_Configuracao -translation_of: Archive/B2G_OS/Platform/Settings_list ---- -<div class="summary"> - O Firefox OS oferece uma série de opções para configurar o dispositivo e suas funcionalidades internas. Essas configurações podem ser acessadas por aplicativos certificados usando <span class="seoSummary"><a href="/en-US/docs/WebAPI/Settings" title="/en-US/docs/WebAPI/Settings">Settings API</a>.</span></div> -<div class="note"> - <p><strong>Nota:</strong> Devido às diferenças de funcionalidades entre os diversos dispositivos e às versões do Firefox OS, essa lista pode não ser uma correspondência exata de quais funcionalidades estão disponíveis para cada dispositivo.</p> -</div> -<table class="standard-table"> - <thead> - <tr> - <th scope="col">Nome da configuração</th> - <th scope="col">Tipo</th> - <th scope="col">Valor padrão</th> - </tr> - </thead> - <tbody> - <tr> - <td><code>accessibility.invert</code></td> - <td>Boolean</td> - <td><code>false</code></td> - </tr> - <tr> - <td><code>accessibility.screenreader</code></td> - <td>Boolean</td> - <td><code>false</code></td> - </tr> - <tr> - <td><code>alarm.enabled</code></td> - <td>Boolean</td> - <td><code>false</code></td> - </tr> - <tr> - <td><code>app.reportCrashes</code></td> - <td>String</td> - <td><code>ask</code></td> - </tr> - <tr> - <td><code>app.update.interval</code></td> - <td>Number</td> - <td>86400</td> - </tr> - <tr> - <td><code>audio.volume.alarm</code></td> - <td>Number</td> - <td>15</td> - </tr> - <tr> - <td><code>audio.volume.bt_sco</code></td> - <td>Number</td> - <td>15</td> - </tr> - <tr> - <td><code>audio.volume.dtmf</code></td> - <td>Number</td> - <td>15</td> - </tr> - <tr> - <td><code>audio.volume.content</code></td> - <td>Number</td> - <td>15</td> - </tr> - <tr> - <td><code>audio.volume.notification</code></td> - <td>Number</td> - <td>15</td> - </tr> - <tr> - <td><code>audio.volume.tts</code></td> - <td>Number</td> - <td>15</td> - </tr> - <tr> - <td><code>audio.volume.telephony</code></td> - <td>Number</td> - <td>5</td> - </tr> - <tr> - <td><code>bluetooth.enabled</code></td> - <td>Boolean</td> - <td><code>false</code></td> - </tr> - <tr> - <td><code>bluetooth.debugging.enabled</code></td> - <td>Boolean</td> - <td><code>false</code></td> - </tr> - <tr> - <td><code>camera.shutter.enabled</code></td> - <td>Boolean</td> - <td><code>true</code></td> - </tr> - <tr> - <td><code>clear.remote-windows.data</code></td> - <td>Boolean</td> - <td><code>false</code></td> - </tr> - <tr> - <td><code>debug.grid.enabled</code></td> - <td>Boolean</td> - <td><code>false</code></td> - </tr> - <tr> - <td><code>debug.oop.disabled</code></td> - <td>Boolean</td> - <td><code>false</code></td> - </tr> - <tr> - <td><code>debug.fps.enabled</code></td> - <td>Boolean</td> - <td><code>false</code></td> - </tr> - <tr> - <td><code>debug.ttl.enabled</code></td> - <td>Boolean</td> - <td><code>false</code></td> - </tr> - <tr> - <td><code>debug.log-animations.enabled</code></td> - <td>Boolean</td> - <td><code>false</code></td> - </tr> - <tr> - <td><code>debug.paint-flashing.enabled</code></td> - <td>Boolean</td> - <td><code>false</code></td> - </tr> - <tr> - <td><code>debug.peformancedata.shared</code></td> - <td>Boolean</td> - <td><code>false</code></td> - </tr> - <tr> - <td><code>deviceinfo.firmware_revision</code></td> - <td>String</td> - <td> </td> - </tr> - <tr> - <td><code>deviceinfo.hardware</code></td> - <td>String</td> - <td> </td> - </tr> - <tr> - <td><code>deviceinfo.os</code></td> - <td>String</td> - <td> </td> - </tr> - <tr> - <td><code>deviceinfo.platform_build_id</code></td> - <td>String</td> - <td> </td> - </tr> - <tr> - <td><code>deviceinfo.platform_version</code></td> - <td>String</td> - <td> </td> - </tr> - <tr> - <td><code>deviceinfo.software</code></td> - <td>String</td> - <td> </td> - </tr> - <tr> - <td><code>deviceinfo.update_channel</code></td> - <td>String</td> - <td> </td> - </tr> - <tr> - <td><code>gaia.system.checkForUpdates</code></td> - <td>Boolean</td> - <td><code>false</code></td> - </tr> - <tr> - <td><code>general.useragent.updates.enabled</code></td> - <td>Boolean</td> - <td><code>true</code></td> - </tr> - <tr> - <td><code>geolocation.enabled</code></td> - <td>Boolean</td> - <td><code>true</code></td> - </tr> - <tr> - <td><code>keyboard.layouts.english</code></td> - <td>Boolean</td> - <td><code>true</code></td> - </tr> - <tr> - <td><code>keyboard.layouts.dvorak</code></td> - <td>Boolean</td> - <td><code>false</code></td> - </tr> - <tr> - <td><code>keyboard.layouts.otherlatins</code></td> - <td>Boolean</td> - <td><code>false</code></td> - </tr> - <tr> - <td><code>keyboard.layouts.cyrillic</code></td> - <td>Boolean</td> - <td><code>false</code></td> - </tr> - <tr> - <td><code>keyboard.layouts.arabic</code></td> - <td>Boolean</td> - <td><code>false</code></td> - </tr> - <tr> - <td><code>keyboard.layouts.hebrew</code></td> - <td>Boolean</td> - <td><code>false</code></td> - </tr> - <tr> - <td><code>keyboard.layouts.zhuyin</code></td> - <td>Boolean</td> - <td><code>false</code></td> - </tr> - <tr> - <td><code>keyboard.layouts.pinyin</code></td> - <td>Boolean</td> - <td><code>false</code></td> - </tr> - <tr> - <td><code>keyboard.layouts.greek</code></td> - <td>Boolean</td> - <td><code>false</code></td> - </tr> - <tr> - <td><code>keyboard.layouts.japanese</code></td> - <td>Boolean</td> - <td><code>false</code></td> - </tr> - <tr> - <td><code>keyboard.layouts.polish</code></td> - <td>Boolean</td> - <td><code>false</code></td> - </tr> - <tr> - <td><code>keyboard.layouts.portuguese</code></td> - <td>Boolean</td> - <td><code>false</code></td> - </tr> - <tr> - <td><code>keyboard.layouts.spanish</code></td> - <td>Boolean</td> - <td><code>false</code></td> - </tr> - <tr> - <td><code>keyboard.vibration</code></td> - <td>Boolean</td> - <td><code>false</code></td> - </tr> - <tr> - <td><code>keyboard.clicksound</code></td> - <td>Boolean</td> - <td><code>false</code></td> - </tr> - <tr> - <td><code>keyboard.autocorrect</code></td> - <td>Boolean</td> - <td><code>true</code></td> - </tr> - <tr> - <td><code>keyboard.wordsuggestion</code></td> - <td>Boolean</td> - <td><code>true</code></td> - </tr> - <tr> - <td><code>keyboard.current</code></td> - <td>String</td> - <td><code>en</code></td> - </tr> - <tr> - <td><code>language.current</code></td> - <td>String</td> - <td><code>en-US</code></td> - </tr> - <tr> - <td><code>lockscreen.passcode-lock.code</code></td> - <td>String</td> - <td><code>0000</code></td> - </tr> - <tr> - <td><code>lockscreen.passcode-lock.timeout</code></td> - <td>Number</td> - <td>0</td> - </tr> - <tr> - <td><code>lockscreen.passcode-lock.enabled</code></td> - <td>Boolean</td> - <td><code>false</code></td> - </tr> - <tr> - <td><code>lockscreen.notifications-preview.enabled</code></td> - <td>Boolean</td> - <td><code>true</code></td> - </tr> - <tr> - <td><code>lockscreen.enabled</code></td> - <td>Boolean</td> - <td><code>true</code></td> - </tr> - <tr> - <td><code>lockscreen.locked</code></td> - <td>Boolean</td> - <td><code>true</code></td> - </tr> - <tr> - <td><code>lockscreen.unlock-sound.enabled</code></td> - <td>Boolean</td> - <td><code>false</code></td> - </tr> - <tr> - <td><code>mail.sent-sound.enabled</code></td> - <td>Boolean</td> - <td><code>true</code></td> - </tr> - <tr> - <td><code>message.sent-sound.enabled</code></td> - <td>Boolean</td> - <td><code>true</code></td> - </tr> - <tr> - <td><code>operatorvariant.mcc</code></td> - <td>String</td> - <td><code>0</code></td> - </tr> - <tr> - <td><code>operatorvariant.mnc</code></td> - <td>String</td> - <td><code>0</code></td> - </tr> - <tr> - <td><code>ril.iccInfo.mbdn</code></td> - <td>String</td> - <td> </td> - </tr> - <tr> - <td><code>ril.sms.strict7BitEncoding.enabled</code></td> - <td>Boolean</td> - <td><code>false</code></td> - </tr> - <tr> - <td><code>ril.cellbroadcast.searchlist</code></td> - <td>String</td> - <td> </td> - </tr> - <tr> - <td><code>debug.console.enabled</code></td> - <td>Boolean</td> - <td><code>false</code></td> - </tr> - <tr> - <td><code>phone.ring.keypad</code></td> - <td>Boolean</td> - <td><code>true</code></td> - </tr> - <tr> - <td><code>powersave.enabled</code></td> - <td>Boolean</td> - <td><code>false</code></td> - </tr> - <tr> - <td><code>powersave.threshold</code></td> - <td>Number</td> - <td>0</td> - </tr> - <tr> - <td><code>privacy.donottrackheader.enabled</code></td> - <td>Boolean</td> - <td><code>false</code></td> - </tr> - <tr> - <td><code>ril.callwaiting.enabled</code></td> - <td> </td> - <td> </td> - </tr> - <tr> - <td><code>ril.cf.enabled</code></td> - <td>Boolean</td> - <td><code>false</code></td> - </tr> - <tr> - <td><code>ril.data.enabled</code></td> - <td>Boolean</td> - <td><code>false</code></td> - </tr> - <tr> - <td><code>ril.data.apn</code></td> - <td>String</td> - <td> </td> - </tr> - <tr> - <td><code>ril.data.carrier</code></td> - <td>String</td> - <td> </td> - </tr> - <tr> - <td><code>ril.data.defaultServiceId</code></td> - <td>Number</td> - <td>0</td> - </tr> - <tr> - <td><code>ril.data.passwd</code></td> - <td>String</td> - <td> </td> - </tr> - <tr> - <td><code>ril.data.httpProxyHost</code></td> - <td>String</td> - <td> </td> - </tr> - <tr> - <td><code>ril.data.httpProxyPort</code></td> - <td>Number</td> - <td>0</td> - </tr> - <tr> - <td><code>ril.data.mmsc</code></td> - <td>String</td> - <td> </td> - </tr> - <tr> - <td><code>ril.data.mmsproxy</code></td> - <td>String</td> - <td> </td> - </tr> - <tr> - <td><code>ril.data.mmsport</code></td> - <td>Number</td> - <td>0</td> - </tr> - <tr> - <td><code>ril.data.roaming_enabled</code></td> - <td>Boolean</td> - <td><code>false</code></td> - </tr> - <tr> - <td><code>ril.data.user</code></td> - <td>String</td> - <td> </td> - </tr> - <tr> - <td><code>ril.mms.apn</code></td> - <td>String</td> - <td> </td> - </tr> - <tr> - <td><code>ril.mms.carrier</code></td> - <td>String</td> - <td> </td> - </tr> - <tr> - <td><code>ril.mms.httpProxyHost</code></td> - <td>String</td> - <td> </td> - </tr> - <tr> - <td><code>ril.mms.httpProxyPort</code></td> - <td>String</td> - <td> </td> - </tr> - <tr> - <td><code>ril.mms.mmsc</code></td> - <td>String</td> - <td> </td> - </tr> - <tr> - <td><code>ril.mms.mmsport</code></td> - <td>String</td> - <td> </td> - </tr> - <tr> - <td><code>ril.mms.mmsproxy</code></td> - <td>String</td> - <td> </td> - </tr> - <tr> - <td><code>ril.mms.passwd</code></td> - <td>String</td> - <td> </td> - </tr> - <tr> - <td><code>ril.mms.user</code></td> - <td>String</td> - <td> </td> - </tr> - <tr> - <td><code>ril.radio.preferredNetworkType</code></td> - <td>String</td> - <td> </td> - </tr> - <tr> - <td><code>ril.radio.disabled</code></td> - <td>Boolean</td> - <td><code>false</code></td> - </tr> - <tr> - <td><code>ril.supl.apn</code></td> - <td>String</td> - <td> </td> - </tr> - <tr> - <td><code>ril.supl.carrier</code></td> - <td>String</td> - <td> </td> - </tr> - <tr> - <td><code>ril.supl.httpProxyHost</code></td> - <td>String</td> - <td> </td> - </tr> - <tr> - <td><code>ril.supl.httpProxyPort</code></td> - <td>String</td> - <td> </td> - </tr> - <tr> - <td><code>ril.supl.passwd</code></td> - <td>String</td> - <td> </td> - </tr> - <tr> - <td><code>ril.supl.user</code></td> - <td>String</td> - <td> </td> - </tr> - <tr> - <td><code>ril.sms.strict7BitEncoding.enabled</code></td> - <td>Boolean</td> - <td><code>false</code></td> - </tr> - <tr> - <td><code>ril.sms.</code>defaultServiceId</td> - <td>Number</td> - <td>0</td> - </tr> - <tr> - <td><code>ril.telephony.</code>defaultServiceId</td> - <td>Number</td> - <td>0</td> - </tr> - <tr> - <td><code>ring.enabled</code></td> - <td>Boolean</td> - <td><code>true</code></td> - </tr> - <tr> - <td><code>screen.automatic-brightness</code></td> - <td>Boolean</td> - <td><code>true</code></td> - </tr> - <tr> - <td><code>screen.brightness</code></td> - <td>Number</td> - <td>1</td> - </tr> - <tr> - <td><code>screen.timeout</code></td> - <td>Number</td> - <td>60</td> - </tr> - <tr> - <td><code>tethering.usb.enabled</code></td> - <td>Boolean</td> - <td><code>false</code></td> - </tr> - <tr> - <td><code>tethering.usb.ip</code></td> - <td>String</td> - <td><code>192.168.0.1</code></td> - </tr> - <tr> - <td><code>tethering.usb.prefix</code></td> - <td>String</td> - <td><code>24</code></td> - </tr> - <tr> - <td><code>tethering.usb.dhcpserver.startip</code></td> - <td>String</td> - <td><code>192.168.0.10</code></td> - </tr> - <tr> - <td><code>tethering.usb.dhcpserver.endip</code></td> - <td>String</td> - <td><code>192.168.0.30</code></td> - </tr> - <tr> - <td><code>tethering.wifi.enabled</code></td> - <td>Boolean</td> - <td><code>false</code></td> - </tr> - <tr> - <td><code>tethering.wifi.ip</code></td> - <td>String</td> - <td><code>192.168.1.1</code></td> - </tr> - <tr> - <td><code>tethering.wifi.prefix</code></td> - <td>String</td> - <td><code>24</code></td> - </tr> - <tr> - <td><code>tethering.wifi.dhcpserver.startip</code></td> - <td>String</td> - <td><code>192.168.1.10</code></td> - </tr> - <tr> - <td><code>tethering.wifi.dhcpserver.endip</code></td> - <td>String</td> - <td><code>192.168.1.30</code></td> - </tr> - <tr> - <td><code>tethering.wifi.ssid</code></td> - <td>String</td> - <td><code>FirefoxHotspot</code></td> - </tr> - <tr> - <td><code>tethering.wifi.security.type</code></td> - <td>String</td> - <td><code>open</code></td> - </tr> - <tr> - <td><code>tethering.wifi.security.password</code></td> - <td>String</td> - <td><code>1234567890</code></td> - </tr> - <tr> - <td><code>tethering.wifi.connectedClients</code></td> - <td>Number</td> - <td>0</td> - </tr> - <tr> - <td><code>tethering.usb.connectedClients</code></td> - <td>Number</td> - <td>0</td> - </tr> - <tr> - <td><code>time.nitz.automatic-update.enabled</code></td> - <td>Boolean</td> - <td><code>true</code></td> - </tr> - <tr> - <td><code>time.timezone</code></td> - <td> </td> - <td> </td> - </tr> - <tr> - <td><code>ums.enabled</code></td> - <td>Boolean</td> - <td><code>false</code></td> - </tr> - <tr> - <td><code>ums.mode</code></td> - <td>Number</td> - <td>0</td> - </tr> - <tr> - <td><code>vibration.enabled</code></td> - <td>Boolean</td> - <td><code>true</code></td> - </tr> - <tr> - <td><code>wifi.enabled</code></td> - <td>Boolean</td> - <td><code>true</code></td> - </tr> - <tr> - <td><code>wifi.screen_off_timeout</code></td> - <td>Number</td> - <td>600000</td> - </tr> - <tr> - <td><code>wifi.disabled_by_wakelock</code></td> - <td>Boolean</td> - <td><code>false</code></td> - </tr> - <tr> - <td><code>wifi.notification</code></td> - <td>Boolean</td> - <td><code>false</code></td> - </tr> - <tr> - <td><code>wifi.connect_via_settings</code></td> - <td>Boolean</td> - <td><code>false</code></td> - </tr> - <tr> - <td><code>icc.displayTextTimeout</code></td> - <td>Number</td> - <td>40000</td> - </tr> - <tr> - <td><code>icc.inputTextTimeout</code></td> - <td>Number</td> - <td>40000</td> - </tr> - </tbody> -</table> -<h2 id="Veja_também">Veja também</h2> -<ul> - <li><a href="/en-US/docs/WebAPI/Settings" title="/en-US/docs/WebAPI/Settings">Settings API</a></li> - <li>{{domxref("SettingsManager")}}</li> - <li>{{domxref("window.navigator.mozSettings", "navigator.mozSettings")}}</li> - <li><a href="https://github.com/mozilla-b2g/gaia/tree/master/build/config">Arquivos de configuração no repositório Gaia</a></li> -</ul> diff --git a/files/pt-br/archive/b2g_os/platform/out_of_memory_management_on_firefox_os/index.html b/files/pt-br/archive/b2g_os/platform/out_of_memory_management_on_firefox_os/index.html deleted file mode 100644 index d80f3f7004..0000000000 --- a/files/pt-br/archive/b2g_os/platform/out_of_memory_management_on_firefox_os/index.html +++ /dev/null @@ -1,57 +0,0 @@ ---- -title: Gerenciamento de falta de memória no Firefox OS -slug: Archive/B2G_OS/Platform/Out_of_memory_management_on_Firefox_OS -tags: - - Firefox OS - - Gerenciamento de memória - - LMK - - Pouca Memória - - oom_adj -translation_of: Archive/B2G_OS/Platform/Out_of_memory_management_on_Firefox_OS ---- -<div class="summary"> - <p><span class="seoSummary">O Firefox OS roda em alguns dispositivos com baixa capacidade de memória, e é fácil que estes aplicativos esgotem a memória em tais sistemas. Quando um processo esgota a memória disponível do sistema, o kernel deve encerrar alguns processos para liberar memória. Este artigo descreve como o "low memory killer" e "low memory notifications" funcionam — os dois sistemas no dispositivo controlam quais processos devem ser encerrados para manter o sistema principal funcionando sem que ele fique sem memória.</span></p> -</div> -<p>FxOS funciona com vários processos envolvidos — um "processo principal" que executa os serviços básicos do sistema e potencialmente muitos "processos filhos". Em geral todo aplicativo é executado em seu próprio processo filho. Uma vez que as aplicações do ambiente FxOS são raramente fechadas pelo usuário, o sistema automaticamente gerencia o tempo de vida para liberar mais espaço para novas aplicações ou para aplicações que estejam sendo executadas e que necessitem mais espaço de memória.</p> -<p>Dois subsistemas são usados para gerenciar isto: o <strong>Low memory killer (LMK </strong><span style="line-height: 1.5;">—</span><strong style="line-height: 1.5;"> Finalizador de</strong><strong style="line-height: 1.5;"> memória </strong><strong style="line-height: 1.5;">baixa)</strong><span style="line-height: 1.5;"> e </span><strong style="line-height: 1.5;">Low memory notifications (Notificações de pouca memória)</strong><span style="line-height: 1.5;">.</span></p> -<h2 id="Low_memory_killer">Low memory killer</h2> -<p><a href="https://android.googlesource.com/kernel/common.git/+/edd540ea92954f896bfb7ee0ebf5dfdde6e6cb41/drivers/staging/android/lowmemorykiller.txt">O LMK</a> é um subsistema do kernel do Android que encerra automaticamente os processos para dar lugar a pedidos de memória. Para escolher qual o processo deve ser encerrado primeiro para liberar memória, a cada processo é atribuido uma prioridade através dos arquivos <a href="https://www.kernel.org/doc/Documentation/filesystems/proc.txt">/proc/<pid>/oom_adj ou /proc/<pid>/oom_score_adj</a>. Um processos tem uma prioridade conhecida como prontuação de ajuste, ou <code>oom_adj</code>. Valores menores de <code>oom_adj</code> corresponde a processos de maior prioridade.</p> -<p>Em geral, quanto maior for a pontuação de ajuste, maior a probabilidade de ser o escolhido para ser encerrado. O LMK oferece múltiplos níveis, cada um correspondendo a uma certa quantidade de memória livre e uma mínima de pontuação de ajuste. Sempre que a quantidade de memória livre no sistema cair abaixo de um certo nível, todos os processos com uma pontuação de ajuste maior do que o mínimo especificado para este nível são elegíveis para ser encerrado. O LMK irá começar a encerrar esses processos, os maiores em primeiro lugar, e continuará até que tenha liberado memória suficiente de acordo com o limite definido.</p> -<div class="note"> - <p><strong>Nota</strong>: O processo encerrado quando o dispositivo ficar sem memória não é necessariamenteo que "causou" a condição de falta de memória.</p> -</div> -<h3 id="Prioridades_de_processos">Prioridades de processos</h3> -<p>No Firefox OS os aplicativos são encerrados seguindo a política de ordem de prioridade, que é imposta dando a cada aplicação um nível de prioridade e associando uma pontuação de ajuste (OOM) a esses níveis.<span style="line-height: 1.5;"> (</span><a href="http://hg.mozilla.org/mozilla-central/file/545c35907eff/b2g/app/b2g.js#l661" style="line-height: 1.5;">os valores correntes são definidos em prefs</a><span style="line-height: 1.5;">):</span></p> -<ol> - <li>Os primeiros aplicativos a serem encerrados serão os aplicativos em segundo plano, iniciando pelos menos utilizados recentemente.</li> - <li><span style="line-height: 1.5;">O aplicativo homescreen é o próximo a ser encerrado.</span></li> - <li>Em seguida, são encerrados os aplicativos em segundo plano que são perceptíveis pelo usuário (por exemplo, um leitor de música reproduzindo áudio em segundo plano ou um aplicativo que possua um <em>wakelock</em> de <code style="font-style: normal; line-height: 1.5;">high-priority</code><span style="line-height: 1.5;"> ou </span><code style="font-style: normal; line-height: 1.5;">cpu</code><span style="line-height: 1.5;"> e ter um manipulador de mensagens de sistema registrado.)</span></li> - <li>Se o teclado estiver em uso, será o próximo a ser encerrado.</li> - <li>Aplicações em primeiro plano serão as próximas a serem encerradas.</li> - <li>Finalmente, aplicações em primeiro plano que solicitaram um wakelock <span style="line-height: 1.5;"> </span><code style="font-style: normal; line-height: 1.5;">high-priority</code><span style="line-height: 1.5;"> ou </span><code style="font-style: normal; line-height: 1.5;">cpu</code><span style="line-height: 1.5;"> serão as últimas a serem encerradas</span>.</li> -</ol> -<div class="note"> - <p><strong>Nota</strong>: Muitos "processos filhos" são executados com <code>oom_adj 2</code> enquanto estão em primeiro plano. Ao serem executados em segundo plano o valor de <code>oom_adj</code> ficam entre <code>3</code> e <code>6</code> (inclusive). O valor exato de <code>oom_adj</code> de um processo filho depende de vários de fatores: se está tocando uma música, se é o aplicativo de tela inicial, etc.</p> -</div> -<p>Existe algumas excessões para essas regras:</p> -<ul> - <li>O processo principal nunca é terminado pelo LMK, pois se isso for feito todos os demais processos serão terminados e o sistema operacional seria reiniciado. O processo principal é executado com <code>oom_adj 0</code>.</li> - <li>Nós mantemos um processo que é utilizado para acelear o início de novos aplicativos chamado <strong>preallocated process</strong>. Normalmente esse processo é mantido ativo pois consome pouca memória e permite uma maior velocidade ao iniciar um aplicativo. A única situação na qual esse processo pode ser terminado é se não existir memória suficiente para o processo principal manter-se ativo após os outros processos terem sido terminados.</li> -</ul> -<h2 id="Low_memory_notifications">Low memory notifications</h2> -<p>O segundo mecanismo utilizado para liberar memória é a Notificação de pouca memória ou Low memory notifications. O LMK fornece um <a href="https://www.codeaurora.org/cgit/quic/la//kernel/msm/commit/?id=b3f986cba580b14438b77b42070ebbc77b69d4c4">limite especial</a> que quando ultrapassado pode enviar notificações para o <em>userspace</em> informando que o sistema está sendo executado com pouca memória. Tanto os aplicativos de sistema quanto os aplicativos regulares estão projetados para reagir ao evento <code>memory-pressure</code> via o serviço observer. Esse evento é visível apenas por códigos C++ e chrome JS e não diretamente pela aplicação. Através do codebase do Gecko nós usamos esse evento para liberar a maior quantidade de memória possível — normalmente purgando caches internos (imagens, DNS, sqlite, etc), descartando objetos que podem ser recriados (contextos WebGL por example) e executando o <em>garbage collector</em> e <em>cycle collector</em>.<br> - <br> - Quando for encontrada uma condição de pouca memória o primeiro evento <code>memory-pressure</code> enviado possuirá o parâmetro <code>low-memory</code>. Se após um período pré-definido (5s) persistir a condição de pouca memória, um outro evento <code>memory-pressure</code> será disparado, mas dessa vez com o parâmetro <code>low-memory-ongoing</code>. Esse parâmetro é utilizado quando continuamos com a condição de pouca memória e gostaríamos de liberar caches e utlizar outras formas "mais baratas" de minimizar o uso da memória, mas sabendo que abordagens mais pesadas como GC (Garbage Collector) provavelmente não terão sucesso.</p> -<h2 id="Como_LMK_e_as_notificações_de_pouca_memória_trabalham_juntos">Como LMK e as notificações de pouca memória trabalham juntos</h2> -<p>Atualmente o <a href="http://hg.mozilla.org/mozilla-central/file/545c35907eff/b2g/app/b2g.js#l722">limite de pouca memória é definido abaixo do nível do LMK para aplicativos em segundo plano mas abaixo de um para a tela inicial</a>. Assim, as ações agregadas para o LMK e notificação de pouca memória quando um dispositivo possui pouca memória:</p> -<ol> - <li>Terminar aplicativos em segundo plano em ordem dos menos usados recentemente.</li> - <li>Se não for liberada memória suficiente envia o evento <code>memory-pressure</code> para os aplicativos remanescentes.</li> - <li>Se a condição persistir é renviado um evento <code>memory-pressure</code> a cada 5 segundos, mas marcando-os como em execução para que os processos de GC/CC (Garbage Collector e Cycle Collector) não respondam a eles.</li> - <li>Terminar o aplicativo Tela Inicial.</li> - <li>Terminar aplicações em segundo plano perceptíveis e de alta prioridade.</li> - <li>Terminar o aplicativo teclado se estiver sendo executado.</li> - <li>Terminar aplicativos em primeiro plano.</li> - <li>Terminar aplicativos em primeiro plano de alta prioridade.</li> - <li>Terminar os processos pré-alocados.</li> -</ol> diff --git a/files/pt-br/archive/b2g_os/platform/tabela_funcionalidades/index.html b/files/pt-br/archive/b2g_os/platform/tabela_funcionalidades/index.html deleted file mode 100644 index 306b3eb173..0000000000 --- a/files/pt-br/archive/b2g_os/platform/tabela_funcionalidades/index.html +++ /dev/null @@ -1,154 +0,0 @@ ---- -title: Tabela de Funcionalidades -slug: Archive/B2G_OS/Platform/tabela_funcionalidades -translation_of: Archive/B2G_OS/Platform/Feature_support_chart ---- -<div class="summary"> - <p>Existem muitas compilações diferentes do Firefox OS que você pode baixar ou compilar você mesmo, e existem algumas diferenças entre os tipos de funcionalidades disponíveis em cada dispositivo. A tabela abaixo o ajudará a entender o que funciona em cada uma das diversas compilações</p> -</div> -<p>A tabela abaixo ajudará você a entender o que funciona e o que não funciona em cada uma das diversas compilações.</p> -<table class="standard-table"> - <thead> - <tr> - <th scope="row">Funcionalidade</th> - <th scope="col">Dispositivo</th> - <th scope="col">Emulador</th> - <th scope="col">Desktop</th> - </tr> - </thead> - <tbody> - <tr> - <th scope="row">Discador</th> - <td>Todos</td> - <td>somente IU<sup>*</sup>, sem rede</td> - <td>somente IU<sup>*</sup>, sem rede</td> - </tr> - <tr> - <th scope="row">Contatos</th> - <td>Todos</td> - <td>Todos</td> - <td>Todos</td> - </tr> - <tr> - <th scope="row">SMS</th> - <td>Todos</td> - <td>somente IU<sup>*</sup>, sem rede</td> - <td>somente IU<sup>*</sup>, sem rede</td> - </tr> - <tr> - <th scope="row">Camera</th> - <td>Todos</td> - <td>somente IU<sup>*</sup>, sem suporte à camera</td> - <td>somente IU<sup>*</sup>, certifique-se sobre suporte à camera do desktop</td> - </tr> - <tr> - <th scope="row">Galeria</th> - <td>Todos</td> - <td>Todos</td> - <td>Todos</td> - </tr> - <tr> - <th scope="row">Video</th> - <td>Todos</td> - <td>somente IU*</td> - <td>Todos</td> - </tr> - <tr> - <th scope="row">Música</th> - <td>Todos</td> - <td> </td> - <td>Todos</td> - </tr> - <tr> - <th scope="row">Rádio FM</th> - <td>Todos</td> - <td>Todos</td> - <td>somente IU<sup>*</sup></td> - </tr> - <tr> - <th scope="row">Email</th> - <td>Todos</td> - <td>Todos</td> - <td>Todos</td> - </tr> - <tr> - <th scope="row">Calculadora</th> - <td>Todos</td> - <td>Todos</td> - <td>Todos</td> - </tr> - <tr> - <th scope="row">Navegador</th> - <td>Todos</td> - <td>Todos</td> - <td>Todos</td> - </tr> - <tr> - <th scope="row">Marketplace</th> - <td>Todos</td> - <td>Todos</td> - <td>Todos</td> - </tr> - <tr> - <th scope="row">Relógio</th> - <td>Todos</td> - <td>Todos</td> - <td>Todos</td> - </tr> - <tr> - <th scope="row">Calendário</th> - <td>Todos</td> - <td>Todos</td> - <td>Todos</td> - </tr> - <tr> - <th scope="row">Tela Inicial</th> - <td>Todos</td> - <td>Todos</td> - <td>Todos</td> - </tr> - <tr> - <th scope="row">Tela de Bloqueio</th> - <td>Todos</td> - <td>Todos</td> - <td>Todos</td> - </tr> - <tr> - <th scope="row">Teclado</th> - <td>Todos</td> - <td>Todos</td> - <td>Todos</td> - </tr> - <tr> - <th scope="row">Gerenciador de Tarefas</th> - <td>Todos</td> - <td>Todos</td> - <td>Todos</td> - </tr> - <tr> - <th scope="row">First-Run</th> - <td>Todos</td> - <td>?</td> - <td>?</td> - </tr> - <tr> - <th scope="row">Notificações</th> - <td>Todos</td> - <td>Todos</td> - <td>Todos</td> - </tr> - <tr> - <th scope="row">Barra de Status</th> - <td>Todos</td> - <td>Alguns estados da rede não podem ser testados</td> - <td>Alguns estados da rede não podem ser testados</td> - </tr> - <tr> - <th scope="row">Configurações</th> - <td>Todos</td> - <td>Todos</td> - <td>Todos</td> - </tr> - </tbody> -</table> -<p>*IU - Interface do Usuario</p> diff --git a/files/pt-br/archive/b2g_os/porting/index.html b/files/pt-br/archive/b2g_os/porting/index.html deleted file mode 100644 index 081b56d0ef..0000000000 --- a/files/pt-br/archive/b2g_os/porting/index.html +++ /dev/null @@ -1,121 +0,0 @@ ---- -title: Portando o Boot to Gecko -slug: Archive/B2G_OS/Porting -translation_of: Archive/B2G_OS/Porting_B2G_OS/basics ---- -<p>O Firefox OS (Boot to Gecko) usa um kernel derivado do <a href="http://www.android.com/" title="http://www.android.com/">Android</a>, com uma interface do usuário baseado no <a href="/en-US/docs/Gecko" title="Gecko">Gecko</a> no seu topo. Esse artigo fornece um guia básico de como portar o sistema operacional para novos dispositivos.</p> -<p>Esse guia assume que você está portando para um novo dispositivo que já roda Android. Se você estiver portando para um outro dispositivo o trabalho será mais compilcado.</p> -<h2 id="Configurando_o_sistema_de_compilação">Configurando o sistema de compilação</h2> -<p>O primeiro passo é configurar seu ambiente e o sistema de compilação. Você pode seguir o guia no artigo <a href="/pt-BR/docs/Mozilla/Boot_to_Gecko/Firefox_OS_build_prerequisites" title="en-US/docs/Mozilla/Firefox_OS/Firefox_OS_build_prerequisites">Pré-requisitos para compilar o Firefox OS</a>.</p> -<h2 id="Crie_uma_cópia_de_segurança_local_do_sistema_Android_original">Crie uma cópia de segurança local do sistema Android original</h2> -<p>O próximo passo deve ser criar uma cópia de segurança do seu dispositivo Android antes de começar a realizar os testes de compilação do B2G. Adicionalmente alguns desses bits salvos serão úteis no processo de compilação e instalação.</p> -<pre>mkdir my_device_backup -cd my_device_backup -adb pull /system system</pre> -<h2 id="Clone_os_repositórios_B2G">Clone os repositórios B2G</h2> -<p>Para clonar o repositório B2G e os seus manifestos execute os comandos:</p> -<pre>git clone https://github.com/mozilla-b2g/B2G.git -git clone https://github.com/mozilla-b2g/b2g-manifest.git</pre> -<h2 id="Adicione_o_novo_dispositivo_ao_arquivo_config.sh">Adicione o novo dispositivo ao arquivo config.sh</h2> -<p>O próximo passo é adicionar o novo dispositivo ao arquivo <a href="https://github.com/mozilla-b2g/B2G/blob/master/config.sh" title="https://github.com/mozilla-b2g/B2G/blob/master/config.sh"><code>config.sh</code></a> no repositório B2G. Você pode utilizar algum já existente como modelo. Essa tarefa basicamente consiste em fornecer as instruções para buscar os arquivos corretos para a compilação.</p> -<h2 id="Crie_um_arquivo_de_manifesto_para_o_novo_dispositivo">Crie um arquivo de manifesto para o novo dispositivo</h2> -<p>Agora você precisa incluir um arquivo de manifesto para o novo dispositivo. Utilze um manifesto existente como modelo. Você pode usar o manifesto <a href="https://github.com/mozilla-b2g/b2g-manifest/blob/master/hamachi.xml" title="https://github.com/mozilla-b2g/b2g-manifest/blob/master/hamachi.xml">hamachi</a> como referência. Uma vez pronto, adicione e faça o <em>commit</em> seu novo arquivo no repositório local <code>b2g-manifest</code>:</p> -<pre>git add my-new-device.xml -git commit -</pre> -<p>Nesse momento, você vai precisar que o script <a href="https://github.com/mozilla-b2g/B2G/blob/master/config.sh" title="https://github.com/mozilla-b2g/B2G/blob/master/config.sh"><code>config.sh</code></a> utilize seu repositório local <code>b2g-manifest</code> no lugar do oficial. Para fazer isso, altere os valores das variáveis <code>GITREPO</code> e <code>BRANCH</code> no arquivo <a href="https://github.com/mozilla-b2g/B2G/blob/master/config.sh" title="https://github.com/mozilla-b2g/B2G/blob/master/config.sh"><code>config.sh</code></a> para o seu repositório local e o <code>branch</code> desejeado, por exemplo:</p> -<pre><span class="nv">GITREPO</span><span class="o">=</span><span class="k">${</span><span class="nv">GITREPO</span><span class="k">:-</span><span class="s2">"file:///home/yourname/b2g-manifest"</span><span class="k">}</span> -<span class="nv">BRANCH</span><span class="o">=</span><span class="k">${</span><span class="nv">BRANCH</span><span class="k">:-master</span><span class="k">}</span></pre> -<h2 id="Crie_uma_árvore_de_configuração_para_o_novo_dispositivo">Crie uma árvore de configuração para o novo dispositivo</h2> -<p>Isso deve estar em <code>device/<em><manufacturer></em>/<em><device_id></em></code>. Essa árvore deve incluir no mínimo:</p> -<ul> - <li><code>AndroidBoard.mk</code></li> - <li><code>AndroidProducts.mk</code></li> - <li><code>BoardConfig.mk</code></li> - <li><code>extract-files.sh</code></li> - <li><code>full_<device_id>.mk</code></li> - <li>arquivos idc para <em>touchscreen</em></li> - <li>arquivos de inicialização (<code>init.rc</code>, <code>init.<target>.rc</code>, <code>uevent.rc</code>, ...)</li> -</ul> -<p>O conteúdo aqui pode ser muito diferente de um dispositivo para outro. Em particular<code> BoardConfig.mk</code> e <code>extract-files.sh</code> devem ser significativamente diferentes. Essa parte requer um bom conhecimento técnico, investigação, testes de depuração para descobrir quais BLOBs devem ser extraídos. Para ter uma melhor ideia do que supostamente essa árvore deve conter dê uma olhada em <a href="https://github.com/mozilla-b2g/android-device-hamachi" title="https://github.com/mozilla-b2g/android-device-hamachi">configuração para o dispositivo hamachi</a>. Lembre-se de referenciar corretamente sua própria árvore de configuração no manifesto que você criou para o seu novo dispositivo.</p> -<div class="note"> - <p><strong>Nota:</strong> Se você encontrar uma referência existente no <a href="http://www.cyanogenmod.com/" title="http://www.cyanogenmod.com/">CyanogenMod</a> para seu dispositivo, isso acelerará o processo. O <a href="http://forum.xda-developers.com/" title="http://forum.xda-developers.com/">Forum XDA</a> é um outro bom local para discussão e conseguir informações.</p> -</div> -<h2 id="Recompile_o_boot.img">Recompile o boot.img</h2> -<p>Uma vez que tudo está pronto, você precisa recompilar a imagem de inicialização (boot.img). Isso normalmente não é necessário para o kernel, mas pegar as alterações realizadas no arquivo <code>init.rc</code>.</p> -<h3 id="Alterações_no_arquivo_init.rc">Alterações no arquivo <code>init.rc</code></h3> -<p>O arquivo <code>init.rc</code> que você vai usar <strong>não é fornecido</strong> pelo B2G, então você deve utilizar o que existe no seu dispositivo.</p> -<p>As principais coisas que você necessita modificar são:</p> -<h4 id="Importar_init.b2g.rc">Importar init.b2g.rc</h4> -<p>Adicione as seguintes linhas para importar <code>init.b2g.rc</code>:</p> -<pre>on early-init - start ueventd - import /init.b2g.rc</pre> -<h4 id="Corrigir_permissões">Corrigir permissões</h4> -<p>Corrija as permissões nos arquivos <code>/system/b2g/b2g</code>, <code>/system/b2g/updater</code>, <code>/system/b2g/plugin-container</code>. Isso deve ser feito após as linhas que montam o sistema de arquivos. Use a permissão <code>0755</code>:</p> -<pre>chmod 0755 /system/b2g/b2g -chmod 0755 /system/b2g/updater -chmod 0755 /system/b2g/plugin-container</pre> -<p>Você deve começar modificando o arquivo <code>init.rc</code> do seu dispositivo ao invés de usar o arquivo <code>init.rc</code> fornecido pelo sistema de compilação. Para isso, você deve lembrar de configurar <code>TARGET_PROVIDES_INIT_RC</code> em <code>BoardConfig.mk</code>.</p> -<h3 id="Utilização_de_um_kernel_pré-compilado_versus_compilar_o_kernel_desde_o_fonte.">Utilização de um kernel pré-compilado <em>versus</em> compilar o kernel desde o fonte.</h3> -<p>Para compilar um kernel desde o fonte, inclua <code>AndroidKernel.mk</code> e a configuração do kernel à árvore de configuração do dispositivo.</p> -<p>O <a href="https://github.com/andreasgal/B2G/tree/master/glue/gonk/device/toro/maguro" title="https://github.com/andreasgal/B2G/tree/master/glue/gonk/device/toro/maguro">maguro</a> no sistema de compilação antigo é um exemplo de compilação do kernel a partir do fonte.</p> -<h3 id="Extraindo_e_modificando_uma_imagem_de_incialização_(boot_image)">Extraindo e modificando uma imagem de incialização (<em>boot image</em>)</h3> -<p>É possível recuperar a imagem de inicialização de um telefone analisando o conteúdo dos dispositivos <code>/dev/mtd/mtd1</code> ou <code>/dev/mtd/mtd2</code>, a imagem pode ser facilmente recuperada:</p> -<pre>adb shell 'cat /dev/mtd/mtd1 > /sdcard/boot.img' -adb pull /sdcard/boot.img -</pre> -<p>Uma vez que a imagem foi obtida ela pode ser descompactada via uma ferramenta como <a href="http://whiteboard.ping.se/Android/Unmkbootimg" title="Unmkbootimg">unmkbootimg</a>. A ferramente irá extrair tanto a imagem do kernel (<code>zimage</code>) como o <em>ramdisk</em> (<code>initramfs.cpio.gz</code>) bem como irá apresentar o comando para recompilar a imagem com os mesmos parâmetros usados na compilação original, por exemplo:</p> -<pre>$ unmkbootimg boot.img -Kernel size 3872576 -Kernel address 0x208000 -Ramdisk size 265102 -Ramdisk address 0x1500000 -Secondary size 0 -Secondary address 0x1100000 -Kernel tags address 0x200100 -Flash page size 2048 -Board name is "" -Command line "androidboot.hardware=aphone" -Extracting kernel to file zImage ... -Extracting root filesystem to file initramfs.cpio.gz ... -All done. ---------------- -To recompile this image, use: - mkbootimg --kernel zImage --ramdisk initramfs.cpio.gz --base 0x200000 --cmdline 'androidboot.hardware=aphone' -o new_boot.img ---------------- -</pre> -<p>Para modificar o arquivo <em>ramdisk</em>, crie um diretório de saída e faça a extração lá:</p> -<pre>mkdir initramfs_dir -cd initramfs_dir -gunzip -c ../initramfs.cpio.gz | cpio -i -</pre> -<p>Faça todas as alterações necessárias (como a modificação no init.rc) e reempacote o ramdisk usando <code>mkbootfs</code>. Certifique-se de usar a versão compilada com as outras ferramentas do B2G atual:</p> -<pre>/path/to/your/B2G/out/host/linux-x86/bin/mkbootfs . | gzip > ../newinitramfs.cpio.gz -</pre> -<p>Finalmente volte ao diretório de nível mais alto e reempacote a imagem de inicializacão usando <code>mkbootimg</code>, certifique-se também que você está usando a mesma versão compilada com as outras ferramentas do B2G atual:</p> -<pre>/path/to/your/B2G/out/host/linux-x86/bin/mkbootimg --kernel zImage --ramdisk newinitramfs.cpio.gz --base 0x200000 --cmdline 'androidboot.hardware=aphone' -o newboot.img -</pre> -<p>Se agora você copiar a nova imagem de inicializacão em <code>out/target/product/$DEVICE/boot.img</code> (onde <code>$DEVICE</code> é o nome do dispositivo) ele automaticamente irá copiar (<em>flash</em>) quando você executar <code>flash.sh</code>. Alternativamente você poderá copiar (<em>flash</em>) manualmente com os seguintes comandos:</p> -<pre>adb reboot bootloader -fastboot flash boot newboot.img -fastboot reboot -</pre> -<h2 id="Adicione_o_novo_dispositivo_ao_flash.sh">Adicione o novo dispositivo ao flash.sh</h2> -<p>Os detalhes de como fazer isso irá depender das ferramentas necessárias para fazer a cópia para o novo dispositivo.</p> -<h2 id="Configure_compile_e_copie_(flash)_para_o_novo_dispositivo">Configure, compile e copie (flash) para o novo dispositivo</h2> -<p>Agora você pode tentar executar os seguintes comandos:</p> -<pre>ANDROIDFS_DIR=my_device_backup ./config.sh <device_id> '../b2g-manifest/default.xml' -./build.sh -./flash.sh</pre> -<h2 id="Teste_e_depure">Teste e depure</h2> -<p>Nós precisamos incluir detalhes aqui, mas esse artigo já pode ser alguma ajuda.</p> -<h2 id="Perguntas_frequentes">Perguntas frequentes</h2> -<p>Em breve</p> -<h2 id="Veja_também">Veja também</h2> -<ul> - <li><a href="/pt-BR/docs/Mozilla/Firefox_OS" title="en-US/docs/Mozilla/Firefox_OS">Firefox OS</a></li> - <li><a href="https://github.com/mozilla-b2g/B2G" title="https://github.com/mozilla-b2g/B2G">Arquivos fonte do B2G no Github</a></li> - <li><a href="http://www.android.com/" title="http://www.android.com/">Página oficial do Android</a></li> - <li><a href="https://autonome.wordpress.com/2013/01/15/firefox-os-devices-and-dark-matter/" title="https://autonome.wordpress.com/2013/01/15/firefox-os-devices-and-dark-matter/">Uma lista de projetos existentes no blog do Dietrich Ayala</a> de portabilidade do Firefox OS em alguns dispositivos</li> -</ul> diff --git a/files/pt-br/archive/b2g_os/preparando_sua_primeira_compilacao_do_b2g/index.html b/files/pt-br/archive/b2g_os/preparando_sua_primeira_compilacao_do_b2g/index.html deleted file mode 100644 index e67ac88c0d..0000000000 --- a/files/pt-br/archive/b2g_os/preparando_sua_primeira_compilacao_do_b2g/index.html +++ /dev/null @@ -1,215 +0,0 @@ ---- -title: Preparando sua primeira compilação do B2G -slug: Archive/B2G_OS/Preparando_sua_primeira_compilacao_do_B2G -translation_of: Archive/B2G_OS/Preparing_for_your_first_B2G_build ---- -<div class="summary"> -<p>Antes de você compilar o B2G, você precisa criar um clone do repositório e configurar sua árvore de compilação. Esse artigo explica como fazer isso.</p> -</div> - -<p>Dependendo da sua conexão de internet, a etapa de configuração leva uma boa quantidade de horas para baixar os arquivos necessários para compilar o Firefox OS (com uma conexão medíocre de 150 kBps, baixar gigabytes de repositórios Android pode levar dezenas de horas). Uma vez que esperar não é uma tarefa muito divertida, depois de ler essa página e iniciar o <em>script</em> de configuração considere usar seu tempo para configurar e utilizar o <a class="vt-p" href="/en-US/docs/Mozilla/Firefox_OS/Using_Firefox_OS_Simulator" title="/en-US/docs/Mozilla/Firefox_OS/Using_Firefox_OS_Simulator">Simulador do Firefox OS</a>, familiarizar-se com a <a class="vt-p" href="/pt-BR/docs/Apps" title="/en-US/docs/Apps">Documentação para desenvolvedores de aplicativos</a> incluindo Projeto e Compilação de Aplicativos ou até mesmo ler sobre os próximos passos.</p> - -<div class="note"> -<p>Você precisará ter uma outra tarefa para fazer, ou um amigo disponível para um café enquanto são executadas as tarefas de configurar e compilar o B2G. Elas podem levar um bom tempo.</p> -</div> - -<h2 id="Clonar_o_repositório_B2G">Clonar o repositório B2G</h2> - -<p>O primeiro passo, antes de iniciar sua primeira compilação, é clonar o repositório B2G. Não será baixado tudo! Ao invés disso, somente o sistema de compilação e utilitários de configuração. A maioria do código real do B2G está no repositório principal da Mozilla: <a class="vt-p" href="/pt-BR/docs/Mercurial" title="Mercurial">Mercurial</a>.</p> - -<p>Para clonar o repositório use o git:</p> - -<pre>git clone git://github.com/mozilla-b2g/B2G.git</pre> - -<p>Após clonar (o que somente levará um minuto numa conexão rápida), vá para o diretório B2G:</p> - -<pre>cd B2G -</pre> - -<h2 id="Configurando_o_B2G_para_seu_dispositivo">Configurando o B2G para seu dispositivo</h2> - -<div class="warning"><span style="color: #ffffff;"><strong>Importante</strong>: Lembre-se que somente dispositivos rodando <strong>Android 4.0.4</strong> (também conhecido como <strong>Ice Cream Sandwich), 4.3 (Jelly Bean) e 4.4 (KitKat)</strong>) e plataformas baseadas nessas versões são suportadas (como o caso do Firefox OS atual). Por favor verifique se seu telefone está rodando alguma dessas versões, do contrário essa etapa provavelmente irá falhar uma vez que alguns drives vêm de dispositivos "Não-Nexus". Observe também que se você for copiar o sistema (flash) para seu telefone com alguma dessas versões, alguns HUBs USB não funcionam bem com ferramentas de cópia de sistema, então conecte seu dispositivo numa porta USB do seu computador (sem usar HUBs).</span></div> - -<div class="warning"><span style="color: #ffffff;"><strong>Importante</strong>: Se você está compilando no Ubuntu 12.10+ ou Fedora, você precisa indicar o GCC 4.6 como o compilador padrão depois de baixar os fontes do B2G para que a compilação funcione (essas distros usam GCC 4.7 como padrão). Leia o artigo</span> <a class="vt-p" href="https://developer.mozilla.org/en-US/docs/Mozilla/Firefox_OS/Customization_with_the_.userconfig_file#Changing_the_default_host_compiler">Modificando o compilador padrão</a> <span style="color: #ffffff;">para descobrir como fazer isso.</span></div> - -<div class="note"><strong>Nota:</strong> <strong>Por favor leia todas as instruções abaixo </strong>antes de executar qualquer comando do processo de compilação para certificar-se de que você está fazendo a coisa certa!</div> - -<p>Uma vez que você tenha baixado o núcelo do sistema de compilação do B2G, você precisa configurá-lo para o dispositivo que você deseja instalar. Para conseguir uma lista dos dispositivos suportados, você pode usar o utilitário <code>config.sh</code> — execute o seguinte comando no diretório B2G:</p> - -<pre>./config.sh -</pre> - -<p>Vai ser apresentada uma lista dos dispositivos suportados, como essa:</p> - -<pre>Usage: ./config.sh [-cdflnq] (device name) -Flags are passed through to |./repo sync|. - -Valid devices to configure are: -- galaxy-s2 -- galaxy-nexus -- nexus-4 -- nexus-4-kk -- nexus-5 -- nexus-5-l -- nexus-s -- nexus-s-4g -- flo (Nexus 7 2013) -- otoro -- unagi -- inari -- keon -- peak -- hamachi -- helix -- tarako -- dolphin -- dolphin-512 -- pandaboard -- vixen -- flatfish -- flame -- flame-kk -- flame-l -- rpi (Revision B) -- emulator -- emulator-jb -- emulator-kk -- emulator-l -- emulator-x86 -- emulator-x86-jb -- emulator-x86-kk -- emulator-x86-l -> Sony Xperia devices -- aries (Z3 Compact KK) -- aries-l (Z3 Compact L) -- leo-kk (Z3 KK) -- leo-l (Z3 L) -- scorpion-l (Z3 Tablet Compact L) -- sirius-l (Z2 L) -- tianchi-l (T2U L) -- flamingo-l (E3 L)</pre> - -<p>Se o seu dispositivo não estiver na lista, você deve parar agora ou ajudar a portar o B2G para o seu dispositivo, ou ainda esperar que alguém o faça. Nós preferimos que você ajude!</p> - -<div class="note"><strong>Nota:</strong> Você pode encontrar o nome do seu telefone na página <a href="/pt-BR/docs/Mozilla/Boot_to_Gecko/Boot_to_Gecko_developer_phone_guide/Especificacoes_Telefones">Telefones Firefox</a>.</div> - -<div class="note"><strong>Nota: A Configuração e Compilação do B2G para o Keon no Mac NÃO FUNCIONA!</strong>. Você precisa de um Linux para compilar para esse aparelho.</div> - -<div class="note"><strong>Nota</strong>: Se, por alguma razão, você desejar compilar usando uma versão específica<br> -do Gecko, veja <a href="#Compilando_um_Gecko_customizado">Compilando um Gecko customizado</a> antes de<br> -prosseguir. Se você desejar compilar um branch que não seja o padrão para o<br> -seu dispositivo (por exemplo, para compilar uma versão específica do B2G),<br> -veja <a href="#Compilando_um_branch">Compilando um branch</a>. Nota: o branch padrão varia conforme o<br> -dispositivo e <strong>não é necessariamente o trunk</strong></div> - -<p>Agora pode ser um ótimo momento para um café, já que a partir desse ponto você começará a baixar o código necessário para compilar o <em>Boot to Gecko</em>. Executar as etapas de configuração como indicado abaixo tomará um longo tempo. Você poderá parar a execução com Ctrl-C e reiniciar um tempo depois. Se você achar que alguma parte do processo terminou sem ter todas as tarefas completadas, execute <code>./repo sync</code> para reparar possíveis problemas.</p> - -<h3 id="Configurando_a_compilação_do_B2G_para_um_dispositivo_móvel">Configurando a compilação do B2G para um dispositivo móvel</h3> - -<p>Neste ponto, conecte seu dispositivo caso ele ainda não esteja conectado, uma vez que o processo de configuração vai precisar acessá-lo.</p> - -<p>Se o seu dispositivo estava listado nos resultados mostrados acima, você pode iniciar o processo de configuração executando novamente <code>config.sh</code>, mas dessa vez especificando o nome do seu dispositivo. Por exemplo, para compilar para o aparelho Samsung Google Nexus S, você vai executar:</p> - -<pre>./config.sh nexus-s -</pre> - -<div class="note"><strong>Nota:</strong> Se você receber uma mensagem de erro como essa: <code>fatal: manifest 'nexus-s.xml' not available</code>, possivelmente basta especificar o branch que você quer usar. Veja o artigo <a href="#Compilando_um_branch">Compilando um branch</a> para mais detalhes.</div> - -<div class="note"><strong>Nota:</strong> Se a etapa de configuração apresentar um erro como esse: <code>error: manifest required for this command -- please run init</code>, indica que as alterações realizadas no arquivo manifesto para o repo (localizado em <code>B2G/.repo/manifest.xml</code>) não foi criado corretamente. Você deve tentar executar <code>config.sh</code> novamente indicando explicitamente o arquivo manifesto dessa forma: <code>./config.sh <device> -m path/to/manifest.</code></div> - -<p>Próximo de iniciar a configuracão você precisa configurar a opção para o uso da cor, após isso o processo continua. Você pode apenas selecionar 'y' aqui, já que você provavelmente vai querer a compilação com essa opção.</p> - -<h3 id="Configurando_uma_compilação_usando_uma_cópia_de_segurança_do_sistema">Configurando uma compilação usando uma cópia de segurança do sistema</h3> - -<p>Se o seu telefone não possui mais o Android, e a árvore B2G não tem os BLOBs binários, mas você sabiamente <a class="vt-p" href="https://developer.mozilla.org/pt-BR/docs/Mozilla/Boot_to_Gecko/Firefox_OS_build_prerequisites#Fa.C3.A7a_uma_c.C3.B3pia_de_seguran.C3.A7a_da_parti.C3.A7.C3.A3o_de_sistema_do_telefone" title="/en-US/docs/Mozilla/Firefox_OS/Firefox_OS_build_prerequisites#Backup_the_phone_system_partition">fez uma cópia de segurança da partição <code>/system</code></a>, você pode executar a compilação no sistema dessa forma:</p> - -<pre>ANDROIDFS_DIR=<absolute path to parent dir of system dir> ./config.sh <target> -</pre> - -<p>A compilação por padrão procurará em algum lugar como <code>backup-inari/system</code> (dependendo da configuração do dispositivo); se você colocar os arquivos no local esperado não será necessário especificar o diretório.</p> - -<p>Observe que se seu telefone sempre teve o Firefox OS e nunca rodou o Android, mesmo assim é bom copiar a partição <code>/system</code> conforme as instruções acima — isso trará os arquivos corretos.</p> - -<h3 id="Configurando_a_compilação_do_B2G_para_um_emulador">Configurando a compilação do B2G para um emulador</h3> - -<p>Se você quiser compilar para um emulador no lugar de um telefone real, você pode especificar <code>emulator*</code> para um emulador de dispositivo ARM, ou <code>emulator-x86</code>* para um emulador x86. Esse último é mais rápido, mas não tão preciso na representação de um dispositivo móvel real e também não é suportado. Assim, não é aconselhável sua utilização.</p> - -<p>Por exemplo, para compilar o emulador ARM Jellybean, você pode usar o seguinte comando:</p> - -<pre>./config.sh emulator-jb -</pre> - -<p>A partir desse ponto você está pronto para <a class="vt-p" href="/pt-BR/docs/Mozilla/Firefox_OS/Compilando_O_Firefox_OS" title="Mozilla/Firefox_OS/Building">iniciar a compilação</a>, a menos que você precisa informações mais detalhadas como as descritas abaixo.</p> - -<div class="note"> -<p><strong>Importante</strong>: A compilação para emulador no Linux 64-bit pode não funcionar.</p> - -<div class="note"><strong>Nota:</strong> Desenvolvedores que utilizam Mac OS X 10.9 ou superiores devem utilizar o emulator-jb ou emulator-kk, porque emuladores baseados em AOSC ICS não podem ser compilados no Mac OS 10.9. Veja <a class="vt-p" href="https://developer.mozilla.org/pt-BR/docs/Mozilla/Firefox_OS/Firefox_OS_build_prerequisites#Requirements_for_Mac_OS_X" title="/en-US/docs/Mozilla/Firefox_OS/Firefox_OS_build_prerequisites#Requirements_for_Mac_OS_X">Requisitos para Mac OS X</a> para maiores informações.</div> -</div> - -<h2 id="Compilando_um_Gecko_customizado">Compilando um Gecko customizado</h2> - -<p>Pode haver momentos que você queira ou precisa compilar o B2G baseado numa versão do Gecko diferente da padrão atualmente utilizada (como especificado no manifesto). Você pode fazer isso editando o arquivo <code>.userconfig</code>. Por exemplo, se você quiser compilar o mozilla-central:</p> - -<pre>export GECKO_PATH=/path/to/mozilla-central -export GECKO_OBJDIR=/path/to/mozilla-central/objdir-gonk -</pre> - -<div class="note"> -<p><strong>Nota</strong>: se você for compilar um Gecko customizado no Mac OS X, o diretório mozilla-centra deve estar num sistema de arquivos case sensitive.</p> -</div> - -<p>Observe que você pode fazer isso antes de você baixar o repositório (ou seja, antes da etapa <code>config.sh</code> descrita acima) ou em qualquer momento mais tarde. Você também pode manter múltiplas compilações (com modo de depuração ligado ou não, etc)</p> - -<p id="Building_a_branch">Note that you can do this either before you pull the repository (i.e. before the <code>config.sh</code> step above) or at any later point. You can also keep multiple builds (with debugging on or not, etc) tendo vários arquivos <code>userconfig</code> (obviamente com diferentes configurações cada um necessita um diferente OBJDIR) e fazer um link simbólico do <code>.userconfig</code> que aponta para qual configuração você deseja compilar naquele momento.</p> - -<p>Para maiores informações, leia o artigo <a class="vt-p" href="https://developer.mozilla.org/pt-BR/docs/Mozilla/Firefox_OS/Customizacao_com_o_arquivo_.userconfig_file#Alterando_a_.C3.A1rvore_fonte_do_Gecko" title="https://developer.mozilla.org/en-US/docs/Mozilla/Firefox_OS/Customization_with_the_.userconfig_file#Changing_the_Gecko_source_tree">Alterando a árvore fonte do Gecko</a>.</p> - -<h2 id="Compilando_um_branch">Compilando um branch</h2> - -<p>Se você quiser compilar para um outro <em>branch </em>que não o <em>branch</em> padrão (<strong>atenção: o <em>branch</em> padrão pode não ser o "master"!</strong>), você precisa inserir um prefixo na chamada do script <code>config.sh</code> com o nome do branch:</p> - -<pre>BRANCH=branch-name ./config.sh <device></pre> - -<p>Os nomes dos <em>branches</em> seguem uma lógica e em grande parte seguem os nomes dos produtos/versões, por exemplo, <code>v1-train</code>, <code>v1.0.0</code>, <code>v1.0.1</code>, <code>v1.1</code>, <code>v1.1.0hd</code>, <code>v1.2, v1.3, v1.4, v2.0</code> e assim será no futuro. Como exemplo, para compilar o B2G Firefox 1.2 para o emulador ARM você deve usar o comando:</p> - -<pre>BRANCH=v1.2 ./config.sh emulator</pre> - -<p>Se você já executou o <code>config.sh</code>, você pode ver os nomes dos <em>branches</em>, indo ao diretório <code>B2G/.repo/manifests</code> e executando "<code>git branch -a</code>" (esse não é preenchido até então). <strong>O nome do <em>branch</em> pode ser visto no final da linha</strong>:</p> - -<pre> remotes/origin/master - remotes/origin/v1-train - remotes/origin/v1.0.0 - remotes/origin/v1.0.1</pre> - -<p>Veja o artigo <a class="vt-p" href="https://developer.mozilla.org/pt-BR/docs/Mozilla/Firefox_OS/Customizacao_com_o_arquivo_.userconfig_file" title="Mozilla/Firefox_OS/Customization_with_the_.userconfig_file">Customização com o arquivo .userconfig</a> para customizações adicionais que você pode fazeror additional customizations you can do.</p> - -<h2 id="Copiando_a_árvore_B2G_para_uma_nova_máquina">Copiando a árvore B2G para uma nova máquina</h2> - -<p>Se você já configurou uma árvore B2G e tem um novo computador (sorte para você!) sua vida será bem mais fácil se você simplestmente migrar a árvore B2G inteira do seu computador antigo para o novo, ao invés de configurar tudo novamente. Para fazer isso, monte o disco do seu computador antigo no novo computador e execute o seguinte comando:</p> - -<pre>rsync -a <em>source</em>/ <em>dest</em>/ -</pre> - -<p>Onde <code>source</code> é o caminho completo (incluindo a barra final) da árvore origem e <code>dest</code> é o local onde para onde você quer copiar o conteúdo. (a barra final também é importante!).</p> - -<div class="note"><strong>Nota:</strong> Se você vai copiar os arquivos de um computador para outro de outra plataforma, certifique-se de executar '<em>./build.sh clean'</em> antes de iniciar o processo de compilação. Se não fizer isso pode encontrar problemas na compilação.</div> - -<p>Se você fizer isso, pode pular todo o resto desse artigo e ir direto para o artigo <a class="vt-p" href="https://developer.mozilla.org/pt-BR/docs/Mozilla/Firefox_OS/Compilando_O_Firefox_OS" title="Mozilla/Firefox_OS/Building">building</a>.</p> - -<h2 id="Alterando_a_árvore_B2G">Alterando a árvore B2G</h2> - -<p>Quando o repositório é alterado com uma nova versão do B2G, você pode querer alterar sua árvore B2G. Para fazer isso, execute os seguintes comandos:</p> - -<pre>git fetch origin -git checkout origin/master</pre> - -<p>Você pode verificar se tudo funcionou corretamente executando:</p> - -<pre>git show HEAD</pre> - -<p>e verificando que o commit <em>mostrado</em> corresponde ao mais recente em: <a class="vt-p" href="https://github.com/mozilla-b2g/B2G/commits/master" title="https://github.com/mozilla-b2g/B2G/commits/master">https://github.com/mozilla-b2g/B2G/commits/master</a></p> - -<h2 id="Próximo_passo">Próximo passo</h2> - -<p>Agora, você está pronto para <a href="https://developer.mozilla.org/pt-BR/Firefox_OS/Building">compilar o Firefox OS</a>.</p> diff --git a/files/pt-br/archive/b2g_os/quickstart/for_web_developers/index.html b/files/pt-br/archive/b2g_os/quickstart/for_web_developers/index.html deleted file mode 100644 index 2f79d68880..0000000000 --- a/files/pt-br/archive/b2g_os/quickstart/for_web_developers/index.html +++ /dev/null @@ -1,54 +0,0 @@ ---- -title: App development for Web developers -slug: Archive/B2G_OS/Quickstart/For_Web_developers -translation_of: Archive/B2G_OS/Quickstart/For_Web_developers ---- -<div class="summary"> - <p>Se você é um desenvolvedor web e você tem um website e gostaria de criar um aplicativo web instalavel de codigo aberto, não sera muito dificil de fazer. Este artigo lhe mostra os requisitos minimos, e também algumas ideias para você levar em consideração na hora da criação de aplicativos web abertos, e quais as diferenças de sites e aplicativos web instaláveis.</p> -</div> -<p>O requerimento minimo é:</p> -<ol> - <li>Criar um <a href="/en-US/docs/Web/Apps/Manifest">app manifest</a>.</li> - <li>O arquivo "app manifest" deve ser de extenção <code>.webapp</code>. Mude o <code>Content-Type</code> header para <code>application/x-web-app-manifest+json</code>.</li> - <li>Publique o app, em seu site ou na app store (ou ambos). Depois de publicado é necessário adicionar um código ao seu site para gerenciar a instalação e atualização do aplicativo nos navegadores dos usuários.</li> -</ol> -<h2 id="Recursos_opcionais">Recursos opcionais</h2> -<p><em>Filosoficamente</em>, a idéia de um aplicativo Web Abrir instalável é muito mais do que simplesmente adicionar um manifesto para o seu site. Tecnologias Web Standards pode ser visto como uma plataforma de aplicativos full-blown que acontece de usar um motor de navegador para renderizar interfaces de usuário e interpretação de código, e passa a utilizar os protocolos da Web para se comunicar com um servidor. Mozilla oferece executáveis "em tempo de execução da Web" para várias plataformas, de modo que os aplicativos podem ser executados em sua própria janela, sem uma moldura da janela do navegador.</p> -<div> - Para "appify" um site, há muitas perguntas específicas do aplicativo a serem considerados: </div> -<div> - </div> -<ul> - <li>Se meu aplicativo funciona quando não está conectado à Web?</li> - <li>Como é que o meu aplicativo usa dados, e como ele precisa ser armazenado?</li> - <li>Pode beneficiar o desempenho do meu aplicativo de recursos avançados, como plataforma <a href="/en-US/docs/Web/Guide/Performance/Using_web_workers">Web Workers</a> ou <a href="/en-US/docs/WebSockets">WebSockets</a>?</li> - <li>E muito mais</li> -</ul> -<p>Se você quiser tirar o máximo proveito dos recursos de aplicativos instaláveis, não há muito que você pode fazer. Por exemplo:</p> -<ul> - <li>Use <a href="/en-US/docs/Web_Development/Responsive_Web_design">responsive Web design</a> para ficar bem e trabalhar bem em todos os dispositivos.</li> - <li>Tornar seu aplicativo pago.</li> - <li>Provide a way to <a href="/en-US/docs/Web/Apps/Identity_integration">identify users</a>.</li> - <li><a href="/en-US/docs/Web/Apps/Offline_apps">Enable offline caching</a> so the app can be used when the device is not on the Internet.</li> - <li>Store data locally using either <a href="/en-US/docs/IndexedDB">IndexedDB</a> or <a href="/en-US/docs/Web/Guide/DOM/Storage">localStorage</a>.</li> - <li><a href="/en-US/docs/Web/Apps/Platform-specific_details">Launch the app</a> natively (with an icon on the desktop or the home screen).</li> - <li>Use device APIs to interact with hardware, such as <a href="/en-US/docs/WebAPI/Using_geolocation">geolocation</a> and <a href="/en-US/docs/Web/Guide/DOM/Events/Orientation_and_motion_data_explained">orientation</a>.</li> - <li>Dar aos usuários uma maneira de dar-lhe feedback. A pesquisa do usuário da Mozilla mostra que os usuários querem dar feedback para os desenvolvedores de aplicativos, e quer saber que há um ser humano que as recebe. Eles querem fazer sugestões e obter ajuda com problemas. Eles podem parar de usar um aplicativo, se eles têm um problema e não há nenhuma maneira de obter ajuda com isso.</li> -</ul> -<h2 id="Tecnologias_Uteis">Tecnologias Uteis</h2> -<p>Aqui estão algumas tecnologias da Web que podem ser úteis para escrever aplicativos instaláveis. Observe que não há nada nesta lista que é único para abrir aplicativos Web!</p> -<ul> - <li><a href="/en-US/docs/Web/Guide/HTML/HTML5">HTML5</a></li> - <li><a href="/en-US/docs/Web/CSS">CSS</a></li> - <li><a href="/en-US/docs/JavaScript">JavaScript</a></li> - <li><a href="/en-US/docs/HTML/Canvas">Canvas</a></li> - <li><a href="/en-US/docs/AJAX">Ajax</a></li> - <li><a href="/en-US/docs/HTML/Using_the_application_cache">Offline resources in Firefox</a></li> - <li><a href="/en-US/docs/Web/Guide/DOM/Storage">DOM Storage</a></li> - <li><a href="/en-US/docs/IndexedDB">IndexedDB</a></li> - <li><a href="/en-US/docs/DragDrop/Drag_and_Drop">Drag and drop</a></li> -</ul> -<h2 id="Veja_também">Veja também</h2> -<ul> - <li><a class="external" href="http://smus.com/mobile-web-app-tech-stack">A mobile web application stack </a></li> -</ul> diff --git a/files/pt-br/archive/b2g_os/quickstart/index.html b/files/pt-br/archive/b2g_os/quickstart/index.html deleted file mode 100644 index ebe1f7c220..0000000000 --- a/files/pt-br/archive/b2g_os/quickstart/index.html +++ /dev/null @@ -1,49 +0,0 @@ ---- -title: Build -slug: Archive/B2G_OS/Quickstart -tags: - - NeedsTranslation - - TopicStub -translation_of: Archive/B2G_OS/Quickstart ---- -<div class="summary"> - <p>Quickstart information on coding open web apps.</p> -</div> -<dl> - <dt> - <a href="/en-US/docs/Web/Apps/Quickstart/Build/Intro_to_open_web_apps">Introduction to open web apps</a></dt> - <dd> - What are open web apps? How they differ from regular web pages? Why is this significant? This article aims to answer these questions and more.</dd> - <dt> - <a href="/en-US/docs/Web/Apps/Quickstart/Build/Your_first_app">Your first app</a></dt> - <dd> - This article takes you through the basic steps and additional knowledge on top of regular web development required to create installable open web apps.</dd> - <dt> - <a href="/en-US/docs/Web/Apps/Quickstart/Build/Intro_to_Firefox_OS">Introduction to Firefox OS</a></dt> - <dd> - An introduction to Firefox OS, Mozilla's new open web app-based mobile platform.</dd> - <dt> - <a href="/en-US/docs/Web/Apps/Quickstart/Build/Intro_to_manifests">Introduction to manifests</a></dt> - <dd> - An FAQ designed to answer any questions you may have about manifests, hosting apps, origins, and other such topics.</dd> - <dt> - <a href="/en-US/docs/Web/Apps/Quickstart/Build/For_Web_developers">App development for web developers</a></dt> - <dd> - If you're a web developer, how do open web apps differ from what you're used to? This article explains all.</dd> - <dt> - <a href="/en-US/docs/Web/Apps/Quickstart/Build/For_mobile_developers">App development for mobile developers</a></dt> - <dd> - If you're a native mobile application developer, what advantages can open web apps bring to you, and how do they differ from what you are used to? Here are some ideas.</dd> - <dt> - <a href="/en-US/docs/Web/Apps/Quickstart/Build/Developing_app_functionality">Developing app functionality</a></dt> - <dd> - This page talks about the kinds of different functionality that you might want to build into your apps, with links to further information.</dd> - <dt> - <a href="/en-US/docs/Web/Apps/Quickstart/Build/Payments">Payments</a></dt> - <dd> - How do you build functionality to make people pay for installing your open web apps? Here is the lowdown.</dd> - <dt> - <a href="/en-US/docs/Web/Apps/Quickstart/Build/App_tools">App tools</a></dt> - <dd> - Last for this section, we provide some links to more information on the tools available to help you develop great open web apps.</dd> -</dl> diff --git a/files/pt-br/archive/b2g_os/quickstart/intro_to_open_web_apps/index.html b/files/pt-br/archive/b2g_os/quickstart/intro_to_open_web_apps/index.html deleted file mode 100644 index f8aa443516..0000000000 --- a/files/pt-br/archive/b2g_os/quickstart/intro_to_open_web_apps/index.html +++ /dev/null @@ -1,53 +0,0 @@ ---- -title: Introdução aos aplicativos abertos para web -slug: Archive/B2G_OS/Quickstart/Intro_to_open_web_apps -translation_of: Archive/B2G_OS/Quickstart/Intro_to_open_web_apps ---- -<p><img alt="Multi devices" src="/files/4523/multidevices.png" style="width: 640px; height: 225px;"></p> -<div class="summary"> - <p>Este artigo e feito para mostrar os pontos iniciais para qualquer pessoa que deseja aprender mais sobre aplicativos abertos para web, se você e um desenvolvedor ou gerente de projetos, ou tem outro papel relevante no desenvolvimento ou entrega de aplicativos. Aqui nós iremos mostrar a você o caminho, o alto nivel de visão para aplicativos abertos para web e a filosofia que os envolve.</p> -</div> -<p>Aplicativos abertos para web são essencialmente sem diferenças entre web sites padrões ou páginas web. Eles são construido usando tecnologias de padrão aberto para web -HTML, CSS, JavaScript, etc. - e pode ser acessados usando um navegador para web. A principal diferença e que suas habilidades podem ser instaladas em um dispositivo e trabalharem de modo offline, e acessarem avançadas APIs que permitem interagir com as caracteristicas de seu dispositivo como a câmera, agenda de contatos, e outras coisas. Além disso, eles são construídos com tecnologias abertas tanto quanto possível. Onde a posição das diferenças na implementação da tecnologia entre plataformas, empenha se em ser feita para permitir que ambos sejam suportadas, atráves da combinação de caracteristicas de detecção e apropriado código para plataformas diferentes, e graciosamento destituída.</p> -<h2 id="Vantagens_dos_Aplicativos_Abertos_para_Web">Vantagens dos Aplicativos Abertos para Web</h2> -<p>Vamos mostrar as vantagens dos Aplicativos Abertos para Web em mais detalhes:</p> -<ul> - <li><strong>Instalação local e offline no dispositivo</strong>:Aplicativos Abertos para Web podem ser instalados no dispositivo, e influênciar API como localmente no dispositivo e indexado DB para prover a capacidade de armazenamento local de dados. Além disso, tecnologias abertas para Web tendem a ser mais leves do que aplicativos nativos e podem genericamente ser atualizadas em partes em vez de terem que ser instaladas por completo em um novo pacote em toda atualização. (com exceçao para estes pacotes de aplicativos, escolha pedir enquanto um novo pacote está sendo atualizado.) Aplicativos são portanto menos dependentes em sempre estar on line em uma conexão à internet, e mais uteis quando as redes são lentas, irregulares.</li> - <li><strong>Acesso ao Hardware:</strong> Os metadados providos como o Aplicativo Aberto para Web pode ser usado para garantir a aplicação permissão de acesso privilegiado a APIs que habilitam o uso dos recursos dos dispositivos de hardware, algumas coisas na plataforma Web não são tradicionalmente apreciado.</li> - <li><b>Quebrando a carteira do jardin: </b>A norma para plataformas mobile tendem a ser carteiras de jardim escrita com tecnologia proprietária, então os aplicativos são bloqueados dentro de suas plataformas. E telefones inteligentes (smartphones) tentem a ser caros, e requerem cartão de crédito para a compras de aplicativos. Aplicativos Abertos para Web tendem a ser habilitados a rodar em hardware mais baratos, especialmente no caso do Sistema operacional Firefox (Firefox OS) dispositivos onde voce tem literalmente apenas Firefox executando no topo de um leve Kernel do Linux. E eles são escritos usando tecnologias abertas da Web, escolha a plataforma mais distributiva. Além disso, o Sistema Operacional Firefox (Firefox OS) possui um sistema de pagamento onde você pode simplesmente fazer o pré-pagamento dos aplicativos, ou adicionar a fatura para sua conta de telefone.</li> - <li><strong>Open Web App stores</strong>: Following on from the previous point, you can choose to host your apps in an existing marketplace (such as the <a href="https://marketplace.firefox.com/" title="https://marketplace.firefox.com/">Firefox Marketplace</a>), or host them somewhere else entirely. It's up to you. Mozilla aims to put the developer back in control of every aspect of the app experience — from easy development to distribution to direct customer relationship management. And the apps can be searched for just like any other Web-based experience.</li> -</ul> -<p>The following video also looks at general advantages of open web apps, and developing for the Firefox OS platform:</p> -<p style="text-align: center;"><iframe frameborder="0" height="270" src="https://www.youtube.com/embed/RJJkFshnnVc/?feature=player_detailpage" width="480"></iframe></p> -<h2 id="The_Web_is_the_platform">The Web is the platform</h2> -<p>An open web app as it exists as installed on a platform like Firefox OS is not a bookmark — it’s a proper part of the system. Open Web Apps hold that great promise. They are an opportunity that we should not miss, otherwise the Web might become fragmented once more. With this in mind it should be made clear that Open Web Apps (OWA in short) are intended to be standardized and to become part of "the Web". If successful, OWA should eventually work on all browsers, operating systems and devices.</p> -<p>At Mozilla we are working hard to create this apps platform that is backed entirely by the open Web. It’s not intended to be a “Mozilla platform” or a “Firefox platform”. <strong>The Web is the platform</strong>. We’re creating a set of open APIs and implementations to show how portable apps can exist on the Web without vendor lock-in. Other groups like Facebook and Google Chrome are also working on apps platforms backed by the Web. <a href="https://developers.facebook.com/docs/guides/canvas/">Facebook apps</a> are meant to hook into Facebook and <a href="http://www.google.com/intl/en/chrome/webstore/apps.html">Chrome apps</a> are designed for Chrome OS devices and Google servers. Chrome apps are the most similar to Open Web Apps. We continue to collaborate with the Google Chrome team as app standards evolve and we definitely share a lot of the same vision. There is tremendous potential for all Web based app platforms to converge and we invite all vendors to help us build the right Open Web App APIs.</p> -<p>Even though currently you must have a Mozilla Firefox-based engine ("Web runtime") to use Open Web Apps, it is not intended that this always will be the case. Many parts of the Open Web Apps project are still being worked out and it isn't possible to implement everything in all browsers at once. Although many parts of Open Web Apps are already standardized, many other parts are still in flux. It is intended and hoped that Open Web Apps will be a standard capability that is available in all major browsers.</p> -<p>Therefore, when you read the MDN pages that deal with Open Web Apps, please keep in mind that even though much of the information is specific to Firefox right now, it will hopefully enable you to develop Open Web Apps for all browsers in the future.</p> -<h2 id="Web_standards">Web standards</h2> -<p>OWA technology is not a single piece, it is an umbrella that groups many different technologies and some of them are very young. At the moment, parts of OWA are standardized (HTML5, CSS, JavaScript, IndexedDB, etc.). Other parts are not yet standardized and the Mozilla implementation is thus specific to Firefox or to some other Mozilla technology. As the Mozilla mission is to share and to empower everyone, this situation is only temporary. That's why in the OWA docs we will try to clearly identify the parts of OWA that are not yet standardized.</p> -<p>Please also note that there may be some OWA-related proposals and potential standards that are not used by Mozilla.</p> -<h3 id="Intended_eventual_standards">Intended eventual standards</h3> -<p>So here are the parts not standardized yet across the different Web platforms and that still are Firefox-only for the moment:</p> -<ul> - <li><a href="/en-US/docs/Web/Apps/Manifest">OWA manifest</a> for defining an app</li> - <li><a href="/en-US/docs/Web/Apps/JavaScript_API">The Complete OWA API</a> for working with apps</li> - <li><a href="https://wiki.mozilla.org/WebAPI">Web APIs</a> to access things like phone, geolocation, etc. Also see <a href="http://arewemobileyet.com/">arewemobileyet.com</a> for a status report.</li> - <li><a href="/en-US/docs/Mozilla/Persona">Identity (Persona)</a> to work with user data</li> - <li><a href="https://wiki.mozilla.org/WebAPI/WebPayment">WebPayment API</a> to facilitate in-app payments and app purchases from any Marketplace</li> - <li><a href="https://wiki.mozilla.org/Apps/WebApplicationReceipt">OWA Receipts</a> to verify paid apps on any device and sell apps from any Marketplace</li> -</ul> -<h3 id="Marketplace">Marketplace</h3> -<h4 id="Buy_Once_Run_Everywhere">Buy Once, Run Everywhere</h4> -<p>From the ground up Mozilla has been building an apps system that lets users buy an app once and run it on all of their HTML5 devices. Very soon Mozilla will <a href="http://bits.blogs.nytimes.com/2012/09/07/a-firefox-smartphone-for-the-poor/">launch the first Firefox OS phone</a> but that will be just one device on which to run your apps. When you purchase an app through the <a href="https://marketplace.firefox.com/">Firefox Marketplace</a>, the system installs a receipt on your device. The <a href="https://wiki.mozilla.org/Apps/WebApplicationReceipt">receipt</a> is a JSON Web Token with metadata that links to the Marketplace’s public key and its verification service URL. When an app starts up it can verify the receipt but the receipt on the device <em>is not tied</em> to the Firefox Marketplace. The receipt is just a cryptographically verifiable proof of purchase. Anyone can sell open Web apps if they follow the receipt specs. <strong>When you buy an app, it is intended to be portable across any device that supports the Open Web Apps system.</strong></p> -<p>Mozilla is building the infrastructure needed to run Open Web Apps on any HTML5 device. <a href="http://www.mozilla.org/en-US/firefox/mobile/features/">Firefox for Android</a> will let you install and run apps (you can try it today on the <a href="http://nightly.mozilla.org/">nightly</a> build). Installed app icons go to your home screen just like regular Android apps. You can also install and run Web apps on your Windows, Mac, or Linux desktop using Firefox (this currently works in the <a href="http://nightly.mozilla.org/">nightly</a> build). Currently some version of Firefox is required, but it is intended that the Open Web Apps system will eventually be supported by all major browsers as a set of standards. From day one Mozilla has included all major HTML5 compliant browsers in its proof of concepts; you can take a look at this hosted JavaScript <a href="https://persona.org/include.js">shim</a> for ideas on how to support the apps platform on a non-Firefox browser.</p> -<p>In the future the Open Web Apps system will support <a href="http://docs.services.mozilla.com/aitc/">syncing your installed apps</a> across devices. Since receipts are portable you could just sync them yourself if you wanted to. In case it’s not obvious, you can always run a free open Web app in any browser because it is no different than a website. It might, however, use new <a href="https://wiki.mozilla.org/WebAPI/">mobile specific web APIs</a> which are not implemented on all platforms.</p> -<p>The video below provides a useful overview of the advantages of open marketplaces and an open web approach to app discovery:</p> -<p style="text-align: center;"><iframe frameborder="0" height="270" src="https://www.youtube.com/embed/QCH_ncCrZfE/?feature=player_detailpage" width="480"></iframe></p> -<h3 id="WebPayment_API">WebPayment API</h3> -<h4 id="Commerce_For_Apps">Commerce For Apps</h4> -<p>Part of the success of mobile app platforms like iOS and Android is that they make it very easy to try out new business models through mobile payments. Those models are still evolving but commerce is no doubt something that, at the moment, is awkward on the desktop Web and more natural on mobile. Specifically, it’s very convenient to charge something to your phone bill when you’re already accessing it from your phone anyway. With the launch of Firefox OS, the apps ecosystem will support app purchases and in-app payments through the <a href="https://wiki.mozilla.org/WebAPI/WebPayment" style="">WebPayment API</a>. Supporting commerce is crucial for the growth of an apps platform. <strong>The use of the proposed payment API is completely <em>optional</em></strong>. Mozilla won’t prevent any app from using its own in-app payment system.</p> -<h2 id="See_also">See also</h2> -<ul> - <li><a href="https://blog.mozilla.org/webdev/2012/09/14/apps-the-web-is-the-platform/">Apps: The Web Is The Platform</a>, by Kumar McMillan (the blog post from which lots of the content of this article is borrowed)</li> - <li><a href="https://plus.google.com/113127438179392830442/posts/fR3iiuN4kEF">See the Web platform succeed for applications</a>, by Paul Irish</li> -</ul> diff --git a/files/pt-br/archive/b2g_os/quickstart/meu_primeiro_app/index.html b/files/pt-br/archive/b2g_os/quickstart/meu_primeiro_app/index.html deleted file mode 100644 index feb0f8cd11..0000000000 --- a/files/pt-br/archive/b2g_os/quickstart/meu_primeiro_app/index.html +++ /dev/null @@ -1,274 +0,0 @@ ---- -title: Meu primeiro Aplicativo -slug: Archive/B2G_OS/Quickstart/meu_primeiro_app -tags: - - Apps - - Desenvolvimento - - Ferramentas de testes - - Firefox Edição para Desenvolvedores - - Guía - - Iniciante - - Manifesto - - Simulador do Firefox OS -translation_of: Archive/B2G_OS/Quickstart/Your_first_app ---- -<article class="brush: js"> -<div class="summary"> -<p>Aplicações Web abertas dão aos desenvolvedores web exatamente o que eles queriam por anos: um ambiente multi-plataforma<span id="result_box" lang="pt"> <span class="hps">dedicado</span> <span class="hps">a</span> <span class="hps">aplicativos</span> <span class="hps">instaláveis</span> <span class="hps">criados com</span> <span class="hps">apenas</span> <span class="hps">HTML</span></span>, CSS, e JavaScript — com o Firefox OS sendo a primeira plataforma dedicada as aplicações web abertas. Este guia destina-se a levá-lo a trabalhar <span id="result_box" lang="pt"><span class="hps">rapidamente</span> <span class="hps">com uma</span> <span class="hps">arquitetura básica</span> <span class="hps">com</span> instruções de criação <span class="hps">para que você possa</span> <span class="hps">criar seu próprio aplicativo!</span></span></p> -</div> - -<p><span class="short_text" id="result_box" lang="pt"><span class="hps">Se você quiser</span> <span class="hps">seguir junto com</span> <span class="hps">este guia</span></span>, baixe nosso <a href="https://github.com/chrisdavidmills/mdn-app-template">modelo de início rápido</a>. Encontre mais sobre o que há aqui, lendo nosso <a href="/pt-BR/docs/Project:MDN/Style_guide/Sample_app_coding_guidelines">guia de modelo para aplicativos</a>.</p> - -<h2 id="Estrutura_do_Aplicativo">Estrutura do Aplicativo</h2> - -<h3 id="Packaged_vs._Hosted_Apps">Packaged vs. Hosted Apps</h3> - -<p>Existem dois tipos de aplicações web abertas: <code>packaged</code> e <code>hosted</code>. Aplicações Packaged são essencialmente arquivos <code>zip</code> que contém todos os recursos da aplicação : HTML, CSS, JavaScript, imagens, arquivos de manifesto, etc. Aplicações Hosted <span id="result_box" lang="pt"><span class="hps">são executados</span> <span class="hps">a partir de</span> <span class="hps">um servidor de</span> <span class="hps">um determinado domínio</span></span>, assim como um website padrão. Ambos tipos de aplicação requerem um manifesto válido. Quando chega a hora de listar sua aplicação no Firefox Marketplace, você poderá fazer o upload da sua aplicação como um arquivo .zip ou fornecer a URL de onde sua aplicação esta hospedada.</p> - -<div style="width: 480px; margin: 0 auto;"> -<p> </p> - -<div class="video-caption"> -<p>Feito em parceria com a Treehouse: <a class="button" href="http://teamtreehouse.com/?cid=1154">Conheça!</a></p> -</div> -</div> - -<p><span id="result_box" lang="pt"><span class="hps">Para os</span> <span class="hps">propósitos deste guia</span><span>, <span id="result_box" lang="pt"><span>você vai</span> <span class="hps">criar um</span> <span class="hps">aplicativo hospedado</span></span></span></span> em seu endereço<code> localhost</code>. Uma vez que seu aplicativo estiver pronto para ser listado no Firefox Marketplace, você pode fazer a decisão de "empacotá-lo" como um aplicativo zip ou fornecer a URL em que o aplicativo esta hospedado.</p> - -<h3 id="Manisfesto_App">Manisfesto App</h3> - -<p>Todo aplicativo Firefox requer um arquivo manifest.webapp na raiz da aplicação. O arquivo <a href="/pt-BR/Apps/Manifest"><code>manifest.webapp</code></a> fornece informações importantes sobre a aplicação, tal como a versão, nome, descrição, localização do ícone, sequência de caracteres, <span id="result_box" lang="pt"><span class="hps">domínios</span> <span class="hps">de onde o</span> <span class="hps">aplicativo pode ser</span> <span class="hps">instalado</span></span>, e muito mais. Apenas o nome e a descrição são obrigatórios. O manifesto simples incluído dentro do template do aplicativo é semelhante ao que se segue:</p> - -<pre class="brush: js">{ - "version": "0.1", - "name": "Open Web App", - "description": "Seu novo incrível Open Web App", - "launch_path": "/app-template/index.html", - "icons": { - "16": "/app-template/app-icons/icon-16.png", - "48": "/app-template/app-icons/icon-48.png", - "128": "/app-template/app-icons/icon-128.png" - }, - "developer": { - "name": "Seu nome", - "url": "http://yourawesomeapp.com" - }, - "locales": { - "es": { - "description": "Su nueva aplicación impresionante Open Web", - "developer": { - "url": "http://yourawesomeapp.com" - } - }, - "it": { - "description": "Il vostro nuovo fantastico Open Web App", - "developer": { - "url": "http://yourawesomeapp.com" - } - } - }, - "default_locale": "en" -}</pre> - -<div style="width: 480px; margin: 0 auto;"> -<p> </p> - -<div class="video-caption"> -<p>Feito em parceria com a Treehouse: <a class="button" href="http://teamtreehouse.com/?cid=1154">Conheça!</a></p> -</div> -</div> - -<p> </p> - -<p>Um manifesto básico é tudo que você precisa para começar. Para mais detalhes sobre manifesto, leia <a href="/pt-BR/Apps/Manifest">Manifesto</a>.</p> - -<h2 id="Design_Layout_do_Aplicativo">Design & Layout do Aplicativo</h2> - -<p>O design responsivo se tornou cada vez mais importante <span id="result_box" lang="pt"><span class="hps">à medida que mais</span> <span class="hps">resoluções de tela</span> <span class="hps">se tornaram padrão</span> <span class="hps">em dispositivos diferentes.</span></span> Mesmo se o alvo principal do seu aplicativo seja plataforma mobile tal como o Firefox OS, outros dispositivos provavelmente terão acesso a ele também. <a href="/pt-BR/docs/Web/Guide/CSS/CSS_Media_queries">CSS media queries </a><span id="result_box" lang="pt"> <span class="hps">lhe permitem</span> <span class="hps">adaptar</span> <span class="hps">o layout</span> <span class="hps">para o dispositivo</span><span>, como mostrado</span> <span class="hps">neste exemplo</span> <span class="hps">CSS</span><span>:</span></span></p> - -<pre class="brush: css">/* Exemplos de diferentes CSS media queries */ - -/* Detector básico de largura para desktop*/ -@media only screen and (min-width : 1224px) { - /* estilos */ -} - -/* Largura do iPhone tradicional */ -@media - only screen and (-webkit-min-device-pixel-ratio : 1.5), - only screen and (min-device-pixel-ratio : 1.5) { - /* estilos */ -} - -/* Configurações de dispositivo em diferentes orientações */ -@media screen and (orientation:portrait) { - /* estilos */ -} -@media screen and (orientation:landscape) { - /* estilos */ -}</pre> - -<p>Existem vários frameworks JavaScript e CSS disponíveis <span class="short_text" id="result_box" lang="pt"><span class="hps">para auxiliar no</span> <span class="hps">design responsivo</span></span> e no desenvolvimento do aplicativo (<a href="http://getbootstrap.com/">Bootstrap (em inglês)</a>, etc.) Escolha o(s) framework(s) que melhor se encaixa em seu aplicativo e estilo de desenvolvimento.</p> - -<h2 id="Web_APIs">Web APIs</h2> - -<p><span id="result_box" lang="pt"><span class="hps">APIs JavaScript</span> <span class="hps">estão sendo criadas e</span> aprimoradas <span class="hps">tão rapidamente quanto as plataformas estão</span><span>.</span></span> O empenho do <a href="https://wiki.mozilla.org/WebAPI">WebAPI (em inglês)</a> do Mozilla <span id="result_box" lang="pt"><span class="hps">traz</span> <span class="hps">dezenas de recursos</span> <span class="hps">móveis padrão</span> <span class="hps">de</span> <span class="hps">APIs JavaScript</span><span>.</span></span> Uma lista de suporte aos dispositivos e status está disponivel na página <a href="https://wiki.mozilla.org/WebAPI">WebAPI</a><span id="result_box" lang="pt"><span class="hps">. A detecção de recursos JavaScript</span> <span class="hps">ainda é a melhor</span> <span class="hps">prática</span><span>, como mostrado</span> <span class="hps">no exemplo a seguir</span><span>:</span></span></p> - -<pre class="brush: js">// Se o dispositivo suportar a vibrate API... -if('vibrate' in navigator) { - // ... vibrar por um segundo - navigator.vibrate(1000); -}</pre> - -<p>No exemplo a seguir, <span id="result_box" lang="pt"><span class="hps">o estilo de uma</span> <span class="hps"><div></span> <span class="hps">é modificada</span> <span class="hps">com base nas mudanças</span> <span class="hps">no estado</span> <span class="hps">da bateria do dispositivo</span><span>:</span></span></p> - -<pre class="brush: java">// Cria o listener no indicador da bateria -(function() { - var battery = navigator.battery || navigator.mozBattery || navigator.webkitBattery, - indicator, indicatorPercentage; - - if(battery) { - indicator = document.getElementById('indicador'), - indicatorPercentage = document.getElementById('indicador-porcentagem'); - - // configura listeners para mudanças - battery.addEventListener('chargingchange', updateBattery); - battery.addEventListener('levelchange', updateBattery); - - // Atualiza imediatamente - updateBattery(); - } - - function updateBattery() { - // Atualiza a largura e texto o texto da porcentagem - var level = (battery.level * 100) + '%'; - indicatorPercentage.style.width = level; - indicatorPercentage.innerHTML = 'Bateria: ' + level; - // Update charging status - indicator.className = battery.charging ? 'carregando' : ''; - } -})();</pre> - -<p><span id="result_box" lang="pt"><span class="hps">No exemplo de código</span> <span class="hps">acima</span><span>,</span> <span class="hps">uma vez que você</span> <span class="hps">confirmar que a</span> <span class="hps">API</span> <span class="hps">da bateria</span> <span class="hps">é suportada</span><span>, você pode adicionar</span> <span class="hps">eventos</span> <span class="hps">ouvintes para <code>chargingchange</code></span><span class="hps"> e a</span> <code>charginglevel</code> <span class="hps">para atualizar</span> a <span class="hps">exibição</span> <span class="hps">do elemento.</span> <span class="hps">Tente adicionar</span> <span class="hps">a seguir n</span><span class="hps">o template de início rápido</span><span>, e veja se</span> <span class="hps">você pode</span> <span class="hps">fazê-lo funcionar</span><span>.</span></span></p> - -<p>Verifique a página <a href="https://wiki.mozilla.org/WebAPI"> WebAPI</a> frequentemente para<span id="result_box" lang="pt"><span class="hps"> manter-se</span> <span class="hps">atualizado com o</span> <span class="hps">status</span> <span class="hps">do <span id="result_box" lang="pt"><span class="hps">dispositivo</span></span> API</span><span class="hps">.</span></span></p> - -<h3 id="A_API_de_instalação">A API de instalação</h3> - -<p><span id="result_box" lang="pt"><span class="hps">Em nosso</span> <span id="result_box" lang="pt"><span class="hps">exemplo </span></span>do template <span class="hps">de início rápido</span><span>, temos</span> <span class="hps">implementado um</span> <span class="hps">botão de instalação</span> <span class="hps">que você pode clicar</span> <span class="hps">ao visualizar</span> <span class="hps">o aplicativo</span> <span class="hps">como uma página</span> <span class="hps">da Web padrão</span><span>, para instalar</span> <span class="hps">o site</span> <span class="hps">no Firefox</span> <span class="hps">OS</span> <span class="hps">como um aplicativo</span><span>.</span> <span class="hps">A marcação</span> <span class="hps">do botão</span> <span class="hps">não tem</span> <span class="hps">nada de especial</span><span>:</span></span></p> - -<pre class="brush: html"><button id="install-btn">Instalar app</button></pre> - -<p><span id="result_box" lang="pt"><span class="hps">Esta funcionalidade</span> <span class="hps">do</span> <span class="hps">botão</span> <span class="hps">é implementada</span> <span class="hps">utilizando a API</span> <span class="hps">de instalação</span> <span class="atn hps">(</span><span>ver</span> <span class="hps">install.js</span><span>)</span><span>:</span></span></p> - -<pre class="brush: js">var manifest_url = location.href + 'manifest.webapp'; - -function install(ev) { - ev.preventDefault(); - // define a URL do manifesto - // instala o app - var installLocFind = navigator.mozApps.install(manifest_url); - installLocFind.onsuccess = function(data) { - // O App está instalado, faz alguma coisa - }; - installLocFind.onerror = function() { - // O app não foi instalado, a informação está em - // installapp.error.name - alert(installLocFind.error.name); - }; -}; - -// pega a referencia para o botão e chama a função install() ao clicar se o app ainda não está instalado, se estiver, esconde o botão. -var button = document.getElementById('install-btn'); - -var installCheck = navigator.mozApps.checkInstalled(manifest_url); - -installCheck.onsuccess = function() { - if(installCheck.result) { - button.style.display = "none"; - } else { - button.addEventListener('click', install, false); - }; -}; -</pre> - -<p>Vamos explicar brevemente o que está acontecendo:</p> - -<ol> - <li>Nós obtemos uma referência do botão de instalação "install-btn" e o armazenamos na variável <code>button</code>.</li> - <li>Nós usamos <code>navigator.mozApps.checkInstalled</code> para checar se o aplicativo definido pelo manifest em <code>http://people.mozilla.com/~cmills/location-finder/manifest.webapp</code> já está instalado no dispositivo. Este teste é armazenado na variável <code>installCheck</code>.</li> - <li>Quando o teste é realizado com sucesso, o evento de sucesso é disparado, portanto <code>installCheck.onsuccess = function() { ... }</code> é executado.</li> - <li>Testamos então a existência de <code>installCheck.result</code> usando uma condicional <code>if</code> . Se existir, significa que o app está instalado, então escondemos o botão. Um botão de instalação não é necessário se o app já estiver instalado.</li> - <li>Se o app não está instalado, adicionamos um evento de click ao botão, então a função <code>install()</code> é chamada quando o botão é clicado.</li> - <li>Quando o botão é clicado e a função <code>install()</code> é chamada, armazenamos a localização do arquivo de manifesto em uma variável chamada <code>manifest_url</code>, então instalamos o app usando <code>navigator.mozApps.install(manifest_url)</code>, guardando uma referência para esta instalação na variável <code>installLocFind</code> . Você verá que esta instalação também dispara eventos de sucesso e erro, então poderá disparar eventos dependendo do sucesso ou falha da instalação.</li> -</ol> - -<p>Você pode querer verificar o <a href="/pt-BR/Apps/JavaScript_API">estado de implementação da API</a> na primeira visita aos apps instaláveis.</p> - -<div class="note"> -<p>Nota: aplicativos web instaláveis possuem uma política de segurança "um aplicativo por origem"; basicamente, você não pode hospedar mais de um aplicativo por origem. Isto faz com que testes sejam um pouco mais complicados, mas ainda há diversas formas de contornar isto, como criar diferentes sub-dom[inios para aplicativos, testa-los usando o Firefox OS Simulator, ou testar a funcionalidade de instalação no Firefox Aurora/Nightly, que permite instalar web apps no desktop. Veja as<a href="/pt-BR/docs/Web/Apps/Developing/installable_apps/FAQ-do-Manifesto-do-Aplicativo"> questões sobre o manifesto</a> para mais informações sobre origens.</p> -</div> - -<h2 id="WebRT_APIs_(API_de_Permissão_Básica)">WebRT APIs (API de Permissão Básica)</h2> - -<p>Há um número de WebAPIs disponíveis, mas requerem permissões para uma função específica ser habilitada. Apps podem registrar requisitos de permissões no arquivo <code>manifest.webapp</code> como por exemplo:</p> - -<pre class="brush: js">// nova chave no manifesto: "permissions" -// Requisição de acesso a qualquer número de APIs -// Here we request permissions to the systemXHR API -"permissions": { - "systemXHR": {} -}</pre> - -<p>Os três níveis de permissão são os seguintes:</p> - -<ul> - <li>Normal — APIs que não precisam de nenhum tipo de permissão de acesso especial.</li> - <li>Privileged — APIs disponíveis para desenvolvedores usarem em suas aplicações, contanto que eles configurem as permissões de acesso no arquivo de manifesto e distribuam a partir de uma fonte confiável.</li> - <li>Certified — APIs que controlam funções críticas no dispositivo, como chamadas ou serviço de mensagens. Geralmente não estão disponíveis para desenvolvedores de empresas não certificadas pela Mozilla.</li> -</ul> - -<p>Para mais informações sobre níveis de permissões de apps, leia <a href="/pt-BR/Apps/Apps_empacotado#Tipos_de_aplicativos_empacotados" title="/en-US/docs/Web/Apps/Packaged_apps#Types_of_packaged_apps">Tipos de aplicativos empacotados</a>. Você pode encontrar informações sobre quais APIs requerem permissões, e quais permissões necessárias em <a href="/pt-BR/docs/Web/Apps/Developing/permisoes_app">Permissões de aplicativos</a>.</p> - -<div class="note"> -<p>É importante notar que nem todas as APIs estão implementadas no Firefox OS Simulator.</p> -</div> - -<h2 id="Ferramentas_Testes">Ferramentas & Testes</h2> - -<p>Testes são extremamente importantes ao desenvolver para dispositivos móveis, e existem muitas opções para testar apps instaláveis.</p> - -<h3 id="Simulador_do_Firefox_OS_e_WebIDE">Simulador do Firefox OS e WebIDE</h3> - -<p>Instalando e usando o <a href="https://marketplace.firefox.com/developers/docs/firefox_os_simulator">Firefox OS Simulator</a> é a forma mais fácil de testar seu app. Depois de instalar o simulador, ele está disponível a partir do menu Ferramentas -> Desenvolvedor -> Firefox OS Simulator. O simulador executa como um console Javascript para depurar a aplicação (disponível até o Firefox 33).</p> - -<p><span id="result_box" lang="pt"><span class="hps">A partir do Firefox 34, a nova ferramenta de desenvolvimento chamada </span><a href="/pt-BR/docs/Tools/WebIDE"><span class="hps">WebIDE</span></a><span> veio substituir o Firefox Simulator.</span> <span class="hps">Ela</span> <span class="hps">permite que você conecte</span> <span class="hps">no </span><span class="hps">Firefox</span> para computadores pessoais <span class="hps">um dispositivo compatível</span> <span class="hps">via</span> <span class="hps">USB</span> <span class="hps">(ou</span> <span class="hps">um simulador</span> <span class="hps">do Firefox</span> <span class="hps">OS)</span><span>, carregando os</span> <span class="hps">aplicativos</span> <span class="hps">diretamente n</span><span class="hps">o dispositivo</span><span>.</span> Permite <span class="hps">validar</span><span class="hps">,</span> <span class="hps">e</span> <span class="hps">depurá-los</span> <span class="hps">como</span> <span class="hps">eles são executados</span> <span class="hps">no dispositivo.</span></span></p> - -<p>A Mozilla vem inovando, e para chamar mais a atenção de seus desenvolvedores a fundação criou uma versão exclusiva de seu navegador chamada de <a href="/pt-BR/firefox/developer/">Firefox Developer Edition</a>. Ela já traz todos os recursos para os desenvolvedores se aventurarem. Prefira instalá-lo ao invés dos já citados nos dois parágrafos anteriores, assim você economiza tempo.</p> - -<h3 id="Gerenciador_de_Aplicativos">Gerenciador de Aplicativos</h3> - -<p>A ferramentas de teste <a href="/pt-BR/Firefox_OS/Usando_o_App_Manager">App Manager</a> está gradualmente sendo substituída pela <a href="/pt-BR/docs/Tools/WebIDE">WebIDE</a>.</p> - -<h3 id="Testes_Unitários">Testes Unitários</h3> - -<p>Testes unitários são extremamente valiosos quando se desenvolve para diferentes dispositivos e arquiteturas. O <a href="http://qunitjs.com">QUnit</a> do JQuery é um popular utilitário de testes client-side, mas você pode usar a ferramenta de sua preferência.</p> - -<h3 id="Instalando_o_Firefox_OS_em_um_Dispositivo">Instalando o Firefox OS em um Dispositivo</h3> - -<p>Como o Firefox OS é uma plataforma livre, o código fonte e ferramentas estão disponíveis para compilar e instalar o Firefox Os em seu próprio dispositivo. As instruções para a instalação, bem como a lista de dispositivos compatíveis estão disponíveis no <a href="/pt-BR/Firefox_OS/Platform">MDN</a>.</p> - -<p>Consulte o <a href="/pt-BR/Firefox_OS/Developing_Firefox_OS">guia de desenvolvimento para celulares</a> com suporte ao Firefox OS.</p> - -<h2 id="Enviar_e_Distribuir_o_Aplicativo">Enviar e Distribuir o Aplicativo</h2> - -<p>Uma vez que o app está completo, você pode hospedá-lo como uma página própria ou app (leia <a href="/pt-BR/docs/Mozilla/Marketplace/Publishing/Opcoes_de_publicacao">Apps auto-publicados</a> para mais informações), ou ele pode ser <a href="https://marketplace.firefox.com/developers/submit/app/manifest">enviado (em inglês)</a> para o <a href="https://marketplace.firefox.com">Firefox Marketplace (em inglês)</a>. O manifesto do seu app será validado e você poderá escolher com quais dispositivos seu aplicatívo será compatível. (por exemplo: Firefox OS, Desktop Firefox, Firefox Mobile, Firefox Tablet). Uma vez validado, você pode colocar detalhes adicionais sobre o app (screenshots, descrição, preço, etc.) e oficialmente enviar o app para a lista informativa do Marketplace. Uma vez aprovado, seu app estará disponível para compra e instalação.</p> - -<h3 id="Mais_Marketplace_Lista_Informativa">Mais Marketplace & Lista Informativa</h3> - -<ol> - <li><a href="/pt-BR/Apps/Submitting_an_app">Enviando um app para o Firefox OS Marketplace</a></li> - <li><a href="/pt-BR/docs/Mozilla/Marketplace/Publishing/criterio-de-revisao-loja-de-aplicativos">Critérios de avaliação do Marketplace</a></li> - <li><a href="http://s.vid.ly/embeded.html?link=8k2n4w&autoplay=false">Video Tutorial de Envio de App (em inglês)</a></li> -</ol> -</article> diff --git a/files/pt-br/archive/b2g_os/releases/1.0.1/index.html b/files/pt-br/archive/b2g_os/releases/1.0.1/index.html deleted file mode 100644 index ffa527f317..0000000000 --- a/files/pt-br/archive/b2g_os/releases/1.0.1/index.html +++ /dev/null @@ -1,129 +0,0 @@ ---- -title: Firefox OS 1.0.1 para desenvolvedores -slug: Archive/B2G_OS/Releases/1.0.1 -tags: - - Firefox OS - - Notas de lançamento - - Release Notes -translation_of: Archive/B2G_OS/Releases/1.0.1 ---- -<div class="summary"> -<p><span class="seoSummary">O Firefox OS 1.0.1 foi primeiramente oferecido aos parceiros em seu lançamento em 02 de julho de 2013, durante o lançamento oficial do Firefox OS. Seu componente Gecko é baseado no Firefox 18 (veja <a href="/pt-BR/docs/Mozilla/Firefox/Releases/18">Firefox 18 para desenvolvedores</a>), lançado em 18 de janeiro de 2013. Para atualizações mais antigas, leia as notas de lançamento do Firefox área de trabalho mais velhas, começando com o <a href="/pt-BR/docs/Mozilla/Firefox/Releases/17">Firefox 17 para desenvolvedores</a>. Esta página detalha os recursos de desenvolvedor recém-implementados no Firefox OS 1.0.1.</span></p> -</div> - -<h2 id="HTML">HTML</h2> - -<p>Firefox OS-específicos:</p> - -<ul> - <li><code><input type="file"></code> desativado devido a implicações de uso de memória ({{ Bug("832923") }}).</li> -</ul> - -<p>Gecko geral:</p> - -<ul> - <li>O atributo {{htmlattrxref("reversed","ol")}} do elemento {{HTMLElement("ol")}} é agora suportado ({{bug("601912")}}).</li> - <li>O atributo {{htmlattrxref("crossorigin","link")}} do elemento {{HTMLElement("link")}} é agora suportado ({{bug("786564")}}).</li> - <li>O atributo {{htmlattrxref("allowfullscreen", "iframe")}} do elemento {{HTMLElement("iframe")}} foi implementado e o seu predecessor prefixado {{htmlattrxref("mozallowfullscreen", "iframe")}} foi descontinuado.</li> -</ul> - -<h2 id="CSS">CSS</h2> - -<p>Gecko geral:</p> - -<ul> - <li>O {{cssxref("min-width")}} e o {{cssxref("min-height")}} agora usam o <code>auto</code> keyword como <em>valor inicial </em>(Isto tem efeito somente em ítens flexíveis já que ele resolve para <code>0</code>, o valor inicial anterior, para outros ítens). ({{bug("763689")}})</li> - <li>A cascata foi atualizada: agora regras to tipo <code>!important sobrepõem</code> <a href="/pt-BR/docs/CSS/Using_CSS_animations" title="CSS/Using_CSS_animations">animações CSS</a>. ({{bug("783714")}})</li> - <li>A {{cssxref ("background")}} propriedade estenográfica agora reconhece CSS3 {{cssxref ("background-size")}} como propriedade especificada interiormente. ({{bug ("570326")}})</li> - <li>Suporte inicial para o Módulo CSS Flexbox foi lançado. Ele é desabilitado por padrão mas pode ser habilitado ao definir <code>layout.css.flexbox.enabled</code> to true. ({{bug('666041')}})</li> -</ul> - -<h2 id="JavaScript">JavaScript</h2> - -<p>Firefox OS-específicos:</p> - -<ul> - <li>Ao detectar o suporte <code><video> </code>para diferentes formatos, o <code>HTMLMediaElement.prototype.canPlayType</code> relata incorretamente <code>true</code> para h.264 video, enquanto que, na realidade, o h.264 não é suportado.</li> -</ul> - -<p>Gecko geral:</p> - -<ul> - <li><a href="/pt-BR/docs/JavaScript/Reference/Global_Objects/Proxy">Proxies diretos</a> de harmonia (ECMAScript 6) foram lançados ({{bug ("703537")}}). Atenção: a implementação contém um par de bugs conhecidos, funcionalidades ausentes e desalinhamentos com o estado atual da especificação. Não confie nele para o código de produção.</li> - <li>O método ECMAScript 6 <code>contains()</code> agora é implementado em cordas. Isto infelizmente não é compatível com o Mootools 1.2, que espera um comportamento diferente do <code>contains()</code> em strings mas não garante isso. Versões mais recentes do Mootools corrigem este problema; sites devem atualizar sua versão Mootools para algo mais novo que 1.2.</li> -</ul> - -<h2 id="DOMAPI">DOM/API</h2> - -<p>Firefox OS-específicos:</p> - -<ul> - <li><span><span>API Storage Device: Quando receber uma chamada de retorno do cursor <code>navigator.getDeviceStorage("sdcard").enumerate</code>, <code><span id="summary_alias_container"><span id="short_desc_nonedit_display">this.done</span></span></code> é indefinido (veja {{bug ("902565")}}). Isto foi corrigido no Firefox 1.2. O bug neste caso discute possíveis compatibilidades checks/workarounds para esse problema.</span></span></li> - <li><a href="/pt-BR/docs/WebAPI/WebTelephony" rel="external">Telephony API landed</a></li> - <li><a href="/pt-BR/docs/WebAPI/Contacts" rel="external">Contacts API landed</a></li> - <li><a href="/pt-BR/docs/WebAPI/Settings" rel="external">Settings API landed</a></li> - <li><a href="/pt-BR/docs/Using_geolocation" rel="external">Geolocation API landed</a></li> - <li><a href="/pt-BR/docs/WebAPI/Web_Activities" rel="external">Web Activities landed</a></li> - <li><a href="/pt-BR/docs/WebAPI/TCP_Socket" rel="external">TCP Socket landed</a></li> - <li><a href="/pt-BR/docs/WebAPI/Using_Light_Events" rel="external">Sensor API landed</a></li> - <li><a href="/pt-BR/docs/WebAPI/Permissions" rel="external">Permissions and Security Model landed</a></li> -</ul> - -<p>Gecko geral:</p> - -<ul> - <li><code>navigator.mozPay</code> has been landed ({{bug("767818")}}).</li> - <li><code>window.devicePixelRatio</code> has been landed ({{bug("564815")}}).</li> - <li>O backend MacOS X para <code>window.navigator.battery</code> foi implementado ({{bug("696045")}}).</li> - <li>{{domxref("BlobBuilder", "MozBlobBuilder")}} foi removido. Desenvolvedores precisam utilizar o construtor {{domxref("Blob")}} para criar um objeto <code>Blob</code> ({{bug("744907")}}).</li> - <li>O evento {{event("visibilitychange")}} e a <a href="/pt-BR/docs/DOM/Using_the_Page_Visibility_API" title="DOM/Using_the_Page_Visibility_API">API Page Visibility</a> foram unprefixed ({{bug("812086")}}).</li> - <li>{{domxref("TextDecoder")}} e {{domxref("TextEncoder")}} foram adicionados. Note que a implementação e especificação deles evoluiu e mudou no Firefox 19 ({{bug("764234")}}).</li> - <li><code>HTMLMediaElement</code><code>.src</code> foi separado em duas propriedades: a propriedade padrão <code>src</code>, lidando com {{domxref("DOMString")}}, e a propriedade prefixada <code>mozSrcObject</code>, lidando com <a href="/pt-BR/docs/WebRTC/MediaStream_API" title="WebRTC/MediaStream_API">streams de midia</a> ({{bug("792665")}}).</li> - <li>Suporte para <a href="/en-US/docs/DOM/Using_web_workers#Passing_data_by_transferring_.C2.A0ownership_%28transferable_objects%29" title="DOM/Using_web_workers#Passing_data_by_transferring_.C2.A0ownership_%28transferable_objects%29">objetos transferíveis.</a></li> - <li>O método {{domxref("Screen.lockOrientation()")}} agora suporta uma <code>Array</code> de {{domxref("DOMString")}} como argumento ({{bug("784549")}}).</li> -</ul> - -<h2 id="Network">Network</h2> - -<p>Gecko geral:</p> - -<ul> - <li>Fatores de qualidade ("q-values") são agora fixados para 2 dígitos no header HTTP <code>Accept-Language</code> ({{bug ("672448")}}).</li> - <li>A sintaxe <code>ALLOW-FROM</code> do HTTP <a href="/pt-BR/docs/The_X-FRAME-OPTIONS_response_header" title="The_X-FRAME-OPTIONS_response_header"><code>X-FRAME-OPTIONS</code></a> Response header é agora suportado ({{bug ("690168")}}).</li> -</ul> - -<h2 id="Destaques_para_1.0.1">Destaques para 1.0.1</h2> - -<ul> - <li><a href="/pt-BR/docs/WebAPI/WebSMS" rel="external">SMS</a></li> - <li>3G/Dados</li> - <li>WiFi</li> - <li><a href="/pt-BR/docs/Apps" rel="external">Open Web Apps</a></li> - <li>Voicemail</li> - <li>Suporte para MozApp</li> - <li><a href="/pt-BR/Persona" rel="external">Persona / ID</a></li> - <li>Carrier billing</li> - <li>Bluetooth</li> - <li>Gerenciador de rede</li> - <li><a href="/pt-BR/docs/WebAPI/Device_Storage_API" rel="external">USB device storage</a></li> - <li>Suporte multi-processo</li> - <li>Async pan/zoom</li> - <li>SIM Toolkit</li> - <li>Multi-APN support</li> - <li>Tela cheia</li> - <li>WiFi Hotspot</li> - <li>Atualizações de software</li> - <li>Cell Broadcast</li> - <li>Configurações de notificações</li> - <li>UI Transições/Animações</li> - <li>Suporte de localização </li> - <li>First Run Experience</li> - <li>Chamada de espera</li> - <li>Desvio de chamadas</li> -</ul> - -<h2 id="Veja_também">Veja também</h2> - -<ul> - <li><a href="http://www.mozilla.org/pt-BR/firefox/os/notes/1.0.1/" title="http://www.mozilla.org/en-US/firefox/os/notes/1.0.1/">Notas Firefox OS 1.0.1</a></li> -</ul> diff --git a/files/pt-br/archive/b2g_os/releases/1.1/index.html b/files/pt-br/archive/b2g_os/releases/1.1/index.html deleted file mode 100644 index 38192c345e..0000000000 --- a/files/pt-br/archive/b2g_os/releases/1.1/index.html +++ /dev/null @@ -1,88 +0,0 @@ ---- -title: Firefox OS 1.1 para desenvolvedores -slug: Archive/B2G_OS/Releases/1.1 -translation_of: Archive/B2G_OS/Releases/1.1 ---- -<div class="summary"> - <div class="summary"> - <p><span class="seoSummary" style="padding: 0px; border: 0px;"><font>Firefox OS 1.1 é uma versão de pré-lançamento do Firefox OS, oferecida pela primeira vez aos parceiros para lançamento em 21 de outubro de 2013 componente O Gecko é baseado no Firefox 18 (ver </font><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Firefox/Releases/18" title="/ En-US / docs / Mozilla / Firefox / Lançamentos / 24"><font>Firefox 18 para desenvolvedores</font></a><font>) como </font><a href="https://developer.mozilla.org/en-US/Firefox_OS/Releases/1.0.1"><font>Firefox OS 1.0.1</font></a><font> , mas com algumas correções de bugs e APIs adicionais acrescentou. </font>Esta página detalha os recursos de desenvolvedor recém-implementados no Firefox OS 1.1.</span></p> - </div> - <h2 id="HTML" style="margin-bottom: 20px; line-height: 30px; font-size: 2.14285714285714rem;">HTML</h2> - <p>Firefox OS-específica:</p> - <ul> - <li><code><Input type = "file"></code> habilitado (consulte <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=832923" title="FIXED: Implement <input type='file'> on B2G">bug 832923</a> para obter detalhes).</li> - </ul> - <h2 id="JavaScript" style="margin-bottom: 20px; line-height: 30px; font-size: 2.14285714285714rem;">JavaScript</h2> - <p>Firefox OS-específica:</p> - <ul> - <li>Ao detectar <code><video></code> suporte para diferentes formatos,<code>HTMLMediaElement.prototype.canPlayType</code> agora informa corretamente <code>falso</code> para vídeo H.264.</li> - </ul> - <h2 id="DOM_API" style="margin-bottom: 20px; line-height: 30px; font-size: 2.14285714285714rem;">DOM / API</h2> - <p>Firefox OS-específica:</p> - <ul> - <li><span id="summary_alias_container">API Storage Device: Quando receber uma chamada de retorno do cursor <code>. navigator.getDeviceStorage ("sdcard") enumerar</code> , <code><span id="summary_alias_container"><span id="short_desc_nonedit_display">this.done</span></span></code> não está definido (ver <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=902565" title='this.done in cursor callback of naviagtor.getDeviceStorage("sdcard").enumerate is undefined'>bug 902565</a>). Isto foi corrigido no Firefox 1.2. O bug referenciado discute possíveis de compatibilidade cheques / soluções para este problema.</span></li> - <li>SMS, MMS e APIs relacionadas com MobileMessage desembarcaram - <ul> - <li><a href="/pt-BR/docs/Web/API/Window/navigator/mozMobileMessage" title="The documentation about this has not yet been written; please consider contributing!"><code>window.navigator.mozMobileMessage</code></a></li> - <li><a href="/pt-BR/docs/Web/API/Window/navigator/mozSms" title="The documentation about this has not yet been written; please consider contributing!"><code>window.navigator.mozSms</code></a></li> - <li><a href="/pt-BR/docs/Web/API/MozMmsEvent" title="The documentation about this has not yet been written; please consider contributing!"><code>MozMmsEvent</code></a></li> - <li><a href="/pt-BR/docs/Web/API/MozMmsMessage" title="The documentation about this has not yet been written; please consider contributing!"><code>MozMmsMessage</code></a></li> - <li><a href="/pt-BR/docs/Web/API/MozMobileMessageManager" title="The documentation about this has not yet been written; please consider contributing!"><code>MozMobileMessageManager</code></a></li> - <li><a href="/pt-BR/docs/Web/API/MozMobileMessageThread" title="The documentation about this has not yet been written; please consider contributing!"><code>MozMobileMessageThread</code></a></li> - <li><a href="/pt-BR/docs/Web/API/MozSmsEvent" title="The documentation about this has not yet been written; please consider contributing!"><code>MozSmsEvent</code></a></li> - <li><a href="/pt-BR/docs/Web/API/MozSmsFilter" title="The documentation about this has not yet been written; please consider contributing!"><code>MozSmsFilter</code></a></li> - <li><a href="/pt-BR/docs/Web/API/MozSmsManager" title="The documentation about this has not yet been written; please consider contributing!"><code>MozSmsManager</code></a></li> - <li><a href="/pt-BR/docs/Web/API/MozSmsMessage" title="The documentation about this has not yet been written; please consider contributing!"><code>MozSmsMessage</code></a></li> - <li><a href="/pt-BR/docs/Web/API/MozSmsSegmentInfo" title="The documentation about this has not yet been written; please consider contributing!"><code>MozSmsSegmentInfo</code></a></li> - <li>nsIMobileMessageCallback (Gecko API Interno)</li> - <li>nsIMobileMessageCursorCallback (Gecko API Interno)</li> - <li>nsIMobileMessageService (Gecko API Interno)</li> - <li>nsIMobileMessageDatabaseService (Gecko API Interno)</li> - <li>nsIMmsService (Gecko API Interno)</li> - <li>nsISmsService (Gecko API Interno</li> - </ul> - </li> - <li><a href="https://developer.mozilla.org/en-US/docs/WebAPI/Simple_Push">Simples premir</a> (Push Notifications API) aterrou</li> - <li><a href="http://help.vodafone.co.nz/app/answers/detail/a_id/3230">WAP Push</a> aterrou</li> - </ul> - <h2 id="Apoio_Firefox_OS_HD" style="margin-bottom: 20px; line-height: 30px; font-size: 2.14285714285714rem;">Apoio Firefox OS HD</h2> - <p>Desde Firefox OS 1.1, há versões HD disponíveis para fornecer suporte HD para dispositivos de alta DPI. Isto é mais apenas uma mudança visual, tratados da mesma forma que você lidaria com outros dispositivos de diferentes resolução, e você vai encontrar nada muito em termos de diferenças entre as plataformas subjacentes.</p> - <h2 id="Questões_OS_fixos_Firefox" style="margin-bottom: 20px; line-height: 30px; font-size: 2.14285714285714rem;">Questões OS fixos Firefox</h2> - <ul> - <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=817972">817972</a> : [Bluetooth] [de transferência de arquivos] Apoiar vários transferência de arquivos.</li> - <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=834672">834.672</a> : AppProtocolHandler.js nunca deve jogar.</li> - <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=839500">839.500</a> : identity.js de Gaia abre um processo de navegador que está presa em primeiro plano. Portanto, se você abrir o aplicativo de mercado, você perde ~ 10% da memória app disponível até que você reiniciar o telefone.</li> - <li>Correção de memória para logins Persona.</li> - <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=834773">834.773</a> : Usando a atividade de seleção e confirmar uma imagem para a galeria - app fica pendurado sem perf percebida por 5-10 segundos</li> - </ul> - <p><a href="http://mzl.la/1bqXGXS">Falhas resolvidas</a></p> - <h2 id="Destaques_de_critério_para_o_Firefox_OS_1.1" style="margin-bottom: 20px; line-height: 30px; font-size: 2.14285714285714rem;">Destaques de critério para o Firefox OS 1.1</h2> - <ul> - <li>Mensagens suporte multimídia (MMS) adicionado ao aplicativo de mensagens para que você possa enviar fotos, vídeo e áudio para contatos ou uma mensagem de texto para várias pessoas ao mesmo tempo.</li> - <li>Guardar imagens, vídeo e áudio a partir do navegador é agora suportado.</li> - <li>Conta de e-mail de contatos agora pode ser importado a partir do Gmail e Windows Live Mail (Outlook).</li> - <li>Email imagem, áudio e vídeo anexado download foi implementada.</li> - <li>Anexando e envio de imagens Galeria agora suportado.</li> - <li>Modo de rascunho e-mail foi implementado.</li> - <li>Melhorias para o discador e contatos, como adicionar facilmente um número discado para um contacto e sugestões discador existentes para encontrar facilmente os contactos.</li> - <li>Cell Broadcast implementado para entrega simultânea de mensagens de emergência para usuários inscritos.</li> - <li>Principais melhorias de desempenho em torno do tempo de inicialização do aplicativo e rolagem.</li> - <li><b>Música</b> de busca para encontrar músicas por artista, álbum ou título da música.</li> - <li>Firefox OS oferece <b>Calendário</b> características tais como: - <ul> - <li>Vistas de detalhe e de edição separada.</li> - <li>Seleção de notificação som do alarme.</li> - <li>Criação evento direto na data / hora específica.</li> - </ul> - </li> - </ul> - <h2 id="Veja_também" style="margin-bottom: 20px; line-height: 30px; font-size: 2.14285714285714rem;">Veja também</h2> -</div> -<h2 id="As_versões_mais_antigas" style="margin-bottom: 20px; line-height: 30px; font-size: 2.14285714285714rem;">As versões mais antigas</h2> -<p></p><div class="multiColumnList"> -<ul> -<li><a href="/en-US/docs/Mozilla/Firefox_OS/Releases/1.0.1">Firefox OS 1.0.1 for developers</a></li></ul> -</div><p></p> -<ul> - <li><a href="http://www.mozilla.org/en-US/firefox/os/notes/1.1/" title="http://www.mozilla.org/en-US/firefox/os/notes/1.1/">Firefox OS 1.1 Notas</a></li> -</ul> diff --git a/files/pt-br/archive/b2g_os/releases/1.3/index.html b/files/pt-br/archive/b2g_os/releases/1.3/index.html deleted file mode 100644 index 75e12595a2..0000000000 --- a/files/pt-br/archive/b2g_os/releases/1.3/index.html +++ /dev/null @@ -1,123 +0,0 @@ ---- -title: Release Notes Firefox OS 1.3 para desenvolvedores -slug: Archive/B2G_OS/Releases/1.3 -translation_of: Archive/B2G_OS/Releases/1.3 ---- -<div class="summary"> - <p><strong>Firefox OS 1.3</strong> está no estágio de pre-release stage. Seu componente Gecko é baseado no <strong>Firefox 28</strong> (veja <a href="/pt-BR/docs/Mozilla/Firefox/Releases/28" title="/en-US/docs/Mozilla/Firefox/Releases/28">Release Notes para desenvolvedores do Firefox 28</a>). Essa página detalha os novos recursos para desenvolvedores implementados no Firefox OS 1.3.</p> -</div> -<h2 id="CSS">CSS</h2> -<p>Gecko (Geral):</p> -<ul> - <li>Adicionado Suporte a <a href="/pt-BR/docs/Web/Guide/CSS/Flexible_boxes">flexbox</a> multilinha (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=939901" title="FIXED: Support multi-line flexbox in layout">bug 939901</a>).</li> - <li><span id="summary_alias_container"><span id="short_desc_nonedit_display">Implementada escrita asiática <a href="/pt-BR/docs/Web/CSS/list-style-type">counter styles</a></span></span> (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=934072" title="FIXED: Implement longhand East Asian counter styles in CSS3">bug 934072</a>).</li> - <li><span id="summary_alias_container"><span id="short_desc_nonedit_display">Adicionado suporte à propriedade <a href="/pt-BR/docs/Web/CSS/background-blend-mode" title="A propriedade CSS background-blend-mode descreve como as imagens de fundo do elemento devem se misturar entre si e a cor de fundo do elemento."><code>background-blend-mode</code></a> </span></span>(<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=841601" title="FIXED: Add support for background-blend-mode">bug 841601</a>).</li> - <li>O valor <code>none</code> foi adicionado a <a href="/pt-BR/docs/Web/CSS/font-variant-ligatures" title="The documentation about this has not yet been written; please consider contributing!"><code>font-variant-ligatures</code></a> (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=913264" title="FIXED: add 'none' value to font-variant-ligatures">bug 913264</a>).</li> - <li>Implementado suporte para a ação do usuário <a href="/pt-BR/docs/Web/CSS/:hover" title="A pseudo-classe :hover corresponde quando o usuário designa um elemento com um dispositivo apontador, mas não necessariamente o ativa. Este estilo pode ser substituído por qualquer outra pseudo-classe de link-relacionados, isto é :link, :visited, e :active, aparecendo em regras subsequentes. Na ordem para estilizar apropriadamente links, você precisa colocar a regra :hover depois das regras :link e :visited mas antes da regra :active, como definido pela ordem LVHA: :link — :visited — :hover — :active."><code>:hover</code></a> pseudo-class em pseudo-elements (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=922669" title="FIXED: Implement support for the :hover user action pseudo-class on pseudo-elements">bug 922669</a>).</li> - <li>Retirada dos prefixos <code>-moz</code> das palavras-chave <code>-moz-grab</code> e <code>-moz-grabbing</code> na propriedade CSS <a href="/pt-BR/docs/Web/CSS/cursor" title="A propriedade CSS cursor especifica o cursor do mouse mostrado quando o ponteiro do mouse está sobre um elemento."><code>cursor</code></a> (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=880672" title="FIXED: Unprefix -moz-grab and -moz-grabbing">bug 880672</a>).</li> - <li>Retirado suporte às notações funcionais <code>-moz-hsla()</code> e <code>-moz-rgba()</code>. Somente as versões não-prefixadas <code>hsla()</code> e <code>rgba()</code> são suportadas agora (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=893319" title="FIXED: remove -moz-rgba() and -moz-hsla()">bug 893319</a>).</li> - <li>Adicionado valor "<code>true</code>" para <a href="/pt-BR/docs/Web/CSS/text-align" title="A propriedade CSS text-align descreve como how inline content like text é alinhado em um elemento de bloco parente. text-align não controla o alinhamento do elemento de bloco, apenas their inline content."><code>text-align</code></a> (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=929991" title="FIXED: Implement 'true' alignment for text-align">bug 929991</a>).</li> - <li>Suporte experimental de <code>position:sticky</code> ativo por padrão em imagens "<em>non-release</em>" (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=902992" title="FIXED: enable position:sticky in non-release builds (e.g. Nightly and Aurora)">bug 902992</a>). para imagens <em>release</em>, a preferência <code>layout.css.sticky.enabled</code> precisa ser configurada para <code>true.</code></li> - <li>Adicionada a propriedade <a href="/pt-BR/docs/Web/CSS/all" title="The documentation about this has not yet been written; please consider contributing!"><code>all</code></a> (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=920633" title="FIXED: Add getAllKeys to IDBObjectStore">bug 920633</a>).</li> - <li>Adicionado o valor global <a href="/pt-BR/docs/Web/CSS/unset" title="The documentation about this has not yet been written; please consider contributing!"><code>unset</code></a>; isso possibilita resetar qualquer propriedade CSS (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=921731" title='FIXED: implement the "unset" value from CSS Cascading and Inheritance Level 3'>bug 921731</a>).</li> - <li>Chaves (<code>{ e }</code>) não são mais permitidas em atributos HTML <code>style</code>: por exemplo: <code><div style="{ display: none }"></code> não funciona mais <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=915053" title="FIXED: remove quirk allowing {} around style attribute">bug 915053</a>.</li> - <li>A propriedade <a href="/pt-BR/docs/Web/CSS/overflow" title="A propriedade overflow especifica quando o conteúdo de um elemento de nível de bloco deve ser cortado, exibido com barras de rolagem ou se transborda do elemento."><code>overflow</code></a> agora funciona em <a href="/pt-BR/docs/Web/HTML/Element/fieldset" title="O elemento HTML <fieldset> é usado para agrupar elementos, assim como labels (<label>), dentro de um formulário web."><code><fieldset></code></a> (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=261037" title="FIXED: overflow property not implemented on fieldset">bug 261037</a>).</li> -</ul> -<h2 id="HTML">HTML</h2> -<p>Gecko (Geral):</p> -<ul> - <li>Implementado o elemento <a href="http://w3c.github.io/webcomponents/spec/shadow/#the-content-element"><code><content></code></a> (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=854736" title="FIXED: Implement web components content element.">bug 854736</a>).</li> - <li><a href="/pt-BR/docs/HTML/WebVTT">WebVTT</a> foi ativado como padrão (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=887978" title="FIXED: Turn WebVTT on by default on trunk.">bug 887978</a>).</li> - <li>Implementado <code><input type=color></code>.</li> - <li>A diretiva <code>allow-popups</code> agora é suportada com o atributo <code><a href="/pt-BR/docs/Web/HTML/Element/iframe#attr-sandbox">sandbox</a></code> do elemento <a href="/pt-BR/docs/Web/HTML/Element/iframe" title="O elemento HTML <iframe> (ou elemento HTML inline frame) representa um contexto de navegação aninhado, efetivamente incorporando outra página HTML para a página atual. Em HTML 4.01, um documento pode conter uma cabeça e um corpo ou uma cabeça e um conjunto de quadros, mas não tanto um corpo e um conjunto de quadros. No entanto, um <iframe> pode ser usado dentro de um corpo de documento normal. Cada contexto de navegação tem sua própria história de sessão e o documento ativo. O contexto de navegação que contém o conteúdo incorporado é chamado o pai de contexto de navegação. O contexto de navegação de nível superior (que não tem um pai) normalmente é a janela do navegador."><code><iframe></code></a>(<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=766282" title="FIXED: implement allow-popups directive for iframe sandbox">bug 766282</a>).</li> - <li>Implementada a possibilidade de misturar elementos HTML usando a propriedade <a href="/pt-BR/docs/Web/CSS/mix-blend-mode" title="A propriedade mix-blend-mode descreve como um elemento de conteúdo deve ser mesclado com os elementos abaixo dele no background."><code>mix-blend-mode</code></a>. A preferencia <code>layout.css.mix-blend-mode.enabled</code> deve ser configurada como <code>true</code> (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=902525" title="FIXED: Implement support for blending of SVG and HTML elements">bug 902525</a>).</li> -</ul> -<h2 id="JavaScript">JavaScript</h2> -<p>Gecko (Geral):</p> -<p>A implementação do <a href="/pt-BR/docs/Web/JavaScript/ECMAScript_6_support_in_Mozilla" title="/en-US/docs/Web/JavaScript/ECMAScript_6_support_in_Mozilla">EcmaScript 6</a> (Harmony) continua!</p> -<ul> - <li>Implementados novos métodos <code>Array:</code> <a href="/pt-BR/docs/Web/JavaScript/Reference/Global_Objects/Array/entries" title="O método entries() retorna um novo objeto Array Iterator que contém os pares chave/valor para cada índice no array."><code>Array.prototype.entries()</code></a> e <a href="/pt-BR/docs/Web/JavaScript/Reference/Global_Objects/Array/keys" title="O método keys() retorna um novo Array Iterator que contém as chaves para cada index do array."><code>Array.prototype.keys()</code></a> (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=894658" title="FIXED: Implement ES6 Array.prototype.{keys, entries}">bug 894658</a>).</li> - <li>O <a href="http://wiki.ecmascript.org/doku.php?id=harmony:spread" title="http://wiki.ecmascript.org/doku.php?id=harmony:spread">operador spread</a> do Harmony agora é suportado em chamadas de função (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=762363" title="FIXED: implement the spread operator in calls">bug 762363</a>).</li> - <li>Implementada a função matemática <a href="/pt-BR/docs/Web/JavaScript/Reference/Global_Objects/Math/hypot" title="A função Math.hypot() retorna a raiz quadrada do somátorio do quadrado de seus parâmetros, ou seja"><code>Math.hypot()</code></a>(<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=896264" title="FIXED: Math.hypot returns NaN when only one argument is passed">bug 896264</a>).</li> - <li>Implementado o operador <code>yield*</code>(<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=666396" title="FIXED: implement yield* operator">bug 666396</a>).</li> - <li>Os objetos <code>MapIterator</code>, <code>SetIterator</code> e <code>ArrayIterator</code> agora estão de acordo com as especificações(<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=881226" title="FIXED: Change {Array, Map, Set} iterator methods to mach the latest spec">bug 881226</a>).</li> - <li>Loops <a href="/en-US/docs/Web/JavaScript/Reference/Statements/for...of">for..of</a> agora estão de acordo com o protocolo padrão <a href="/pt-BR/docs/Web/JavaScript/Guide/The_Iterator_protocol">iterator</a> ao invés do antigo protocolo iterator do SpiderMonkey usando <code>StopIteration</code>.</li> - <li><a href="/pt-BR/docs/Web/JavaScript/Reference/Global_Objects/String/match" title="O método match() recupera as correspondências ao testar uma string com uma expressão regular."><code>String.match</code></a> e <a href="/pt-BR/docs/Web/JavaScript/Reference/Global_Objects/String/replace" title="O método replace() retorna uma nova string com algum ou todas as combinações do padrão substituído por um substituto. O padrão pode ser uma string ou uma RegExp, e o substituto pode ser uma string ou uma função a ser chamada por cada combinação."><code>String.replace</code></a> agora reseta <a href="/pt-BR/docs/Web/JavaScript/Reference/Global_Objects/RegExp/lastIndex" title="The documentation about this has not yet been written; please consider contributing!"><code>RegExp.lastIndex</code></a> (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=501739" title="FIXED: String match and replace methods do not update global regexp lastIndex per ES3&5">bug 501739</a>).</li> -</ul> -<h2 id="DOMAPI">DOM/API</h2> -<p>Específico do Firefox</p> -<ul> - <li>Firefox OS agora suporta Multi-SIM (Dual-SIM-Dual-Standby or <a href="https://wiki.mozilla.org/FirefoxOS/DSDS">DSDS</a>). <a href="/en-US/docs/Web/API/Navigator.mozMobileConnection"><code>navigator.mozMobileConnection</code></a> tornando-se um conjunto de instâncias <a href="/en-US/docs/Web/API/MozMobileConnection">MozMobileConnection</a>, i.e. <code>navigator.mozMobileConnections</code>. O subconjunto de APIs privilegiadas podem ser usadas para detectar MCC (país) and MNC (operadora), como pode ser visto <a href="https://gist.github.com/digitarald/7829694">neste trecho de código</a>.</li> - <li><a href="/en-US/docs/WebAPI/Contacts">API de contatos</a> agora usa WebIDL (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=850430" title="FIXED: Contacts API: Use WebIDL">bug 850430</a>), com as alterações associadas: - <ul> - <li>Propriedades de data agora são manipuladas consistentemente ao longo do código que tratam dos Contatos..</li> - <li><span id="summary_alias_container"><span id="short_desc_nonedit_display"><code>mozContacts.remove</code> agora aceita um Identificador de contato (<code>contact ID</code>) para removê-lo.</span></span></li> - </ul> - </li> - <li>A <a href="https://wiki.mozilla.org/WebAPI/DataStore">API <code>DataStore</code></a> foi habilitada como defaul apenas em aplicativos certificados (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=967414" title="FIXED: [Datastore] navigator.getDataStores is undefined">bug 967414</a>), e suas permissões foram otimizadas <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=871445" title="FIXED: DataStore API">bug 871445</a>.</li> - <li><span id="summary_alias_container"><span id="short_desc_nonedit_display">A API <code>WebIccManager</code>, que dá suporte a múltipluos cartões SIM sofreu as seguintes alterações</span></span>: - <ul> - <li><code>iccChangeEvent</code> foi adicionada usando o gerador de evento. (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=814637" title="FIXED: WebIccManager API: support multiple sim cards">bug 814637</a>)</li> - </ul> - </li> - <li>NFC foi alterado: - <ul> - <li>Adicionados os <em>callbacks</em><code><code> </code>onpeerready</code> e <code>onpeerlost</code> (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=933136" title="FIXED: [Gecko] NFC onpeerready, onpeerlost callbacks">bug 933136</a>).</li> - <li>Adicionada nova interfaca — <code>checkP2PRegistration</code> — mais as intefaces '<em>ChromeOnly</em>' <code>eventListenerWasAdded</code> e <code>eventListenerWasRemoved</code>, para suportar casos de uso <em>PeerToPeer</em> básicos.</li> - <li>Adicionada novas interfaces ao MozNfcManager DOM <code>notifyUserAcceptedP2P</code> e <code>notifySendFileStatus</code> (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=959437" title="FIXED: Refactor NfcManager APIs and implementation details to support sendFile , notifyUserAcceptedP2P and other privileged Nfc operations">bug 959437</a>).</li> - <li>Adicionada interface <code>sendFile</code> a MozNFCPeer (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=933093" title="FIXED: [Gecko] Add Handover DOM API to NFC">bug 933093</a>).</li> - </ul> - </li> - <li>Implementada a API <code>SpeakerManager</code> que possibilita o uso do alto-falante do telefone para saída do rádio FM (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=854753" title="FIXED: [B2G][Audio] Implement SpeakerManager API">bug 854753</a>).</li> - <li>Adicionado <code>Notification.get()</code> à <a href="/en-US/docs/Web/API/notification">API Notification</a> para possibilitar um modo de conseguir objetos de notificação (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=899574" title="FIXED: Notification API follow-up: provide a way to get current Notification objects">bug 899574</a>).</li> -</ul> -<p>Gecko (Geral):</p> -<ul> - <li>Implementados os objetos <a href="/pt-BR/docs/Web/API/Navigator/onLine" title="The documentation about this has not yet been written; please consider contributing!"><code>navigator.onLine</code></a> e <a href="/pt-BR/docs/Web/API/Console" title="O objeto console fornece acesso ao console de debug do navegador (por exemplo, o Web Console do Firefox). O seu funcionamento específico varia de navegador para navegador, mas existe um conjunto de ferramentas que na prática são fornecidas normalmente."><code>console</code></a> em Web Workers (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=925437" title="FIXED: Implement WorkerNavigator.onLine">bug 925437</a> and <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=620935" title="FIXED: Make console object available in Web Workers">bug 620935</a>).</li> - <li>Implementados os componentes web <a href="http://w3c.github.io/webcomponents/spec/shadow/#shadowroot-object">ShadowRoot stylesheet behaviour</a> (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=929885" title="FIXED: Implement web components ShadowRoot style sheet behavior.">bug 929885</a>).</li> - <li>Implementado <a href="https://dvcs.w3.org/hg/pointerevents/raw-file/tip/pointerEvents.html">Pointer Events</a> (JavaScript) (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=822898" title="Implement pointer events">bug 822898</a>).</li> - <li>Adicionado o <em>parser</em> JavaScript <code>vtt.js</code> WebVTT no Gecko (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=895091" title="FIXED: [webvtt] Integrate vtt.js into Gecko">bug 895091</a>). Em uma nota relacionada, agora <code>TextTrack</code> chama <code>TrackEvents</code> (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=893309" title="FIXED: [webvtt] Change events dispatched by TextTrack to be TrackEvents">bug 893309</a>).</li> - <li>Agora <code>getUserMedia</code> tem a capacidade de compartilhar uma tab/tela/janela como um stream de vídeo (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=742832" title="FIXED: Add support for tab sharing for getUserMedia">bug 742832</a>).</li> - <li>Implementado <em>Shared workers</em> (veja <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=643325" title="FIXED: Review Web Workers draft and implement SharedWorkers">bug 643325</a>), mas desabilitado por padrão no Gecko 28 (configure <code>dom.workers.sharedWorkers.enabled</code> em <code>true</code> para habilitá-lo.) Else estão habilitados por padrão no Gecko 29 (see <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=924089" title="FIXED: Enable SharedWorker by default">bug 924089</a>).</li> - <li><span id="summary_alias_container"><span id="short_desc_nonedit_display">Adicionado WebIDL <code>enum</code> added para <code>AudioChannel</code> em <code>HTMLMediaElement</code></span></span> (see <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=925594" title="FIXED: WebIDL enum for AudioChannel in HTMLMediaElement">bug 925594</a>.)</li> - <li><span id="summary_alias_container"><span id="short_desc_nonedit_display"><code>HTMLVideoElement.canPlayType('video/webm')</code> agora reporta <code>maybe</code>.</span></span> (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=884275" title="FIXED: canPlayType('video/webm') should report 'maybe' instead of 'probably'">bug 884275</a>).</li> - <li>Implementado o método <a href="/pt-BR/docs/Web/API/DocumentFragment/getElementById" title="The documentation about this has not yet been written; please consider contributing!"><code>DocumentFragment.getElementById()</code></a>. Por exemplo: <code>document.createDocumentFragment().getElementById()</code> (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=933193" title="FIXED: add getElementById on DocumentFragment">bug 933193</a>).</li> - <li>Implementado o atributo <a href="/pt-BR/docs/Web/API/KeyboardEvent/repeat" title="The documentation about this has not yet been written; please consider contributing!"><code>KeyboardEvent.repeat</code></a> (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=600117" title="FIXED: Implement DOM3 KeyboardEvent.repeat">bug 600117</a>).</li> - <li>Implementado <a href="/pt-BR/docs/Web/API/File" title="A interface File provê informações sobre arquivos e permite ao JavaScript a acessar seu conteúdo."><code>File</code></a> constructor, e.g. <code>new File(["foo"], "foo.txt")</code>. (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=819900" title="FIXED: Please add a File constructor">bug 819900</a>).</li> - <li><a href="/pt-BR/docs/Web/API/NavigatorPlugins/plugins" title="The documentation about this has not yet been written; please consider contributing!"><code>navigator.plugins</code></a> não é mais enumerado por razões de privacidade (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=757726" title="disallow enumeration of navigator.plugins">bug 757726</a>).</li> - <li>Os dois atributos <a href="/pt-BR/docs/Web/API/Window/screenX" title="The documentation about this has not yet been written; please consider contributing!"><code>Window.screenX</code></a> e <a href="/pt-BR/docs/Web/API/Window/screenY" title="The documentation about this has not yet been written; please consider contributing!"><code>Window.screenY</code></a> agora retorna CSS <em>pixels</em> (e não mais <em>device</em> <em>pixels</em>) (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=943668" title="FIXED: window.screenX and .screenY return device pixels instead of CSS pixels">bug 943668</a>).</li> - <li>Implementados dois métodos:<a href="/pt-BR/docs/Web/API/CanvasRenderingContext2D/drawSystemFocusRing" title="The documentation about this has not yet been written; please consider contributing!"><code>CanvasRenderingContext2D.drawSystemFocusRing()</code></a> and <a href="/pt-BR/docs/Web/API/CanvasRenderingContext2D/drawCustomFocusRing" title="The documentation about this has not yet been written; please consider contributing!"><code>CanvasRenderingContext2D.drawCustomFocusRing()</code></a>. A preferência <code>canvas.focusring.enabled</code> deve ser configurado com <code>true</code> para ativar ambos (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=540456" title="FIXED: Support HTML5 canvas draw{Custom,System}FocusRing()">bug 540456</a>).</li> - <li>Adicionados os seguintes atributos em <a href="/pt-BR/docs/Web/API/NavigatorID" title="The NavigatorID interface contains methods and properties related to the identity of the browser."><code>NavigatorID</code></a>: <a href="/pt-BR/docs/Web/API/NavigatorID/appCodeName" title="The documentation about this has not yet been written; please consider contributing!"><code>appCodeName</code></a> e <a href="/pt-BR/docs/Web/API/NavigatorID/product" title="The documentation about this has not yet been written; please consider contributing!"><code>product</code></a> (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=925847" title="FIXED: WorkerNavigator does not implement all of NavigatorID">bug 925847</a>).</li> - <li>Adicionado suporte para os dois métodos <code>setRange()</code> na inteface <a href="/pt-BR/docs/Web/API/HTMLInputElement" title="The HTMLInputElement interface provides special properties and methods (beyond the regular HTMLElement interface it also has available to it by inheritance) for manipulating the layout and presentation of input elements."><code>HTMLInputElement</code></a> (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=850364" title="FIXED: Implement setRangeText(DOMString) in HTMLInputElement">bug 850364</a>).</li> - <li>Adicionado suporte para os dois métodos <code>setRange()</code> na interface <a href="/pt-BR/docs/Web/API/HTMLTextAreaElement" title="The documentation about this has not yet been written; please consider contributing!"><code>HTMLTextAreaElement</code></a> (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=918940" title="FIXED: Implement setRangeText(DOMString) for HTMLTextAreaElement">bug 918940</a>).</li> - <li>Adicionados os métodos <code>getAllKeys()</code> e <code>openKeyCursor()</code> em <a href="/pt-BR/docs/Web/API/IDBObjectStore" title="The documentation about this has not yet been written; please consider contributing!"><code>IDBObjectStore</code></a> (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=920633" title="FIXED: Add getAllKeys to IDBObjectStore">bug 920633</a> and <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=920800" title="FIXED: Add openKeyCursor to IDBObjectStore">bug 920800</a>).</li> - <li>Implementada a interface <a href="/pt-BR/docs/Web/API/HTMLFormControlsCollection" title="The documentation about this has not yet been written; please consider contributing!"><code>HTMLFormControlsCollection</code></a> (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=913920" title="FIXED: Implement HTMLFormControlsCollection">bug 913920</a>).</li> - <li>A interface <a href="/pt-BR/docs/Web/API/CanvasRenderingContext2D" title='Para obter um objeto desta interface, chama-se getContext() em um elemento &amp;lt;canvas>, adicionando "2d" como argumento, veja o exemplo abaixo:'><code>CanvasRenderingContext2D</code></a> agora suporta os dois métodos <code>getLineDash()</code> e <code>setLineDash()</code> (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=768067" title="FIXED: Implement canvasRenderingContext2D.get/setLineDash">bug 768067</a>).</li> - <li>Implementado o atributo <code>typeMustMatch</code> na interface <a href="/pt-BR/docs/Web/API/HTMLObjectElement" title="The documentation about this has not yet been written; please consider contributing!"><code>HTMLObjectElement</code></a> (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=827160" title="FIXED: Implement HTMLObjectElement.typeMustMatch">bug 827160</a>).</li> - <li>Adicionados os métodos <code>copyFromChannel()</code> e <code>copyToChannel()</code> em <a href="/pt-BR/docs/Web/API/AudioBuffer" title="The documentation about this has not yet been written; please consider contributing!"><code>AudioBuffer</code></a> (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=915524" title="FIXED: Implement AudioBuffer.copyFromChannel/copyToChannel">bug 915524</a>).</li> - <li><code>Event.isTrusted()</code> agora é infalsificável (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=637248" title="FIXED: Make Event.isTrusted Unforgeable">bug 637248</a>).</li> - <li>O método <a href="/pt-BR/docs/Web/API/Navigator/vibrate" title="The documentation about this has not yet been written; please consider contributing!"><code>Navigator.vibrate()</code></a> foi adaptado à especificação final: agora retorna <code>false</code> quando a lista é muito longa ou possui itens muito grandes ao invés de jogar fora (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=884935" title="FIXED: Align navigator.vibrate with the spec">bug 884935</a>).</li> - <li>Como parte do trabalho de padronizar objetos globias, os eventos de troca de interfaces <em>stylesheet</em> não-padronizados, incluindo<code> StyleRuleChangeEvent</code>, <code>StyleSheetApplicableStateChangeEvent</code> e <code>StyleSheetChangeEvent</code>, não estão mais disponíveis, os detalhes de implementação <a href="/pt-BR/docs/Web/API/CSSRuleList" title="The documentation about this has not yet been written; please consider contributing!"><code>CSSRuleList</code></a>, também foram removidos(<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=872934" title="FIXED: convert style sheet change event interfaces to Web IDL and stick [NoInterfaceObject] on them">bug 872934</a> and <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=916871" title="FIXED: Remove classinfo bits for CSSGroupRuleRuleList">bug 916871</a>).</li> - <li><code>atob</code> agora ignora espaços em branco (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=711180" title="FIXED: atob should ignore whitespace">bug 711180</a>).</li> - <li><a href="/en-US/docs/Web/WebGL">WebGL</a>: strings de extensão com prefixos <code>MOZ_</code> tornaram-se obsoletas. Suporte a elas será removido no futuro. Somente utilize strings de extensão sem o prefixo. Para extensões de rascunho, configure <code>webgl.enable-draft-extensions</code> (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=924176" title="FIXED: Warn on prefixed WebGL extensions usage (deprecated)">bug 924176</a>).</li> -</ul> -<h2 id="SVG">SVG</h2> -<p>Gecko (Geral):</p> -<ul> - <li>Implementado a mistura de elementos SVG usando a propriedade <a href="/pt-BR/docs/Web/CSS/mix-blend-mode" title="A propriedade mix-blend-mode descreve como um elemento de conteúdo deve ser mesclado com os elementos abaixo dele no background."><code>mix-blend-mode</code></a>. A preferência <code>layout.css.mix-blend-mode.enabled</code> deve ser configurada como <code>true</code> (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=902525" title="FIXED: Implement support for blending of SVG and HTML elements">bug 902525</a>).</li> -</ul> -<h2 id="ÁudioVídeo">Áudio/Vídeo</h2> -<ul> - <li><span id="summary_alias_container"><span id="short_desc_nonedit_display">Opus in WebM</span></span> agora é suportado (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=887978" title="FIXED: Turn WebVTT on by default on trunk.">bug 887978</a>).</li> - <li><span id="summary_alias_container"><span id="short_desc_nonedit_display">O decoder de vídeo VP9 agora é suportado </span></span>(<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=833023" title="FIXED: Implement VP9 video decoder in Firefox">bug 833023</a>).</li> -</ul> -<h2 id="Veja_também">Veja também</h2> -<ul> - <li><a href="http://www.mozilla.org/en-US/firefox/os/notes/1.3/">Firefox OS 1.3 Notes</a></li> -</ul> -<h2 id="Versões_antigas">Versões antigas</h2> -<p></p><div class="multiColumnList"> -<ul> -<li><a href="/en-US/docs/Mozilla/Firefox_OS/Releases/1.2">Firefox OS 1.2 for developers</a></li><li><a href="/en-US/docs/Mozilla/Firefox_OS/Releases/1.1">Firefox OS 1.1 for developers</a></li><li><a href="/en-US/docs/Mozilla/Firefox_OS/Releases/1.0.1">Firefox OS 1.0.1 for developers</a></li></ul> -</div><p></p> -<p>Compartilhe esse artigo: <a href="http://mzl.la/1fVuFWR">http://mzl.la/1fVuFWR</a></p> diff --git a/files/pt-br/archive/b2g_os/releases/2.0/index.html b/files/pt-br/archive/b2g_os/releases/2.0/index.html deleted file mode 100644 index f3242c2c34..0000000000 --- a/files/pt-br/archive/b2g_os/releases/2.0/index.html +++ /dev/null @@ -1,24 +0,0 @@ ---- -title: Firefox OS para desenvolvedores -slug: Archive/B2G_OS/Releases/2.0 -translation_of: Archive/B2G_OS/Releases/2.0 ---- -<p></p><div class="overheadIndicator draft"> - <p><strong>Rascunho</strong><br> - Esta página está incompleta.</p> - -</div><p></p> -<div class="summary"> - <p><strong>Firefox OS 2.0</strong> nesse momento ainda está no estágio de pré-lançamento. O seu componente Gecko <strong>é baseado no Firefox 32</strong> (veja <a href="/pt-BR/docs/Mozilla/Firefox/Releases/32" title="/en-US/docs/Mozilla/Firefox/Releases/28">Notas para desenvolvedores do Firefox 32</a>). Essa página detalha os novos recursos para desenvolvedores implementados no Firefox OS 2.0.</p> -</div> -<h2 id="Outros_conteúdos">Outros conteúdos</h2> -<p>A ser definido</p> -<h2 id="Veja_também">Veja também</h2> -<ul> - <li>Notas do Firefox OS 2.0 (o link será adicionado quando for publicado)</li> -</ul> -<h2 id="Versões_anteriores">Versões anteriores</h2> -<p></p><div class="multiColumnList"> -<ul> -<li><a href="/en-US/docs/Mozilla/Firefox_OS/Releases/2.0">Firefox OS 2.0 for developers</a></li><li><a href="/en-US/docs/Mozilla/Firefox_OS/Releases/1.4">Firefox OS 1.4 for developers</a></li><li><a href="/en-US/docs/Mozilla/Firefox_OS/Releases/1.3">Firefox OS 1.3 for developers</a></li><li><a href="/en-US/docs/Mozilla/Firefox_OS/Releases/1.2">Firefox OS 1.2 for developers</a></li><li><a href="/en-US/docs/Mozilla/Firefox_OS/Releases/1.1">Firefox OS 1.1 for developers</a></li><li><a href="/en-US/docs/Mozilla/Firefox_OS/Releases/1.0.1">Firefox OS 1.0.1 for developers</a></li></ul> -</div><p></p> diff --git a/files/pt-br/archive/b2g_os/releases/2.1/index.html b/files/pt-br/archive/b2g_os/releases/2.1/index.html deleted file mode 100644 index 8bdce4f409..0000000000 --- a/files/pt-br/archive/b2g_os/releases/2.1/index.html +++ /dev/null @@ -1,49 +0,0 @@ ---- -title: Firefox OS 2.1 para desenvolvedores -slug: Archive/B2G_OS/Releases/2.1 -tags: - - '2.1' - - B2G - - Firefox OS - - Notas de Release -translation_of: Archive/B2G_OS/Releases/2.1 ---- -<div class="summary"> -<p><span id="result_box" lang="pt"><span class="alt-edited">O componente Gecko do Firefox OS 2.1 é baseado no Firefox 33/34. Esta página detalha os recursos para desenvolvedores recentemente implementadas no Gecko que são específicos para o Firefox OS 2.1.</span></span></p> -</div> - -<div class="note"> -<p><span id="result_box" lang="pt"><strong><span class="hps">Nota:</span></strong> <span class="hps">Para características</span> <span class="hps">gerais</span> <span class="hps">do Gecko</span><span>, que estão geralmente</span> <span class="hps">também</span> <span class="hps">presentes no</span> <span class="hps">Firefox</span> <span class="hps">OS</span> <span class="hps">Gecko,</span> <span class="hps">consulte</span> <span class="hps">as <a href="/pt-BR/docs/Mozilla/Firefox/Releases/33">notas de lançamento do Firefox 33 para desenvolvedores</a></span><span class="hps"> e</span> <span class="hps">as <a href="/pt-BR/docs/Mozilla/Firefox/Releases/34">notas de versão para desenvolvedores Firefox 34</a></span>.</span></p> -</div> - -<h2 id="Mudanças_da_plataforma">Mudanças da plataforma</h2> - -<p>O Firefox OS costumava ter um "único app por origem" em sua política de segurança, mas esta foi elevada a partir do Firefox 34/Firefox OS 2.1 (leia <a href="https://developer.mozilla.org/pt-BR/Apps/Build/installable_apps_for_Firefox_OS/App_manifest_FAQ#Can_I_have_more_than_one_app_at_my_origin.3F">esta entrada FAQ</a> para mais informações). Caso você ainda precise de suporte para versões anteriores, considere <span class="short_text" id="result_box" lang="pt"><span class="hps">hospedar seus</span> <span class="hps">aplicativos</span> <span class="hps">em</span> <span class="hps">origens distintas</span></span>; uma estratégia é <a href="/en-US/Marketplace/Publishing/Adding_a_subdomain">criar diferentes subdomínios</a> para os seus apps.</p> - -<h2 id="Mudanças_no_Web_API">Mudanças no Web API</h2> - -<ul> - <li><span class="short_text" id="result_box" lang="pt"><span class="hps">Os</span> <span class="hps">manipuladores de eventos</span> <span class="hps">de emparelhamento</span> <span class="hps">do</span></span> <a href="/en-US/docs/WebAPI/WebBluetooth">Web Bluetooth API</a> — <a href="/pt-BR/docs/Web/API/BluetoothAdapter/ondevicepaired" title="The documentation about this has not yet been written; please consider contributing!"><code>BluetoothAdapter.ondevicepaired</code></a> e <a href="/pt-BR/docs/Web/API/BluetoothAdapter/ondeviceunpaired" title="The documentation about this has not yet been written; please consider contributing!"><code>BluetoothAdapter.ondeviceunpaired</code></a> — foram adicionados (veja <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1036234" title="FIXED: Implement pairing in BluetoothAdapter (event handlers)">bug 1036234</a>).</li> - <li><span class="short_text" id="result_box" lang="pt"><span class="hps">Métodos</span> <span class="hps">de emparelhamento</span> <span class="hps">atualizados no</span></span> <a href="/en-US/docs/WebAPI/WebBluetooth">Web Bluetooth API</a> foram adicionados (veja <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1036233" title="FIXED: Implement pairing in BluetoothAdapter (methods)">bug 1036233</a>): - <ul> - <li>Promise<void> <a href="/pt-BR/docs/Web/API/BluetoothAdapter/pair" title="The documentation about this has not yet been written; please consider contributing!"><code>BluetoothAdapter.pair</code></a>(DOMString aAddress)</li> - <li>Promise<void> <a href="/pt-BR/docs/Web/API/BluetoothAdapter/unpair" title="The documentation about this has not yet been written; please consider contributing!"><code>BluetoothAdapter.unpair</code></a>(DOMString aAddress)</li> - <li>sequence<BluetoothDevice> <a href="/pt-BR/docs/Web/API/BluetoothAdapter/getPairedDevices" title="The documentation about this has not yet been written; please consider contributing!"><code>BluetoothAdapter.getPairedDevices</code></a></li> - </ul> - </li> - <li>O suporte para o <a href="https://dvcs.w3.org/hg/speech-api/raw-file/tip/speechapi.html">Web Speech API</a> está pendente: um patch foi submetido (see <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1032964" title="[B2G][SpeechRTC][User Story]: Enabling Voice input in Firefox OS">bug 1032964</a>).</li> - <li><span class="author-g-41mtsa1hor7b107c i">O FileHandle API foi renomeado para MutableFile, e o LockedFile renomeado para FileHandle (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1006485" title="FIXED: FileHandle: Rename FileHandle to MutableFile and LockedFile to FileHandle">bug 1006485</a>).</span></li> -</ul> - -<h2 id="Veja_também">Veja também</h2> - -<ul> - <li>Notas do Firefox OS 2.1 (serão linkadas assim que forem publicadas.)</li> -</ul> - -<h2 id="Versões_anteriores">Versões anteriores</h2> - -<p></p><div class="multiColumnList"> -<ul> -<li><a href="/en-US/docs/Mozilla/Firefox_OS/Releases/2.0">Firefox OS 2.0 for developers</a></li><li><a href="/en-US/docs/Mozilla/Firefox_OS/Releases/1.4">Firefox OS 1.4 for developers</a></li><li><a href="/en-US/docs/Mozilla/Firefox_OS/Releases/1.3">Firefox OS 1.3 for developers</a></li><li><a href="/en-US/docs/Mozilla/Firefox_OS/Releases/1.2">Firefox OS 1.2 for developers</a></li><li><a href="/en-US/docs/Mozilla/Firefox_OS/Releases/1.1">Firefox OS 1.1 for developers</a></li><li><a href="/en-US/docs/Mozilla/Firefox_OS/Releases/1.0.1">Firefox OS 1.0.1 for developers</a></li></ul> -</div><p></p> diff --git a/files/pt-br/archive/b2g_os/releases/index.html b/files/pt-br/archive/b2g_os/releases/index.html deleted file mode 100644 index a4c4f463da..0000000000 --- a/files/pt-br/archive/b2g_os/releases/index.html +++ /dev/null @@ -1,20 +0,0 @@ ---- -title: Release Notes do Firefox OS -slug: Archive/B2G_OS/Releases -translation_of: Archive/B2G_OS/Releases ---- -<h2 id="Firefox_OS_release_notes_por_versão">Firefox OS <em>release notes</em> por versão</h2> -<p>Essa sessão fornece artigos que cobre cada nova versão do Gaia e Gecko para o Firefox OS, explicando as funcionalidades adicioinadas e <em>bugs</em> eliminados em cada atualização. Há também uma tabela resumo mostrando quais APIs são suportadas por cada versão do Firefox OS.</p> -<div class="multiColumnList"> - {{ListSubpages("",1,0,1)}}</div> -<h2 id="Outras_informações_de_suporte">Outras informações de suporte</h2> -<dl> - <dt> - <a href="/en-US/docs/Mozilla/Firefox_OS/API_support_table">Table de suporte das APIs Firefox OS</a></dt> - <dd> - Lista as diferentes APIs disponíveis e quais versões do Firefox possui suporte para elas.</dd> - <dt> - <a href="/en-US/docs/Web/Apps/App_permissions">Permissões de Aplicativos</a></dt> - <dd> - Lista as APIs hospedadas, privilegiadas e certificadas juntamente com informações sobre as permissões necessárias a ser definido no manifesto de seus aplicativos instaláveis, como o nome da permissão, tipo requerido, descrição, acesso, propriedade e permissão padrão.</dd> -</dl> diff --git a/files/pt-br/archive/b2g_os/screencast_series_colon__app_basics_for_firefox_os/index.html b/files/pt-br/archive/b2g_os/screencast_series_colon__app_basics_for_firefox_os/index.html deleted file mode 100644 index e9d7627295..0000000000 --- a/files/pt-br/archive/b2g_os/screencast_series_colon__app_basics_for_firefox_os/index.html +++ /dev/null @@ -1,219 +0,0 @@ ---- -title: 'Screencast series: App Basics for Firefox OS' -slug: 'Archive/B2G_OS/Screencast_series:_App_Basics_for_Firefox_OS' -translation_of: 'Archive/B2G_OS/Firefox_OS_apps/Screencast_series:_App_Basics_for_Firefox_OS' ---- -<div class="summary"> -<p><span class="seoSummary"><a href="http://www.mozilla.org/en-US/firefox/os/">Firefox OS</a> is an operating system that brings the Web to mobile devices. Instead of being a new OS with new technologies and development environments it builds on standardised web technologies that have been in use for years now. If you are a web developer and you want to build a mobile app, Firefox OS gives you the tools to do so, without having to change your workflow or learn a totally new development environment. In this collection of short videos, developers from Mozilla and Telenor met in Oslo, Norway to explain in a few steps how you can get started to build applications for Firefox OS.</span></p> -</div> - -<p>In this series you’ll learn:</p> - -<ul> - <li>How to build your first application for Firefox OS.</li> - <li>How to debug and test your application both on your desktop and a real device.</li> - <li>How to get it listed in the <a href="/en-US/Marketplace">Firefox Marketplace</a>.</li> - <li>How to use the APIs and special interfaces Firefox OS offers a JavaScript developer to take advantage of the hardware available in smartphones.</li> -</ul> - -<div class="note"> -<p><strong>Note</strong>: Each of the screencasts is short enough to get through in a short break; the whole series should not take more than an hour to watch.</p> -</div> - -<h2 id="Code_and_development_environment">Code and development environment</h2> - -<p>In addition to the screencasts, you can download the accompanying <a href="https://github.com/comoyo/fxos-video-script/">code samples from GitHub</a>. If you want to try the code examples out for yourself, you will need to set up a very simple development environment. All you need is:</p> - -<ul> - <li>A current version of <a href="https://www.mozilla.org/en-US/firefox/">Firefox</a>, which comes out of the box with the developer tools you need — we recommend getting <a href="http://www.mozilla.org/en-US/firefox/aurora/">Firefox Aurora</a> or <a href="https://nightly.mozilla.org/">Nightly</a> if you really want to play with the state-of-the-art technology.</li> - <li>A text editor — in the screencasts we used <a href="http://www.sublimetext.com/">Sublime Text</a>, but any will do. If you want to be really web native, you can try <a href="http://brackets.io/">Adobe Brackets</a>.</li> - <li>A local server or a server to push your demo files to. A few of the demo apps need HTTP connections instead of local ones.</li> -</ul> - -<h2 id="Introducing_the_series">Introducing the series</h2> - -<p>The series features <a href="http://twitter.com/janjongboom">Jan Jongboom (@janjongboom)</a> and <a href="http://twitter.com/sergimansilla">Sergi Mansilla (@sergimansilla)</a> of Telenor Digital, and <a href="http://twitter.com/codepo8">Chris Heilmann (@codepo8)</a> of Mozilla; it was shot in three days in Oslo, Norway at the Telenor head office in February 2014.</p> - -<p>Here are the three of us telling you about the series and what to expect:</p> - -<p>{{EmbedYouTube("bp87xaLI0h4")}}</p> - -<h2 id="Section_1_Building_your_first_Firefox_OS_app_and_getting_it_published">Section 1: Building your first Firefox OS app and getting it published</h2> - -<p>In Section 1's five screencasts we show you how to build a Firefox OS application, how to debug and test it on your computer — and on a real device, and how to get it listed in the <a href="https://marketplace.firefox.com/">Firefox Marketplace</a>. This may sound like a lot of work, but you will soon find out that if you already know how to build a website, you are 90% of the way there already.</p> - -<h3 id="More_than_a_website">More than a website</h3> - -<p>Firefox OS applications are HTML5 applications. In essence, these use the same technologies as websites do. You can start writing a website and turn it into an app simply by giving it a manifest file (see {{ anch("The app manifest") }} for more details). This tells Firefox OS that you are writing an app and allows you to:</p> - -<ul> - <li>List the app in the marketplace.</li> - <li>Get access to the hardware of the device it runs on, to gather information such as <a href="/en-US/docs/Web/API/Geolocation">Geolocation</a> and <a href="/en-US/Apps/Build/gather_and_modify_data/Keep_it_level_responding_to_device_orientation_changes">Device Orientation</a>.</li> - <li>Much more!</li> -</ul> - -<p>In essence, HTML5 applications are supercharged websites and should follow the same rules, such as:</p> - -<ul> - <li>Progressive enhancement: Test to see if what you want to use is really available before trying to access it.</li> - <li>Adapting to their environment: For example using <a href="/en-US/docs/Web/Guide/CSS/Media_queries">media queries</a> and <a href="/en-US/Apps/app_layout/responsive_design_building_blocks#Responsive_images.2Fvideo">responsive images</a> to optimize apps for different screen sizes, resolutions and available network speeds.</li> - <li>Using <a href="/en-US/docs/Web/HTML">HTML</a>, <a href="/en-US/docs/Web/CSS">CSS</a> and <a href="/en-US/docs/Web/JavaScript">JavaScript</a> as the core technologies.</li> -</ul> - -<p>The main difference is that for a web page to become a great application, you should very much consider mobile users. This means first and foremost that your application should:</p> - -<ul dir="ltr"> - <li><a href="/en-US/Apps/Build/Offline">Work offline</a>.</li> - <li>Allow your users to do one thing and have an interface that makes that easy.</li> - <li>Play nicely with the battery life, and processor speed.</li> -</ul> - -<p>In many cases, this means you need to slim your web page down a bit and simplify the interface. The good news is that all your users will benefit from that.</p> - -<p>{{EmbedYouTube("fBJmUreevRU")}}</p> - -<div class="note"> -<p><strong>Note</strong>: To find out more about how to design a good HTML5 App, check out the <a href="/en-US/Apps">App Center on MDN</a>.</p> -</div> - -<h3 id="The_app_manifest">The app manifest</h3> - -<p>The <a href="/en-US/Apps/Build/Manifest">App Manifest in Firefox OS</a> is a simple JSON file that tells the operating system about your app. In essence, this is what turns a web page into an <a href="https://developer.mozilla.org/en-US/Apps/Quickstart/Build/Intro_to_open_web_apps">Open Web App</a>. In it, you define the name in different locales and you ask the operating system to get access to various services and hardware. You can also define the preferred orientation of your app and — if needed — lock it.</p> - -<p>{{EmbedYouTube("txyux8RZrxY")}}</p> - -<p>More information about the manifest and tools that can help you:</p> - -<ul> - <li>The <a href="https://marketplace.firefox.com/developers/validator">Open Web Apps Manifest Validator</a> — also available as an <a href="http://firefox-marketplace-api.readthedocs.org/en/latest/">API</a>.</li> - <li>The <a href="/en-US/Apps/Build/Manifest">MDN documentation on the Open Web Apps Manifest</a> — includes information on how to serve a manifest from your own server.</li> -</ul> - -<h3 id="The_App_Manager">The App Manager</h3> - -<p>The simplest way to get started with Firefox OS is to try out the <a href="https://developer.mozilla.org/en-US/Firefox_OS/Using_the_App_Manager">App Manager</a>. This tool stands alongside the <a href="https://developer.mozilla.org/en-US/docs/Tools/">Firefox developer tools for desktop</a> and allows you to connect to a Firefox OS simulator running on your computer, or a real Firefox OS device if you have one available. From there, you can play with Firefox OS, install apps straight onto the simulator or real device, and debug them as they are running on Firefox OS — seeing the live changes immediately without needing to uninstall or update apps.</p> - -<p>The following video provides first steps with using the App Manager along with the simulator:</p> - -<p>{{EmbedYouTube("wiROpnExj-A")}}</p> - -<div class="note"> -<p><strong>Note</strong>: The App Manager allows you to debug your own applications even when you're offline, without any hassle.</p> -</div> - -<p>More information about the App Manager:</p> - -<ul> - <li>The <a href="https://developer.mozilla.org/en-US/Firefox_OS/Using_the_App_Manager">App Manager documentation on MDN.</a></li> - <li>Introductory <a href="https://hacks.mozilla.org/2013/10/introducing-the-firefox-os-app-manager/">blog post on Mozilla Hacks.</a></li> -</ul> - -<h3 id="Testing_on_a_Real_Device">Testing on a Real Device</h3> - -<p>Testing your applications in the simulator is nice, but it only gets you as far as a simulated environment can. If you want to test the performance of the app interaction, or react to things like device orientation, you need a real device. Together with the developer tools and the App Manager, you can use the device and get detailed insight into what happens to your application as you use it.</p> - -<p>{{EmbedYouTube("OIUQwqQMVZM")}}</p> - -<h3 id="Publishing_to_Marketplace">Publishing to Marketplace</h3> - -<p>The <a href="http://marketplace.firefox.com/">Firefox OS Marketplace</a> is the most convenient place to list your application and make it available to people on their devices and the Web. The Marketplace also allows you to list your app for other platforms like Firefox Desktop and Firefox for Android. You can also allow users to rate your app, give you feedback, and buy your application using a simple checkout process. Getting your app listed is simple:</p> - -<ul> - <li>Submit the marketplace URL to your manifest file.</li> - <li>Add a description of your app (which also helps people to find it amongst the many other available apps.)</li> - <li>Provide screenshots or videos to demonstrate your app's functionality.</li> - <li>Pick a category for your application.</li> - <li>Provide us with an email address to contact you on.</li> - <li>Provide end users with a link to your privacy policy and a support web site.</li> - <li>Provide a <a href="/en-US/Marketplace/Submission/Rating_Your_Content">content rating</a> for your application.</li> -</ul> - -<p>{{EmbedYouTube("gipaEJTM3TU")}}</p> - -<p>Applications submitted to the Marketplace are reviewed by Mozilla's app review team and you will be notified of the state of your submission within a few days. If there are issues with your application you will get a validation message during the submission but you might also get a human readable explanation of what is wrong and how to fix it.</p> - -<div class="note"> -<p><strong>Note</strong>: Read <a href="/en-US/Marketplace/Submission/Submitting_an_app">Submitting an application to the Firefox Marketplace</a> for more information about the submittion process.</p> -</div> - -<h2 id="Section_2_Advanced_Firefox_OS_topics">Section 2: Advanced Firefox OS topics</h2> - -<p>In the first few videos we introduced you to Firefox OS and how to build your first app. We also covered how to debug your application on desktop — and on a real device — and how to get your app listed in the Firefox Marketplace. In the remaining five videos we’ll deep-dive into the technologies that enable Firefox OS apps to go that extra mile and give you access to the functionality that makes developing for a smartphone or tablet interesting to developers. Whilst some of these technologies are currently only working in Firefox OS, they are all open source and submitting as standards proposals. Working with these APIs today will mean you are ready for other devices and platforms emerging in the near future.</p> - -<h3 id="Web_APIs">Web APIs</h3> - -<p>Smartphones are full of great technology — cameras, accelerometer, and GPS to name but a few. The problem was that all of these were not accessible by web technologies — if you wanted to access them, you needed to write native applications. To fix this, Mozilla and partners defined a set of APIs to allow developers to reach deep into the hardware of a mobile devices using JavaScript in a secure manner. These are called <a href="https://wiki.mozilla.org/WebAPI">Web APIs</a> and are defined in the open and available for others to implement. Firefox OS is the first platform that uses them; the below screencast explains more:</p> - -<p>{{EmbedYouTube("p0DWpWNTd7w")}}</p> - -<p>More information about Web APIs:</p> - -<ul> - <li>The <a href="https://wiki.mozilla.org/WebAPI">Wiki Page describing the ongoing work and state of implementation</a> — also includes links to standards they are based on.</li> - <li><a href="https://hacks.mozilla.org/category/webapi/">Posts on Mozilla Hacks</a> dealing with the subject of WebAPIs.</li> -</ul> - -<h3 id="Web_Activities">Web Activities</h3> - -<p><a href="https://wiki.mozilla.org/WebAPI/WebActivities">Web Activities</a> are an alternative way to access the hardware of a device. Instead of getting an API to speak to the device directly, Web Activities allow you to create an ecosystem of applications on the device that talk to each other and share capabilities. For example, instead of trying to access the camera directly, your app can use a Web Activity to ask for an image and the user of the device can use their favourite application to take a photo, which is then returned to the app that requested it.</p> - -<p>Instead of asking the users for access to their hardware (which is important in terms of security), you allow them to use applications they already trust to carry out such functions. Furthermore, you can register your application as the go-to application for certain tasks in the operating system. You can think of Web Activities as being equivalent to right/Ctrl + clicking on a file in a Desktop OS and choosing which application to open the file with. You are given several choices, plus on option to tell the OS to always use this app to open this file type from now on.</p> - -<p>Web Activities allow apps to talk to each other — on the device, without any need for a server in between. All they transmit from one app to the other is the final data.</p> - -<p>{{EmbedYouTube("CQODL9AGKv0")}}</p> - -<p>More information about Web Actitivies:</p> - -<ul> - <li>The <a href="https://wiki.mozilla.org/WebAPI/WebActivities">Web Activities Wiki Page</a></li> - <li><a href="/en-US/docs/WebAPI/Web_Activities">Web activities reference on MDN</a></li> - <li>An <a href="https://hacks.mozilla.org/2013/01/introducing-web-activities/">Introduction to Web Activities</a> on Mozilla Hacks</li> -</ul> - -<h3 id="Push_Notifications">Push Notifications</h3> - -<p>Push Notifications — invoked using the <a href="https://wiki.mozilla.org/WebAPI/SimplePush">SimplePush Web API</a> — are a way to make applications wake up when a device receives a certain message. This allows you to build applications that can stay closed — thus saving battery — until they are needed. Notifications created this way also have the benefit of carrying no data, thus Mozilla will never get the information of your app and attackers won't be able to listen in.</p> - -<p>{{EmbedYouTube("qpgNIsJ2pg4")}}</p> - -<p>More information about Push Notifcations using SimplePush:</p> - -<ul> - <li>The <a href="https://wiki.mozilla.org/WebAPI/SimplePush">SimplePush Wiki Page </a></li> - <li><a href="/en-US/docs/WebAPI/Simple_Push">Simple Push guide on MDN</a></li> - <li>An<a href="https://hacks.mozilla.org/2013/07/dont-miss-out-on-the-real-time-fun-use-firefox-os-push-notifications/"> introduction to SimplePush</a> on Mozilla Hacks</li> -</ul> - -<h3 id="Offline_functionality">Offline functionality</h3> - -<p>Apps are not much use if they don't work offline. That's partly why users prefer installed apps to just opening a browser and looking for content on their device's web browser; the term "web application" even sounds like it needs a web connection to be usable. Our users <strong>will</strong> be offline sometimes — on a plane, underground or with no data left on their SIM — and we need to ensure that our apps are still usable when this happens. HTML5 offers a few technologies that allow for offline functionality, mainly <a href="https://developer.mozilla.org/en-US/docs/HTML/Using_the_application_cache">AppCache</a> and <a href="https://developer.mozilla.org/en-US/docs/Web/Guide/API/DOM/Storage">DOMStorage</a>.</p> - -<p>{{EmbedYouTube("dnuoUM_bIQM")}}</p> - -<p>More information about offline functionality:</p> - -<ul> - <li>The <a href="https://developer.mozilla.org/en-US/docs/Web/Guide/API/DOM/Storage">DOMStorage Wiki page</a>.</li> - <li>The <a href="https://developer.mozilla.org/en-US/docs/HTML/Using_the_application_cache">AppCache Wiki page</a>.</li> - <li><a href="https://developer.mozilla.org/en-US/docs/IndexedDB/Using_IndexedDB">Using IndexedDB</a> — for advanced storage on the client.</li> - <li><a href="https://github.com/mozilla/localForage">LocalForage</a> is a wrapper used in Firefox OS to provide the simplicity of DOMStorage along with the power of IndexedDB (explained in detail in <a href="https://hacks.mozilla.org/2014/02/localforage-offline-storage-improved/">this Mozilla Hacks post</a>.)</li> -</ul> - -<h2 id="Where_to_find_more">Where to find more</h2> - -<p>We hope that this video series gave you a clear introduction to building your first open web apps. If you are interested in learning more, there are a few resources and channels you can use:</p> - -<p>{{EmbedYouTube("Z2yVFXEYnnc")}}</p> - -<ul> - <li>The <a href="https://developer.mozilla.org/en-US/docs/Apps/">MDN App Center</a> features information on how to design and build good open web apps.</li> - <li>The <a href="/en-US/Marketplace">MDN Marketplace zone</a> contains detailed instructions how to get your app listed in the Firefox Marketplace, different publishing options, and handling payments.</li> - <li>The <a href="https://hacks.mozilla.org">Hacks Blog</a> features weekly articles on Firefox OS apps (featuring Mozilla staff and third party developers like you), and cutting edge technologies — this is a great place to get an insight into what will come in the next versions of Firefox and Firefox OS.</li> - <li>The <a href="/en-US/Firefox_OS">MDN Firefox OS zone</a> and <a href="https://wiki.mozilla.org/B2G">B2G Wiki</a> have in-depth information about the Firefox OS operating system.</li> - <li>We are on IRC a lot — simply use <a href="http://irc.mozilla.org">irc.mozilla.org</a> and find us in #devrel, #b2g, #openwebapps or #marketplace.</li> -</ul> - -<p>Hope to see you there,</p> - -<p>Chris, Sergi and Jan</p> diff --git a/files/pt-br/archive/b2g_os/security/index.html b/files/pt-br/archive/b2g_os/security/index.html deleted file mode 100644 index 381696bef1..0000000000 --- a/files/pt-br/archive/b2g_os/security/index.html +++ /dev/null @@ -1,67 +0,0 @@ ---- -title: Segurança -slug: Archive/B2G_OS/Security -tags: - - B2G - - Firefox OS - - Mobile - - Security -translation_of: Archive/B2G_OS/Security ---- -<p>Os artigos a seguir cobrem tópicos relacionados com a segurança do Firefox OS. Isso inclui todos os recursos de segurança, bem como segurança da aplicação e como o processo de instalação é seguro.</p> -<table class="topicpage-table"> - <tbody> - <tr> - <td> - <h2 class="Documentation" id="Documentation" name="Documentation">Documentação sobre a segurança do Firefox OS</h2> - <dl> - <dt> - <a href="/pt-BR/docs/Mozilla/Firefox_OS/Security/Security_model" title="/en-US/docs/Mozilla/Firefox_OS/Security/Security_model">O modelo de segurança do Firefox OS</a></dt> - <dd> - Uma visão geral sobre o modelo de segurança do Firefox OS.</dd> - <dt> - <a href="/en-US/docs/Mozilla/Firefox_OS/Security/System_security" title="/en-US/docs/Mozilla/Firefox_OS/Security/Security_model">Segurança do sistema</a></dt> - <dd> - Detalha os controles de segurança criados no ambiente de execução do Firefox OS.</dd> - <dt> - <a href="/en-US/docs/Mozilla/Firefox_OS/Security/Application_security" title="/en-US/docs/Mozilla/Firefox_OS/Security/Application_security">Segurança das aplicações no Firefox OS</a></dt> - <dd> - Uma visão geral de como as aplicações são seguras no Firefox OS.</dd> - <dt> - <a href="/en-US/docs/Mozilla/Firefox_OS/Security/Installing_and_updating_applications" title="/en-US/docs/Mozilla/Firefox_OS/Security/Installing_and_updating_applications">Segurança para instalar e atualizar aplicações</a></dt> - <dd> - Como funciona a segurança do Firefox OS para instalar e atualizar aplicações.</dd> - <dt> - <a href="/en-US/docs/Mozilla/Firefox_OS/Security/Software_permissions" title="/en-US/docs/Mozilla/Firefox_OS/Security/Software_permissions">Permissões de software no Firefox OS</a></dt> - <dd> - Um guia para saber que tipo de software tem permissão para executar várias tarefas no Firefox OS.</dd> - <dt> - <a href="https://developer.mozilla.org/en-US/docs/Mozilla/Firefox_OS/Debugging_and_Security_Testing_with_Firefox_OS" title="https://developer.mozilla.org/en-US/docs/Mozilla/Firefox_OS/Debugging_and_Security_Testing_with_Firefox_OS"><span style="display: none;"> </span>Depurando e testando a segurança com o Firefox OS</a></dt> - <dd> - Esse guia mostra os passos básicos de teste de segurança, abrindo um depurador remoto de JavaScript para configuração de um proxy de interceptação HTTP(S) através de uma versão desktop do Firefox OS.</dd> - </dl> - <p><span class="alllinks"><a href="/en-US/docs/tag/B2G" title="/en-US/docs/tag/B2G">Veja mais...</a></span></p> - </td> - <td> - <h2 class="Community" id="Community" name="Community"><span style="line-height: 1;">OBTENDO AJUDA DA COMUNIDADE</span></h2> - <p><span style="line-height: 21px;">Se você está trabalhando com Firefox OS, ou desenvolvendo aplicações que gostaria de rodar em dispositivos com Firefox OS, aqui estão alguns recursos da comunidade para te ajudar!</span></p> - <ul> - <li>Consultar o fórum do projeto Boot to Gecko: {{ DiscussionList("dev-b2g", "mozilla.dev.b2g") }}</li> - </ul> - <ul> - <li>Faça sua pergunta no canal IRC da Mozilla - Boot to Gecko: <a class="link-irc" href="irc://irc.mozilla.org/b2g" title="irc://irc.mozilla.org/b2g">#b2g</a></li> - </ul> - <p><span class="alllinks"><a class="external" href="http://www.catb.org/~esr/faqs/smart-questions.html" title="http://www.catb.org/~esr/faqs/smart-questions.html">Não esqueça do uso da <em>netiqueta</em>...</a></span></p> - <br> - <h2 class="Related_Topics" id="Related_Topics" name="Related_Topics"><span style="line-height: 1;">TÓPICOS RELACIONADOS</span></h2> - <ul> - <li><a href="/pt-BR/docs/Mobile" title="en-US/docs/Mobile">Móvel (mobile)</a></li> - <li><a href="/pt-BR/docs/Security" title="/en-US/docs/Security">Segurança</a></li> - </ul> - </td> - </tr> - </tbody> -</table> -<p> </p> -<div id="cke_pastebin" style="position: absolute; top: 483px; width: 1px; height: 1px; overflow: hidden; left: -1000px;"> - </div> diff --git a/files/pt-br/archive/b2g_os/security/installing_and_updating_applications/index.html b/files/pt-br/archive/b2g_os/security/installing_and_updating_applications/index.html deleted file mode 100644 index 7c1102d699..0000000000 --- a/files/pt-br/archive/b2g_os/security/installing_and_updating_applications/index.html +++ /dev/null @@ -1,94 +0,0 @@ ---- -title: Instalando e atualizando aplicativos -slug: Archive/B2G_OS/Security/Installing_and_updating_applications -tags: - - Apps - - Atualização - - B2G - - Experiência do usuário - - Firefox OS - - Guía - - Instalação - - Princípios de design - - UX - - User experience -translation_of: Archive/B2G_OS/Security/Installing_and_updating_applications ---- -<div class="summary"> -<p>Este artigo serve como um guia para o processo de atualização do aplicativo no Firefox OS.</p> -</div> - -<h2 id="Visão_Geral_da_Implementação">Visão Geral da Implementação</h2> - -<h3 id="Categorias_de_App">Categorias de App</h3> - -<p>Existem três categorias básicas de aplicativos que são atualizadas utilizando esse mecanismo:</p> - -<dl> - <dt>Aplicativos principais</dt> - <dd>Os aplicativos básicos (aqueles que são enviados como parte da base do Firefox OS, como o Dialer) são empacotados, certificados, pré-instalados, e não removíveis. Estes só são atualizados durante uma atualização completa do sistema ou uma atualização dos níveis Gonk e Gaia.</dd> - <dt>Aplicativos instalados pelo usuário</dt> - <dd>Os aplicativos instalados pelo usuário são <span style="line-height: 19.0909080505371px;">hospedados ou </span>empacotados. A política de atualização deles é o tema principal deste artigo.</dd> - <dt>Aplicativos pré-instalados de terceiros</dt> - <dd>Aplicativos que são pré-instalados pelo transportador ou pelo fornecedor, mas não fazem parte da plataforma de núcleo do sistema operacional, são atualizados e estão sujeitos às mesmas regras e diretrizes dos aplicativos instalados pelo usuário.</dd> -</dl> - -<h3 id="Suposições_sobre_os_usuários">Suposições sobre os usuários</h3> - -<p>Para pelo menos as versões iniciais do Firefox OS, as seguintes suposições são feitas sobre os usuários:</p> - -<ul> - <li>A transferência de dados é lenta, cara, e intencionalmente restrita; em outras palavras, assumimos que o usuário tenha uma conexão de dados lenta e uma quantidade limitada de tráfego permitida mensalmente.</li> - <li>Assumimos que o usuário tenha pouco ou nenhum acesso ao WiFi; a maioria das atualizações será realizada utilizando sua conexão de dados do celular.</li> - <li>Os dispositivos estão raramente em roaming.</li> - <li>Usuários mantêm seu serviço de dados desativado por padrão, permitindo-o apenas a concluir determinadas transações.</li> - <li><span class="short_text" id="result_box" lang="pt"><span class="hps">Usuários</span> possuem<span class="hps"> e usam</span> <span class="hps">múltiplos</span> <span class="hps">cartões SIM.</span></span></li> -</ul> - -<p><span id="result_box" lang="pt"><span class="alt-edited">Estas são as condições de uso comuns em muitos países, por isso é importante considerar estas suposições. Nosso objetivo é tentar otimizar a experiência de atualização para as pessoas nas quais ela se aplica. Estes pressupostos em geral não irão impactar negativamente os usuários que têm acesso barato a um WiFi rápido.</span></span></p> - -<h3 id="Parâmetros_técnicos_de_design"><span class="short_text" id="result_box" lang="pt"><span class="alt-edited">Parâmetros técnicos de design</span></span></h3> - -<p><span id="result_box" lang="pt"><span class="hps">Esta seção aborda</span> <span class="hps">alguns princípios</span> <span class="hps">de design para</span> <span class="hps">a implementação de</span> <span class="hps">atualizações de aplicativos</span> <span class="hps">do Firefox</span> <span class="hps">OS</span><span>:</span></span></p> - -<ul> - <li>Por enquanto o dispositivo irá pesquisar periodicamente o mercado para atualizações; mais tarde iremos avaliar a possibilidade de atualizações automáticas.</li> - <li>O mercado vai saber a versão atual de cada app.</li> - <li>As atualizações podem ser baixadas e instaladas enquanto a versão atual do aplicativo é aberta com um risco baixo de que isto quebrará o aplicativo em execução no momento.</li> -</ul> - -<h3 id="Considerações_aos_desenvolvedores">Considerações aos desenvolvedores</h3> - -<p>Existem algumas considerações importantes para os desenvolvedores, no que diz respeito ao modelo de atualização do aplicativo:</p> - -<ul> - <li>Os desenvolvedores da Web estão acostumados com usuários que estão sempre utilizando a última versão de seus sites; a manutenção de aplicativos atualizados emula este modelo.</li> - <li>A segurança também é melhorada quando o máximo possível de usuários são mantidos atualizados.</li> -</ul> - -<h2 id="Experiência_do_usuário">Experiência do usuário</h2> - -<h3 id="Princípios_de_design">Princípios de design</h3> - -<p><span id="result_box" lang="pt"><span class="alt-edited">Afim de oferecer a melhor experiência de usuário possível durante a atualização do aplicativo, alguns princípios fundamentais serão mantidos em mente:</span></span></p> - -<ul> - <li>As atualizações devem minimizar o impacto para o usuário; não interrompa o usuário além do necessário, não afete negativamente a sua velocidade de conexão, e assim por diante.</li> - <li><span class="short_text" id="result_box" lang="pt"><span class="alt-edited">Não cobre nenhuma taxa do usuário para atualizar seus apps.</span></span></li> - <li><span id="result_box" lang="pt"><span class="alt-edited">Minimize as consequências de atualizações que falharam.</span></span></li> - <li><span id="result_box" lang="pt"><span class="alt-edited">Apoie a compatibilidade para os usuários que não podem atualizar seus apps, ou não são capazes de atualizá-los com freqüência.</span></span></li> - <li><span id="result_box" lang="pt"><span class="alt-edited">Evite apresentar detalhes técnicos desnecessários aos usuários.</span></span></li> -</ul> - -<h3 id="Tipos_de_atualizações">Tipos de atualizações</h3> - -<p>Existem três tipos básicos de atualizações:</p> - -<dl> - <dt>Manual: individual</dt> - <dd> Uma única atualização de aplicativo iniciada pelo usuário.</dd> - <dt>Manual: batch</dt> - <dd>Múltiplas atualizações de aplicativos iniciadas pelo usuário de uma única vez. </dd> - <dt>Silent</dt> - <dd>Atualização automática de fundo.</dd> -</dl> diff --git a/files/pt-br/archive/b2g_os/security/modelo_de_seguranca/index.html b/files/pt-br/archive/b2g_os/security/modelo_de_seguranca/index.html deleted file mode 100644 index a5ae858791..0000000000 --- a/files/pt-br/archive/b2g_os/security/modelo_de_seguranca/index.html +++ /dev/null @@ -1,275 +0,0 @@ ---- -title: Visão geral sobre segurança -slug: Archive/B2G_OS/Security/modelo_de_seguranca -translation_of: Archive/B2G_OS/Security/Security_model ---- -<h1 id="Introdução">Introdução</h1> -<p><span class="seoSummary">Este documento apresenta uma visão geral sobre o framework de segurança do Mozilla Firefox OS, desenhado para proteger dispositivos móveis das ameaças para a plataforma, aplicativos e dados pessoais. No Firefox OS a fundação Mozilla implementou uma arquitetura de segurança abrangente, integrada, de várias camadas que traz maior segurança aos usuários dos dispositivos móveis.</span></p> -<h1 id="Segurança_da_plataforma">Segurança da plataforma</h1> -<p>A plataforma de segurança do Firefox OS é baseada num modelo multi-camada, desenhada para mitigar os riscos de exploração de falhas em todos os níveis. As medidas de combate da linha de frente é combinada com uma forte estratégia que provê uma proteção abrangente para qualquer ameaça.</p> -<h2 id="Arquitetura_segura">Arquitetura segura</h2> -<p>O Firefox OS conecta as aplicações web através ao hardware subjacente. É um conjunto de tecnologias integradas que consiste nos seguintes níveis:</p> -<p><img alt="" src="https://mdn.mozillademos.org/files/5023/platform.png" style="width: 678px; height: 478px;"></p> -<ul> - <li>Gaia: A suite de aplicações web que melhora a Experiência do Usuário (aplicações consiste-se de HTML5, CSS, JavaScript, imagens, mídias e etc.).</li> - <li>Gecko: A camada de aplicação que fornece o framework para a execução dos aplicativos e implementa as Web APIs utilizadas para acessar os recursos do dispositivo móvel.</li> - <li>Gonk: O camada do kernel do Linux, bibliotecas do sistema, firmware e drivers do dispositivo sobre o qual todo o resto é executado.</li> - <li>O dispositivo móvel: O celular executando o Firefox OS.</li> -</ul> -<p>Gecko é o guardião da plataforma que aplica políticas de segurança destinadas a proteger o dispositivo móvel do uso indevido. A camada do Gecko atua como um intermediário entre os aplicativos web (na camada Gaia) e o telefone. Gonk oferece recursos de hardware do telefone celular diretamente para a camada Gecko. Os aplicativos Web acessam as funcionalidades do celular apenas através das Web APIs e somente se o Gecko permitir a requisição de acesso — não há acesso direto, nem “back door” no telefone. Gecko exige permissões e impede o acesso a solicitações não autorizadas.</p> -<h3 id="Implantação_de_um_sistema_seguro">Implantação de um sistema seguro</h3> -<p>Firefox OS vem instalado no smartphone. A imagem original do sistema é criada por uma fonte conhecida e confiável — normalmente um fabricante por OEM — que é responsável pela montagem, compilação, teste e assinar digitalmente o pacote de distribuição.</p> -<p>As medidas de segurança são usadas através de um <em>stack</em> tecnológico. Privilégios de acesso ao sistema de arquivo são aplicadas por listas de controle de acesso do Linux (ACLs). Aplicativos do sistema são instalados em um volume com privilégio apenas de leitura (exceto durante as atualizações quando temporariamente é permitido a gravação), geralmente somente áreas com conteúdo do usuário podem ter privilégio de escrita. Vários componentes no hardware do dispositivo possui proteções internas que são implementadas com práticas padrão da indústria — fabricantes de chipset manufacturers, por exemplo, empregam técnicas de <em>hardening</em> para reduzir vulnerabilidades. e fortalecer a defesa contra ameaças potenciais na plataforma central (Gecko e Gonk) e recursos de hardening do compilador são usados quando aplicável. Para maiores detalhes veja <a href="https://developer.mozilla.org/pt-BR/Firefox_OS/Security/System_security" title="/en-US/docs/Mozilla/Firefox_OS/Security/Runtime_security">Segurança do sistema</a>.</p> -<h3 id="Atualização_segura_do_sistema">Atualização segura do sistema</h3> -<p>Atualizações e patches subsequentes da plataforma Firefox OS são instaladas usando um processo seguro da Mozilla que garante a integridade da imagem do sistema. A atualização é criada por uma fonte conhecida e confiável — normalmente o fabricante do dispositivo — que é responsável por montar, compilar, testar e assinar digitalmente o pacote de atualização.</p> -<p>As atualizações do sistema envolve toda ou uma parte do <em>stack</em> do Firefox OS. Se alterações no Gonk são incluídas na atualização, é utilizado o processo de instalação FOTA (Firmware Over the Air). Atualizações FOTA também incluem qualquer outra parte do stack do Firefox OS, incluindo o gerenciamento do dispositivo (FOTA, firmware e drivers), gerencialmento das configurações (configuração Firefox OS), atualizações de segurança, Gaia, Gecko e outros <em>patches</em>.</p> -<p>Atualizações que não envolvem o Gonk podem ser feitas utilizando o Utilitário de atualização do sistema da Mozilla. Firefox OS usa o mesmo framework de atualização, processos e o formato MAR (Mozilla ARchive) que o produto Firefox Desktop.</p> -<p>Um serviço de atualização instalado no próprio dispositivo — que pode ser fornecido pelo OEM — verifica se há atualizações do sistema disponíveis. Uma vez disponível é solicitada uma confirmação do usuário para instalá-la. Antes, é verificado se há espaço suficiente além de alguns detalhes da distribuição:</p> -<ul> - <li>Origem da atualização (verifica o protocolo de localização da origem:domínio:porta da atualização do sistema e manifesto)</li> - <li>Integridade do arquivo (SHA-256 hash check)</li> - <li>Assinatura do código (verificação do certificado contra uma raiz confiável)</li> -</ul> -<p>As seguintes medidas de segurança são usadas durante o processo de atualização:</p> -<ul> - <li>A Mozilla recomenda e espera que as atualizações sejam baixadas através de uma conexão SSL.</li> - <li>Uma verificação criptográfica forte é necessária antes de instalar um pacote de firmware.</li> - <li>A atualização completa deve ser baixada de um site específico e seguro ante do processo ser iniciado.</li> - <li>O sistema deve estar em um estado seguro quando a atualização iniciar, sem nenum aplicativo sendo executado.</li> - <li>As chaves devem ser armazenadas em um local seguro do dispositivo.</li> -</ul> -<p>Controles rigorosos, estão presentes para garantir que a atualização seja aplicada corretamente no dispositivo.</p> -<div class="note"> - <p><strong>Nota</strong>: Para maiores informações sobre como as atualizações funcionam e como criar e distribuir as atualizações, leia <a href="https://developer.mozilla.org/pt-BR/Firefox_OS/Construindo_e_instalando_o_Firefox_OS/Criando_e_aplicando_pacotes_de_atualizacao_Firefox_OS">Criando e aplicando pacotes de atualização do Firefox OS.</a></p> -</div> -<h2 id="Segurança_do_Aplicativo">Segurança do Aplicativo</h2> -<p>Firefox OS usa uma estratégia de defesa chamada <em>defense-in-depth</em> para proteger o dispositivo de aplicações intrusivas ou maliciosas. Essa estratégia emprega uma variedade de mecanismos, incluindo níveis de permissionamento implícito baseado em modelo de aplicativo do confiança, execução em sandbox em tempo de execução, acesso ao hardware apenas através de APIs, modelo robusto de permissionamento e um processo seguro de instalação e atualização. Para detalhes técnicos veja <a href="https://developer.mozilla.org/pt-BR/docs/Mozilla/Firefox_OS/Security/Application_security" title="/en-US/docs/Mozilla/Firefox_OS/Security/Application_security">Segurança da aplicação.</a></p> -<p>No Firefox OS, todos os aplicativos são aplicativos web — programas escritos usando HTML5, JavaScript, CSS, mídias e outras tecnologias abertas (páginas que funcionam dentro do navegador não são referidos como aplicativos web neste contexto). Devido ao fato de não haver arquivos binários (nativos) instalados pelo usuário, todo o acesso ao sistema é mediado estritamente através de Web APIs. Mesmo o acesso ao sistema de arquivos é feito através das Web APIs e um banco de dados SQLite no back-end — não há acesso direto dos aplicativos aos arquivos armazenados no cartão de memória externo.</p> -<p>O Firefox OS limita e reforça o escopo dos recursos que podem ser acessados e utilizados por um aplicativo, enquanto também suporta um grande número de aplicativos com diferentes níveis de permissões. A Mozilla implementou um rígido controle sobre quais aplicativos podem acessar quais APIs. Por exemplo, somente aplicativos certificados (fornecidos com o telefone) pode acessar a API de telefonia. O aplicativo discador tem privilégios para poder acessar a API de telefonia, mas nem todos os outros aplicativos certificados podem acessar essa API.</p> -<p>Isso evita uma situação, por exemplo, no qual um aplicativo de terceiros possa acessar o discador e chamar indiscriminadamente um telefone qualquer.</p> -<p>Outro aplicativo OEM pode ser selecionado para ter acesso à API de telefoina. Por exemplo, um operador pode fornecer uma aplicação de gerenciamento que permite ao usuário verificar sua conta, incluindo a possibilidade de realizar uma chamada telefônica diretamente.</p> -<h3 id="Aplicativos_confiáveis_e_não_confiáveis">Aplicativos confiáveis e não confiáveis</h3> -<p>Firefox OS categoriza os aplicativos de acordo com os seguintes tipos:</p> -<table> - <thead> - <tr> - <th style="width: 82px;"> - <p>Tipo</p> - </th> - <th style="width: 102px;"> - <p>Nível de confiança</p> - </th> - <th style="width: 447px;"> - <p>Descrição</p> - </th> - </tr> - </thead> - <tbody> - <tr> - <td style="width: 82px;"> - <p>Certificado</p> - </td> - <td style="width: 102px;"> - <p>Altamente confiável</p> - </td> - <td style="width: 447px;"> - <p>Aplicativos do sistema que devem ser aprovados pela Operadora ou OEM (devido ao risco de corromper o dispositivo ou causar um dano crítico de alguma funcionalidade). Somente para aplicativos ou serviços do sistema, não destinado a aplicações de terceiros.<br> - Essa classificação é reservada apenas para um pequeno número de aplicações críticas. Por exemplo: SMS, Bluetooth, câmera, relógio do sistema, telefonia e o discador padrão (para garantir que os serviços de emergência estejam sempre acessíveis).</p> - </td> - </tr> - <tr> - <td style="width: 82px;"> - <p>Privilegiado</p> - </td> - <td style="width: 102px;"> - <p>Confiável</p> - </td> - <td style="width: 447px;"> - <p>Aplicativos de terceiros devem ser revisados, aprovados e digitalmente assinados para serem autorizados dentro do Marketplace.</p> - </td> - </tr> - <tr> - <td style="width: 82px;"> - <p>Web (todo o resto)</p> - </td> - <td style="width: 102px;"> - <p>Não confiável</p> - </td> - <td style="width: 447px;"> - <p>Conteúdo normal da web. Inclui os aplicativos instalados (armazenados no telefone) e aplicativos hospedados (armazendos remotamente, com somente um manifesto armazenado no telefone). O manifesto para aplicativos hospedados pode ser obtido no Marketplace.</p> - </td> - </tr> - </tbody> -</table> -<p>O nível de confiança de um aplicativo determina, em parte, a sua habilidade de acessar as funcionalidades do telefone.</p> -<ul> - <li>Aplicativos certificados tem permissões para a maioria das operações das Web APIs.</li> - <li>Aplicativos privilegiados tem permissões para um subconjunto de Web APIs acessíveis pelos aplicativos Certificados.</li> - <li>Aplicativos não confiáveis tem permissão para um subconjunto de Web APIs acessíveis pelos aplicativos privilegiados — apenas as Web APIs que contem medidas de mitigação de segurança podem ser acessíveis por um aplicativo não confiável.</li> -</ul> -<p>Algumas operações, como acesso à rede, possuem permissões implícitas para todos os aplicativos. Em geral, quanto mais sensível a operação (por exemplo, chamar um número de telefone ou acessar a lsta de contaos), maior o nível de confiança exigido para executá-lo.</p> -<div class="note"> - <p><strong>Nota</strong>: para maiores informações sobre as APIs disponíveis e seus níveis de permissão, consulte <a href="https://developer.mozilla.org/pt-BR/docs/Web/Apps/Developing/permisoes_app">Permissões de aplicativos</a>.</p> -</div> -<h4 id="Princípio_do_privilégio_mínimo">Princípio do privilégio mínimo</h4> -<p>Para aplicações web, o framework de segurança do Fireofox OS segue o <em>princípio do privilégio mínimo</em>: começa com o mínimo absoluto de permissões e seletivamente concede privilégios adicionais somente quando for requisitado e for razoável. Por padrão um aplicativo começa com um nível de permissão muito baixo, que é comparável a um conteúdo web não confiável. Se o aplicativo faz uma chamada a uma Web API que requisita permissões adicionais, ele deve enumerar essas permissões adicionais no manifesto (a ser descrito mais tarde nesse documento). O Gecko vai considerar a concessão do acesso somente se estiverem explicitamente requisitados no seu manifesto e se o tipo do aplicativo (certificado, privilegiado ou web) é suficientemente qualificado para o acesso solicitado.</p> -<h4 id="Processo_de_revisão_para_aplicativos_privilegiados_no_Marketplace">Processo de revisão para aplicativos privilegiados no Marketplace</h4> -<p>Para que um aplicativo torne-se privilegiado, o desenvolvedor do aplicativo deve submetê-lo a aprovação no Marketplace que sumete o aplicativo a um rigoroso processo de revisão de código: verificando sua autenticidade e integridade, garantindo que as permissões requisitadas são usadas para os propósitos declarados (no racional da permissão), verificando que o uso implícito da permissão é apropriado e validando que qualquer interface entre o conteúdo privilegiado e não privilegiado do aplicativo possui as mitigações apropriadas contra possíveis ataques. O Marketplate tem a responsabilidade de garantir que o aplicativo não possui um comportamento malicioso com as permissões que lhe são concedidas.</p> -<p>Depois que o aplicativo passa nessa revisão, é aprovado para uso, o manifesto é assinado digitalmente pelo Marketplace e é disponibilizado para download para os usuários. A assinatura garante que caso a web store for atacada por hackers não há a possibilidade de instalar códigos maliciosos nos telefones dos usuários. Devido a esse processo, o Firefox OS fornece um elevado grau de confiança aos aplicativos baixados do Maketplace.</p> -<div class="note"> - <p><strong>Nota</strong>: para saber mais sobre os Marketplaces incluindo o <a href="https://marketplace.firefox.com/">Firefox Marketplace</a>, veja a <a href="https://developer.mozilla.org/pt-BR/docs/Mozilla/Marketplace">seção do Marketplace</a>.</p> -</div> -<h3 id="Aplicativos_hospedados_e_empacotados">Aplicativos hospedados e empacotados</h3> -<p>Os aplicativos no Firefox OS podem ser empacotados (armazenado no dispositivo) ou hospedado (armazenado em um servidor web remoto, apenas com o manifesto armazenado no dispositivo). Existem algumas diferenças na forma de lidar com a segurança em cada uma das formas. No entanto, os aplicativos empacotados e hospedados estão sujeitos a aplicação do sandboxing, que é descrita mais adiante neste documento.</p> -<div class="note"> - <p><strong>Nota</strong>: Você pode saber mais sobre aplicativos hospedados e empacotados no artigo <a href="https://developer.mozilla.org/pt-BR/docs/Mozilla/Marketplace/Publishing/Opcoes_de_publicacao">opções de publicação de aplicativos</a>.</p> -</div> -<h4 id="Aplicativos_empacotados">Aplicativos empacotados</h4> -<p>Um aplicativo empcotado consiste-se de um arquivo ZIP com os recursos (HTML5, CSS, JavaScript, imagens, mídias), bem como um manifesto que fornece uma lista explícita de ativos e seus hashes correspondentes. Aplicativos certificados e privilegiados devem ser empacotados porque o manifesto deve ser digitalmente assinado. Quando um usuário obtem um aplicativo empacotado, o arquivo ZIP é baixado no dispositivo e o manifesto é lido de um local conhecido dentro do arquivo ZIP. Durante o processo de instalação, os ativos do aplicativo são verificados e permanecem armazenados dentro do pacote. Todas as permissões explícitas são requisitadas em tempo de execução, mostrando ao usuário as intenções do aplicativo e persistido por padrão.</p> -<p>Ao referir-se aos recursos de um aplicativo empacotado, a URL deve começar por app: usando o seguinte formato:</p> -<p><code>app://<em>identifier</em>/<em>path_within_zipfile</em>/file.html</code></p> -<p>onde <code>app://</code> representa o ponto de montagem do arquivo ZIP e <code>identifier</code> é uma UUID gerada quando o aplicativo é instalado no dispositivo. Esse mecanismo garante que os recursos são referenciados como aplicativo: URL estão contidos no arquivo ZIP. O caminha dentro de um aplicativo: é relativo, então links relativos para os recursos dentro do arquivo ZIP são permitidos.</p> -<p>Aplicativos empacotados destinam-se principalmente a serm utilzados por aplicativos certificados ou privilegiados, mas aplicativos comuns também podem ser empacotados. Porém, não há nehum ganho ou aumento na confiança ou permissões de acesso simplesmente devido ao fato de ser empacotado.</p> -<h4 id="Aplicativos_hospedados">Aplicativos hospedados</h4> -<p>São armazenados em um servidor web e carregados via HTTP. Apenas o manifesto do aplicativo fica armazenado no dispositivo. Todo o restante é armazenado remotamente. Algumas APIs estão disponíveis somente para aplicativos certificados, que exigem que sejam empacotados devido a requisitos de assinatura digital. Assim, um aplicativo hospedado não possuirá acesso a nenhuma operação de API que exige que o aplicativo seja certificado ou privilegiado.</p> -<p>Pelo ponto de vista da segurança, aplicativos hospedados funciona de forma similar a websites. Um aplicativo hospedado é carregado invocando uma URL descrita diretamente no código que aponta para uma página de início no diretório raiz do aplicativo armazenado em um servidor web. Uma vez que um aplicativo hospedado é carregado, o dispositivo conecta às páginas usando as mesmas URLs que são usadas ao navegar o website.</p> -<h3 id="Manifesto_do_aplicativo">Manifesto do aplicativo</h3> -<p>Um manifeseto de um aplicativo Open Web contém informações que um navegador Web necessita para interagir com um aplicativo. É um arquivo JSON que deve possuir pelo menos o nome e a descrição do aplicativo. Para maiores detalhes consulte <a href="https://developer.mozilla.org/pt-BR/docs/Apps/FAQs/About_app_manifests" title="/en-US/docs/Apps/FAQs/About_app_manifests">Perguntas frequentes sobre manifestos</a>.</p> -<h4 id="Examplo_de_Manifesto">Examplo de Manifesto</h4> -<p>O código a seguir mostra um exemplo de manifesto com apenas algumas configurações:</p> -<pre class="brush:text language-html"><code class="language-html">{ - "name": "My App", - "description": "My elevator pitch goes here", - "launch_path": "/", - "icons": { - "128": "/img/icon-128.png" - }, - "developer": { - "name": "Your name or organization", - "url": "http://your-homepage-here.org" - }, - "default_locale": "en" -}</code></pre> -<h3 id="Configurações_de_segurança_no_manifesto">Configurações de segurança no manifesto</h3> -<p>O manifesto pode conter outras configurações, incluindo as de segurança:</p> -<table> - <thead> - <tr> - <th style="width: 152px;"> - <p>Campo</p> - </th> - <th style="width: 479px;"> - <p>Descrição</p> - </th> - </tr> - </thead> - <tbody> - <tr> - <td style="width: 152px;"> - <p>permissions</p> - </td> - <td style="width: 479px;"> - <p>Permissões solicitadas pelo aplicativo. Devem ser listadas todas as Web APIs que pretende usar e que necessitam permissão do usuário. A maioria das permissões fazem sentido para aplicativos certificados ou privilegiados, mas não para aplicativos hospedados. Propriedades por API:</p> - <ul> - <li><strong>description</strong>: Uma string especificando a intenção do uso da API. Campo obrigatório.</li> - <li><strong>access</strong>: Especifica o tipo de acesso para a permissão. Permissões implícitas são concedidas no momento da instalação. Exigidas apenas por algumas APIs. Valores aceitos: <strong>read</strong>, <strong>readwrite</strong>, <strong>readcreate</strong>, and <strong>createonly</strong>.</li> - </ul> - </td> - </tr> - <tr> - <td style="width: 152px;"> - <p>installs_allowed_from</p> - </td> - <td style="width: 479px;"> - <p>A origem do aplicativo, pode ser simples ou um conjunto de origens (esquema+hostname único) que podem disparar a instalação do aplicativo. Permite que fornecedores dos aplicativos permitam instalações somente de Marketplaces autorizados (como por exemplo <a href="https://marketplace.firefox.com/">https://marketplace.firefox.com/</a>).</p> - </td> - </tr> - <tr> - <td style="width: 152px;"> - <p>csp</p> - </td> - <td style="width: 479px;"> - <p>Content Security Policy (CSP). Aplicado a todas as páginas carregadas no aplicativo. Utlizado para fazer um <em>hardening</em> no aplicativo protegendo contra bugs que possam permitir um ataque que injete código no aplicativo. Se não for especificado, aplicativos certificaso e privilegiaods possuem padrões definidos pelo sistema. Sintaxe:<br> - <a href="https://developer.mozilla.org/en-US/docs/Apps/Manifest#csp">https://developer.mozilla.org/en-US/docs/Apps/Manifest#csp</a></p> - <p><em>Observe que essa diretiva somente pode acrescentar o CSP aplicado. Você não pode usar, por exemplo, para reduzir o nível de segurança de um aplicativo privilegiado.</em></p> - </td> - </tr> - <tr> - <td style="width: 152px;"> - <p>type</p> - </td> - <td style="width: 479px;"> - <p>Tipo do aplicativo (web, privilegiado ou certificado).</p> - </td> - </tr> - </tbody> -</table> -<p>Firefox OS exige que o manifesto seja hospedado com um <code>mime-type</code> específico (<code>application/x-web-app-manifest+json</code>) e do mesmo nome de servidor (origem) no qual o aplicativo está hospedado. Essa restrição é reduzida quando o manifesto está na mesma origem da página que requisitou o aplicativo a ser instalado. Esse mecanismo é utilizado para garantir que não é possivel burlar um website através de um manifesto.</p> -<h3 id="Execução_no_Sandbox">Execução no Sandbox</h3> -<h4 id="Applicação_Sandbox">Applicação Sandbox</h4> -<p>O framework de segurança do Firefox OS usa a técnica de <em>sandboxing</em> como estratégia de defesa para mitigar riscos e proteger o dispositivo, plataforma e dados. Sandboxing é uma forma de impor limites e restrições em torno no aplicativo durante a sua execução. Cada aplicativo é executado no seu próprio espaço e tem acesso somente às Web APIs e dados permitidos, bem como aos recursos associados com o seu espaço de trabalho (banco de dados IndexedDB, cookies, armazenamento offline, etc.)</p> -<p>A figura a seguir fornece uma visão geral do modelo de segurança.</p> -<p><img alt="" src="https://mdn.mozillademos.org/files/5025/sandbox.png"></p> -<p>Ao isolar cada aplicativo, suas tarefas ficam confinadas ao seus espaços de trabalho e não podem inteferir em nada (como outros aplicativos e seus dados) fora do seu limite.</p> -<h4 id="Execução_do_Sandbox">Execução do Sandbox</h4> -<p>B2G (Gecko) executa um processo com alto privilégio que tem acesso aos recursos de hardware no dispositivo. Em tempo de execução, cada aplicativo é executado dentro de um ambiente que é um processo filho do processo B2G. Cada processo filho tem um conjunto restrito de privilégios — por exemplo, um processo filho não pode ler ou escrever arbitrariamente no sistema de arquivos. Acessos privilegiados é fornecido através de Web APIs, que são mediadas pelo processo pai B2G, garantindo que quando um processo filho requisita uma API privilegiada, ela tem a permissão necessária para executar a ação.</p> -<p>Os aplicativos se comunicam somente com o processo principal B2G, e não com outros processos ou aplicativos. Eles não são executados independentes do B2G, nem podem abrir outros aplicativos. A única comunicação possível entre os aplicativos é indireta (por exemplo, quando um aplicativo configura um alarme de sistema e outro aplicativo dispara uma notificação do sistema como resultado da configuração), e é mediada pelo processo B2G.</p> -<h4 id="Hardware_é_acessado_somente_via_Web_API">Hardware é acessado somente via Web API</h4> -<p>Os aplicativos somente tem um ponto de entrada para acessar as funcionalidades do telefone: as Web APIs do Firefox OS, que são implementadas no Gecko. Que fornece o único gateway para o dispositivo e seus serviços. Não há uma API "nativa" e não há outras rotas que contornem esse mecanismo e interaja indiretamente com o hardware ou penetre na camada de baixo nível do software, ou seja: não há "back-doors".</p> -<h2 id="Infraestrutura_de_Segurança">Infraestrutura de Segurança</h2> -<p>A figura a seguir mostra os componentes do framework de segurança do Firefox OS:</p> -<p><img alt="" src="https://mdn.mozillademos.org/files/5027/securityframework.png" style="width: 979px; height: 591px;"></p> -<ul> - <li><strong>Permission Manager</strong>: Um gateway para acessar funcionalidades na Web API, que é o único acesso ao hardware.</li> - <li><strong>Access Control List</strong>: Matriz de regras e permissões necessárias para acessar as Web APIs.</li> - <li><strong>Credential Validation</strong>: Autenticação de aplicativos e usuários.</li> - <li><strong>Permissions Store</strong>: Conjunto de privilégios necessários para acessar as Web APIs.</li> -</ul> -<h3 id="Gestão_de_permissões_e_sua_aplicação">Gestão de permissões e sua aplicação</h3> -<p>O sistema de segurança do Firefox OS é projetado para verificar e fazer cumprir as permissões concedidas às aplicações web..</p> -<p>O sistema concede uma permissão particular a um aplicativo somente se o mesmo a requisita e se estiver descrita no manifesto do aplicativo. Algumas permissões exigem uma permissão adicional do usuário, normalmente através de uma mensagem na tela do dispositivo (como por exemplo no caso do aplicativo requisitar acesso à localização atual do usuário). Esse framework baseado no aplicativo fornece um controle mais granular sobre as abordagens de permissão baseada no perfil (no qual é atribuído um conjunto de permissões a cada perfis).</p> -<p>Uma Web API possui um conjutno de ações e destinatários. Cada Web API possui um nível de permissão e cada vez que é chamada o Gecko verifica os requisitos de permissão baseado em:</p> -<ul> - <li>Permissões associadas com o chamada do aplicativo (como especificado no manifesto e baseado no seu tipo).</li> - <li>Permissões requisitadas para executar uma determinada operação (chamada à Web API).</li> -</ul> -<p>Se a requisição não atender aos critérios de permissão o Gecko a rejeita. Por exemplo, aplicativos não confiáveis não podem executar APIs que são reservadas para aplicativos confiáveis.</p> -<h3 id="Solicitando_permissão_do_usuário">Solicitando permissão do usuário</h3> -<p>In addition to permissions that are implicitly associated with the web apps, certain operations require explicit permission from the user before they can be executed (for example, "can the web app access your camera?"). For these operations, web apps are required to specify, in their manifest, their justification for requiring this permission. This <em>data usage intention</em> informs users about what the web app intends to do with this data if permission is granted, as well as any risk involved. This allows users to make informed decisions and maintain control over their data.</p> -<h3 id="Precesso_de_atualização_de_um_aplicativo_seguro">Precesso de atualização de um aplicativo seguro</h3> -<p><img alt="" src="https://mdn.mozillademos.org/files/5029/updateprocess.png" style="width: 979px; height: 102px;"></p> -<p>Para atualizar ou aplicar uma correção de um aplicativo privilegiado, os fornecedores submetem o pacote de atualização a um Marketplace autorizado onde é feita a revisão e se for aprovado é assinado e disponibilizado aos usuários. Nos dispositivos Firefox OS, um utilitário de atualização é executado periodicamente para verificar se há atualizações dos aplicativos. Caso exista, é perguntado ao usuário se deseja instalar a atualização. Antes da instalação é realizada a seguinte verificação no pacote:</p> -<ul> - <li>Origem da atualização (é verificada a fonte protocolo:domínio:porta da atualização e do manifesto)</li> - <li>Integridade do arquivo (hash SHA-256)</li> - <li>Assinatura do código (verificação do certificado contra uma raiz confiável)</li> -</ul> -<p>Controles rigorosos são executados para garantir que a atualização é aplicada corretamente ao dispositivo. O pacote completo de atualização deve ser baixado numa localização específica e segura antes do processo iniciar. A instalação não sobrescreve nenhum dado do usuário.</p> -<div class="note"> - <p><strong>Nota</strong>: Para maiores informações sobre atualização de aplicativo verifique esse <a href="https://developer.mozilla.org/pt-BR/Apps/Developing/Updating_apps">artigo</a>.</p> -</div> -<h2 id="Segurança_do_Dispositivo_(Hardware)">Segurança do Dispositivo (Hardware)</h2> -<p>Os mecanismos de segurança para o hardware do dispositivo são tipicamente de responsabiliade do fabricante. Por exemplo, um fabricante pode oferecer uma proteção para o SIM (Subscriber Identity Module) em conjunto com um código PUK (PIN Unlock Key) para desbloquear o cartão SIM travado por um número determinado de erros na senha do cartão. Contacte o fornecedor para maiores detalhes. Firefox OS possibilita aos usuários configurarem senhas e bloqueio de tela, que será tratado na próxima seção.</p> -<h2 id="Segurança_dos_dados">Segurança dos dados</h2> -<p>Usuários podem armazenar dados pessoais no seu dispositivo e mantê-los privados como contatos informações financeiras (detalhes de banco e cartões de crédito), senhas, calendários e etc. O Firefox é projetado com proteções contra aplicativos maliciosos que podem roubar, explorar ou destruir dados sensíveis.</p> -<h3 id="Senha_e_bloqueio_de_tela_por_tempo">Senha e bloqueio de tela por tempo</h3> -<p>O Firefox OS permite aos usuários definir uma senha para acessar e utilizar o telefone. Também permite bloqueio da tela após um período configurável de inatividade solicitando uma senha para desbloquear o telefone.</p> -<h3 id="Dados_no_Sandboxe">Dados no Sandboxe</h3> -<p>Como descrito anteriormente, os aplicativos são executados num <em>sandbox</em>. Isso evita que um aplicativo acesse os dados de outro a não ser que os dados sejam explicitamente compartilhados e o outro aplicativo possua permissões para acessá-los.</p> -<h3 id="Serialização_de_dados">Serialização de dados</h3> -<p>Os aplicativos web não possuem acesso direto de leitura ou escrita ao sistema de arquivos. Todo o acesso ao armazenamento é feito através de Web APIs. Que lêem e escrevem via um banco de dados SQLite. Não há um acesso direto de I/O. Cada aplicativo possue seu próprio local de armazenamento de dados que é serializado pelo banco de dados.</p> -<h3 id="Destruição_dos_dados">Destruição dos dados</h3> -<p>Quando um usuário desinstala um aplicativo, todos os dados relacionados ao aplicativo (cookies, localStorage, IndexedDB, etc.) são apagados.</p> -<h3 id="Privacidade">Privacidade</h3> -<p>A Mozilla está comprometida a proteger a privacidade dos usuários e de seus dados de acordo com seus princípios (<a href="https://www.mozilla.org/privacy/">https://www.mozilla.org/privacy/</a>), que sustenta o Manifesto Mozilla (<a href="http://www.mozilla.org/pt-BR/about/manifesto/">http://www.mozilla.org/pt-BR/about/manifesto/</a>). A política de privacidade Firefox Mozilla descreve como a Mozilla coleta e utiliza as informações dos usuários do navegador Firefox Mozilla, incluindo o que o Firefox envia para os websites, o que a Mozillar faz para proteger os dados, e etc. Para mais informações veja:</p> -<ul> - <li><a href="http://www.mozilla.org/en-US/legal/privacy/firefox.html">http://www.mozilla.org/en-US/legal/privacy/firefox.html</a></li> - <li><a href="https://blog.mozilla.org/privacy/">https://blog.mozilla.org/privacy/</a></li> - <li><a href="http://support.mozilla.org/en-US/kb/privacy-and-security-settings-firefox-os-phones">http://support.mozilla.org/en-US/kb/privacy-and-security-settings-firefox-os-phones</a></li> -</ul> -<p>O Firefox OS implementa esses princípios colocando o controle dos dados dos usuários nas mãos ele, que é quem deve decidir para onde as informações pessoais devem ir. O Firefox OS provê os seguintes recursos:</p> -<ul> - <li>Opção de não rastreamento</li> - <li>Possibilidade de desabilitar os cookies no navegador do Firefox OS</li> - <li>Possibilidade de apagar o histórico do navegador do Firefox OS</li> -</ul> diff --git a/files/pt-br/archive/b2g_os/security/seguranca_de_aplicacao/index.html b/files/pt-br/archive/b2g_os/security/seguranca_de_aplicacao/index.html deleted file mode 100644 index 335fb17562..0000000000 --- a/files/pt-br/archive/b2g_os/security/seguranca_de_aplicacao/index.html +++ /dev/null @@ -1,138 +0,0 @@ ---- -title: Segurança de Aplicativos -slug: Archive/B2G_OS/Security/Seguranca_de_aplicacao -tags: - - Aplicativo - - Apps - - Firefox OS - - Guía - - Movel - - Segurança -translation_of: Archive/B2G_OS/Security/Application_security ---- -<div class="summary"> - <p>Este artigo aborda detalhadamente o modelo de segurança de aplicativos no Firefox OS.</p> -</div> -<p>Os principais controles de segurança apresentados pelo Firefox OS são:</p> -<ul> - <li>Aplicativos Web são instalados e executados explicitamente, ao invés de serem simplesmente abertos em um navegador. Os aplicativos precisam ser instalados antes de serem utilizados, a atualização e remoção de aplicativos são reguladas por controles de segurança para proteger o usuário.</li> - <li>Acesso a novas APIs Web são controladas por um sistema de permissões. O aplicativo precisa declarar as permissões que pretende usar antes da instalação. Para receber acesso a APIs mais poderosas, o aplicativo precisa atender certos requisitos, ser revisado, aprovado e assinado por um <em>Marketplace</em>.</li> - <li>Aplicativos Web são isolados (<em>sandboxed</em>) de maneira que somente tem acesso aos seus próprios recursos (<em>cookies</em>, <em>offline storage</em>, bases de dados IndexedDB, e etc.). Mesmo se dois aplicativos vierem a carregar a mesma URL, essas duas páginas não são consideradas sendo de mesma origem pois estão executando dentro de aplicativos separados.</li> -</ul> -<h3 id="Tipos_de_aplicativos">Tipos de aplicativos</h3> -<p>O FirefoxOS suporta três tipos de aplicativos: "<em><strong>web</strong></em>", "<strong>privilegiado</strong>" e <strong>interno</strong> ("<strong><em>Certificado</em></strong>"). O tipo de um aplicativo é declarado no seu arquivo de <a href="/en-US/docs/Apps/Manifest" title="/en-US/docs/Apps/Manifest">manifesto</a> e determina a lista de permissões que o aplicativo pode solicitar.</p> -<ul> - <li><strong>Aplicativos Web:</strong> A maioria dos aplicativos de terceiros serão "<em>web</em>", que é o tipo padrão, não concedendo o aplicativo nenhuma permissão extra além daquelas já expostas para Web. Aplicativos Web podem ser instalados de qualquer site, sem nenhuma verificação adicional. Eles também podem ser <a href="/en-US/docs/Web/Apps/Packaged_apps" title="/en-US/docs/Web/Apps/Packaged_apps">empacotados</a> (<em>packaged</em>) , empacotar não concede nenhuma permissão adicional.</li> - <li><strong>Aplicativos Privilegiados</strong>: Estes aplicativos podem solicitar permissões mais elevadas, por esse motivo eles precisam ser verificados e assinados por um <em>Marketplace</em>.</li> - <li><strong>Aplicativos Internos/Certificados:</strong> No momento este tipo de aplicativo somente pode vir pré-instalado no dispositivo, a escolha do fabricante.</li> -</ul> -<div class="note"> - <p><strong>Nota</strong>: Para informações adicionais sobre os três tipos veja a documentação do <a href="/en-US/docs/Apps/Manifest#type" title="/en-US/docs/Apps/Manifest#type">Manifesto do Aplicativo</a>.</p> -</div> -<h3 id="Distribuição_dos_aplicativos">Distribuição dos aplicativos</h3> -<p>No Firefox OS os aplicativos podem ser distribuídos de duas formas diferentes: Sendo Hospedados ou Empacotados. Aplicativos "<em>web</em>" podem ser distribuídos por qualquer dos meios, sendo que os privilegiados e certificados precisam necessariamente ser empacotados.</p> -<h4 id="Aplicativos_hospedados"><span class="mw-headline" id="Hosted_apps">Aplicativos hospedados </span></h4> -<p>Um aplicativo <strong>hospedado</strong> consiste basicamente de um arquivo <a class="external text" href="/en-US/docs/Apps/Manifest" rel="nofollow">manifesto do aplicativo</a> no servidor web do desenvolvedor, este contém um <a href="/en-US/Apps/Build/Manifest#launch_path">caminho de execução</a> indicando que pagina deve ser aberta quando o aplicativo é inicializado. De uma perspectiva de segurança aplicativos hospedados funcionam de forma muito parecida com paginas<em> </em>web normais. Quando um aplicativo hospedado é carregado as URLs das paginas carregadas são as URLs normais onde aquelas paginas são acessadas no servidor onde estão hospedadas, mas se elas já estiverem no <em>appcache</em> elas serão carregadas do dispositivo.</p> -<h4 id="Aplicativos_empacotados"><span class="mw-headline" id="Packaged_apps">Aplicativos empacotados</span></h4> -<p>Um aplicativo <strong>empacotado</strong> é simplesmente uma aplicação web aberta que tem todo o seu conteudo como arquivos HTML, CSS, JavaScript, manifesto, e etc; contidos em um arquivo zip ao invés de ter seus arquivos hospedados em um servidor web. Para mais detalhes desse formato, veja <a href="/en-US/docs/Apps/Packaged_apps" title="Apps/Packaged_apps">Aplicativos empacotados</a>. </p> -<h3 id="Origem_dos_aplicativos">Origem dos aplicativos</h3> -<p>Para aplicativos hospedados, a origem do aplicativo é a origem onde se localiza o <a class="external text" href="/en-US/docs/Apps/Manifest" rel="nofollow">manifesto do aplicativo</a>.</p> -<p>Para aplicativos empacotados, a origem é o identificador único do aplicativo que é designado ao mesmo durante a instalação. <a href="/en-US/Apps/Publishing/Packaged_Apps#Types_of_packaged_apps">Aplicativos Privilegiados e Internos </a>também podem solicitar uma origem especifica ao informar o parâmetro <a href="/en-US/Apps/Build/Manifest#origin">origem</a> no manifesto da aplicação.</p> -<h3 id="Instalação_de_aplicativos"><strong>Instalação de aplicativos</strong></h3> -<p>Aplicações são instaladas através da <a href="/en-US/docs/JavaScript_API" title="/en-US/docs/JavaScript_API">API JavaScript de Aplicativos</a>:</p> -<ul> - <li>Aplicativos hospedados são instalados chamando:<br> - <code>navigator.mozApps.<a href="/en-US/docs/Web/API/Apps.install" title="/en-US/docs/Web/API/Apps.install">install</a>(manifestURL)</code>, onde manifestURL é a URL que informa a localização do aplicativo. Para mais detalhes, veja <a href="/en-US/docs/DOM/Apps.install">Instalando Aplicativos</a>.</li> - <li>Aplicativos empacotados são instalados chamando:<br> - <code>navigator.mozApps.<a href="/en-US/docs/Web/API/Apps.installPackage" title="/en-US/docs/Web/API/Apps.installPackage">installPackage</a>(packageURL)</code>. Para aplicativos empacotados o manifesto principal é armazenado dentro do próprio pacote para que ele seja assinado. Existe um segundo "mini-manifesto" que é usado somente para iniciar o processo de instalação. Para mais informações veja <a href="/en-US/docs/DOM/Apps.installPackage">Instalando aplicativos empacotados</a> e<a href="/en-US/docs/Apps/Packaged_apps" title="Apps/Packaged_apps"> Aplicativos empacotados</a>.</li> -</ul> -<p>De modo a garantir que um aplicativo realmente solicitou ser instalado como uma aplicação web, nós temos que certificar não ser possível enganar um servidor a hospedar um manifesto de aplicação. Isto é feito obrigando o servidor a disponibilizar o arquivo manifesto com o seguinte <em>mime-type</em>, <code>application/x-web-app-manifest+json</code>. Essa validação não é feita quando o aplicativo e o arquivo manifesto tem a mesma origem da página que solicitou a instalação da aplicação.</p> -<h3 id="Atualizações"><span class="mw-headline" id="Updates">Atualizações</span></h3> -<p>O processo de atualização de aplicativos é descrito em <a href="/en-US/docs/Apps/Updating_apps" title="Apps/Updating_apps">Atualizando aplicativos</a>.</p> -<h2 id="Permissões">Permissões</h2> -<p>Privilégios adicionais podem ser concedidos para aplicativos além daqueles concedidos para websites normais. Por padrão um aplicativo tem as mesmas permissões que paginas web normais. Para conseguir permissões adicionais o primeiro passo é o aplicativo enumerar as permissões extras e solicitar as mesmas no manifesto do aplicativo.</p> -<h3 id="Declaração_no_manifesto">Declaração no manifesto</h3> -<p>Para cada permissão adicional que um aplicativo deseja utilizar, o aplicativo precisa enumerar a permissão no manifesto complementada com uma descrição significativa de porque o aplicativo precisa daquela permissão adicional. Por exemplo, se um aplicativo quer usar a API <a href="/en-US/docs/Web/API/window.navigator.geolocation" title="/en-US/docs/Web/API/window.navigator.geolocation">navigator.geolocation</a>, ele precisa incluir o texto abaixo no seu manifesto:</p> -<pre class="brush: json">"permissions": { - "geolocation":{ -<code class="language-js"><span class="token string"> "description"</span><span class="token punctuation">:</span> <span class="token string">"Necessária para autocompletar o local na tela compartilhar"</span><span class="token punctuation">,</span></code> - } -}, -</pre> -<p>Isso irá permitir o aplicativo solicitar a permissão do usuário para utilizar a API de geolocalização da mesma forma que uma pagina web solicitaria. Para mais detalhes, veja <a href="/en-US/docs/Apps/Manifest" title="Apps/Manifest">Manifesto do aplicativo</a>.</p> -<div class="note"> - <p><strong>Nota</strong>: Existe um bug que causa a não apresentação ao usuário das permissões que o aplicativo pretende utilizar — veja o <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=823385" title="https://bugzilla.mozilla.org/show_bug.cgi?id=823385">bug 823385</a>.</p> -</div> -<h3 id="Concedendo_permissões">Concedendo permissões</h3> -<p>Quando as permissões são solicitadas no manifesto, a permissão é configurada como <em>Permitidas </em>(<em>allow)</em> ou <em>Solicitadas (prompt)</em>, dependendo da permissão solicitada. Permissões <em>Permitidas </em>são concedidas ao se declarar a mesma no manifesto sem aprovação direta do usuário a cada uso. Para permissões <em>Solicitadas </em>o usuário é consultado no primeiro uso da API relacionada, e tem a escolha de permitir ou não antes da API ser concedida para uso pelo aplicativo, O Firefox OS somente pergunta ao usuário sobre a concessão de permissões que tem um impacto em sua privacidade, e além disso seja razoável para o usuário entender o que está sendo perguntado. Por exemplo, acesso aos contatos é <em>Solicitada</em>, mas acesso para realizar uma conexão TCP é concedido implicitamente, porque não é razoavel que um usuário commum entenda as implicações de segurança de conceder essa permissão. Uso de permissões <em>Permitidas </em>são revistas no processo de segurança do Marketplace para garantir que os aplicativos disponiveis sejam seguros para os usuários.</p> -<h3 id="Revogando_Permissões">Revogando Permissões</h3> -<p>Os usuários tem o direito de mudar de ideia sobre permissões <em>Solicitadas </em>a qualquer momento, e podem revogar essas permissões através do aplicativo de configurações do Firefox OS. Entretanto, permissões <em>Permitidas </em>não podem ser alteradas pelo usuário.</p> -<h2 id="Isolamento_dos_aplicativos_web">Isolamento dos aplicativos web</h2> -<h3 id="Dados_armazenados_por_aplicativo"><span class="mw-headline" id="Data_stored_per_app">Dados armazenados por aplicativo </span></h3> -<p>Cada aplicativo é executado pelo Firefox OS em uma area isolada, isso significa que todos os dados armazenados por um aplicativo está separado de todos os dados armazenados por outros aplicativos. Incluindo dados de <em>cookies</em>, dados em <em>localStorage</em>,dados no <em>indexedDB</em>, e permissões locais.</p> -<p><img alt="A diagram showing three Firefox OS apps all open is separate sandboxes, so none of them can affect each other." src="https://mdn.mozillademos.org/files/7091/sandbox.png" style="width: 1040px; height: 437px; display: block; margin: 0px auto;"></p> -<p>Isso significa que se o usuário tem dois aplicativos instalados, aplicativos A e B, esses aplicativos terão um conjunto completamente diferente de <em>cookies</em>, dados locais e permissões diferentes. Isto se aplica mesmo se ambos os aplicativos abrirem um {{ htmlelement("iframe") }} que aponta para a mesma origem, ambos A e B abrirem um <code><iframe></code> apontando para "<a class="external free" href="http://www.mozilla.org" rel="nofollow">http://www.mozilla.org</a>", Ambos irão abrir o site porém, o mesmo será baixado e exibido utilizando <em>cookies </em>diferentes nos dois aplicativos.</p> -<p>O resultado prático é que se o usuario acessar o Facebook enquanto utiliza o aplicativo A, isso não afeta como o aplicativo B manipula a pagina do Facebook. Se o <em>cookie </em>de acesso que o Facebook configurou quando o usuário acessou usando o aplicativo A só está disponivel para o aplicativo A. Se o aplicativo B abrir um <code><iframe></code> para o Facebook, o <em>cookie </em>não estará disponível e o Facebook irá exibir novamente a tela de acesso no aplicativo B ao invés da pagina que está aberta no aplicativo A.</p> -<h3 id="Aplicativos_não_podem_abrir_uns_aos_outros"><span class="mw-headline" id="Apps_can.27t_open_each_other">Aplicativos não podem abrir uns aos outros </span></h3> -<p>Aplicativos utilizando iframes não podem abrir outros aplicativos. Se o aplicativo A cria um <code><iframe></code> com o <code>src</code> apontando para a URL do aplicativo B, este não irá abrir o aplicativo B no <code><iframe></code> e simplesmente abrirá a pagina web que se encontra naquela URL. Também não pode utilizar cookies do aplicativo B, portanto se comportando como se o aplicativo B não estivesse instalado no dispositivo do usuário.</p> -<p>Isso se aplica mesmo para aplicativos empacotados (mais detalhes abaixo). Se o aplicativo A tenta, utilizando um <code><iframe></code>, abrir o aplicativo empacotado B apontando para <code>app://</code>URLdoAplicativoB, simplesmente ocorrerá um erro ao abrir a URL. Se será um erro 404 ou outro tipo de erro isso será determinado no futuro, mas definitivamente irá ocorrer um erro ao abrir a página. Da mesma forma também ocorrerá erro independente do aplicativo B estar instalado no dispositivo do usuário ou não, de maneira que o aplicativo A não possa determinar através do erro se o aplicativo B está instalado ou não no dispositivo.</p> -<p>A mesma coisa acontece se o <em>frame </em>principal do aplicativo A, navegar para uma URL do aplicativo B. O sistema sempre sabe que aplicativo está aberto em que frame. Portanto existindo uma tentativa de abrir a URL do aplicativo B no frame do aplicativo A, irá ocorrer o mesmo erro citado acima. Isso também garante que os recursos do aplicativo B como <em>cookies </em>ou dados locais não poderão ser usados de forma alguma pelo aplicativo A.</p> -<h3 id="Motivos"><span class="mw-headline" id="Motivation">Motivos</span></h3> -<p>Existem vantagens e desvantagens da segurança ser implementada desta forma. A desvantagem é que se o usuário interage com um mesmo site a partir de aplicativos diferentes ele terá que conectar em cada um dos aplicativos separadamente. Da mesma forma, se um site quer guardar dados localmente e o usuário interage com esse site em aplicativos diferentes os dados serão duplicados em cada aplicativo, que pode ser um problema se for o volume de dados for grande.</p> -<p>A principal vantagem dessa implementação é que esse modelo é mais estável. Não permitimos que os aplicativos interajam entre si através de um site de terceiros e por exemplo um aplicativo parar de funcionar ao se instalar outro. Quando um aplicativo é deinstalado não é possivel que haja perda de dados de outro aplicativo, ou que um aplicativo pare de funcionar porque dependia do aplicativo desinstalado.</p> -<p>É um modelo mais seguro. Um usuário pode usar o seu "AppSocialSuperManeiro" para conectar no Facebook sem se preocupar que o seu "AppSuperSuspeito" possa realizar qualquer ataque para obter os dados do usuário no Facebook através de bugs ou falhas no site do Facebook.</p> -<p>Também existem beneficios a privacidade. O usuário pode tranquilamente instalar o "AppProcurandoEmprego" sem se preocupar porque o "AppDoFuncionarioDaMegaCorporação" não pode detectar que aplicativos estão instalados ou que dados ele criou no dispositivo.</p> -<h3 id="Sandboxed_Permissions_2"><span class="mw-headline" id="Sandboxed_Permissions">Sandboxed Permissions</span></h3> -<p>In the same way that web site data is sandboxed per app, so is permission data. If App A loads a page from <a class="external free" href="http://maps.google.com" rel="nofollow">http://maps.google.com</a> and that page requests to use geolocation and the user says "yes, and remember this decision for all times", this only means that <a class="external free" href="http://maps.google.com" rel="nofollow">http://maps.google.com</a> has access to geolocation within App A. If App B then opens <a class="external free" href="http://maps.google.com" rel="nofollow">http://maps.google.com</a>, that page won't have access to geolocation unless the user grants that permission again.</p> -<p>And just like in the normal browser, permissions are separated by origin. If App A is granted permission to use Geolocation, this does not mean that all origins running in App A have the permission to use Geolocation. If App A opens an <code><iframe></code> to <a class="external free" href="http://maps.google.com" rel="nofollow">http://maps.google.com</a>, then <a href="http://docs.google.com"><span class="external free">http://docs.google.com</span></a> still has to ask the user for permission before geolocation access is granted.</p> -<h3 id="Browser_API_Sandbox">Browser API Sandbox</h3> -<p>To additionally secure applications that open a large set of URLs, such as browsers, we have added a <em>browserContent flag</em>. The browserContent flag allows each app to have not one, but two sandboxes: one for the app itself, and one for any "web content" that it opens. For example:</p> -<p>Say that the MyBrowser app is loaded from the <a class="external free" href="https://mybrowser.com" rel="nofollow">https://mybrowser.com</a> domain. This is the domain the scripts and resources are loaded within. The scripts and resources - <i> - belong</i> - to this domain.</p> -<p>Now, if a page in this app creates an <code><iframe mozbrowser></code>, a different sandbox is created and used for this <code><iframe></code>, which is different from the sandbox used by the app. So for example if this <code><iframe></code> is navigated to <a class="external free" href="https://mybrowser.com" rel="nofollow">https://mybrowser.com</a>, it will result in different cookies being used inside the <code><iframe mozbrowser></code>. Likewise, the contents inside the <code><iframe mozbrowser></code> will see different IndexedDB and localStorage databases from the ones opened by the app.</p> -<p>This also applies if the MyBrowser app wants to create integration with, for example, Google Maps to implement location-based browsing. If the app opens an <code><iframe></code> to <a class="external free" href="http://maps.google.com" rel="nofollow">http://maps.google.com</a>, it will receive a set of cookies for the <a class="external free" href="http://maps.google.com" rel="nofollow">http://maps.google.com</a> website. If the user then navigates inside the <code><iframe mozbrowser></code> containing <a class="external free" href="http://maps.google.com" rel="nofollow">http://maps.google.com</a>, this will use different cookies and different permissions to the top level app.</p> -<p>Another example where this is useful is in a Yelp-like app. Yelp has the ability to visit a restaurant's website directly in the app. By using <code><iframe mozbrowser></code> to open the restaurant website, the Yelp app ensures that the restaurant website can't contain an <code><iframe></code> pointing back to Yelp's app (which points to <a class="external free" href="http://yelp.com" rel="nofollow">http://yelp.com</a>). If it does, the website will only receive the Yelp website, rather than the Yelp app. So there is no way that the restaurant website can mount an attack against the app since the contained Yelp website won't share any permissions or data with the Yelp app.</p> -<h2 id="Resumo_da_segurança_de_aplicativos">Resumo da segurança de aplicativos</h2> -<p>A tabela abaixo resume os diferentes tipos de aplicativos no Firefox OS, seus formatos, e os processos de instalação e atualização para aplicativos web abertos rodando no Firefox OS.</p> -<table> - <caption> - Tipos de aplicativos web</caption> - <thead> - <tr> - <th scope="col">Tipo</th> - <th scope="col">Distribuição</th> - <th scope="col">Modelo de permissões</th> - <th scope="col">Instalação</th> - <th scope="col">Atualização</th> - </tr> - </thead> - <tbody> - <tr> - <td>Web</td> - <td>Hospedados ou empacotados</td> - <td>Permissões mais leves que não tenham perigo de exposição a conteúdo web não validado.</td> - <td>Instalados de qualquer local</td> - <td>Podem ser atualizadas de forma transparente ao usuário ou explicitamente através de um <em>marketplace</em>, dependendo de onde o aplicativo foi instalado e o metodo de distribuição.</td> - </tr> - <tr> - <td>Privilegiado</td> - <td>Empacotados e obrigatoriamente assinados</td> - <td>APIs privilegiadas requerem a validação e autenticação do aplicativo.</td> - <td>Instalados somente de um <em>marketplace</em> confiável</td> - <td>Atualizados através de um <em>marketplace</em> confiável, o usuário é solicitado a aprovar o download e instalação de atualizações manualmente.</td> - </tr> - <tr> - <td>Interno (Certificado)</td> - <td>Empacotados</td> - <td>APIs potencialmente perigosas e poderosas não disponíveis para aplicativos de terceiros.</td> - <td>Pre-Instalados no dispositivo</td> - <td>Atualizadas somente através de atualizações do sistema como um todo.</td> - </tr> - </tbody> -</table> -<div class="note"> - <p><strong>Nota</strong>: Apezar de aplicativos web poderem ser instalados de qualquer site ou marketplace, Na versão 1.0 do Firefox OS os aplicativos privilegiados somente podem ser instalados do marketplace da Mozilla, isso se deve ao fato que o suporte para multiplos marketplaces confiáveis ainda não está terminado.</p> -</div> -<p> </p> diff --git a/files/pt-br/archive/b2g_os/simulator/index.html b/files/pt-br/archive/b2g_os/simulator/index.html deleted file mode 100644 index 0f84fdd318..0000000000 --- a/files/pt-br/archive/b2g_os/simulator/index.html +++ /dev/null @@ -1,251 +0,0 @@ ---- -title: Simulador Firefox OS -slug: Archive/B2G_OS/Simulator -translation_of: Archive/B2G_OS/Simulator ---- -<div class="note"> -<p>O Simulador Firefox OS ainda está no início da sua fase de desenvolvimento, portanto não está tão completo e confiável quanto gostariamos. Se você encontrar algum bug, por favor <a href="https://github.com/mozilla/r2d2b2g/issues?state=open" title="https://github.com/mozilla/r2d2b2g/issues?state=open">reporte-o no github</a>. Se você tiver dúvidas, utilize a mailling list <a href="https://lists.mozilla.org/listinfo/dev-developer-tools">dev-developer-tools (em Inglês)</a> ou o canal <a href="irc://irc.mozilla.org/#devtools">#devtools em irc.mozilla.org</a>.</p> -</div> - -<p>O complemento do Simulador Firefox OS é uma ferramenta que permite que sejam feitos testes e depurações de seus <a href="/pt-BR/docs/Apps" title="/en-US/docs/Apps">aplicativos Firefox OS</a> no seu desktop. O ciclo de desenvolvimento-teste-depuração é muito mais ágil com a ajuda do simulador do que se comparado com um aparelho real, e claro, você não precisa de um aparelho real para utilizá-lo.</p> - -<p>Essencialmente, o Simulador é composto por:</p> - -<ul> - <li><strong>Simulador</strong>: isso inclui o <a href="/pt-BR/docs/Mozilla/Firefox_OS/Using_the_B2G_desktop_client" title="/en-US/docs/Mozilla/Firefox_OS/Using_the_B2G_desktop_client">cliente desktop do Firefox OS</a>, o qual é uma versão das camadas superiores do <a href="/pt-BR/docs/Mozilla/Firefox_OS" title="/en-US/docs/Mozilla/Firefox_OS">Firefox OS</a> que roda no seu desktop. O Simulador também inclui alguns <a href="#Simulator-toolbar" title="#Simulator-toolbar">recursos adicionais de emulação</a> que não estão nas builds padrões do Firefox OS para desktop.</li> - <li><strong>Dashboard</strong>: uma ferramenta acoplada ao navegador Firefox que permite a você iniciar e parar o Simulador, instalar, remover e depurar aplicativos rodando nele. A Dashboard também o ajudará a enviar aplicativos para o aparelho e buscará por problemas comuns que possam ser encontrados nos manifests de aplicativos. A imagem a seguir exibe uma sessão de depuração utilizando o Simulador.</li> -</ul> - -<p>A Dashboard está no cando superior direito, sendo executada dentro de uma aba no Firefox. Nós adicionamos um aplicativo, um pacote chamado "Where am I?". No canto superior esquerdo o aplicativo está sendo executado no Simulador. Nós também conectamos a ferramenta de depuração, a qual pode ser encontrado na parte inferior da imagem. Você pode perceber que a ferramenta de depuração está parada em um breakpoint configurado no aplicativo.</p> - -<p><img alt="" src="https://mdn.mozillademos.org/files/5139/Simulator-overview.png"></p> - -<p>Este guia cobrirá os seguintes tópicos:</p> - -<ul> - <li><a href="#Installing" title="#Installing">Como instalar o complemento Simulador do Firefox OS</a></li> - <li><a href="#Manifest-validation" title="#Manifest-validation">Como adicionar, remover e atualiza aplicativos</a></li> - <li><a href="#Running-the-Simulator" title="#Running-the-Simulator">Validação do arquivo manifesto </a></li> - <li><a href="#Attaching-developer-tools" title="#Attaching-developer-tools">Como executar o Simulador</a></li> - <li><a href="#Limitations" title="#Limitations">Como conectar as ferramentas de desenvolvedor tal como o depurador JS para aplicativos sendo executados no Simulador.</a></li> - <li><a href="#Limitations" title="#Limitations">As limitações do Simulador se comparado a um aparelho celular rodando Firefox OS.</a></li> -</ul> - -<p>Para um passo-a-passo prático de como depurar um aplicativo web real, visite o <a href="/en-US/docs/Tools/Firefox_OS_Simulator/Simulator_Walkthrough" title="/en-US/docs/Tools/Firefox_OS_Simulator/Simulator_Walkthrough">passo-a-passo do Simulador</a>.</p> - -<h2 id="Instalando_o_complemento_Simulador_do_Firefox_OS"><a name="Installing">Instalando o complemento Simulador do Firefox OS</a></h2> - -<p>O Simulador é empacotado e distribuido como um complemento para o Firefox. Para instalar o complemento:</p> - -<ol> - <li>Utilizando o Firefox, vá ate <a href="https://ftp.mozilla.org/pub/mozilla.org/labs/fxos-simulator/" title="https://addons.mozilla.org/en-US/firefox/addon/firefox-os-simulator/">página do Simulador</a>.</li> - <li>Clique em "Adicionar ao Firefox".</li> - <li>Uma vez que o complemento tenha sido baixado, você será solicitado para instalá-lo: clique em "Instalar agora".</li> -</ol> - -<p>Devido ao tamanho do complemento, o Firefox pode congelar por alguns segundos enquanto completa a instalação, e um diálogo com a mensagem "Aviso: Script não está respondendo" poderá aparecer. Se isso acontecer, clique em "Continuar" e aguarde o termino da instalação. Este problema está sendo acompanhado no <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=814505" title="https://bugzilla.mozilla.org/show_bug.cgi?id=814505">bug 814505</a>.<br> - <br> - Uma vez que o complemento tenha sido instalado, o Firefox irá periodicamente buscar por novas versões e o manterá atualizado.</p> - -<p>A Dashboard abrirá automaticamente quando você instalar o Simulador, e você poderá reabri-la a qualquer momento indo no menu "Firefox" (ou no menu "Ferramentas" no OS X e Linux), em seguida "Ferramentas do desenvolvedor" e finalmente em "Firefox OS Simulator":</p> - -<p><img alt="" src="https://mdn.mozillademos.org/files/5141/simulator-open-on-windows-7.png" style="display: block; height: 533px; margin-left: auto; margin-right: auto; width: 453px;"><br> - A Dashboard é a ferramenta que você usará para adicionar aplicativos no Simulador. A seguir, como ela se parece:<img alt="" src="https://mdn.mozillademos.org/files/5143/dashboard.png" style="height: 720px; width: 963px;"></p> - -<h2 id="Adicionando_atualizando_e_removendo_aplicativos"><a name="Adding-updating-removing">Adicionando, atualizando e removendo aplicativos</a></h2> - -<h3 id="Adicionando_aplicativos">Adicionando aplicativos</h3> - -<p>Para adicionar um <a href="/en-US/docs/Apps/Packaged_apps" title="/en-US/docs/Apps/Packaged_apps">aplicativo empacotado</a> no Simulador, abra a Dashboard, clique em "Add Directory" e selecione o <a href="/en-US/docs/Apps/Manifest" title="/en-US/docs/Apps/Manifest">arquivo manifesto </a>do seu aplicativo.</p> - -<p>Para adicionar um aplicativo hospedado, insira a URL na caixa de texto onde diz "URL for page or manifest.webapp", então clique em "Add URL". Se URL aponta para um manifesto, então ele será utilizado. Se não, a Dashboard irá gerar um manifesto para a URL: isto é, você pode utilizar qualquer website como um aplicativo apenas inserindo sua URL.</p> - -<p>Quando você adiciona um aplicativo, a Dashboard executará uma série de testes no seu arquivo manifesto, buscando por problemas comuns. Veja a seção de <a href="#Manifest-validation" title="#Manifest-validation">Validação do arquivo manifesto</a> para maiores detalhes sobre os testes executados.</p> - -<p>A não ser que a validação do manifesto revele algum problema no seu aplicativo, a Dashboard irá executar seu aplicativo no Simulador automaticamente.</p> - -<p>Gerenciando os aplicativos</p> - -<p>Uma vez que você tenha adicionado um aplicativo, ele irá aparecer na lista de aplicativos instalados:</p> - -<p><img alt="" src="https://mdn.mozillademos.org/files/5145/dashboard-list-apps.png"><br> - Cada registro nos dá as seguintes informações do aplicativo:</p> - -<ul> - <li>Nome da aplicação, proveniente do manifesto</li> - <li>Tipo da aplicação, o qual sera um dos valores "Packaged"(empacotado), "Hosted"(hospedado", ou "Generated"(gerado).</li> - <li>Um link para o arquivo manifesto</li> - <li>O resultado da validação do manifesto</li> -</ul> - -<p>Também serão possíveis três ações distintas:</p> - -<ul> - <li>"Remove": remove o aplicativo do Simulador ou da Dashboard. Você pode desfazer essa ação contanto que a aba da Dashboard esteja aberta.</li> - <li>"Update": use esta ação para atualizar o aplicativo no Simulador após ter realizado alteraçõe no mesmo. Esta ação faz com que a Dashboard valide o manifesto novamente. Se você fizer mudanças no seu aplicativo, elas não serão refletidas automaticamente no aplicativo instalado: você precisará clicar em "Update" e então reiniciar o Simulador se ele estiver sendo executado.</li> - <li>"Run": executa o aplicativo no Simulador.</li> -</ul> - -<p>Se você <a href="#Push-to-device" title="#Push-to-device">conectou um aparelho Firefox OS</a> ao seu computador, você verá um quarto botão com a ação de "Enviar para aparelho".</p> - -<h3 id="Validação_do_arquivo_Manifesto"><a name="Manifest-validation">Validação do arquivo Manifesto</a></h3> - -<p>Quando você fornece um Manifesto, o Gerenciador irá executar alguns testes de validação nele. Ele relata problemas em três categorias diferentes :</p> - -<ul> - <li>Erros no Manifesto: problemas que impedirão a execução do seu aplicativo</li> - <li>Avisos no Manifesto: problemas que podem impedir seu aplicativo de funcionar corretamente</li> - <li>Avisos relativos ao simulador: recursos que o aplicativo faz uso mas que ainda não são suportados pelo Simulador</li> -</ul> - -<p>Ele exibe os problemas encontrados no aplicativo ao clicar no ítem correspondente da lista de aplicativos instalados. Clicando no resumo você poderá encontrar mais detalhes.</p> - -<h4 id="Erros_no_Manifesto">Erros no Manifesto</h4> - -<p>A Dashboard irá relatar as condições a seguir como erros, o que significa que você não será capaz de executar o aplicativo no Simulador sem corrigi-las. São eles:</p> - -<ul> - <li>O Manifesto não inclui o campo obrigatório "Name"</li> - <li>O Manifesto não é um JSON válido</li> - <li>O aplicativo é do típo hosted, mas o campo "type" no Manifesto está como <a href="/en-US/docs/Apps/Packaged_apps#Types_of_packaged_apps" title="/en-US/docs/Apps/Packaged_apps#Types_of_packaged_apps">"privileged" ou "certified"</a>, os quais só estão disponíveis para aplicativos empacotados (packaged).</li> -</ul> - -<p>A imagem a seguir exibe a tentativa de adicionar um Manifesto sem o campo "name":<br> - <br> - <img alt="" src="https://mdn.mozillademos.org/files/5147/dashboard-missing-name.png"></p> - -<h4 id="Avisos_no_Manifesto">Avisos no Manifesto</h4> - -<p>A Dashboard irá relatar as condições a seguir como avisos:</p> - -<ul> - <li>Ícones ausente</li> - <li>O Ícone é menor que 128 pixels: todos os aplicativos enviados para o Marketplace devem ter ao menos um ícone que é ao menos 128 pixels de tamanho</li> - <li>O campo <a href="/en-US/docs/Apps/Manifest#type" title="/en-US/docs/Apps/Manifest#type">type</a> não possui um valor conhecido (Web, Privileged, Certified)</li> - <li>O Manifesto solicita uma <a href="/en-US/docs/Apps/Manifest#permissions" title="/en-US/docs/Apps/Manifest#permissions">permissão </a>que não é reconhecida.</li> - <li>O Manifesto solicita uma <a href="/en-US/docs/Apps/Manifest#permissions" title="/en-US/docs/Apps/Manifest#permissions">permissão</a> que é bloqueada.</li> - <li>O Manifesto solicita uma <a href="/en-US/docs/Apps/Manifest#permissions" title="/en-US/docs/Apps/Manifest#permissions">permissão</a> para qual o acesso não pôde ser determinado</li> -</ul> - -<h4 id="Avisos_relativos_ao_simulador">Avisos relativos ao simulador</h4> - -<p>Por fim, o Gerenciador irá emitir avisos para aplicativos que utilizem recursos do Firefox OS ainda não suportados completamente pelo Simulador. São eles:</p> - -<ul> - <li>O campo <a href="/en-US/docs/Apps/Manifest#type" title="/en-US/docs/Apps/Manifest#type">type</a> é "certified", mas o Simulador ainda não suporta aplicativos certificados</li> - <li>O Manifesto solicita <a href="/en-US/docs/Apps/Manifest#permissions" title="/en-US/docs/Apps/Manifest#permissions">permissão</a> para utilizar uma API que <a href="#Unsupported-APIs" title="#Unsupported-APIs">ainda não é suportada</a> pelo Simulador</li> -</ul> - -<h2 id="Como_executar_o_Simulador"><a name="Running-the-Simulator">Como executar o Simulador</a></h2> - -<p>Existem duas formas para iniciar o Simulador:</p> - -<ul> - <li>Se você adicionar, atualizar, remover um aplicativo ou clicar no botão "Run" próximo a entrada da aplicação na lista de aplicativos instalados, a Dashboard irá automaticamente executar o aplicativo no Simulador</li> - <li>Se você clicar no botão rotulado como "Stopped" no canto esquerdo da Dashboard, o Simulador irá ser iniciado e você precisará navegar ate o seu aplicativo</li> -</ul> - -<p>De ambas formas, uma vez que o Simulador esteja sendo executado, o botão rotulado como "Stopped" se tornará verde e o rótulo mudará para "Running". Se você deseja parar a execução do Simulador, clique no botão novamente.<br> - <br> - O Simulador aparecerá em uma nova janela, dimensionado para simular o tamanho de tela 320x480 pixels, com uma <a href="#Simulator-toolbar" title="#Simulator-toolbar">barra de ferramentas na parte inferior que contém alguns recursos extras.</a></p> - -<p>Para simulador eventos de toque você pode clicar com o mouse e arrastar segurando o botão esquerdo. Ao clicar e arrastar da direita para a esquerda na Tela Inicial, você verá os aplicativos nativos, junto com quaisquer aplicativos que você tenha adicionado:</p> - -<p><img alt="" src="https://mdn.mozillademos.org/files/5149/simulator-homescreen.png" style="float: left; height: 638px; width: 432px;"><img alt="" src="https://mdn.mozillademos.org/files/5151/simulator-apps-screen.png" style="height: 638px; width: 432px;"></p> - -<h3 id="A_barra_de_ferramentas_do_Simulador"><a name="Simulator-toolbar">A barra de ferramentas do Simulador</a></h3> - -<p>Você verá três botões na barra de ferramentas localizada na parte inferior da janela do Simulador:<br> - <br> - <img alt="" src="https://mdn.mozillademos.org/files/5159/simulator-toolbar.png" style="display: block; height: 190px; margin-left: auto; margin-right: auto; width: 415px;">Da esquerda para a direita, são eles o Botão Home, o botão que simula a rotação da tela, e o botão de Geolocalização.</p> - -<ul> - <li>O botão Home leva você até a Tela Inicial</li> - <li>O botão que simula a rotação de tela muda a orientação entre modo retrato e modo paisagem. Essa ação disparará o evento <a href="/en-US/docs/WebAPI/Detecting_device_orientation" title="/en-US/docs/WebAPI/Detecting_device_orientation">deviceorientation</a></li> - <li>O botão de Geolocalização disparará um diálogo que pedirá acesso a sua localização geográfica, seja utilizando suas cordenadas atuais ou fornecendo coordenadas customizadas: está funcionalidade estará disponivel para seu aplicativo através da <a href="/en-US/docs/WebAPI/Using_geolocation" title="/en-US/docs/WebAPI/Using_geolocation">API Geolocalização</a></li> -</ul> - -<h3 id="Habilitando_o_registro_no_Console">Habilitando o registro no Console</h3> - -<p>Se você marcar a caixa "Console" localizada abaixo do botão "Stopped/Running", então o <a href="/en-US/docs/Error_Console" title="/en-US/docs/Error_Console">Console de erros</a> irá ser aberto quando você executar o Simulador. Seu aplicativo poderá registrar mensagens no Console fazendo uso do objeto global <a href="/en-US/docs/DOM/console" title="/en-US/docs/DOM/console">console</a>.</p> - -<h3 id="Conectando_as_ferramentas_de_desenvolvedor"><a name="Attaching-developer-tools">Conectando as ferramentas de desenvolvedor</a></h3> - -<p>Você pode conectar ferramentas de desenvolvedor ao Simulado para ajudar na depuração do seu aplicativo. No momento, só é possivel anexar o <a href="/en-US/docs/Tools/Debugger" title="/en-US/docs/Tools/Debugger">Depurador JavaScript </a>e o <a href="/en-US/docs/Tools/Web_Console" title="/en-US/docs/Tools/Web_Console">Web Console</a>, mas estamos trabalhando para dar suporte a mais ferramentas.</p> - -<p>Quando o Simulador está em execução outro botão aparecerá a baixo da caixa "Console". Ele está rotulado como "Connect...":</p> - -<p><img alt="" src="https://mdn.mozillademos.org/files/5167/dashboard-connect.png" style="display: block; height: 442px; margin-left: auto; margin-right: auto; width: 459px;"></p> - -<p>Clique nele, e então você verá uma página parecida com essa:</p> - -<p><img alt="" src="https://mdn.mozillademos.org/files/5163/connect-port-selection.png" style="display: block; height: 718px; margin-left: auto; margin-right: auto; width: 798px;">Clique em "Connect" e você verá outra página, como a abaixo:<br> - <br> - <img alt="" src="https://mdn.mozillademos.org/files/5165/connect-target-selection.png" style="display: block; height: 718px; margin-left: auto; margin-right: auto; width: 798px;"></p> - -<p>Para usar o <a href="/en-US/docs/Tools/Debugger" title="/en-US/docs/Tools/Debugger">Depurador JavaScript</a>, selecione a opção "chrome://prosthesis/content/shell.xul" nesta página. Uma vez executado, você precisará achar o script do seu aplicativo na <a href="/en-US/docs/Tools/Debugger#The_debugger_toolbar" title="/en-US/docs/Tools/Debugger#The_debugger_toolbar">lista de scripts</a>, mas se você abrir seu aplicadivo e então conectar o depurador, o script principal do seu aplicativo estará selecionado por padrão:</p> - -<p><img alt="" src="https://mdn.mozillademos.org/files/5169/js-debugger.png" style="display: block; height: 400px; margin-left: auto; margin-right: auto; width: 971px;"> Para utilizar o <a href="/en-US/docs/Tools/Web_Console" title="/en-US/docs/Tools/Web_Console">Web Console</a> com seu aplicativo, selecione a opção "Main Process" na janela "Connect to remote device".</p> - -<p>Até o presente momento, infelizmente, não existe uma forma de depurar o Web Console e o Depurador JS ao mesmo tempo - Porém, você pode executar duas instâncias das ferramentas de depuração, uma utilizando como alvo o "shell.xul" e a outra o "Main Process".</p> - -<h2 id="Enviando_aplicativo_ao_aparelho"><a name="Push-to-device">Enviando aplicativo ao aparelho</a></h2> - -<p>Se você possui um aparelho Firefox OS, você pode conectá-lo ao Simulador, e então enviar o aplicativo da Dashboard para o aparelho.</p> - -<h3 id="Conectando_o_aparelho">Conectando o aparelho</h3> - -<p>Para conectar o aparelho ao Simulador, é preciso que você tenha instalado o <a href="http://developer.android.com/tools/help/adb.html" title="http://developer.android.com/tools/help/adb.html">Android Debug Bridge (adb)</a>, mas o complemento do Simulador já inclui o adb para você. Você, entretanto, precisará configurar o aparelho Firefox OS e o seu sistema operacional desktop.</p> - -<ol> - <li>No seu aparelho Firefox OS: acesse o aplicativo Configurações, então <code>Aparelho</code> > <code>Mais Informações</code> > <code>Desenvolvedor</code>. No menu Desenvolvedor, marque a opçao "In the developer menu, check "Depuração Remota".</li> - <li>Configure seu sistema operacional para detectar o aparelho. As intruções para isso são específicas para cada SO e estão detalhadas no terceiro tópico em <a href="https://developer.android.com/tools/device.html" title="https://developer.android.com/tools/device.html">"Configurando um aparelho para Desenvolvimento"</a> no site de desenvolvimento do Android. O vendor ID para ser utilizado com aparelhos Firefox OS Geeksphone é <code>05c6.</code></li> -</ol> - -<h3 id="Enviando_aplicativos_ao_aparelho">Enviando aplicativos ao aparelho</h3> - -<p>Uma vez que você tenha configurado o aparelho, o seu computador, e tenha conectado o aparelho ao computador utilizando a porta USB, uma mensagem "Device connected" aparecerá no canto esquerdo da Dashboard, e uma nova ação nomeada "Push" aparecerá para cada aplicativo na lista de aplicativos instalados:</p> - -<p><img alt="" src="https://mdn.mozillademos.org/files/5227/device-connected.png"></p> - -<p>Clicando em "Push", o aplicativo será instalado no seu aparelho Firefox OS.</p> - -<h2 id="Limitações_do_Simulador"><a name="Limitations">Limitações do Simulador</a></h2> - -<p>Note que o Simulador do Firefox OS não é uma simulação perfeita.</p> - -<h3 id="Limitações_de_Hardware">Limitações de Hardware</h3> - -<p>A não ser pelo tamanho da tela, o Simulador não imita as condições reais de hardware de um aparelho Firefox OS tais como memória disponível e velocidade da CPU.</p> - -<h3 id="Audiovídeo_codecs">Audio/vídeo codecs</h3> - -<p>Os codecs a seguir dependem de decodificação acelerada por hardware então não são suportados ainda:</p> - -<ul> - <li>MP3</li> - <li>AAC</li> - <li>H.264 (MP4)</li> - <li>WebM</li> -</ul> - -<p>Isso não quer dizer que não seja possível utilizar o Simulador para testar o playback de vídeo em aplicativos e websites como Youtube que dependem desses codecs.</p> - -<h3 id="APIs_Indisponíveis"><a name="Unsupported-APIs">APIs Indisponíveis</a></h3> - -<p>Certas APIs que funcionam no aparelho não funcionarão no Simulador, geralmente porque o hardware necessário não está disponível no desktop. Nós implementamos simulações para algumas APIs tais como geolocalização mas iremos adicionar mais em futuros lançamentos. Entretanto, até o presente momento as APIs a seguir não são suportadas. Usá-las poderá causar erros e ou retornar resultados incorretos:</p> - -<ul> - <li><a href="/en-US/WebAPI/WebTelephony" title="/en-US/WebAPI/WebTelephony">Telephony</a></li> - <li><a href="/en-US/docs/WebAPI/WebSMS" title="/en-US/docs/WebAPI/WebSMS">WebSMS</a></li> - <li><a href="/en-US/docs/WebAPI/WebBluetooth" title="/en-US/docs/WebAPI/WebBluetooth">WebBluetooth</a></li> - <li><a href="/en-US/docs/WebAPI/Using_Light_Events" title="/en-US/docs/WebAPI/Using_Light_Events">Ambient Light</a></li> - <li><a href="/en-US/docs/WebAPI/Proximity" title="/en-US/docs/WebAPI/Proximity">Proximity</a></li> - <li><a href="/en-US/docs/WebAPI/Network_Information" title="/en-US/docs/WebAPI/Network_Information">Network Information</a></li> - <li><a href="/en-US/docs/Online_and_offline_events" title="/en-US/docs/Online_and_offline_events">navigator.onLine and offline events</a></li> - <li><a href="/en-US/docs/WebAPI/Vibration" title="/en-US/docs/WebAPI/Vibration">Vibration</a></li> -</ul> - -<h2 id="Buscando_Ajuda">Buscando Ajuda</h2> - -<p>Se você encontrar algum bug, por favor <a href="https://github.com/mozilla/r2d2b2g/issues?state=open" title="https://github.com/mozilla/r2d2b2g/issues?state=open">reporte-o no github</a>. Se você tiver dúvidas, utilize a mailling list <a href="https://lists.mozilla.org/listinfo/dev-developer-tools">dev-developer-tools (em Inglês)</a> ou o canal <a href="irc://irc.mozilla.org/#devtools">#devtools em irc.mozilla.org</a>.</p> diff --git a/files/pt-br/archive/b2g_os/televisoes_e_dispositivos_conectados/index.html b/files/pt-br/archive/b2g_os/televisoes_e_dispositivos_conectados/index.html deleted file mode 100644 index 028ecd6862..0000000000 --- a/files/pt-br/archive/b2g_os/televisoes_e_dispositivos_conectados/index.html +++ /dev/null @@ -1,138 +0,0 @@ ---- -title: Televisões e dispositivos conectados -slug: Archive/B2G_OS/Televisoes_e_dispositivos_conectados -tags: - - B2G - - Firefox - - Firefox OS - - Gaia - - Inteligente - - Mozilla - - TV - - Televisões -translation_of: Mozilla/Firefox_OS_for_TV ---- -<p></p><section class="Quick_links" id="Quick_Links"> - -<ol> - <li class="toggle"> - <details> - <summary>Build and install</summary> - <ol> - <li><strong><a href="/pt-BR/docs/Mozilla/B2G_OS/Building_and_installing_B2G_OS">Build and install overview</a></strong></li> - <li><a href="/pt-BR/docs/Mozilla/B2G_OS/Building_and_installing_B2G_OS/B2G_OS_build_process_summary">B2G OS build process summary</a></li> - <li><a href="/pt-BR/docs/Mozilla/B2G_OS/B2G_OS_build_prerequisites">Build prerequisites</a></li> - <li><a href="/pt-BR/docs/Mozilla/B2G_OS/Preparing_for_your_first_B2G_build">Preparing for your first build</a></li> - <li><a href="/pt-BR/docs/Mozilla/B2G_OS/Building">Building B2G OS</a></li> - <li><a href="/pt-BR/docs/Mozilla/B2G_OS/Building_and_installing_B2G_OS/B2G_installer_add-on">B2G installer add-on</a></li> - <li><a href="/pt-BR/docs/Mozilla/B2G_OS/Building_and_installing_B2G_OS/Building_for_Flame_on_OS_X">Building B2G OS for Flame on Mac OS X</a></li> - <li><a href="/pt-BR/docs/Mozilla/B2G_OS/Choosing_how_to_run_Gaia_or_B2G">Choosing how to run Gaia or B2G OS</a></li> - <li><a href="/pt-BR/docs/Mozilla/B2G_OS/Building_and_installing_B2G_OS/Compatible_Devices">Compatible Devices</a></li> - <li><a href="/pt-BR/docs/Mozilla/B2G_OS/Installing_on_a_mobile_device">Installing B2G OS on a mobile device</a></li> - <li><a href="/pt-BR/docs/Mozilla/B2G_OS/Building_and_installing_B2G_OS/B2G_OS_update_packages">Creating and applying B2G OS update packages</a></li> - <li><a href="/pt-BR/docs/Mozilla/B2G_OS/Building/FOTA_community_builds">Building and installing FOTA community builds</a></li> - <li><a href="/pt-BR/docs/Mozilla/B2G_OS/Building_and_installing_B2G_OS/B2G_Build_Variables_Reference_Sheet">B2G build variables reference sheet</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Porting B2G OS</summary> - <ol> - <li><strong><a href="/pt-BR/docs/Mozilla/B2G_OS/Porting_B2G_OS">Porting overview</a></strong></li> - <li><a href="/pt-BR/docs/Mozilla/B2G_OS/Porting_B2G_OS/basics">Porting basics</a></li> - <li><a href="/pt-BR/docs/Mozilla/B2G_OS/Porting_B2G_OS/Porting_on_CyanogenMod">Porting on CyanogenMod</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Developing Gaia</summary> - <ol> - <li><strong><a href="/pt-BR/docs/Mozilla/B2G_OS/Developing_Gaia">Developing Gaia overview</a></strong></li> - <li><a href="/pt-BR/docs/Mozilla/B2G_OS/Developing_Gaia/Running_the_Gaia_codebase">Running the Gaia codebase</a></li> - <li><a href="/pt-BR/docs/Mozilla/B2G_OS/Mulet">Run Gaia on desktop using Mulet</a></li> - <li><a href="/pt-BR/docs/Mozilla/B2G_OS/Developing_Gaia/Understanding_the_Gaia_codebase">Understanding the Gaia codebase</a></li> - <li><a href="/pt-BR/docs/Mozilla/B2G_OS/Developing_Gaia/Making_Gaia_code_changes">Making Gaia code changes</a></li> - <li><a href="/pt-BR/docs/Mozilla/B2G_OS/Developing_Gaia/Testing_Gaia_code_changes">Testing Gaia code changes</a></li> - <li><a href="/pt-BR/docs/Mozilla/B2G_OS/Developing_Gaia/Submitting_a_Gaia_patch">Submitting a Gaia patch</a></li> - <li><a href="/pt-BR/docs/Mozilla/B2G_OS/Developing_Gaia/Build_System_Primer">Gaia build system primer</a></li> - <li><a href="/pt-BR/docs/Mozilla/B2G_OS/Developing_Gaia/Different_ways_to_run_Gaia">Different ways to run Gaia</a></li> - <li><a href="/pt-BR/docs/Mozilla/B2G_OS/Developing_Gaia/make_options_reference">Make options reference</a></li> - <li><a href="/pt-BR/docs/Mozilla/B2G_OS/Developing_Gaia/Gaia_tools_reference">Gaia tools reference</a></li> - </ol> - </details> - </li> - <li><a href="/pt-BR/docs/Mozilla/B2G_OS/API">B2G OS APIs</a></li> -</ol> -</section><p></p> - -<p class="summary"><span class="seoSummary">Bem-vindo a página de embarque para o Firefox OS em Televisões e dispositivos conectados. Este artigo é escrito para desenvolvedores Web que são interessados no Firefox OS para SmartTVs (Televisões Inteligentes) para um trabalho atual ou futuro, e também o desenvolvimento de WebApps para TVs. Os artigos linkados abaixo apresentam tudo o que você precisa para construir e executar o Simulador de Firefox OS para TVs, conseguir iniciar a escrever aplicativos e implementálos em TVs, entender aplicações para TVs e as diferenças de UX (Experiência de Usuário), e muito mais.</span></p> - -<ul> -</ul> - -<h2 id="Estado_atual_e_planos_futuros">Estado atual e planos futuros</h2> - -<p>O Gaia 2.1 e versões acima possuem facilidades para funcionamento em TVs. Existem smart TVs no mercado que rodam o Firefox OS desde a metade do ano de 2015, sendo a primeira a <a href="http://www.panasonic.com/promos/learn/smart-viera/">Smart TV Panasonic VIERA</a>.</p> - -<p>A mais nova versão do Firefox OS (2.5) é disponível atualmente aos parceiros e desenvolvedores, também aos que adicionam novos recursos, que serão disponibilizados na nova série da Panasonic DX900 UHD TVs ainda este ano. Está atualização irá incluir novas maneiras de discobrir aplicativos Web e salvá-los em sua TV, sincronizar através das características do Firefox Sync com sua TV e outras utilidades (tais como favoritos, etc). O maior destaque é o recurso “enviar para TV”, ferramenta para compartilhar facilmente conteúdos Web com o Firefox para Android com sua TV rodando o Firefox OS.</p> - -<p>O empenho do Firefox OS para TVs é parte de um esforço mais amplo para fornecer o Firefox OS como uma plataforma aberta para a gestão e controle de uma faixa mais ampla de dispositivos conectados disponíveis em todo o mundo (i.e. a <em>Internet das Coisas</em>.) </p> - -<h2 id="Configuração_de_Ambiente_para_TVs_e_ferramentas">Configuração de Ambiente para TVs e ferramentas</h2> - -<ul> - <li><a href="/en-US/docs/Mozilla/Firefox_OS/TVs_connected_devices/Simulating_Firefox_OS_for_TV">Simulating Firefox OS for TV on your desktop</a></li> - <li><a href="/en-US/docs/Mozilla/Firefox_OS/TVs_connected_devices/How_to_connect_WebIDE_to_TV_%28VIErA%29">How to connect WebIDE to TV (VIErA CX/CR series)</a></li> - <li><a href="/en-US/docs/Mozilla/Firefox_OS/TVs_connected_devices/TV_remote_control_button_mapping_to_keyboard">TV remote control button mapping to keyboard</a></li> -</ul> - -<h2 id="Desenvolvimento_de_aplicações_web_para_TVs">Desenvolvimento de aplicações web para TVs</h2> - -<p>In brief, the main differences between using Firefox OS on a TV versus a phone (or a desktop computer) are:</p> - -<ul> - <li><strong>Control mechanisms</strong>: Firefox OS on TV likely only has a TV remote available to control it, which is not as convenient as a keyboard, mouse or touch screen.</li> - <li><strong>Resolution</strong>: Modern smart TVs are usually Full HD (1920x1080) or Ultra HD (4K). The Device Pixel Ratio on TVs is also different to that of most mobile devices.</li> -</ul> - -<h3 id="Artigos_sobre_o_desenvolvimento_de_Apps">Artigos sobre o desenvolvimento de Apps</h3> - -<ul> - <li><a href="/en-US/docs/Mozilla/Firefox_OS/TVs_connected_devices/Hello_world_example">Firefox OS for TV hello world example</a></li> - <li><a href="/en-US/docs/Mozilla/Firefox_OS/TVs_connected_devices/Interacting_with_TV_remote_controls">Interacting with TV remote controls</a></li> - <li><a href="/en-US/docs/Mozilla/Firefox_OS/TVs_connected_devices/TV_remote_control_navigation">Implementing TV remote control navigation</a></li> - <li><a href="/en-US/docs/Mozilla/Firefox_OS/Platform/Keyboard_events_across_browser_elements">Keyboard events across browser elements</a></li> - <li><a href="/en-US/docs/Mozilla/Firefox_OS/TVs_connected_devices/TV_broadcast_streams_Firefox_OS">TV broadcast streams on Firefox OS products</a></li> - <li>Q&A for TV apps (to be started)</li> -</ul> - -<h2 id="Visão_Geral_sobre_UX_de_TVs">Visão Geral sobre UX de TVs</h2> - -<ul> - <li><a href="/en-US/Apps/Design/Firefox_OS_TV_UX/App_layout_guide">TV app layout guide</a></li> - <li><a href="/en-US/Apps/Design/Firefox_OS_TV_UX/Building_blocks">TV building blocks</a></li> - <li><a href="/en-US/Apps/Design/Firefox_OS_TV_UX/Icon_design">TV icon design</a></li> - <li><a href="/en-US/Apps/Design/Firefox_OS_TV_User_Interface_Animation_Design">Firefox OS TV User Interface & Animation Design</a></li> - <li><a href="/en-US/docs/Mozilla/Firefox_OS/TVs_connected_devices/Web_animations_on_large_screen">Web animations on large screens</a></li> -</ul> - -<h2 id="Noções_Básicas_sobre_o_Firefox_OS">Noções Básicas sobre o Firefox OS</h2> - -<ul> - <li><a href="/en-US/Firefox_OS/Introduction">Firefox OS introduction</a></li> - <li><a href="/en-US/Apps/Build">Building Web apps</a></li> - <li><a href="/en-US/Apps/Build/Building_apps_for_Firefox_OS">Building apps for Firefox OS</a></li> - <li><a href="/en-US/Apps/Design/UI_layout_basics">UI layout basics</a></li> -</ul> - -<h2 id="Suporte_para_a_API_em_TVs">Suporte para a API em TVs</h2> - -<p>Firefox OS for TV is based on Gecko, so therefore it supports most of the <a href="/en-US/docs/Web/API">APIs</a> available for the web platform, and <a href="/en-US/Apps/Reference/Firefox_OS_device_APIs">Firefox OS-specific APIs</a>. There are some exceptions, however, and this list outlines those:</p> - -<ul> - <li><a href="/en-US/docs/Web/API/DeviceStorage">DeviceStorage</a>: Not supported on VIErA TV.</li> - <li><a href="/en-US/docs/Web/API/Geolocation">Geolocation</a>: Not supported on VIErA TV.</li> - <li><a href="/en-US/docs/Web/API/WebRTC_API">WebRTC</a>: Not supported on VIErA TV.</li> -</ul> diff --git a/files/pt-br/archive/b2g_os/testes_firefox_os_guia_desenvolvedores/index.html b/files/pt-br/archive/b2g_os/testes_firefox_os_guia_desenvolvedores/index.html deleted file mode 100644 index 06db480396..0000000000 --- a/files/pt-br/archive/b2g_os/testes_firefox_os_guia_desenvolvedores/index.html +++ /dev/null @@ -1,63 +0,0 @@ ---- -title: 'Testes no Firefox OS: um guia para desenvolvedores' -slug: Archive/B2G_OS/Testes_Firefox_OS_guia_desenvolvedores -tags: - - Firefox OS - - Gaia - - Gecko - - Testes -translation_of: Archive/B2G_OS/Running_Tests_on_Firefox_OS_for_Developers ---- -<div class="summary"> - <p>As equipes que trabalham na automação de testes têm trabalhado duro para expandir nossa infraestrutura de automação de testes do Firefox OS bem como para produzir novos métodos para testar especificamente o telefone ao invés do navegador (no qual nossos métodos atuais são especializados). Devido à arquitetura do Firefox OS o funcionamento dessas ferramentas podem parecer um pouco complicadas para você que é um desenvolvedor e quer apenas fazer alguns testes para ver se a sua correção funcionou ou não. Este artigo visa dar sentido a todos os recursos de teste disponibilizados pela Mozilla.</p> -</div> -<h2 id="Começando">Começando</h2> -<p>Se você é um desenvolvedor Gecko, você deve rever a documentação para automação de testes com o qual você já é familiar: <a href="/en-US/docs/Mozilla/Firefox_OS/Platform/Automated_testing/Mochitests">mochitest</a>, <a href="/en-US/docs/Mozilla/Firefox_OS/Platform/Automated_testing/Reftests">reftest</a>, e <a href="https://developer.mozilla.org/en-US/Firefox_OS/Platform/Automated_testing/XPCShell">xpcshell</a>.</p> -<p>Se você é um desenvolvedor de aplicativos ou do Gaia, ou ainda um desenvolvedor Gecko interessado em aprofundar-se em testes de estilo para o usuário final no qual você realmente exercita-se no Sistema Operacional, então você precisa dar uma olhada na suite de testes do Gaia. Existem duas suites de testes primários:</p> -<ul> - <li><a href="/pt-BR/Firefox_OS/Platform/Automated_testing/gaia-ui-tests">Testes de Interface do Usuário Gaia</a>: Esses testes são baseados no Python e podem ser executados tanto no desktop quanto nos dispositivos. Eles testam vários aspectos da IU como testes de resistência (incluindo muitos contatos no aplicativo Contatos, bloqueio e desbloqueio da tela repetidas vezes, configurando diversos alarmes no aplicativo Alarmes, etc.), testes funcionais (por exemplo, procurando estações no aplicativo Rádio, capturando fotos no aplicativo Câmera) e testes de acessibilidade (por exemplo, habilitando e desabilitando o leitor de tela).</li> - <li><a href="https://github.com/mozilla-b2g/gaia/#integration-tests">Teste de integração do Gaia</a>: São baseados em JavaScript usando <a href="https://github.com/mozilla-b2g/marionette-js-runner">marionette-js-runner</a> e somente pode ser executado no B2G Desktop (em breve terá suporte para dispositivos reais). São testados vários aspectos de como o Gaia interage com outros aplicativos e serviços, como por exemplo testar como o aplicativo Calendário adiciona um servidor CalDAV, ou se o navegador consegue interagir com os motores de busca.</li> -</ul> -<p>Qual você vai escolher realmente depende do seu conjunto de ferramentas preferidas e do que você deseja testar.</p> -<h2 id="Executando_os_testes_de_IU_do_Gaia">Executando os testes de IU do Gaia</h2> -<p>A Suite <a href="https://github.com/mozilla-b2g/gaia/tree/master/tests/python/gaia-ui-tests">de testes da IU do Gaia</a> pode ser executada no B2G Desktop ou em dispositivos reais, mas nessa seção nós vamos nos concentrar nos testes em dispositivos reais, uma vez que sempre é melhor executar testes nesses dispositivos.</p> -<p>Observe que esse teste é <strong>destrutivo</strong> e por isso, você deve fazer uma cópia de segurança antes de executar esses testes. Dependendo do testes que você vai executar, pode até fazer ligações telefônicas. Assim, seja bastante cuidadoso sobre o que você vai executar, para tomar as devidas precauções como fazer uma cópia de segurança, remover o SIM Card, etc.</p> -<p>Note that this test is <em><strong>destructive</strong></em> and as such, you should back up anything you care about on the phone before running these tests. Depending on which tests you run, they can also make phone calls. So be aware that you want to be very careful about what you run and how you back up the phone, remove the SIM card, etc. Dito, isso se você já criou um <em>build</em> será muito fácil executar os testes. Veja como.</p> -<h3 id="Primeira_configuração">Primeira configuração</h3> -<p>Você precisa executar os passos a seguir uma vez, assumindo que você não vai trocar o diretório do seu Gaia. Crie um Python virtualenv (<a href="https://pypi.python.org/pypi/virtualenv">instalando a ferramenta virtualenv</a> caso você ainda não tenha um), ative-o e instale a ferramenta de testes da IU do Gaia no seu virtualenv. Ao criar um ambiente virtual usando os passos descritos abaixo você se certificará de que você está rodando os códigos de teste que estão no seu repo Gaia (isso é útil no caso de você precisar depurar alguma coisa).</p> -<pre><code class="brush: bash">$ virtualenv gaia_ui_venv # This will create a gaia_ui_venv directory where the virtual environment lives. It can be anywhere on your system. -$ source gaia_ui_venv/bin/activate # This activates our virtualenv -(gaia_ui_venv)$ cd <b2groot>/gaia/tests/python/gaia-ui-tests;python setup.py develop # This installs the gaia ui harness into your virtual environment. </code></pre> -<p>Se você já havia criado um ambiente virtual para os testes do Gaia, você simplesmente pode fazer o seguinte:</p> -<pre><code class="brush: bash">$ source gaia_ui_venv/bin/activate</code></pre> -<h3 id="Para_executar_os_testes">Para executar os testes</h3> -<p>Primeiramente, você precisa criar o arquivo testvars. Para fazer isso, copie o original e adicione os atribuitos que desligam os avisos que esse teste <strong>destruirá todo o conteúdo do seu telefone</strong>. Esses são bons testes, mas não deixam o telefone no mesmo estado de quando foram iniciados, por isso você precisa ter certeza de ter sido feita a cópia de segurança antes de executar os testes. As instruções descritas aqui assumem que você ativou o ambiente virtual e está sendo executado no diretório <code>gaia/tests/python/gaia-ui-tests</code>.</p> -<pre><code class="brush: bash">(gaia_ui_venv)$ cp gaiatest/testvars_template.json testvars.json -# Now edit your copy of testvars.json and add in the following attributes into the json: -"acknowledged_risks": true, -"skip_warning": true,</code></pre> -<p>Agora basta conectar seu telefone via USB, direcionar para a porta do marionette para que o executor do teste possa acessá-la. Os testes estão em<code> gaiatest/tests</code> e você pode escolher qualquer uma para executar. Por exemplo, se você quer executar testes de contatos, execute o seguinte:</p> -<pre><code>(gaia_ui_venv)$ adb forward tcp:2828 tcp:2828 -(gaia_ui_venv)$ gaiatest --testvars=testvars.json --address=localhost:2828 gaiatest/tests/functional/contacts/</code></pre> -<div class="note"> - <p><strong>Nota</strong>: Para saber quais testes de IU estão disponíveis, navege nos <a href="https://github.com/mozilla-b2g/gaia/tree/master/tests/python/gaia-ui-tests/gaiatest/tests">diretórios do gaiatest dentro do repo Gaia</a>.</p> -</div> -<p>Para sair do virtualenv do Python, use o comando especial do virtualenv <code>deactivate</code>:</p> -<pre><code>(gaia_ui_venv)$ deactivate -$</code></pre> -<div class="note"> - <p><strong>Nota</strong>: Para saber mais sobre testes da IU do Gaia, verifique as <a href="/en-US/Firefox_OS/Platform/Automated_testing/gaia-ui-tests">páginas</a>.</p> -</div> -<h2 id="Executando_testes_de_integração_do_Gaia">Executando testes de integração do Gaia</h2> -<p>Para executar os <a href="https://github.com/mozilla-b2g/gaia/#integration-tests">testes de integração do Gaia</a> atualmente você deve usar o B2G Desktop (também estará disponível para dispositivos reais em breve).</p> -<p>Tendo apenas a árvore do Gaia e o NodeJS instalados no seu computador, o comando a seguir faz todo o resto:</p> -<pre><code>$ cd gaia $ make test-integration </code></pre> -<p>Ou seja — essa instrução vai baixar o <em>build</em> do B2G Desktop e executar os testes nesse <em>build</em>.</p> -<div class="note"> - <p><strong>Nota</strong>: Para aprender mais sobre os Testes de integração do Gaia verifique <a href="https://github.com/mozilla-b2g/gaia/#integration-tests">o repo no Github.</a></p> -</div> -<div class="note"> - <p><strong>Nota</strong>: Para saber quais testes estão disponíveis, navegue no <a href="https://github.com/mozilla-b2g/gaia/tree/master/apps">diretório apps no repo Gaia.</a> Testes de integração podem ser encontrados nos subdiretórios do diretório <code>test/marionette/</code>.</p> -</div> -<h2 id="Resumindo">Resumindo</h2> -<p>Como sempre, o trabalho está em andamento para tornar todos os nossos testes mais fáceis de executar tanto a nível local para os desenvolvedores, bem como em nossos sistemas de automação. Sinta-se a vontade para nos encontrar no canal #ateam do IRC em qualquer momento que você tenha dúvidas sobre a automação de testes para o Firefox OS ou em qualquer uma das ferramentas de automação da Mozilla.</p> diff --git a/files/pt-br/archive/b2g_os/usando_o_app_manager/index.html b/files/pt-br/archive/b2g_os/usando_o_app_manager/index.html deleted file mode 100644 index 363dd463ad..0000000000 --- a/files/pt-br/archive/b2g_os/usando_o_app_manager/index.html +++ /dev/null @@ -1,254 +0,0 @@ ---- -title: Usando o App Manager -slug: Archive/B2G_OS/Usando_o_App_Manager -translation_of: Archive/B2G_OS/Using_the_App_Manager ---- -<div class="summary"> -<p>O App Manager é uma nova ferramenta disponível no Firefox para desktop, que fornece uma série de ferramentas úteis para ajudá-lo a testar, implantar e depurar aplicativos web HTML5 em aparelhos Firefox OS e no Firefox OS Simulator, diretamente do seu navegador.</p> - -<p>O App Manager deve ser utilizado por desenvolvedores do Firefox OS 1.2 ou superiores, Se voce está desenvolvendo aplicativos para o Firefox OS 1.1, então você deve verificar a documentacão para <a href="https://developer.mozilla.org/pt-BR/docs/Tools/Firefox_OS_1.1_Simulator">o simulador Firefox OS 1.1</a>.</p> -</div> - -<p>{{EmbedYouTube("z1Bxg1UJVf0")}}</p> - -<p>O App Manager <span class="short_text" id="result_box" lang="pt"><span class="hps">é</span> <span class="hps">composto por</span></span>:</p> - -<ul> - <li>O <a href="#Apps_panel"><em>Apps panel</em></a>, que gerencia apps locais (código-fonte da app localizada no seu computador) e apps hospedadas exeternamente, permite você criar pacotes e instalar no seu dispositivo ou no simulador e depois depure seu aplicativo utilizando o Toolboxes</li> - <li>O <a href="#Device_panel"><em>Device panel</em></a>, que exibe informações sobre o dispositivo conectado, como a versão do Firefox OS instalado, permissões necessárias para utilizar as APIs no dispositivo, e as apps instaldas no dispositivoƒ</li> - <li><a href="/en-US/docs/Tools_Toolbox"><em>Toolboxes</em></a>, que é conjunto de ferramentas para o desenvolvedor (web console, inspector, debugger, etc.) que pode ser conectado a uma app em execução utilizando o App panel com a finalizadade de depurar seu App</li> -</ul> - -<h2 id="Quick_setup"><a name="Configuring_device">Quick setup</a></h2> - -<p>Está seção é designada para que você consiga executar o mais rápido possível seus apps; Se você precisa de mais algum detalhe, por favor acesse a seção {{ anch("Device and system configuration") }} e comece a leitura. Se você estiver com problemas tem a seção {{ anch("Troubleshooting") }} para te ajudar.</p> - -<ol> - <li>Certifique-se se você esta com o Firefox Desktop 26+ instalado</li> - <li>Abra o App Manager (na barra de URL, <code>tipo about:app-manager</code>)</li> - <li>Se você não tem um dispositivo: - <ol> - <li><a href="https://ftp.mozilla.org/pub/mozilla.org/labs/fxos-simulator/">Instale o Firefox OS Simulator</a></li> - <li>Dentro do App Manager's no toolbar, click em <em>Start Simulator</em>, depois click no nome do simulador instalado.</li> - </ol> - </li> - <li>Se você tem um dispositivo: - <ol> - <li>Certifique-se que o seu dispositivo está rotando com o Firefox OS 1.2+</li> - <li>Dentro de Settings do seu dispositivo, desabilite o Screen Lock (<code>Settings > <code>Phone Lock > Lock Screen</code></code>) e habilite o Remote Debugging (<code>Settings > Device information > More information > Developer</code>)</li> - <li><a href="https://ftp.mozilla.org/pub/mozilla.org/labs/fxos-simulator/">Instale o add-on ADB Helper</a> no seu navegador Firefox Desktop</li> - <li>Conecte seu dispositivo no seu computador pelo cabo USB</li> - <li>Você deverá ver o nome de seu dispositivo na barra inferior dentro do App Manager's. Click no nome do seu dispositivo</li> - </ol> - </li> - <li>Na barra inferior deve mostrar "Connected to: xxx"</li> - <li>Click em <em>Apps</em> panel e adicione uma app (app local ou hospedada)</li> - <li>O botão <em>Refresh</em> valida sua app e instala no Simulador ou Dispositivo</li> - <li>O botão <em>Debug</em> conecta o developer tools no app em execução</li> -</ol> - -<h2 id="Configuração_do_sistema_e_do_dispositivo">Configuração do sistema e do dispositivo</h2> - -<p>A primeira coisa que você vai precisa fazer quando usar o App Manager é certificar-se que o sistema do seu dispositivo esta configurado corretamente. Está seção vai mostrar todos os passos que devemos executar.</p> - -<h3 id="Requer_Firefox_OS_1.2">Requer Firefox OS 1.2+</h3> - -<p>Certifique-se que seu dispositivo esta com o Firefox OS 1.2/Boot2Gecko 1.2 ou maior instalado. Para chegar qual é a versão do Firefox OS que está rodando em seu dispositivo, entre em <code>Settings > Device Information > Software</code>.</p> - -<p>Se você não está com essa versão do Firefox OS instalada, dependendo do seu dispositivo, você terá que instalar o nightly build do Firefox 1.2+, ou configurar de forma manual o build.</p> - -<p>Builds disponíveis:</p> - -<ul> - <li><a href="http://downloads.geeksphone.com/">Geeksphone Keon/Peak builds</a> (para saber mais como usar, leia <a href="/en-US/docs/Mozilla/Firefox_OS/Developer_phone_guide/Updating_and_Tweaking_Geeksphone">Atualizando e aprimorando o seu Firefox OS Developer Preview phone/Geeksphone</a>)</li> - <li>Mais a seguir</li> -</ul> - -<p>Para o build da sua própria distribuição do Firefox OS+, seguir as instruções localizada no <a href="/en-US/docs/Mozilla/Firefox_OS/Building_and_installing_Firefox_OS">Buildando e instalando o Firefox OS</a>, inicie com starting with <a href="/en-US/docs/Mozilla/Firefox_OS/Firefox_OS_build_prerequisites">Pré-requisitos para build do Firefox OS</a>.</p> - -<h3 id="Depurando_remotamente">Depurando remotamente</h3> - -<p>Para depurar remotamente, você precisar abilitar o remote debugging no Firefox OS. Basta ir em <code>Settings > Device information > More information > Developer</code> e deixar chegado a opção Remote Debugging.</p> - -<h3 id="Adb_Helper_Add-on" name="Adb_Helper_Add-on">ADB ou ADB helper</h3> - -<p>O processo para usar o Android Debug Bridge (ADB) para conectar o dispositivo a sua máquina. Temos duas opção para rodar o ADB:</p> - -<ul> - <li> - <p>Executar o ADB no navegador Firefox (recomendada). <a href="https://ftp.mozilla.org/pub/mozilla.org/labs/fxos-simulator/">Instalar o ADB Helper como add-on do Firefox</a>, este é o processo mais fácil. Instalando o Add-on, não tem necessidade de instalar o ADB, e não tem a necessidade de digitar o comando <code>adb forward</code> command: tudo é manipulado pelo add-on.</p> - <a href="https://ftp.mozilla.org/pub/mozilla.org/labs/fxos-simulator/" style="margin-bottom: 20px; padding: 10px; text-align: center; border-radius: 4px; display: inline-block; background-color: #81BC2E; white-space: nowrap; color: white; text-shadow: 0px 1px 0px rgba(0, 0, 0, 0.25); box-shadow: 0px 1px 0px 0px rgba(0, 0, 0, 0.2), 0px -1px 0px 0px rgba(0, 0, 0, 0.3) inset;" title="https://addons.mozilla.org">Download do Add-on ADB Helper</a></li> - <li>Utilizando o ADB manual. Você precisa ter instalado no seu computador o Andorid SDK (ver o <a href="http://developer.android.com/sdk/index.html">Pegar o Android SDK</a>), pois o <code>adb</code> é uma parte do pacote do Android SDK. Você precisa abilitar e direcionar o adb para uma porta, sendo assim, abra o terminal e digite o seguinte comand: - <pre>adb forward tcp:6000 localfilesystem:/data/local/debugger-socket</pre> - Você vai precisar executar este comando toda vez que o dispositivo for desligado ou reniciado.</li> -</ul> - -<div class="note"> -<p>Nota: Não tem necessidade de executar este comando se você optou por instalar o Add-on ADB Helper.</p> -</div> - -<h2 id="Conectando_seu_dispositivo_utilizando_o_App_Manager">Conectando seu dispositivo utilizando o App Manager</h2> - -<p>Quando finalizar todas as configurações, você está pronto para ligar seu dispositivo no computador e iniciar o App Manager:</p> - -<ol> - <li>Conecte o dispositivo em seu computador utilizando o USB.</li> - <li>Desabilite o bloqueio de tela , entrando em <code>Settings > Phone Lock</code> desabilite a opção <code>Lock Screen</code>. Está é uma ótima opção, pois quando a tela fica bloqueada, o dispositivo perde a conexão com o computador, ou seja, não o dispositivo não fica disponível para depurar.</li> - <li>Inicie o App Manager — Dentro Firefox Desktop no menu de opções, click em <code>Tools > Web Developer > App Manager</code> , ou digite <code>about:app-manager</code> na barra de URL.</li> - <li>Na parte inferior do App Manager, você vai visualizar o status de conexão (veja o screenshot abaixo). Você poderá conectar o dispositivo clicando no botão "Connect to localhost:6000".</li> - <li>Se o passo anterior funcionou com sucesso, no prompt deverá aparecer o seu dispositivo: "An incoming request to permit remote debugging connection was detected. Allow connection?". Aperte o botão OK (Você também pode ter que precionar o botão de bloqueio/desligar/ligar para que você possa ver o prompt.) A barra de status da conexão deverá atualizar e aparecer "Connected to B2G", com o botão Disconnect abilitado, para ser precionado quando você quiser cancelar a conexão.</li> -</ol> - -<p><img alt="" src="https://mdn.mozillademos.org/files/6263/connection-status.png" style="width: 600px; height: 30px; display: block; margin: 0px auto;"></p> - -<div class="note"> -<p>Note que outros controles dentro da barra de status da conexão, como o botão para conectar no simulador e para o App Manager, que nós vamos cobrir nas próximas seções abaixo, e como acontece a troca da porta de conexão. Se você alterar a porta de conexão, você também deverá abilitar e direcionar a porta confome as instruções na seção acima {{anch("Enable port forwarding")}}.</p> -</div> - -<h2 id="Utilizando_o_Add-on_Firefox_OS_Simulator"><a name="Simulator">Utilizando o Add-on Firefox OS Simulator</a></h2> - -<p>Se você não tem um dispositivo real para utilizar com o App Manager, você ainda pode usar o Add-on Firefox OS Simulator. Para iniciar, instale o simulador mais apropriado ao seu sistema operacional:</p> - -<p><a href="https://ftp.mozilla.org/pub/mozilla.org/labs/fxos-simulator/" style="margin-bottom: 20px; padding: 10px; text-align: center; border-radius: 4px; display: inline-block; background-color: #81BC2E; white-space: nowrap; color: white; text-shadow: 0px 1px 0px rgba(0, 0, 0, 0.25); box-shadow: 0px 1px 0px 0px rgba(0, 0, 0, 0.2), 0px -1px 0px 0px rgba(0, 0, 0, 0.3) inset;">Instalar Simulador</a></p> - -<p>Uma vez que você instalou o simulador, você só precisa ir até a barra de status da conexão dentro do App Manager e clicar no botão "Start simulator". Aparecerá três botôes:</p> - -<ul> - <li>"Firefox OS 1.3", "Firefox OS 1.2" ... etc (ou algo similar): Só clicar em um simulador, por exemplo o FIrefox OS 1.2 que será aberto uma janela com o simulador clickado.</li> - <li>"Add": o botão central navega nos links de instalação do simulador, dessa forma você pode adicionar mais simuladores (Firefox OS 1.3, Firefox OS 1.4, etc).</li> - <li>"Cancel": este botão tem a função de cancelar a conexão.</li> -</ul> - -<p><strong>Note</strong>: O simulador Firefox OS 1.5 foi removido e substituído pelo 2.0. Se você possui o Simulador Firefox OS 1.5 instalado, ele não será atualizado pelo 2.0 automaticamente, você deve desinstalar o 1.5 e instalar o 2.0. O Simulador Firefox OS 2.0 será atualizado automaticamente.</p> - -<div class="note"> -<p><strong>Note</strong>: O Simulador Firefox OS 1.2 foi removido, uma vez que provavelmente não haverá lançamentos de telefones com a versão 1.2 instalada — essa versão não apresentou muitas diferenças, assim faz mais sentido investir o tempo depurando outras versões.</p> -</div> - -<h2 id="Executando_compilações_customizadas_no_App_Manager">Executando compilações customizadas no App Manager</h2> - -<p>Você pode executar compilações customizadas do B2G Desktop e Gaia/Gecko no App Manager via simulador. Consulte <a href="https://developer.mozilla.org/pt-BR/Firefox_OS/Running_custom_builds_in_the_App_Manager">Executando compilações do Firefox OS ou do Gaia no App Manager</a> para saber como fazer isso.</p> - -<h2 id="Apps_panel_2"><a name="Apps_panel">Apps panel</a></h2> - -<p>Agora que tudo está funcionando, vamos rever as funcionalidades disponíveis do App Manager, vamos começar pelo Apps Panel. Com ele, você pode importar um aplicativo local ou externo para seu dispositivo ou simulador e depurar:</p> - -<ul> - <li>Pra instalar um app local, click em "Add Packaged App", depois localize onde fica seu app local.</li> - <li>Para instalar um app externo, entre com a URL absoluta de onde esta hospedado o arquivo de manifest da app e precione o botão com sinhal de mais(+).</li> -</ul> - -<p>Informações sobre o seu app deve apararever do lado direitro na janela, conforme você pode ver abaixo:</p> - -<p><img alt="" src="https://mdn.mozillademos.org/files/6261/apps-panel.png" style="width: 600px; height: 375px; display: block; margin: 0px auto;"></p> - -<p>Click em <em>"Update"</em> para autlizar (instalar) a app no dispositivo. Click em <em>"debug"</em>, com isso vai abrir o inspect nativo do navegador Firefox, com isso você pode depurar o seu código:</p> - -<p><img alt="" src="https://mdn.mozillademos.org/files/6265/debug.png" style="width: 600px; height: 375px; display: block; margin: 0px auto;"></p> - -<div class="note"> -<p>Nota: Você vai gostar de brincar dentro do inspect do Firefox - tente alterar o DOM, CSS e etc. e você verá a alterações em tempo real em seu dispositivo. Todas alterações serão salvas em seu aplicativo que está instalado, ou seja você vai ver todas alterações na próxima vez que abrir o app no dispositivo.</p> -</div> - -<p>Se uma app não for instalada com sucesso, por exemplo, se a URL for incorreta, ou você selecionou um pasta local incorreta. Uma entrada de um novo app será criada, mais com um alerta de erro.</p> - -<p><img alt="" src="https://mdn.mozillademos.org/files/6259/apps-error.png" style="width: 600px; height: 375px; display: block; margin: 0px auto;"></p> - -<p>Você também pode apagar um app nesta mesma janela, passe o mouse sobre uma das App's listadas do lado esquerdo da janela, vai aparecer um botão com label "X", para apagar basta clickar neste botão. Porém o app só será apagado desta lista, ou seja, caso queira apagar no dispositivo ou simulador, você precisar deletar de forma manual entrando no app ou no simulador.</p> - -<h2 id="Painel_Device"><a name="Device_panel">Painel Device</a></h2> - -<p>A aba <em>Device</em> exibe informações sobre o dispositivo conectado. Na janela <em>"</em>Installed Apps<em>"</em>, mostra uma lista de dos apps isntalados no dispositivo e que podem ser iniciados e depurados.</p> - -<p><img alt="" src="https://mdn.mozillademos.org/files/6267/device-tab.png" style="width: 600px; height: 375px; display: block; margin: 0px auto;"></p> - -<div class="note"> -<p>Nota: Apps certificados não são listadados por padão. <a href="#Debugging_Certified_Apps">Veja como depurar Apps Certificados</a>.</p> -</div> - -<p>A janela "Permissions" lista os privilégios necessários para o uso das <a href="/en-US/docs/WebAPI">Web APIs</a> no dispositivo:</p> - -<p><img alt="" src="https://mdn.mozillademos.org/files/6269/permissions.png" style="width: 600px; height: 375px; display: block; margin: 0px auto;"></p> - -<p>Finalmente , você pode ter um screenshot da tela do seu dispositivo, clicando no botão "Screenshot". O screenshot aparece em uma nova aba do Firefox, onde você pode discartar ou informar o caminho onde quer salvar o screenshot.</p> - -<h2 id="Depurando_Aplicativos_Certificados"><a name="Debugging_Certified_Apps">Depurando Aplicativos Certificados</a></h2> - -<p>Atualmente apenas dispositivos que tem o Firefox OS 1.2+ são capazes de depurar os Apps que são Certificados. Se você tiver uma versão de desenvolvedor, você pode liberar para depurar os apps com certificação, basta alterar a pref <code>devtools.debugger.forbid-certified-apps</code> para <code>false</code> no seu perfil. Para fazer isto, siga os passos abaixp:</p> - -<ol> - <li> - <p>Em seu computador, digite o seguinte comando no Terminal/console enter the following command in Terminal/console, para entrar nos arquivos do sistema via shell:</p> - - <pre class="brush: bash">adb shell</pre> - - <p>O seu prompt deve mudar para <code>root@android</code>.</p> - </li> - <li> - <p>Em seguida, para parara o B2G execute o comando abaixo:</p> - - <pre class="brush: bash">stop b2g</pre> - </li> - <li> - <p>Navegue para o seguinte diretório:</p> - - <pre>cd /data/b2g/mozilla/*.default/</pre> - </li> - <li> - <p>Agora, atualize o arquivo prefs.js com a seguinte linha:</p> - - <pre class="brush: js">echo 'user_pref("devtools.debugger.forbid-certified-apps", false);' >> prefs.js</pre> - </li> - <li> - <p>Depois que você terminar de editar e salvar o arquivo, inicie o B2G com o seguinte comando:</p> - - <pre class="brush: bash">start b2g</pre> - </li> - <li> - <p>Execute o comando <code>exit</code>; Para retornar ao seu prompt normal.</p> - </li> - <li> - <p>Em seguita, retorne para o App Manager e você verá os apps certificados disponíveis para depurar.</p> - </li> -</ol> - -<div class="note"> -<p>Nota: Se você quiser adicionar está preferência no seu Gaia, para manter está alteração ativa mesmo após reiniciar o dispositivo. Basta adicionar esta preferência no <code>build/custom-prefs.js</code> e executar <code>make reset-gaia</code>.</p> -</div> - -<h2 id="Soluções_de_problemas"><a name="Troubleshooting">Soluções de problemas</a></h2> - -<p id="My_device_is_not_recognized">Se o dispositivo não for reconhecido:</p> - -<ul> - <li>Se ao clicar no botão correspondente ao seu telefone Firefox OS não acontecer nada, certifique-se de não haver nenhum telefone Android conectado ao seu computador ao mesmo tempo.</li> - <li>Leia a seção <a href="#Configuring_device">Dispositivos e configurações do sistema</a>, e certifique-se que todos os passos foram seguidos:</li> - <li>O seu dispositivo está com o Firefox OS 1.2?</li> - <li>Não vê todos os aplicativos? Você precisa habilitar <a href="#Debugging_Certified_Apps">Depurando aplicativos certificados</a>?</li> - <li>Você ativou a "Remote Debugging" na configurações do seu dispositivo?</li> - <li>Se você não está utilizando o <a href="#">Add-on ADB Helper</a>: - <ul> - <li>Você executou com sucesso o comando <code>adb forward</code>?</li> - </ul> - </li> - <li>Se você está utilizando o <a href="#">Add-on ADB Helper</a> e o seu dispositivo não está sendo listado na barra inferior: - <ul> - <li>Se você estiver utilizando Linux, <a href="http://developer.android.com/tools/device.html#setting-up">certifique-se de configurar corretamente o udev</a></li> - <li>Se você esta utilizando o Windows, <a href="http://developer.android.com/tools/device.html#setting-up">certifique-se de instalar os drivers apropriados</a></li> - </ul> - </li> - <li>Você também pode habilitar o registro <em>verbose</em> para capturar diagnósticos: - <ul> - <li>Use about:config para configurar as preferências "<span class="message"><span class="content"><span class="email">extensions.adbhelper@mozilla.org.sdk</span>.console.logLevel"</span></span> para o valor em string "all"</li> - <li>Desabilite e reabilite o add-on ADB Helper no gerenciador de add-ons, ou reinicie o Firefox</li> - <li>Abra o App Manager novamente</li> - <li>No <a href="https://developer.mozilla.org/pt-BR/docs/Tools/Browser_Console">Console do navegador</a>, você deve ver linhas adicionais de saída que mencionam "adbhelper"</li> - <li>Se você as vê mas não sabe exatamente o que significam, visite o canal <a href="https://wiki.mozilla.org/DevTools/GetInvolved#Communication">#devtools no IRC</a> ou <a href="https://bugzilla.mozilla.org/enter_bug.cgi?alias=&assigned_to=nobody%40mozilla.org&attach_text=&blocked=&bug_file_loc=http%3A%2F%2F&bug_ignored=0&bug_severity=normal&bug_status=NEW&cf_blocking_b2g=---&cf_crash_signature=&cf_status_b2g18=---&cf_status_b2g_1_1_hd=---&cf_status_b2g_1_2=---&cf_status_firefox24=---&cf_status_firefox25=---&cf_status_firefox26=---&cf_status_firefox27=---&cf_status_firefox_esr17=---&cf_status_firefox_esr24=---&cf_tracking_b2g18=---&cf_tracking_firefox24=---&cf_tracking_firefox25=---&cf_tracking_firefox26=---&cf_tracking_firefox27=---&cf_tracking_firefox_esr17=---&cf_tracking_firefox_esr24=---&cf_tracking_firefox_relnote=---&cf_tracking_relnote_b2g=---&comment=&component=Developer%20Tools%3A%20App%20Manager&contenttypeentry=&contenttypemethod=autodetect&contenttypeselection=text%2Fplain&data=&defined_groups=1&dependson=&description=&flag_type-203=X&flag_type-37=X&flag_type-41=X&flag_type-5=X&flag_type-607=X&flag_type-720=X&flag_type-721=X&flag_type-737=X&flag_type-748=X&flag_type-781=X&flag_type-787=X&flag_type-791=X&flag_type-799=X&flag_type-800=X&flag_type-802=X&flag_type-803=X&flag_type-809=X&flag_type-825=X&form_name=enter_bug&keywords=&maketemplate=Remember%20values%20as%20bookmarkable%20template&op_sys=All&priority=--&product=Firefox&qa_contact=developer.tools%40firefox.bugs&rep_platform=x86&requestee_type-203=&requestee_type-41=&requestee_type-5=&requestee_type-607=&requestee_type-748=&requestee_type-781=&requestee_type-787=&requestee_type-791=&requestee_type-800=&short_desc=&status_whiteboard=&target_milestone=---&version=Trunk">registre um bug</a> com a saída do log</li> - </ul> - </li> - <li>Você vê <strong>"???????"</strong> ao invés do nome do dispositivo no Linux? Você tem problemas de permissionamento. <a href="http://developer.android.com/tools/device.html#setting-up">Certifique-se de configurar o udev corretamente</a>.</li> - <li>A tela do seu dispositivo está desbloqueada?</li> - <li>Se o comando "adb devices" não mostra o dispositivo mesmo com o telefone conectado e desbloquado, você deve <a href="http://blog.fh-kaernten.at/wehr/?p=1182">editar o arquivo adb_usb.ini</a>.</li> -</ul> - -<p>Não é possível conectar o seu dispositivo no App Manager ou iniciar o seu simulador? <a href="https://wiki.mozilla.org/DevTools/GetInvolved#Communication">Fale conosco</a> ou <a href="https://bugzilla.mozilla.org/enter_bug.cgi?alias=&assigned_to=nobody%40mozilla.org&attach_text=&blocked=&bug_file_loc=http%3A%2F%2F&bug_ignored=0&bug_severity=normal&bug_status=NEW&cf_blocking_b2g=---&cf_crash_signature=&cf_status_b2g18=---&cf_status_b2g_1_1_hd=---&cf_status_b2g_1_2=---&cf_status_firefox24=---&cf_status_firefox25=---&cf_status_firefox26=---&cf_status_firefox27=---&cf_status_firefox_esr17=---&cf_status_firefox_esr24=---&cf_tracking_b2g18=---&cf_tracking_firefox24=---&cf_tracking_firefox25=---&cf_tracking_firefox26=---&cf_tracking_firefox27=---&cf_tracking_firefox_esr17=---&cf_tracking_firefox_esr24=---&cf_tracking_firefox_relnote=---&cf_tracking_relnote_b2g=---&comment=&component=Developer%20Tools%3A%20App%20Manager&contenttypeentry=&contenttypemethod=autodetect&contenttypeselection=text%2Fplain&data=&defined_groups=1&dependson=&description=&flag_type-203=X&flag_type-37=X&flag_type-41=X&flag_type-5=X&flag_type-607=X&flag_type-720=X&flag_type-721=X&flag_type-737=X&flag_type-748=X&flag_type-781=X&flag_type-787=X&flag_type-791=X&flag_type-799=X&flag_type-800=X&flag_type-802=X&flag_type-803=X&flag_type-809=X&flag_type-825=X&form_name=enter_bug&keywords=&maketemplate=Remember%20values%20as%20bookmarkable%20template&op_sys=All&priority=--&product=Firefox&qa_contact=developer.tools%40firefox.bugs&rep_platform=x86&requestee_type-203=&requestee_type-41=&requestee_type-5=&requestee_type-607=&requestee_type-748=&requestee_type-781=&requestee_type-787=&requestee_type-791=&requestee_type-800=&short_desc=&status_whiteboard=&target_milestone=---&version=Trunk">registre um bug</a>.</p> diff --git a/files/pt-br/archive/b2g_os/usando_o_cliente_b2g_desktop/index.html b/files/pt-br/archive/b2g_os/usando_o_cliente_b2g_desktop/index.html deleted file mode 100644 index 3121f79678..0000000000 --- a/files/pt-br/archive/b2g_os/usando_o_cliente_b2g_desktop/index.html +++ /dev/null @@ -1,178 +0,0 @@ ---- -title: Usando o cliente B2G Desktop -slug: Archive/B2G_OS/Usando_o_cliente_B2G_Desktop -translation_of: Archive/B2G_OS/Building_the_B2G_OS_simulator ---- -<div class="summary"> - <span title="The Firefox OS desktop client, also called the B2G desktop client, lets you run Gaia and web apps in a Gecko-based environment somewhat similar to an actual device.">O Firefox OS para desktop, também chamado de cliente de desktop B2G, permite que você execute aplicativos de Gaia e aplicações web em um ambiente baseado no Gecko um pouco semelhante a um dispositivo real. </span><span title="It doesn't emulate device hardware, so it's not adequate for testing device APIs, and isn't a replacement for testing on actual hardware.">Ele não emula o hardware do dispositivo, portanto, não é adequado para testar APIs dispositivo e não é um substituto para testes em hardware real. </span><span title="However, it does have a several APIs enabled that aren't available on Firefox such as the Contacts and Settings APIs.">No entanto, ele tem várias APIs habilitadas que não estão disponíveis no Firefox, como as APIs de Contatos e Configurações. </span><span title="It can therefore be useful during the development of our application, or while working on the Gaia user interface itself.">Portanto, pode ser útil durante o desenvolvimento de alguma aplicação, ou enquanto estiver trabalhando na própria interface de usuário Gaia.</span><br> - <p><br> - <span lang="pt"><span title="This article covers downloading or building the Firefox OS desktop client, as well as how to use it.">Este artigo aborda o download ou a compilação do Firefox OS para desktop, bem como a forma de usá-lo.</span></span></p> -</div> -<div class="note"> - <p><strong>Nota:</strong> A forma mais fácil de usar o Firefox OS é usando o <a href="https://developer.mozilla.org/pt-BR/docs/Mozilla/Boot_to_Gecko/Using_Firefox_OS_simulator" title="/en-US/docs/Mozilla/Boot_to_Gecko/Using_Firefox_OS_simulator">Simulador Firefox OS</a>, pois não requer que você próprio compile o cliente desktop.</p> -</div> -<h2 id="Baixe_uma_compilação_do_nightly"><span lang="pt"><span title="Download a nightly build">Baixe uma compilação do <em>nightly</em></span></span></h2> -<p><span lang="pt"><span title="Just like Firefox Nightlies, the Firefox OS desktop client is built every day from the latest source code.">Assim como <a href="http://nightly.mozilla.org/">Firefox Nightly</a>, o Firefox OS cliente de desktop é lançado a cada dia a partir do código fonte mais recente. </span><span title="The latest build is available from the Mozilla FTP server.">A versão mais recente está disponível no <a href="http://ftp.mozilla.org/pub/mozilla.org/b2g/nightly/latest-mozilla-central/">servidor FTP da Mozilla</a>. </span><span title="Be sure to pick the latest version and the right archive for your operating system.">Certifique-se de escolher a versão mais recente e o arquivo certo para o seu sistema operacional. </span><span title="This lets you bypass having to build it yourself; in addition, you don't have to download Gaia on your own either.">Com isso você não precisa compilar, além disso, não é necessário fazer download da Gaia .</span><br> - <br> - <span title="Be sure to install the application in a writeable location; the application needs to be able to update included the Gaia profile.">Certifique-se de instalar o aplicativo em um local com permissões de gravação. O aplicativo precisa ser capaz de atualizar o perfil incluído do Gaia.</span><br> - <br> - <span title="You can now skip ahead to Running the desktop client.">Agora você pode pular para a <a href="#Executando_o_cliente_de_desktop">execução do cliente de desktop</a>.</span></span></p> -<h2 id="Compilar_o_cliente_desktop"><span lang="pt"><span title="Building the desktop client"><a name="Building_the_desktop_client"></a>Compilar o cliente desktop</span></span></h2> -<p><span lang="pt"><span title="The first thing we need to do is set up a standard Mozilla build environment.">A primeira coisa que precisamos fazer é <a href="/pt-BR/docs/Developer_Guide/Intrucoes_Build#Build_prerequisites">configurar um ambiente de compilação</a> padrão Mozilla. </span><span title="Once we have that, we can pull down the code we'll need and configure to build the Firefox OS desktop client.">Assim que tivermos isso, nós podemos baixar o código necessário, e configurar para compilar o Firefox OS cliente desktop.</span></span></p> -<h3 id="Baixando_o_código_pela_primeira_vez"><span lang="pt"><span title="Downloading the code for the first time">Baixando o código pela primeira vez</span></span></h3> -<p><span lang="pt"><span title="In a directory where we'd like the source code to go, let's clone the mozilla-central repository that contains all of Gecko:">Em um diretório onde gostaria que ficasse o código-fonte, vamos clonar o repositório mozilla-central que contém o Gecko:<br> - <br> - <code> </code></span><code><span title="hg clone http://hg.mozilla.org/mozilla-central">hg clone http://hg.mozilla.org/mozilla-central</span></code></span></p> -<p><span lang="pt">Alternativamente, você pode baixar o mesmo código do Github:</span></p> -<pre class="brush: bash language-html" style="font-size: 12px;"><code class="language-html">git clone https://github.com/mozilla/gecko-dev</code></pre> -<h3 id="Atualizar_o_código"><span lang="pt"><span title="Updating the code">Atualizar o código</span></span></h3> -<p>Ao longo do tempo, você vai querer certificar-se de que o código esteja na sua última versão. Para isso execute:</p> -<pre class="brush: bash language-html"><code class="language-html">cd mozilla-central -hg pull -u</code></pre> -<p>ou</p> -<pre class="brush: bash language-html"><code class="language-html">cd gecko-dev -git pull</code></pre> -<h3 id="Criar_um_mozconfig"><span lang="pt"><span title="Create a mozconfig">Criar um mozconfig</span></span><br> - </h3> -<p><span lang="pt"><span title="Next, we need to create a mozconfig file in the mozilla-central directory to configure the build system to build the Boot to Gecko client instead of Firefox:">Em seguida, você precisa criar um arquivo chamado <code>mozconfig</code> no diretório <code>mozilla-<span lang="pt"><span title="Next, we need to create a mozconfig file in the mozilla-central directory to configure the build system to build the Boot to Gecko client instead of Firefox:">central</span></span></code>, para configurar o sistema de compilação do cliente Boot para Gecko cliente em vez do Firefox. Esse arquivo deve conter o seguinte conteúdo:</span></span></p> -<pre class="brush: bash language-html"><code class="language-html">. "$topsrcdir/b2g/config/mozconfigs/common" - -mk_add_options MOZ_OBJDIR=../build -mk_add_options MOZ_MAKE_FLAGS="-j9 -s" - -ac_add_options --enable-application=b2g -ac_add_options --disable-libjpeg-turbo - -# This option is required if you want to be able to run Gaia's tests -ac_add_options --enable-tests - -# turn on mozTelephony/mozSms interfaces -# Only turn this line on if you actually have a dev phone -# you want to forward to. If you get crashes at startup, -# make sure this line is commented. -#ac_add_options --enable-b2g-ril</code></pre> -<p><span lang="pt"><span title="Building">Você também precisa incluir a linha <code>ENABLE_MARIONETTE=1</code> no arquivo se você quiser executar <a href="/pt-BR/docs/Mozilla/Firefox_OS/Platform/Automated_testing/Mochitests">Mochitests</a> no cliente B2G Desktopin (seja no <code>mochitest-b2g-desktop</code> ou <code>mochitest-plain</code>) ou se você quiser executar <a href="/pt-BR/docs/Mozilla/Firefox_OS/Platform/Automated_testing/gaia-ui-tests/Testes_IU_Gaia_Executando_Testes">Testes unitários do Gaia</a>.</span></span></p> -<h3 id="Compilando"><span lang="pt"><span title="Building">Compilando</span></span></h3> -<p><br> - <span lang="pt"><span title="Now we're ready to build the desktop client with the following command issued from the mozilla-central directory:">Agora estamos prontos para compilar o cliente B2G desktop com o seguinte comando a partir do diretório <code>mozilla-central</code>:</span></span></p> -<pre><code class="language-html">./mach build</code> -</pre> -<p><span lang="pt"><span title="The built client will be placed in the ../build/dist directory (based on the value you specify for MOZ_OBJDIR in the mozconfig file).">O resultado da compilação será colocado no diretório <code>../build/dist</code> (baseado no valor da variável <code>MOZ_OBJDIR</code> no arquivo <code>mozconfig</code>).</span></span></p> -<h3 id="Baixando_o_Gaia"><span lang="pt"><span title="Downloading Gaia"><a name="Downloading_Gaia"></a>Baixando o Gaia</span></span></h3> -<p><span lang="pt"><span title="By default the desktop client will show an empty screen because it doesn't know which web app to load initially as the system app.">Por padrão, o cliente de desktop vai mostrar uma tela vazia, porque não sabe qual aplicativo web deve ser carregado inicialmente como o aplicativo do sistema. </span><span title="The collection of system apps and default apps that come with Firefox OS is called Gaia.">A coleção de aplicativos</span></span><span lang="pt"><span title="The collection of system apps and default apps that come with Firefox OS is called Gaia."> do sistema e os aplicativos padrão que vêm com o Firefox OS — Gaia — deve ser baixado.</span></span><br> - <br> - <span lang="pt"><span title="To download Gaia for the first time, let's clone the source code repository on GitHub:">Para baixar o Gaia pela primeira vez clono o repositório de código fonte no GitHub:</span></span></p> -<pre>git clone https://github.com/mozilla-b2g/gaia -cd gaia -</pre> -<p><span lang="pt"><span title="To update an already existing clone of Gaia, we can pull in the latest changes from GitHub:">Para atualizar um clone já existente de Gaia, podemos puxar as últimas alterações do GitHub:</span></span></p> -<pre>cd gaia -git pull -</pre> -<h3 id="Criando_um_arquivo_custom-settings.json">Criando um arquivo custom-settings.json</h3> -<p>Se você sabe o que está fazendo e quer criar diversas opções de configuração, você pode criar o arquivo <code>gaia/build/config/custom-settings.json</code> e adicioná-lo no repositório, por exemplo:</p> -<pre class="language-html"><span class="brush: js">{ - "lockscreen.enabled": false, - "lockscreen.locked": false, - "devtools.debugger.remote-enabled": true -}</span></pre> -<h3 id="Gerando_um_perfil"><span lang="pt"><span title="Generating a profile"><a name="Generating_a_profile"></a>Gerando um perfil</span></span></h3> -<p><span lang="pt"><span title="Next we need to set up Gaia's apps for the desktop client.">Em seguida, precisamos criar aplicativos Gaia para o cliente desktop. </span><span title="This includes packaging the Gaia apps in the same way like they would be installed on the device, as well as setting up the permissions for the privileged system apps.">Isso inclui o acondicionamento dos aplicativos de Gaia da mesma forma como eles seriam instalados no dispositivo, bem como configurar as permissões para os aplicativos do sistema privilegiados. </span><span title="We do this by generating a profile.">Fazemos isso através da geração de um perfil. </span><span title="The following command will take care of that: The new profile contains a customized extension and other configuration needed to make B2G run properly.">O seguinte comando irá cuidar de que: O novo perfil contenha uma extensão personalizada e outra configuração necessária para fazer B2G executado corretamente. </span><span title="So do this in the gaia directory:">Então, fazer isso no diretório gaia:</span></span></p> -<pre><code class="language-html">DESKTOP_SHIMS=1 NOFTU=1 DEBUG=1 make</code> -</pre> -<p>Isso deve criar o diretório <code>profile-debug</code> abaixo do diretório <code>gaia</code>. O novo perfil contém uma exensão personalizada e outros detalhes da configuração necessários para executar o B2G corretamente.</p> -<h2 id="Executando_o_cliente_de_desktop"><span lang="pt"><span title="Running the desktop client">Executando o cliente de desktop</span></span></h2> -<p><br> - <span lang="pt"><span title="Once you've built the client and downloaded Gaia (or downloaded and installed the nightly desktop application), you're ready to fire up the Firefox OS desktop client.">Uma vez que você compilou o cliente e Gaia baixado (ou baixado e instalado o aplicativo de Nightly desktop), você está pronto para executar o Firefox OS cliente desktop.</span></span></p> -<h3 id="Executando_no_Linux"><span lang="pt"><span title="Running on Linux">Executando no Linux</span></span></h3> -<p><span lang="pt"><span title="To run the desktop client on Linux using the embedded Gaia profile, just run the b2g executable.">Para executar o cliente de desktop no Linux usando o perfil de Gaia embutido, basta executar o arquivo executável <code>b2g</code>. </span><span title="The binary is in the archive you downloaded earlier or in the ../build/dist/bin directory if you built the client yourself.">O binário está no pacote que você baixou anteriormente ou no diretório <code>../build/dist/bin</code>, caso você tenha compilado o cliente.</span></span></p> -<pre>.../b2g-bin -profile gaia/profile -</pre> -<p><span lang="pt"><span title="You may experience annoying rendering problems.">Você pode ter problemas irritantes de renderização. </span><span title="To avoid them, add the following line to your gaia/profile/prefs.js file:">Para evitá-los, adicione a seguinte linha ao seu arquivo <code>gaia/profile/prefs.js</code>:</span></span></p> -<pre>user_pref("layers.acceleration.disabled", true); -</pre> -<h3 id="Executando_no_Mac"><span lang="pt"><span title="Running on Mac">Executando no Mac</span></span></h3> -<p><span lang="pt"><span title="If you downloaded the nightly build, you can simply launch it from the Finder as usual.">Se você baixou a compilação Nightly, você pode simplesmente lançá-lo a partir do Finder, como de costume. </span><span title="Any console output is visible by running the standard Console utility program included with your Mac.">Qualquer saída do console é visível executando programa utilitário padrão do console que acompanha o Mac.</span></span></p> -<p><span lang="pt"><span title="If you want to specify a different Gaia profile, you need to bypass the b2g wrapper program and run the b2g-bin binary; the command line is slightly more complicated due to the location of the b2g-bin binary and the need for absolute paths when">Se você quiser especificar um perfil diferente do Gaia diferente, você precisa ignorar o programa que "empacot" o <code>b2g</code> e executar o binário <code>b2g</code>. A linha de comando é um pouco mais complicada, devido à localização do binário B2G-bin e a necessidade de caminhos absolutos quando </span><span title="specifying the profile directory:">especificar o diretório de perfil:</span></span></p> -<pre class="language-html">.../B2G.app/Contents/MacOS/b2g -profile /full/path/to/gaia/profile-debug -</pre> -<h3 id="Executando_no_Windows"><span lang="pt"><span title="Running on Windows">Executando no Windows</span></span></h3> -<p><span lang="pt"><span title="Running the nightly build on Windows is as simple as launching b2g.exe.">Para executar o Nightly no Windows basta executar o <code>b2g.exe</code>. </span><span title="If you want to customize the execution, you can do so by running the b2g-bin.exe executable instead; this bypasses the wrapper program that automatically uses the bundled Gaia.">Se você quiser personalizar a execução, você pode fazer isso executando <code>b2g.exe</code>. Feito isso, o programa ignora o invólucro que automaticamente usa o pacote de Gaia.</span></span></p> -<h2 id="Opções_de_linha_de_comando"><span lang="pt"><span title="Command line options">Opções de linha de comando</span></span></h2> -<p><span lang="pt"><span title="There are a number of command line options you can use to adjust the runtime experience while using the desktop client.">Há uma série de opções de linha de comando que você pode usar para ajustar a experiência de tempo de execução ao usar o cliente de desktop. </span><span title="You can get a list by using the -help option.">Você pode obter uma lista usando a opção <code>-help</code>. </span><span title="This section covers some of the particularly interesting ones.">Esta seção cobre alguns das opções mais interessantes.</span></span></p> -<h3 id="Especificando_o_tamanho_da_tela"><span lang="pt"><span title="Specifying the screen size">Especificando o tamanho da tela</span></span></h3> -<p><span lang="pt"><span title="You can specify the screen size of the device you want to simulate using the --screen option:">Você pode especificar o tamanho da tela do dispositivo que você deseja simular usando a opção --screen:</span></span></p> -<pre class="brush: bash language-html"><code class="language-html">b2g --screen=<span class="token tag"><span class="token tag"><span class="token punctuation"><</span>width</span><span class="token punctuation">></span></span>x<span class="token tag"><span class="token tag"><span class="token punctuation"><</span>height</span><span class="token punctuation">></span></span>@<span class="token tag"><span class="token tag"><span class="token punctuation"><</span>dpi</span><span class="token punctuation">></span></span></code> -</pre> -<p><span lang="pt"><span title="Where <width>, <height>, and <dpi> are fairly self-explanatory parameters: the width and height of the device's screen in pixels and the device resolution in DPI.">Onde<em> <width>, <height> </em>e </span></span><em><dpi></em><span lang="pt"><span title="Where <width>, <height>, and <dpi> are fairly self-explanatory parameters: the width and height of the device's screen in pixels and the device resolution in DPI."> são parametros auto-explicativos parâmetros: a largura e altura da tela do dispositivo em pixels e a resolução do dispositivo em DPI. </span><span title="For example:">Por exemplo:</span><br> - <br> - <code><span title="b2g --screen=320x480">b2g --screen 320x480</span><br> - <span title="b2g --screen=320x480@160">b2g --screen 320x480@160</span></code><br> - <br> - <span title="Optionally, you can specify certain devices by name to simulate their screen size and resolution:">Opcionalmente, você pode especificar determinados dispositivos pelo nome para simular seu tamanho de tela e resolução:</span></span></p> -<p><code><span id="cke_bm_532S" style="display: none;"> </span><span lang="pt"><code><span title="b2g --screen=320x480"><code>iphone<br> - ipad<br> - nexus_s<br> - galaxy_nexus<br> - galaxy_tab<br> - wildfire<br> - tattoo<br> - salsa<br> - chacha</code></span></code></span></code></p> -<h3 id="Abrindo_o_console_JavaScript"><span lang="pt"><span title="Opening the JavaScript console">Abrindo o console JavaScript</span></span></h3> -<p><span lang="pt"><span title="You can open the JavaScript console when launching the desktop B2G client by launching it from the command line with the -jsconsole flag.">Você pode abrir o console JavaScript, ao lançar o cliente desktop </span></span><span lang="pt"><span title="You can open the JavaScript console when launching the desktop B2G client by launching it from the command line with the -jsconsole flag.">a partir da linha de comando com a o flag <code>-jsconsole</code>. </span><span title="After building, just do:">Após compilar, basta executar o comando:</span></span></p> -<dl> -</dl> -<pre>.../b2g -jsconsole -profile <em>/path/to/your/profile</em> -</pre> -<p><span lang="pt"><span title="If you've installed the nightly build on a Mac, you can do the following:">Se você tiver instalado o Nightly em um Mac, você pode fazer o seguinte:</span></span></p> -<pre>/Applications/B2G.app/Contents/MacOS/b2g -jsconsole -profile <em>/path/to/your/profile</em></pre> -<h3 id="sect1"> </h3> -<div class="note"> - <p><strong>Not<code>a</code>:</strong> Em compilações de produção do Firefox OS, log de console (por examplo {{domxref("console.log()")}}) é desabilitado por padrão. Para habilitá-lo, vá em <a href="https://developer.mozilla.org/pt-BR/docs/Mozilla/Firefox_OS/Debugging/Configura%C3%A7%C3%B5es_do_Desenvolvedor">Configurações do Desenvolvedor</a> e habilite<em> a opção Console Habilitado</em>.</p> -</div> -<h3 id="Lançando_uma_aplicação_específica_na_inicialização"><span lang="pt"><span title="Launching a specific application at startup">Lançando uma aplicação específica na inicialização</span></span></h3> -<p><span lang="pt"><span title="You can now specify an application to be launched automatically when b2g starts up in the desktop client.">Agora você pode especificar um aplicativo a ser lançado automaticamente quando B2G começa a funcionar no cliente de desktop. </span><span title="This is done as soon as the rest of the system is done loading up.">Isto é feito, assim como o resto do sistema é feito o carregamento para cima. </span><span title="To do this, just use the --runapp option, which takes as a parameter the name of the application to run.">Para fazer isso, é só usar a opção <code>--runapp</code></span></span> <span lang="pt"><span title="To do this, just use the --runapp option, which takes as a parameter the name of the application to run.">que toma como parâmetro o nome do aplicativo para ser executado. </span><span title="For example:">Por exemplo:</span></span></p> -<pre>.../b2g -profile <em>/path/to/your/gaia/profile</em> --runapp email -</pre> -<div class="note"> - <p><strong>Nota</strong>: O nome especificado é normalizado convertendo para letras minúsculas e removendo os traços e espaços. Esse nome normalizado é comparado com nomes similares dos manifestos de aplicativos disponíveis. Por exemplo, o nome do aplicativo de email é "E-mail", mas <code>--runapp email</code> funcionará corretamente devido à normalização.</p> -</div> -<p> </p> -<p><span lang="pt"><span title="If you specify the --runapp option without an argument, or with an empty argument, the b2g client will output to your terminal a list of the known applications as well as a brief usage message.">Se você especificar a opção <code>--runapp</code> sem um argumento, ou com um argumento vazio, o cliente B2G irá imprimir ao seu terminal uma lista das aplicações conhecidas</span></span><span lang="pt"><span title="If you specify the --runapp option without an argument, or with an empty argument, the b2g client will output to your terminal a list of the known applications as well as a brief usage message.">.</span></span></p> -<p> </p> -<div class="note"> - <p><strong>Nota</strong>:<span lang="pt"><span title="Note: Using the --runapp option disables the lock screen as a side effect and does not re-enable it."> Ao usar a opção <code>--runapp</code> a tela de bloqueio é desativada não sendo possível reativá-la. </span><span title="It's assumed that you won't use this command on a profile on which you will be testing the lock screen, or you will turn it back on manually.">É assumido que você não vai usar este comando em um perfil no qual você estará testando a tela de bloqueio, ou você vai ligá-lo novamente manualmente. </span><span title="Feel free to contribute a patch to change this behavior if it's a problem.">Sinta-se livre para contribuir com um patch para mudar esse comportamento se isso é um problema.</span></span></p> -</div> -<h2 id="Dicas_de_uso"><span lang="pt"><span title="Usage tips">Dicas de uso</span></span></h2> -<p><span lang="pt"><span title="This section provides a few helpful tips to using the B2G desktop client.">Esta seção fornece algumas dicas úteis para o uso do cliente de desktop B2G.</span><br> - <br> - <span title='The ESC key performs the same function as the "back" button.'>A tecla ESC executa a mesma função que o botão "voltar".</span></span></p> -<ul> - <li>A tecla Esc executa a mesma função que o botão "voltar".</li> - <li>A tecla Home executa a mesma função que o botão "home", se você estiver no Mac, a tecla Home é disponível pressionando ao mesmo tempo as teclas Fn + ← (Fn + Seta para esquerda).</li> - <li>A tecla End executa a mesma função que o botão "Power", se você estiver no Mac, a tecla End é disponível pressionando ao mesmo tempo as teclas Fn + → (Fn + Seta para direita).</li> - <li>As telas Page Up e Page Down executa as mesmas funções que "Volume Up" e "Volume Down" respectivamente, se você estiver no Mac, as teclas Page Up e Page Down são disponíveis pressionando ao mesmo tempo as teclas Fn + ↑ (Fn + Seta para cima) e Fn + ↓ (Fn + Seta para baixo) respectivamente.</li> - <li>Pressionando longamente a tecla Home abre a "Visão de Cartas", se você estiver no Mac, Cmd + Fn + ← (Cmd + Fn + seta para esquerda) abre a "Visão de Cartasopens the "Visão de Cartas".</li> -</ul> -<h2 id="Resolução_de_Problema_Uma_tela_branca_quando_o_B2G_Desktop_inicia">Resolução de Problema: Uma tela branca quando o B2G Desktop inicia</h2> -<p>Quando você inicia o b2g usando <code>b2g -profile gaia/profile</code> uma tela branca pode aparecer juntamente com o erro "Cannot reach app://system.gaiamobile.org". Para resolver isso uma série coisas devem ser verificadas:</p> -<ul> - <li>Recompile o perfil do Gaia usando <code>DEBUG=1 make</code> profile no diretório gaia.</li> - <li>Execute b2g novamente.</li> - <li>Se isso não resolver, verifique se existe outro processo conectado na porta 8080. O perfil padrão do Gaia executa <code>httpd.js</code>, que escuta a porta 8080. Ao executar um perfil de depuração, B2G conecta a <code>localhost:8080</code>. Se algum outro processo estiver executando na porta 8080, b2g falha e não mostra a tela inicial do gaia. - <ol> - <li>Para descobrir se esse é o caso, você pode habilitar o log em <code>httpd.js</code>. O <code>httpd.js</code> no perfil reside em <code>gaia/profile/extensions/httpd/content/httpd.js</code>. Abra esse arquivo para editá-lo.</li> - <li>Altere a linha <code>var DEBUG=false;</code> para <code>var DEBUG=true;</code></li> - <li>Salve o arquivo e reinicie B2G. No console você conseguirá ver os logs do <code>httpd</code>.</li> - </ol> - </li> -</ul> -<h2 id="Próximos_passos"><span lang="pt"><span title="Next steps">Próximos passos</span></span></h2> -<p><span lang="pt"><span title="Now that you have a desktop build of Boot to Gecko running, you can do testing, development, and other work in it:">Agora que você tem uma área de trabalho de compilação de Boot para Gecko, você pode testar, desenvolver e realizar outras tarefas:</span></span></p> -<ul> - <li><a href="https://developer.mozilla.org/pt-BR/docs/Mozilla/Firefox_OS/Debugging" title="en/Mozilla/Boot_to_Gecko/Debugging_on_Boot_to_Gecko">Depurando no Boot to Gecko</a></li> - <li><a href="https://developer.mozilla.org/pt-BR/docs/Mozilla/Firefox_OS/Platform/Automated_testing" title="en/Mozilla/Boot_to_Gecko/Testing_Boot_to_Gecko">Testando o Boot to Gecko</a></li> -</ul> -<p> </p> -<p> </p> diff --git a/files/pt-br/archive/b2g_os/using_the_b2g_emulators/index.html b/files/pt-br/archive/b2g_os/using_the_b2g_emulators/index.html deleted file mode 100644 index 0d13a5c40b..0000000000 --- a/files/pt-br/archive/b2g_os/using_the_b2g_emulators/index.html +++ /dev/null @@ -1,80 +0,0 @@ ---- -title: Usando emuladores B2G -slug: Archive/B2G_OS/Using_the_B2G_emulators -translation_of: Archive/B2G_OS/Using_the_B2G_emulators ---- -<p>Este artigo fornece um breve guia para algumas coisas importantes que você deveria saber quando usar o emulador Boot to Gecko.</p> -<p>Este guia assume que você já contruiu um dos emuladores; Caso contrário, veja <a href="/pt-BR/docs/Mozilla/Firefox_OS/Construindo_e_instalando_o_Firefox_OS" title="en/Mozilla/Boot_to_Gecko/Building_and_installing_Boot_to_Gecko">Instalando e compilando o Boot to Gecko</a>!</p> -<h2 id="Sobre_os_emuladores_B2G">Sobre os emuladores B2G</h2> -<p>Existem dois emuladores B2G. O primeiro construido por meio da configuração de "emulator-x86" quando roda o <code>config.sh</code>, é um emulador para dispositivos ARM. Apesar de ser mais lento que o executado em um processador x86, é mais estável e tem uma representação mais precisa de como o dispositivo real irá funcionar. Configurando como "emulator-x86" quando executar <code>config.sh</code> você terá o emulador x86.</p> -<div class="note"> - <strong>Nota:</strong> Nos últimos meses, a equipe de Automação resolveu parar a utilização do emulador x88 devido a problemas de estabilização. Por isso, há uma grande chance das coisas não funcionarem no emulador x86. Utilize o emulador ARM a não ser que você tenha uma boa razão para não fazê-lo.</div> -<p>Uma vez selecionado, configurado e compilado um emulador, o restante funciona da mesma forma segundo o ponto de vista do usuário. Então o restante desse artigo é comum para ambos os emuladores.</p> -<div class="note"> - <strong>Nota:</strong> No Mac OS X, o emulador B2G exige um processador Core 2 Duo ou superior, ou seja, um sistema compatível com Mac OS X 10.7 "Lion." Na verdade, não é necessário exectura no "Lion", mas ser compatível com ele.</div> -<h2 class="note" id="Iniciando_o_Emulador">Iniciando o Emulador</h2> -<p>Para inicializar o emulador do B2G, digite o seguinte comando:</p> -<pre>./run-emulator.sh -</pre> -<p>Esse comando realiza todas as tarefas de incialização do emulador para você. Você tem que ser paciente enquanto o emulador inicializa e depois a inicialização do Boot to Gecko. Isso pode levar alguns minutos.</p> -<h2 id="Quando_o_emuladora_nao_funciona">Quando o emuladora nao funciona</h2> -<p>Algumas vezes o emulador falha na incialização. Bem-vindo ao time! A seguir algumas dicas para resolver os problemas.</p> -<h3 id="Você_está_tentando_executar_em_uma_máquina_virutal">Você está tentando executar em uma máquina virutal?</h3> -<p>VirtualBox e Parallels possui alguns problemas no suporte ao acelerador gráfico que causa uma falha na inicialização do emulador, algo relacionado com o dispositivo OpenGL. O dispositivo inicia o <em>boot</em>, falah e reinicia em um loop, ou inicia sem mostrar nada no emulador. Infelizmente ainda não há solução disponível (existe uma <a href="http://www.digitalmihailo.com/setting-up-ubuntu-12-04-virtual-machine-for-firefox-os-build/">solução de contorno</a> para VirtualBox) - você precisa usar o VMWare Player (Freeware), Workstation ou Fusion. Para o VirtualBox - não instale <em>Guest Addons</em>, ou desabilite o módulo <em>vboxvideo</em>.</p> -<h3 id="Certifique-se_que_o_servidor_adb_está_executando">Certifique-se que o servidor adb está executando</h3> -<p>Isso geralmente acontece porque o servidor adb que interage com o dispositivo emulado pode não estar rodando com um mal funcionamento.</p> -<div class="note"> - <p><strong>Nota:</strong> Se você está usando o <code>adb</code> compilado pelo sistema de compilação B2G (o que provavelmente é o usado), ele está localizado no diretório <code>$B2G/out/host/<platform>/bin</code>. No Mac, o diretório é <code>$B2G/out/host/darwin-x86/bin</code>, por exemplo.</p> -</div> -<p>Para verificar se o <code>adb</code> está rodando execute:</p> -<pre class="language-html">ps aux | grep adb -</pre> -<p>Se está rodando, interrompa a execução porque provavelmente ele não está funcionando corretamente.</p> -<pre class="language-html">adb kill-server -</pre> -<p>Se o serviço não está rodando execute:</p> -<pre class="language-html">adb start-server -</pre> -<p>Então, tente executar o emulador novamente. Se ainda não funcionar, é hora de ir para o canal IRC <a class="link-irc" href="irc://irc.mozilla.org/b2g" title="irc://irc.mozilla.org/b2g">#b2g</a> em irc.mozilla.org para conseguir ajuda.</p> -<h2 id="Configurando_o_emulador">Configurando o emulador</h2> -<p>There are several options you can change to adjust the emulator to be more similar to the device you want to emulate. This section provides some basic information on how to do that. You can adjust the emulator's configuration by editing the <code>run-emulator.sh</code> script (or, ideally, a copy of it). Only a few of the most useful parameters are discussed here; you'll want to <a class="external" href="http://www.qemu.org/" title="http://www.qemu.org/">look at the qemu site</a> for details on the others.</p> -<div class="note"> - <strong>Tip:</strong> Create one copy of <code>run-emulator.sh</code> for each device you want to simulate; this makes it easy to start up with different configurations.</div> -<h3 id="Apagar_as_definições_da_configuração">Apagar as definições da configuração</h3> -<p>Algumas vezes, configurações desatualizadas no seu dispositivo emulado pode causar um comportamento estranho. Você pode apagar o banco de dados IndexDB seguindo as instruções:</p> -<ol> - <li>Certifique-se de que o adb está rodando, como descrito em <a href="#Certifique-se_que_o_servidor_adb_está_executando">Certifique-se que o servidor adb está executando</a>.</li> - <li>Inicie o emulador.</li> - <li>Abra o terminal no computador que executa o emulador, vá para o diretório raiz da compilação do seu emulador e digite: <code>out/host/<platform>/bin/adb -e shell</code>; no Mac, o diretório pode ser <code>out/host/darwin-x86/bin/adb -e shell</code>.</li> - <li>Agora que você está no <code>shell</code> do <code>adb</code> você pode executar comandos shell no seu dispositivo emulado. Pare o serviço B2G no dispositivo: <code>stop b2g</code>.</li> - <li>Apague o banco de dados IndexDB: <code>rm -rf /data/local/indexedDB</code>.</li> - <li>Reinicie o B2G no dispositivo emulado: <code>start b2g</code>.</li> -</ol> -<p>É esperado que nesse ponto você chegue na interface do Gaia e tudo corra bem.</p> -<h2 id="Se_o_emulador_começa_mas_a_tela_fica_preta_após_a_tela_inicial_mozilla_technology">Se o emulador começa mas a tela fica preta após a tela inicial "mozilla technology"</h2> -<p>Caso isso aconteca, pode ser um bug do drive da máquina que está executando o emulador. Pode acontecer no drive <a href="http://nouveau.freedesktop.org/wiki/">Nouveau</a> Open Source do Linux. A solução mais simples é substituir os drives da máquina. Nesse caso deve-se instalar o drive Nouveau proprietário ("adicional no Ubuntu). No caso do <em>chipset</em> gráfico da Intel, o drive open source pode causar um erro no emulador: '<code>eglMakeCurrent failed</code>' que parece suportar uma versão OpenGL inferior ao necessária para a emulação (2.0 GPU). A solução é desativar o GPU através da edição do script <code>run-emulator.sh</code> (neste caso será mais lento).</p> -<h3 id="Alterando_skins">Alterando <em>skins</em></h3> -<p>Por padrão, o emulador incia no modo HVGE, que é metade do modo VGA, ou 320x480 pixels. Isso é especificado no parâmetro <code>-skin</code> que é passado ao emulador ao iniciar. Você pode alterar para um modo diferente alterando o script <code>run-emulator.sh</code> (ou, de preferência, uma cópia dela). Os <em>skins</em><em> </em>disponíveis são:</p> -<ul> - <li>HVGA (320x480)</li> - <li>QVGA (240x320)</li> - <li>WQVGA (240x400)</li> - <li>WQVGA432 (240x432)</li> - <li>WSVGA (1024x600)</li> - <li>WVGA800 (480x800)</li> - <li>WVGA854 (480x854)</li> - <li>WXGA720 (1280x720)</li> - <li>WXGA800 (1280x800)</li> -</ul> -<p>Os skins ficam armazenados no diretório <code>B2G/development/tools/emulator/skins</code>. É importante notar que o formato dos <em>skins</em> são muito simples, se você observar vai perceber que são pastas simples com arquivos PNG para os diversos objetos de interface de usuário e um arquivo texto chamado <code>layout</code> que descreve o layout da interface e a área da tela. É muito simples criar <em>skins</em> personalizados se desejar.</p> -<h3 id="Alterando_tamanho_de_memoria">Alterando tamanho de memoria</h3> -<p>Outra opção que você pode ou necessita configurar é a memória do dispositivo. O valor padrão é 512 MB, portanto se o dispositivo que você está emulando possui mais ou menos memória, seria importante ajustar o valor para garantir que os aplicativos serão executados em condições similares ao dispositivo. Para fazer isso altere o valor do parâmetro <code>-memory</code> para o tamanho desejado em megabytes. Além do valor padrão de 512 MB, 256 MB e 1024 são prováveis valores que você queira testar.</p> -<p>Para alterar a capacidade de armazenamento do dispositivo emulado (ou seja, o espaço disponível para dados locais, como cartão de memória num telefone móvel ou disco rígido num computador), altere o valor do parâemtro <code>-partition-size</code>. O valor padrão é 512 MB, mas você pode especificar qualquer outro valor em MB para simular o dispositivo a ser testado.</p> -<h3 id="Conectividade_de_Rede">Conectividade de Rede</h3> -<p>Se por alguma razão você não conseguir conectar seu emulador à internet você pode executar o seguinte comando a partir do terminal:</p> -<pre class="language-html">adb shell setprop net.dns1 10.0.2.3</pre> -<p>Se você executar o <code>emulator-jb</code> ou <code>emulator-kk</code>, o comando para configurar o servidor NDS é diferente.<br> - Então execute os seguintes comandos:</p> -<pre class="language-html">adb shell ndc resolver setdefaultif eth0 -adb shell ndc resolver setifdns eth0 10.0.0.0 10.0.2.3 -</pre> diff --git a/files/pt-br/archive/b2g_os/web_telephony_api/index.html b/files/pt-br/archive/b2g_os/web_telephony_api/index.html deleted file mode 100644 index 33a36cadb9..0000000000 --- a/files/pt-br/archive/b2g_os/web_telephony_api/index.html +++ /dev/null @@ -1,23 +0,0 @@ ---- -title: Web Telephony API -slug: Archive/B2G_OS/Web_Telephony_API -translation_of: Archive/B2G_OS/Web_Telephony_API ---- -<p><span class="seoSummary">WebTelephony é uma API que possibilita fazer chamadas de voz utilizando a linha telefônica do aparelho a partir de código JavaScript.</span></p> -<p>A API está acessível utilizando {{domxref("window.navigator.mozTelephony")}}. Veja abaixo os métodos:</p> -<h2 id="Interfaces_do_DOM">Interfaces do DOM</h2> -<ul> - <li>{{domxref("window.navigator.mozTelephony")}}</li> - <li><a href="/en-US/docs/Web/API/Telephony"><code>Telephony</code></a></li> - <li><a href="/en-US/docs/Web/API/TelephonyCall"><code>TelephonyCall</code></a></li> - <li><a href="/en-US/docs/Web/API/CallEvent"><code>CallEvent</code></a></li> -</ul> -<h2 id="Introdução_e_exemplo_de_código">Introdução e exemplo de código</h2> -<div> - {{ListSubpages}}</div> -<div> - </div> -<h2 id="Veja_também">Veja também</h2> -<ul> - <li><a class="link-https" href="https://wiki.mozilla.org/WebAPI/WebTelephony">WebTelephony API</a></li> -</ul> diff --git a/files/pt-br/archive/css3/index.html b/files/pt-br/archive/css3/index.html deleted file mode 100644 index d65f8f5668..0000000000 --- a/files/pt-br/archive/css3/index.html +++ /dev/null @@ -1,582 +0,0 @@ ---- -title: CSS3 -slug: Archive/CSS3 -translation_of: Archive/CSS3 ---- -<p><span class="seoSummary"><strong>CSS3</strong> é a mais recente evolução da linguagem <em>Cascading Style Sheets</em> (Folhas de Estilo em Cascata) que estende o CSS2.1. Ela traz uma série de novidades bastante esperadas, como cantos arredondados, sombras, <a href="/en-US/docs/Web/Guide/CSS/Using_CSS_gradients" title="Using CSS gradients">gradientes</a> , <a href="/en-US/docs/Web/Guide/CSS/Using_CSS_transitions" title="CSS transitions">transições</a> ou <a href="/en-US/docs/Web/Guide/CSS/Using_CSS_animations" title="CSS animations">animações</a> , bem como novos layouts como <a href="/en-US/docs/Web/Guide/CSS/Using_multi-column_layouts" title="Using CSS multi-column layouts">multi-colunas</a> , caixas flexíveis ou layouts de grade.</span> O<span id="result_box" lang="pt"> <span class="atn hps">vendor-</span><span>prefixed <span id="result_box" lang="pt"><span class="hps">são peças</span> <span class="hps">experimentais</span> <span class="hps">que</span></span></span> <span class="hps">deve ser evitado</span> <span class="hps">em ambientes de produção</span><span>,</span> <span class="hps">ou</span> <span class="hps">usado com extrema</span> <span class="hps">cautela, pois</span> <span class="hps">tanto a sua</span> <span class="hps">sintaxe e semântica</span> <span class="hps">pode</span>m <span class="hps">mudar no futuro</span></span>.</p> - -<h2 id="Modules_and_the_standardization_process">Modules and the standardization process</h2> - -<p>CSS Level 2 needed 9 years, from August 2002 to June 2011 to reach the Recommendation status. This was due to the fact that a few secondary features hold back the whole specification. In order to accelerate the standardization of non-problematic features, the <a class="external" href="http://www.w3.org/blog/CSS/" title="http://www.w3.org/blog/CSS/">CSS Working Group</a> of the W3C, in a decision referred as the <a class="external" href="http://fantasai.inkedblade.net/weblog/2011/inside-csswg/modules" title="http://fantasai.inkedblade.net/weblog/2011/inside-csswg/modules">Beijing doctrine</a> , divided CSS in smaller components called <em>modules</em> . Each of these modules is now an independent part of the language and moves towards standardization at its own pace. While some modules are already W3C Recommendations, other still are early Working Drafts. New modules are also added when new needs are identified.</p> - -<p><a href="/@api/deki/files/6120/=CSS_Modules_and_Snapshots.png" title="CSS_Modules_and_Snapshots.png"><img alt="CSS Modules and Snapshots as defined since CSS3" class="internal lwrap" src="/files/3623/CSS_Modules_and_Snapshots.png" style="float: left; width: 550px;"> </a> Formally, there is no CSS3 standard <em>per se</em> . Each module being standardized independently, the standard CSS consists of CSS2.1 amended and extended by the completed modules, not necessary all with the same level number. At each point of time, a snapshot of the CSS standard can be defined, listing CSS2.1 and the mature modules.</p> - -<p>The W3 consortium periodically publishes such snapshots, like in <a class="external" href="http://www.w3.org/TR/css-beijing/" title="http://www.w3.org/TR/css-beijing/">2007</a> or <a class="external" href="http://www.w3.org/TR/css-2010/" title="http://www.w3.org/TR/css-2010/">2010.</a></p> - -<p>Though today no module with a level greater than 3 is standardized, this will change in the future. Some modules, like Selectors 4 or CSS Borders and Backgrounds Level 4 already have an Editor's Draft, though they haven't yet reached the First Published Working Draft status.</p> - -<h2 id="CSS_modules_status" style="">CSS modules status</h2> - -<h3 id="Stable_modules">Stable modules</h3> - -<p>A few CSS modules are already fairly stable and have reached one of the three recommendation level of the CSSWG: Candidate Recommendation, Proposed Recommendation or Recommendation. These can be used without prefixed and are pretty stable, though a few features can still be dropped at the Candidate Recommendation stage.</p> - -<p>These modules extend and amend the CSS2.1 specification which build the core of the specification. Together with it, they are the current snapshot of the CSS specification.</p> - -<table class="fullwidth-table"> - <tbody> - <tr> - <td class="thirdColumn greenBg"><strong>{{ SpecName("CSS3 Colors", "", "") }}</strong></td> - <td>{{ Spec2("CSS3 Colors") }} since June 7th, 2011</td> - </tr> - <tr> - <td colspan="2"> - <p>Adds the {{ cssxref("opacity") }} property, and the <code>hsl</code><code>()</code>, <code>hsla()</code>, <code>rgba()</code> and <code>rgb()</code> functions to create {{cssxref("<color>")}} values. It also defines the <code>currentColor</code> keyword as a valid color.</p> - - <p>The <code>transparent</code> color is now a real color (thanks to the support for the alpha channel) and is a now an alias for <code>rgba(0,0,0,0.0)</code> .</p> - - <p>It deprecates the <a href="http://www.w3.org/TR/CSS2/ui.html#system-colors">system-color keywords that shouldn't be used in a production environment anymore</a>.</p> - </td> - </tr> - </tbody> -</table> - -<table class="fullwidth-table"> - <tbody> - <tr> - <td style="width: 30%; background-color: rgb(128,255,128);"><strong>{{ SpecName("CSS3 Selectors", "", "") }}</strong></td> - <td>{{ Spec2("CSS3 Selectors") }} since September 29th, 2011</td> - </tr> - <tr> - <td colspan="2"> - <p>Adds:</p> - - <ul> - <li>Substring matching attribute selectors, <code>E[attribute^="value"]</code> , <code>E[attribute$="value"]</code> , <code>E[attribute*="value"]</code> .</li> - <li>New pseudo-classes: {{ cssxref(":target") }}, {{ cssxref(":enabled") }} and {{ cssxref(":disabled") }}, {{ cssxref(":checked") }}, {{ cssxref(":indeterminate") }}, {{ cssxref(":root") }}, {{ cssxref(":nth-child") }} and {{ cssxref(":nth-last-child") }}, {{ cssxref(":nth-of-type") }} and {{ cssxref(":nth-last-of-type") }}, {{ cssxref(":last-child") }}, {{ cssxref(":first-of-type") }} and {{ cssxref(":last-of-type") }}, {{ cssxref(":only-child") }} and {{ cssxref(":only-of-type") }},{{ cssxref(":empty") }}, and {{ cssxref(":not") }}.</li> - <li>Pseudo-elements are now characterized by two colons rather then one: <code>:after</code> becomes {{ cssxref("::after") }}, <code>:before</code> becomes {{ cssxref("::before") }}, <code>:first-letter</code> becomes {{ cssxref("::first-letter") }}, and <code>:first-line</code> becomes {{ cssxref("::first-line") }}.</li> - <li>The new <em>general sibling combinator</em> ( <code>h1~pre</code> ).</li> - </ul> - </td> - </tr> - </tbody> -</table> - -<p>The <a class="external" href="http://dev.w3.org/csswg/selectors4/" title="http://dev.w3.org/csswg/selectors4/">next iteration of the Selectors specification</a> is already in progress, though it still hasn't reached the First Public Working Draft stage.</p> - -<table class="fullwidth-table"> - <tbody> - <tr> - <td style="width: 30%; background-color: rgb(128,255,128);"><strong>{{ SpecName("CSS3 Namespaces", "", "") }}</strong></td> - <td>{{ Spec2("CSS3 Namespaces") }} since September 29th, 2011</td> - </tr> - <tr> - <td colspan="2"> - <p>Adds the support for the XML Namespaces by defining the notion of <em>CSS qualified name</em> , using the ' <code>|</code> ' syntax and adding the {{ cssxref("@namespace") }} CSS at-rule.</p> - </td> - </tr> - </tbody> -</table> - -<table class="fullwidth-table"> - <tbody> - <tr> - <td style="width: 30%; background-color: rgb(128,255,128);"><strong>{{ SpecName("CSS3 Media Queries", "", "") }}</strong></td> - <td>{{ Spec2("CSS3 Media Queries") }} since June 19th, 2012</td> - </tr> - <tr> - <td colspan="2"> - <p>Extends the former media type ( <code>print</code>, <code>screen</code>, <code>…</code> ) to a full language allowing <a href="/en/CSS/Media_queries" title="en/CSS/Media_queries">queries on the device media capabilities</a> like <code>only screen and (color)</code> .</p> - - <p>Media queries are not only used in CSS document but also in some attributes of HTML Elements, like the {{ htmlattrxref("media","link") }} attribute of the {{ HTMLElement("link") }} element.</p> - </td> - </tr> - </tbody> -</table> - -<p>The <a href="http://dev.w3.org/csswg/mediaqueries4" title="http://dev.w3.org/csswg/mediaqueries4">next iteration of this specification</a> is in the work, allowing to tailor a Web site regarding the input methods available on the user agent, with new media features like <code>hover</code> or <code>pointer</code>. Detection of EcmaScript support, using the <code>script</code> media features is also proposed.</p> - -<table class="fullwidth-table"> - <tbody> - <tr> - <td style="width: 30%; background-color: rgb(128,255,128);"><strong>{{ SpecName("CSS3 Style", "", "") }}</strong></td> - <td>{{ Spec2("CSS3 Style") }} since November 7th, 2013</td> - </tr> - <tr> - <td colspan="2">Formally defines the syntax of the content of the HTML <a href="/en/HTML/Global_attributes#attr-style" title="en/HTML/Global_attributes#attr-style"> <code>style</code> </a> global attribute.</td> - </tr> - </tbody> -</table> - -<table class="fullwidth-table"> - <tbody> - <tr> - <td style="width: 30%; background-color: rgb(220,255,220);"><strong>{{ SpecName("CSS3 Backgrounds", "", "") }}</strong></td> - <td>{{ Spec2("CSS3 Backgrounds") }}</td> - </tr> - <tr> - <td colspan="2"> - <p>Adds:</p> - - <ul> - <li>Support, on backgrounds, for any type of {{cssxref("<image>")}}, and not only for <code>uri()</code> defined ones.</li> - <li>Support for multiple background images.</li> - <li>The {{ cssxref("background-repeat") }} <code>space</code> and <code>round</code> values, and for the 2-value syntax of this CSS property.</li> - <li>The {{ cssxref("background-attachment") }} <code>local</code> value.</li> - <li>The CSS {{ cssxref("background-origin") }}, {{ cssxref("background-size") }}, and {{ cssxref("background-clip") }} properties.</li> - <li>Support for curved border corners, with the CSS {{ cssxref("border-radius") }}, {{ cssxref("border-top-left-radius") }}, {{ cssxref("border-top-right-radius") }}, {{ cssxref("border-bottom-left-radius") }}, and {{ cssxref("border-bottom-right-radius") }} properties.</li> - <li>Support for the use of an {{cssxref("<image>")}} as the border with the CSS {{ cssxref("border-image") }}, {{ cssxref("border-image-source") }}, {{ cssxref("border-image-slice") }}, {{ cssxref("border-image-width") }}, {{ cssxref("border-image-outset") }}, and {{ cssxref("border-image-repeat") }} properties.</li> - <li>Support for shadows of the element with the CSS {{ cssxref("box-shadow") }} property.</li> - </ul> - </td> - </tr> - </tbody> -</table> - -<p>The <a class="external" href="http://dev.w3.org/csswg/css4-background/" title="http://dev.w3.org/csswg/css4-background/">CSS4 iteration of the Backgrounds and Borders specification</a> is already in progress, though it still hasn't reached the First Public Working Draft stage, it plans to add the ability to clip a border (with the CSS {{ cssxref("border-clip") }}, {{ cssxref("border-clip-top") }}, {{ cssxref("border-clip-right") }}, {{ cssxref("border-clip-bottom") }}, and {{ cssxref("border-clip-left") }} properties) or to control the shape of the border in a corner (using the CSS {{ cssxref("border-corner-shape") }} property).</p> - -<table class="fullwidth-table"> - <tbody> - <tr> - <td style="width: 30%; background-color: rgb(220,255,220);"><strong>{{ SpecName("CSS3 Multicol", "", "") }}</strong></td> - <td>{{ Spec2("CSS3 Multicol") }}</td> - </tr> - <tr> - <td colspan="2">Adds support for easy multi-column layouts using the CSS {{ cssxref("columns") }}, {{ cssxref("column-count") }}, {{ cssxref("column-fill") }}, {{ cssxref("column-gap") }}, {{ cssxref("column-rule") }}, {{ cssxref("column-rule-color") }}, {{ cssxref("column-rule-style") }}, {{ cssxref("column-rule-width") }}, {{ cssxref("column-span") }}, {{ cssxref("column-width") }}, {{ cssxref("break-after") }}, {{ cssxref("break-before") }}, and {{ cssxref("break-inside") }}.</td> - </tr> - </tbody> -</table> - -<table class="fullwidth-table" style="width: 100%;"> - <tbody> - <tr> - <td style="width: 30%; background-color: rgb(220,255,220);"><strong>{{ SpecName("CSS3 Speech", "", "") }}</strong></td> - <td>{{ Spec2("CSS3 Speech") }}</td> - </tr> - <tr> - <td colspan="2">Defines the <code>speech</code> media type, an aural formatting model and numerous properties specific for speech-rendering user agents.</td> - </tr> - </tbody> -</table> - -<table class="fullwidth-table"> - <tbody> - <tr> - <td style="width: 30%; background-color: rgb(220,255,220);"><strong>{{ SpecName("CSS3 Images", "", "") }}</strong></td> - <td>{{ Spec2("CSS3 Images") }}</td> - </tr> - <tr> - <td colspan="2"> - <p>Defines the {{cssxref("<image>")}} data type.</p> - - <p>Extends the <code>url()</code> syntax to support image slices using media fragments.</p> - - <p>Adds:</p> - - <ul> - <li>The <code>dppx</code> unit to the {{cssxref("<resolution>")}} data type.</li> - <li>The <code>image()</code> function as a more flexible alternative to <code>url()</code> to define an image from an url.<br> - <em><strong>At risk</strong> </em> <strong> <em>:</em> </strong> <em> due to insufficient browser support, standardization of the <code>image()</code> function may be postponed to </em> <em>the next iteration of this module</em> <em>.</em></li> - <li>Support for <code>linear-gradient()</code>, <code>repeating-linear-gradient()</code>, <code>radial-gradient()</code> and <code>repeating-radial-gradient()</code>.</li> - <li>The ability to define how a replaced element should fit in its element, using the CSS {{ cssxref("object-fit") }} property.<br> - <em><strong>At risk</strong> </em> <strong> <em>:</em> </strong> <em> due to insufficient browser support, standardization of the {{ cssxref("object-fit") }} and property may be postponed to </em> <em>the next iteration of this module</em> <em>.</em></li> - <li>The ability to override the resolution and orientation of an external image using the CSS {{ cssxref("image-resolution") }} and {{ cssxref("image-orientation") }} properties.<br> - <em><strong>At risk</strong> </em> <strong> <em>:</em> </strong> <em> due to insufficient browser support, standardization of the {{ cssxref("image-resolution") }} and {{ cssxref("image-orientation") }} properties may be postponed to </em> <em>the next iteration of this module</em> <em>.</em></li> - </ul> - </td> - </tr> - </tbody> -</table> - -<p>The <a href="#Images_(Level_4)">CSS Image Values and Replaced Content Level 4</a> which will supersede CSS Image Level 3 is in development and is a {{Spec2("CSS4 Images")}}.</p> - -<table class="fullwidth-table"> - <tbody> - <tr> - <td style="width: 30%; background-color: rgb(220, 255, 220);"><strong>{{ SpecName("CSS3 Values", "", "") }}</strong></td> - <td>{{ Spec2("CSS3 Values") }}</td> - </tr> - <tr> - <td colspan="2"> - <p>Makes <code>initial</code> and <code>inherit</code> keywords usable on any CSS property.</p> - - <p>Formally defines the CSS data types of CSS 2.1, that were implicitely defined by their grammar token and some textual precisions.</p> - - <p>Adds:</p> - - <ul> - <li>Definition for new font-relative length units: <code>rem</code> and <code>ch</code> .</li> - <li>Definition for viewport-relative length units: <code>vw</code>, <code>vh</code>, <code>vmax</code>, and <code>vmin</code> .</li> - <li>Precision about the real size of the absolute length units, which are not really absolute, but defined in relation with the <em>reference pixel</em> .</li> - <li>Definition for {{ cssxref("<angle>") }}, {{cssxref("<time>")}}, {{cssxref("<frequency>")}}, {{cssxref("<resolution>")}}.</li> - <li>Normative value to the definition of {{cssxref("<color>")}}, {{cssxref("<image>")}}, and {{ cssxref("<position>") }}.</li> - <li>Definition for the {{ cssxref("calc", "calc()") }}, {{ cssxref("attr", "attr()")}}, and <code>toggle()</code> functional notations.<br> - <em><strong>At risk:</strong> due to insufficient browser support, standardization of the <code>calc()</code>, <code>attr()</code>, and <code>toggle()</code> functional notations may be postponed to </em> <em>the next iteration of this module</em><em>.</em></li> - </ul> - </td> - </tr> - </tbody> -</table> - -<p>Several types definition, like <code><ident></code> and <code><custom-ident></code>, have been deferred to CSS Values and Units Module Level 4.</p> - -<table class="fullwidth-table"> - <tbody> - <tr> - <td style="width: 30%; background-color: rgb(220,255,220);"><strong>{{ SpecName("CSS3 Flexbox", "", "") }}</strong></td> - <td>{{ Spec2("CSS3 Flexbox") }}</td> - </tr> - <tr> - <td colspan="2">Add a flexbox layout to the CSS {{ cssxref("display") }} property and several new CSS properties to control it: {{ cssxref("flex") }}, {{ cssxref("flex-align") }}, {{ cssxref("flex-direction") }}, {{ cssxref("flex-flow") }}, {{ cssxref("flex-item-align") }}, {{ cssxref("flex-line-pack") }}, {{ cssxref("flex-order") }}, {{ cssxref("flex-pack") }}, and {{ cssxref("flex-wrap") }}.</td> - </tr> - </tbody> -</table> - -<table class="fullwidth-table"> - <tbody> - <tr> - <td style="width: 30%; background-color: rgb(220, 255, 220);"><strong>{{ SpecName("CSS3 Conditional", "", "") }}</strong></td> - <td>{{ Spec2("CSS3 Conditional") }}</td> - </tr> - <tr> - <td colspan="2">Adds features for conditional processing of parts of style sheets, conditioned on capabilities of the browser or the document the style sheet is being applied to. It consists mainly in allowing nested at-rules inside {{ cssxref("@media") }} and the adding of a new CSS at-rule, {{ cssxref("@supports") }}, and a new DOM method {{domxref("CSS.supports()")}}.</td> - </tr> - </tbody> -</table> - -<table class="fullwidth-table"> - <tbody> - <tr> - <td style="width: 30%; background-color: rgb(220, 255, 220);"><strong>{{ SpecName("CSS3 Text-decoration", "", "") }}</strong></td> - <td>{{ Spec2("CSS3 Text-decoration") }}</td> - </tr> - <tr> - <td colspan="2"> - <p>Extends:</p> - - <ul> - <li>the CSS {{ cssxref("text-decoration") }} property by making it a shorthand for the CSS {{ cssxref("text-decoration-line") }}, {{ cssxref("text-decoration-color") }}, and {{ cssxref("text-decoration-style") }} properties. And adds the {{ cssxref("text-decoration-skip") }}, and {{ cssxref("text-underline-position") }} properties.</li> - </ul> - - <p>Adds:</p> - - <ul> - <li>Support for East-Asian-script emphasis marks with the CSS {{ cssxref("text-emphasis") }}, {{ cssxref("text-emphasis-style") }}, {{ cssxref("text-emphasis-color") }}, and {{ cssxref("text-emphasis-position") }} properties.</li> - <li>Support for script shadows with the CSS {{ cssxref("text-shadow") }} property.</li> - </ul> - - <p>Precises:</p> - - <ul> - <li>The paint order of the decorations.</li> - </ul> - - <p><em><strong>At risk:</strong> due to insufficient browser support, standardization of the <code>text-decoration-skip</code>, line positioning rules and the ability to place both emphasis marks and ruby above the same base text may be postponed to </em> <em>the next iteration of this module</em><em>.</em></p> - </td> - </tr> - </tbody> -</table> - -<table class="fullwidth-table"> - <tbody> - <tr> - <td style="width: 30%; background-color: rgb(220,255,220);"><strong>{{ SpecName("CSS3 Fonts", "", "") }}</strong></td> - <td>{{ Spec2("CSS3 Fonts") }}</td> - </tr> - <tr> - <td colspan="2"> - <p>Amends the CSS2.1 Font matching algorithm to be closer to what is really implemented.</p> - - <p>Adds:</p> - - <ul> - <li>Support for downloadable fonts via the CSS {{ cssxref("@font-face") }} at-rule.</li> - <li>The control of the contextual inter-glyph spacing via the CSS {{ cssxref("font-kerning") }} property.</li> - <li>The choice of language-specific glyphs via the CSS {{ cssxref("font-language-override") }} property.</li> - <li>The choice of glyphs with specific OpenType features via the CSS {{ cssxref("font-feature-settings") }} property.</li> - <li>The control of the aspect ratio to use when fallback fonts are selected via the CSS {{ cssxref("font-size-adjust") }} property.</li> - <li>The choice of alternative font faces using the CSS {{ cssxref("font-stretch") }}, {{ cssxref("font-variant-alternates") }}, {{ cssxref("font-variant-caps") }}, {{ cssxref("font-variant-east-asian") }}, {{ cssxref("font-variant-ligatures") }}, {{ cssxref("font-variant-numeric") }}, and {{ cssxref("font-variant-position") }} properties. It also extends the related CSS {{ cssxref("font-variant") }} shorthand property and introduces the {{ cssxref("@font-features-values") }} at-rule.</li> - <li>The control of the automatic generation of an oblique or bold face when none are found via the CSS {{ cssxref("font-synthesis") }} property.</li> - </ul> - </td> - </tr> - </tbody> -</table> - -<table class="fullwidth-table"> - <tbody> - <tr> - <td style="width: 30%; background-color: rgb(220,255,220);"><strong>{{ SpecName("CSS3 Syntax", "", "") }}</strong></td> - <td>{{ Spec2("CSS3 Syntax") }}</td> - </tr> - <tr> - <td colspan="2">Precises how charsets are determined; minor changes in parsing and tokenization algorithms.</td> - </tr> - </tbody> -</table> - -<h3 id="Modules_in_the_refining_phase">Modules in the refining phase</h3> - -<p>Specifications that are deemed to be in the <em>refining phase</em> are already fairly stable. Though changes are still expected, they shouldn't create incompatibilities with current implementations; they should mainly define behavior in edge cases.</p> - -<table class="fullwidth-table"> - <tbody> - <tr> - <td style="width: 30%; background-color: rgb(255,255,220);"><strong>{{ SpecName("CSS3 Basic UI", "", "") }}</strong></td> - <td>{{ Spec2("CSS3 Basic UI") }}</td> - </tr> - <tr> - <td colspan="2"> - <p>Adds:</p> - - <ul> - <li>The ability to tweak the box model using the CSS {{ cssxref("box-sizing") }} property.<br> - <strong><em>At risk:</em> </strong> <em> due to insufficient browser support, standardization of the <code>padding</code><code>-box</code> value may be postponed to </em> <em>the next iteration of this module</em> <em>.</em></li> - <li>Allow the styling of forms according their content using the CSS {{ cssxref(":indeterminate") }}, {{ cssxref(":default") }}, {{ cssxref(":valid") }}, {{ cssxref(":invalid") }}, {{ cssxref(":in-range") }}, {{ cssxref(":out-of-range") }}, {{ cssxref(":required") }}, {{ cssxref(":optional") }}, {{ cssxref(":read-only") }}, and {{ cssxref(":read-write") }} pseudo-classes and the {{ cssxref("::value") }}, {{ cssxref("::choices") }}, {{ cssxref("::repeat-item") }}, and {{ cssxref("::repeat-index") }} pseudo-elements.<br> - <em><strong>At risk:</strong> due to insufficient browser support, standardization of the pseudo-elements {{ cssxref("::value") }}, {{ cssxref("::choices") }}, {{ cssxref("::repeat-item") }}, and {{ cssxref("::repeat-index") }} may be postponed to </em> <em>the next iteration of this module</em> <em>.</em></li> - <li>Support for icons, defined by the CSS {{ cssxref("icon") }} property simultaneously with the new <code>icon</code> value of the CSS {{ cssxref("content") }} property.<br> - <em><strong>At risk:</strong> due to insufficient browser support, standardization of the {{ cssxref("icon") }} property and the <code>icon</code> value may be postponed to CSS4. </em></li> - <li>Support for the CSS {{ cssxref("outline-offset") }} property giving more control on the position of the outline.</li> - <li>Support for the CSS {{ cssxref("resize") }} property allowing Web authors to control if and how elements should be resized.</li> - <li>Support for the CSS {{ cssxref("text-overflow") }} property defining how text overflows, if needed.<br> - <em><strong>At risk:</strong> due to insufficient browser support, the 2-value syntax of this property as well as the support for {{cssxref("<string>")}} values may be postponed to </em> <em>the next iteration of this module</em> <em>.</em></li> - <li>The ability to define the hotspot of a cursor as well as the new <code>none</code>, <code>context-menu</code>, <code>cell</code>, <code>vertical-text</code>, <code>alias</code>, <code>copy</code>, <code>no-drop</code>, <code>not-allowed</code>, <code>nesw-</code><code>resize</code>, <code>nwse-</code><code>resize</code>, <code>col-resize</code>, <code>row-resize</code>, <code>all-scroll</code>, <code>zoom-in</code>, <code>zoom-out</code>, extending the {{ cssxref("cursor") }} property.</li> - <li>The ability to specify the sequential navigation order (that is the <em>tabbing order</em> ) using the CSS {{ cssxref("nav-index") }}, {{ cssxref("nav-up") }}, {{ cssxref("nav-right") }}, {{ cssxref("nav-left") }}, {{ cssxref("nav-down") }} properties.<br> - <em><strong>At risk:</strong> due to insufficient browser support, standardization of the navigation properties may be postponed to </em> <em>the next iteration of this module</em> <em>.</em></li> - <li>The ability to control the usage of an IME editor, using the CSS {{ cssxref("ime-mode") }} property.<br> - <em><strong>At risk:</strong> due to insufficient browser support, standardization of the {{ cssxref("ime-mode") }} property may be postponed to </em> <em>the next iteration of this module</em> <em>.</em></li> - </ul> - </td> - </tr> - </tbody> -</table> - -<p>An early list of what could be in the next iteration of the CSS Basic User Interface Module is <a class="external" href="http://wiki.csswg.org/spec/css4-ui" title="http://wiki.csswg.org/spec/css4-ui">available</a>.</p> - -<table class="fullwidth-table"> - <tbody> - <tr> - <td style="width: 30%; background-color: rgb(255,255,220);"><strong>{{ SpecName("CSS3 Transitions", "", "") }}</strong></td> - <td>{{ Spec2("CSS3 Transitions") }}</td> - </tr> - <tr> - <td colspan="2">Allows the definition of transitions effects between two properties values by adding the CSS {{ cssxref("transition") }}, {{ cssxref("transition-delay") }}, {{ cssxref("transition-duration") }}, {{ cssxref("transition-property") }}, and {{ cssxref("transition-timing-function") }} properties.</td> - </tr> - </tbody> -</table> - -<table class="fullwidth-table"> - <tbody> - <tr> - <td style="width: 30%; background-color: rgb(255,255,220);"><strong>{{ SpecName("CSS3 Animations", "", "") }}</strong></td> - <td>{{ Spec2("CSS3 Animations") }}</td> - </tr> - <tr> - <td colspan="2">Allows the definition of animations effects by adding the CSS {{ cssxref("animation") }}, {{ cssxref("animation-delay") }},{{ cssxref("animation-direction") }}, {{ cssxref("animation-duration") }}, {{ cssxref("animation-fill-mode") }}, {{ cssxref("animation-iteration-count") }}, {{ cssxref("animation-name") }}, {{ cssxref("animation-play-state") }}, and {{ cssxref("animation-timing-function") }} properties, as well as the {{ cssxref("@keyframes") }} at-rule.</td> - </tr> - </tbody> -</table> - -<table class="fullwidth-table"> - <tbody> - <tr> - <td style="width: 30%; background-color: rgb(255,255,220);"><strong>{{ SpecName("CSS3 Transforms", "", "") }}</strong></td> - <td>{{ Spec2("CSS3 Transforms") }}</td> - </tr> - <tr> - <td colspan="2"> - <p>Adds:</p> - - <ul> - <li>the support of bi-dimensional transforms to be applied to any element using the CSS {{ cssxref("transform") }} and {{ cssxref("transform-origin") }} properties. The supported transforms are: <code>matrix</code><code>()</code>, <code>translate()</code>, <code>translateX()</code>, <code>translateY()</code>, <code>scale()</code>, <code>scaleX()</code>, <code>scaleY()</code>, <code>rotate()</code>, <code>skewX()</code>, and <code>skewY()</code>.</li> - <li>the support of tri-dimensional transforms to be applied to any element by adding the CSS {{ cssxref("transform-style") }}, {{ cssxref("perspective") }}, {{ cssxref("perspective-origin") }}, and {{ cssxref("backface-visibility") }} properties and extended the {{ cssxref("transform") }} property with the following transforms are: <code>matrix</code> <code>3d()</code>, <code>translate3d()</code>, <code>translateZ()</code>, <code>scale3d()</code>, <code>scaleZ()</code>, <code>rotate3d()</code>, <code>rotateX</code><code>()</code> ,<code>rotateY</code><code>()</code>, <code>rotateZ()</code>, and <code>perspective()</code>.</li> - </ul> - - <p><em><strong>Note:</strong> this specification is a merge of CSS 2D-Transforms, CSS 3D-Transforms and SVG transforms. </em></p> - </td> - </tr> - </tbody> -</table> - -<table class="fullwidth-table"> - <tbody> - <tr> - <td style="width: 30%; background-color: rgb(255, 255, 220);"><strong>{{ SpecName("CSS3 Fragmentation", "", "") }}</strong></td> - <td>{{ Spec2("CSS3 Fragmentation") }}</td> - </tr> - <tr> - <td colspan="2">Defines how partitions of a Web page should happen, that is page, column breaks, and widows and orphans handling. - <p>Adds:</p> - - <ul> - <li>Support for defining the behavior of decorations, that is borders and background colors or images, when a box is breaked (at a page, column or line-break) with the CSS {{ cssxref("box-decoration-break") }} property.</li> - </ul> - </td> - </tr> - </tbody> -</table> - -<table class="fullwidth-table"> - <tbody> - <tr> - <td style="width: 30%; background-color: rgb(255,255,220);"><strong>{{ SpecName("CSS3 Text", "", "") }}</strong></td> - <td>{{ Spec2("CSS3 Text") }}</td> - </tr> - <tr> - <td colspan="2"> - <p>Extends:</p> - - <ul> - <li>the CSS {{ cssxref("text-transform") }} property with the value <code>full-width</code>.</li> - <li>the CSS {{ cssxref("text-align") }} property with the value <code>start</code>, <code>end</code>, <code>start end</code>, and <code>match-parent</code> for a better support of documents with multiple directionalities of text.</li> - <li>the CSS {{ cssxref("text-align") }} property with a {{cssxref("<string>")}} value to align on that character. This is useful to align number on the decimal point.</li> - <li>the CSS {{ cssxref("word-spacing") }} and {{ cssxref("letter-spacing") }} properties with range constraints to control flexibility in justification.</li> - </ul> - - <p>Adds:</p> - - <ul> - <li>Control on how whitespaces are displayed using the CSS {{ cssxref("text-space-collapse") }} and {{ cssxref("tab-size") }} properties.</li> - <li>Control on line breaks and word boundaries using the CSS {{ cssxref("line-break") }}, {{ cssxref("word-break") }}, {{ cssxref("hyphens") }}, {{ cssxref("text-wrap") }}, {{ cssxref("overflow-wrap") }}, and {{ cssxref("text-align-last") }} properties.</li> - <li>Control on how justification is happening, in order to support more type of scripts, using the CSS {{ cssxref("text-justify") }} property.</li> - <li>Control on edge effect using the CSS {{ cssxref("text-indent") }} and {{ cssxref("hanging-punctuation") }} properties.</li> - </ul> - </td> - </tr> - </tbody> -</table> - -<p>A few features present in early CSS Text Level 3 draft have being <a class="external" href="http://dev.w3.org/csswg/css3-text/#recent-changes" title="http://dev.w3.org/csswg/css3-text/#recent-changes">postponed to the next iteration of this module</a> .</p> - -<table class="fullwidth-table"> - <tbody> - <tr> - <td style="width: 30%; background-color: rgb(255,255,220);"><strong>{{ SpecName("CSS3 Variables", "", "") }}</strong></td> - <td>{{ Spec2("CSS3 Variables") }}</td> - </tr> - <tr> - <td colspan="2">Defines a mechanism allowing to define variables in CSS.</td> - </tr> - </tbody> -</table> - -<h3 id="Modules_in_the_revising_phase">Modules in the revising phase</h3> - -<p>Modules that are in the revising phase are much less stable than those in the refining phase. Often the syntax is still under scrutiny and may evolve a lot, in a non-compatible way. Alternative syntax are tested and often implemented.</p> - -<table class="fullwidth-table"> - <tbody> - <tr> - <td style="width: 30%; background-color: rgb(255,160,100);"><strong>{{ SpecName("CSS3 Writing Modes", "", "") }}</strong></td> - <td>{{ Spec2("CSS3 Writing Modes") }}</td> - </tr> - <tr> - <td colspan="2">Defines the writing modes of both horizontal and vertical scripts and precises how the CSS {{ cssxref("direction") }} and {{ cssxref("unicode-bidi") }} properties interact with the new CSS {{ cssxref("text-orientation") }} property, and extends them where needed.</td> - </tr> - </tbody> -</table> - -<h3 id="Modules_in_the_exploring_phase">Modules in the exploring phase</h3> - -<table class="fullwidth-table"> - <tbody> - <tr> - <td style="width: 30%; background-color: #F66;"><strong>{{ SpecName("CSS4 Images", "", "") }}</strong></td> - <td>{{ Spec2("CSS4 Images") }}</td> - </tr> - <tr> - <td colspan="2"> - <p>Extends:</p> - - <ul> - <li>the <code>image()</code> functional notation to describe the directionality of the image (<code>rtl</code> or <code>ltr</code>), allowing for bidi-sensitive images.</li> - <li>the {{ cssxref("image-orientation") }} property by adding the keyword <code>from-image</code>, allowing to follow EXIF data stored into images to be considered.</li> - </ul> - - <p>Adds:</p> - - <ul> - <li>the <code>image-set()</code> functional notation to allow the definition to equivalent images at different resolution allowing for resolution-negotiated selection of images.</li> - <li>the <code>element()</code> functional notation allowing the use of part of the page as image.</li> - <li>the <code>cross-fade()</code> functional notation allowing to refer to intermediate images when transitioning between two images and defines the interpolation between two images.</li> - <li>the <code>conic-gradient()</code> and <code>repeating-conic-gradient()</code> functional notation describing a new type of gradient.</li> - <li>the {{cssxref("image-rendering")}} property that allow to define how resize of the object should be handled.</li> - </ul> - </td> - </tr> - </tbody> -</table> - -<table class="fullwidth-table" style="width: 100%;"> - <tbody> - <tr> - <td style="width: 30%; background-color: #F66;"><strong>{{ SpecName("CSS3 Device", "", "") }}</strong></td> - <td>{{ Spec2("CSS3 Device") }}</td> - </tr> - <tr> - <td colspan="2">Adds a new at-rule, {{ cssxref("@viewport") }}, allowing to specify the size, zoom factor, and orientation of the viewport that is used as the base for the initial containing block.</td> - </tr> - </tbody> -</table> - -<table class="fullwidth-table" style="width: 100%;"> - <tbody> - <tr> - <td style="width: 30%; background-color: #F66;"><strong>{{ SpecName("CSS3 Grid", "", "") }}</strong></td> - <td>{{ Spec2("CSS3 Grid") }}</td> - </tr> - <tr> - <td colspan="2">Add a grid layout to the CSS <a href="https://developer.mozilla.org/en-US/docs/Web/CSS/display" title=""><code>display</code></a> property and several new CSS properties to control it: {{cssxref("grid")}}, {{cssxref("grid-area")}}, {{cssxref("grid-auto-columns")}}, {{cssxref("grid-auto-flow")}}, {{cssxref("grid-auto-position")}}, {{cssxref("grid-auto-rows")}}, {{cssxref("grid-column")}}, {{cssxref("grid-column-start")}}, {{cssxref("grid-column-end")}}, {{cssxref("grid-row")}}, {{cssxref("grid-row-start")}}, {{cssxref("grid-row-end")}}, {{cssxref("grid-template")}}, {{cssxref("grid-template-areas")}}, {{cssxref("grid-template-rows")}}, and {{cssxref("grid-template-columns")}}.</td> - </tr> - </tbody> -</table> - -<table class="fullwidth-table"> - <tbody> - <tr> - <td style="width: 30%; background-color: #F66;"><strong>{{ SpecName("CSS3 GCPM", "", "") }}</strong></td> - <td>{{ Spec2("CSS3 GCPM") }}</td> - </tr> - <tr> - <td colspan="2">Adds the ability to tailor printed version of a document by allowing to control header, footer but also references tables like indexes or tables of content.</td> - </tr> - </tbody> -</table> - -<table class="fullwidth-table"> - <tbody> - <tr> - <td style="width: 30%; background-color: #F66;"><strong>{{ SpecName("CSS3 Exclusions and Shapes", "", "") }}</strong></td> - <td>{{ Spec2("CSS3 Exclusions and Shapes") }}</td> - </tr> - <tr> - <td colspan="2">Extends the floats mechanism to define exclusion regions in any positioning scheme. Adds the notion of shapes, in which content must flows.</td> - </tr> - </tbody> -</table> - -<table class="fullwidth-table"> - <tbody> - <tr> - <td style="width: 30%; background-color: #F66;"><strong>{{ SpecName("CSS3 Lists", "", "") }}</strong></td> - <td>{{ Spec2("CSS3 Lists") }}</td> - </tr> - <tr> - <td colspan="2">Extends the list counter mechanism so that list markers can be styled and Web developers can define new list counter schemes.</td> - </tr> - </tbody> -</table> - -<table class="fullwidth-table"> - <tbody> - <tr> - <td style="width: 30%; background-color: #F66;"><strong>{{ SpecName("CSS3 Regions", "", "") }}</strong></td> - <td>{{ Spec2("CSS3 Regions") }}</td> - </tr> - <tr> - <td colspan="2">Defines a new mechanism allowing content to flow across, eventually non-contiguous, multiple areas called regions.</td> - </tr> - </tbody> -</table> - -<p> </p> diff --git a/files/pt-br/archive/index.html b/files/pt-br/archive/index.html deleted file mode 100644 index e4b9730ea5..0000000000 --- a/files/pt-br/archive/index.html +++ /dev/null @@ -1,21 +0,0 @@ ---- -title: Archive of obsolete content -slug: Archive -tags: - - NeedsTranslation - - TopicStub -translation_of: Archive ---- -<p>Here at MDN, we try to avoid outright deleting content that might be useful to people targeting legacy platforms, operating systems, and browsers. Perhaps your target audience is people that are using older hardware, for example, and can't upgrade to the latest and greatest browsers. Or for "reasons," your company is required to use very old software and you need to build Web content that runs on that software. Or perhaps you're just curious about the history of an obsolete feature or API, and how it worked.</p> - -<p>There are many reasons older documentation can be useful. So, we've established this area into which we can archive older documentation. Material in this Archived content zone should <strong>not</strong> be used for building new Web sites or apps for modern browsers. It's here for historical reference only.</p> - -<div class="note"> -<p><strong>Note to writers:</strong> We need to try to keep the subpages here organized instead of all dumped into one large folder. Try to create subtrees for categories of material. Also, only move pages here that are <strong>extremely</strong> obsolete. If anyone might realistically need the information in a living product, it may not be appropriate to move it here. In general, it may be best to discuss it in the <a href="https://chat.mozilla.org/#/room/#mdn:mozilla.org">MDN Web Docs chat room </a>before moving content here.</p> -</div> - -<p>{{SubpagesWithSummaries}}</p> - -<h2 id="Subnav">Subnav</h2> - -<p>{{ListSubpages("/en-US/docs/Archive", 2, 0, 1)}}</p> diff --git a/files/pt-br/archive/mdn/index.html b/files/pt-br/archive/mdn/index.html deleted file mode 100644 index 95f78220b5..0000000000 --- a/files/pt-br/archive/mdn/index.html +++ /dev/null @@ -1,16 +0,0 @@ ---- -title: MDN -slug: Archive/MDN -tags: - - NeedsTranslation - - TopicStub -translation_of: Archive/MDN ---- -<p></p><div class="overheadIndicator obsolete obsoleteHeader"><p><strong><span title="This is an obsolete API and is no longer guaranteed to work."><i class="icon-trash"> </i></span> Obsolete</strong><br>This feature is obsolete. Although it may still work in some browsers, its use is discouraged since it could be removed at any time. Try to avoid using it.</p></div><p></p> - -<p>The documentation listed below is archived, obsolete material about MDN itself.</p> - -<p></p><div class="row topicpage-table"> - <div class="section"><dl><dl><dt class="landingPageList"><a href="/en-US/docs/Archive/MDN/Content_kits">Content kits</a></dt><dd class="landingPageList">MDN Content Kits are subject-based collections of technical resources to help you host a local developer meetup or give a technical presentation at an event, conference, or workshop.</dd><dt class="landingPageList"><a href="/en-US/docs/Archive/MDN/Howto_Link_a_Github_account">How to link a GitHub account to your MDN profile</a></dt><dd class="landingPageList">All users who wish to contribute to MDN must add a GitHub login to their MDN account in order to edit. This article describes how to add GitHub authentication to your MDN profile.</dd><dt class="landingPageList"><a href="/en-US/docs/Archive/MDN/Persona_sign-ins">MDN and Persona sign-ins</a></dt><dd class="landingPageList">Starting on November 1, 2016, we only support GitHub for logging into MDN. If you didn't add a GitHub login to your MDN account before we disabled Persona logins, please file an <a href="https://mzl.la/accounthelp">"Account Help" bug</a> on Bugzilla.</dd></dl></dl></div> - <div class="section"><dl><dt class="landingPageList"><a href="/en-US/docs/Archive/MDN/Subject-matter_experts">Subject-matter experts</a></dt><dd class="landingPageList">This article's purpose is to help writers find the Mozilla developers who have answers for questions about various technologies. If you're an engineer on any Mozilla project, <strong>please</strong> make sure your technology is on this list and that the contact information for your group is provided.</dd><dt class="landingPageList"><a href="/en-US/docs/Archive/MDN/Zones">Zones</a></dt><dd class="landingPageList">A <strong>zone</strong> is a special area of MDN whose content is presented with some added user interface elements, such as a special zone navigation box and enhanced visuals in the header area of the page.</dd></dl></div> - </div><p></p> diff --git a/files/pt-br/archive/meta_docs/getting_started/index.html b/files/pt-br/archive/meta_docs/getting_started/index.html deleted file mode 100644 index 631d52b5c3..0000000000 --- a/files/pt-br/archive/meta_docs/getting_started/index.html +++ /dev/null @@ -1,33 +0,0 @@ ---- -title: Getting started as a new MDN contributor -slug: Archive/Meta_docs/Getting_started -tags: - - Iniciantes - - MDN -translation_of: Archive/Meta_docs/Getting_started ---- -<p>O <strong>Mozilla Developer Network</strong> (MDN) é uma wiki, onde <strong>qualquer pessoa</strong> pode adicionar ou editar conteúdo. Você não precisa ser um programador ou saber muito a respeito de tecnologia. Existe uma lista de tarefas, que precisam serem feitas, desde simples (proof-reading and correcting typos) até complexas (escrever documentação para API).</p> - -<p>Se você é um novo contribuidor MDN, ou apenas pensando em contribuir, você provavelmente tem algumas dúvidas! Este guia vai ajudá-lo a começar.</p> - -<h2 id="Não_fique_acanhado">Não fique acanhado</h2> - -<p>Contribuir é fácil e seguro. Mesmo se você cometer algum engano, é fácil de ser resolvido. Mesmo que você não saiba exatamente como as coisas devem parecer, ou sua gramática não seja exatamente perfeita, não se preocupe sobre isso! Nós temos um time de pessoas que trabalham para manter o conteúdo do MDN tão bom quanto possível. Alguém acompanhará para que seu trabalho seja claro e bem escrito.</p> - -<p>Você não precisa de premissão especial. Assim que você se registrar no MDN, você já pode começar a criar ou editar. E se você tiver alguma dúvida, ou precisar de alguma ajuda, você pode <a href="/en-US/docs/Project:MDN/About#The_MDN_community" title="/en-US/docs/Project:MDN/About#The_MDN_community">join our online community </a>e conversar conosco sobre isso!</p> - -<p>Agora que você sabe que terá apoio ao contribuir com o MDN, você provavelmente gostaria de saber por onde começar. E isto é muito simples. Tudo o que você precisa é fazer se registrar <a href="/en-US/docs/Persona" title="/en-US/docs/Persona">Persona</a>. Persona é uma tecnologia de regitro único da Mozilla.</p> - -<h2 id="Logando_na_MDN">Logando na MDN</h2> - -<p>A parte mais difícl já foi. Agora que você tem um MDN account, linkado em sua Persona account. Quando você quiser entrar no MDN, tudo que você tem que fazer é clicar no botão "Sign in" no topo da página. Ou então, se você clicar em qualquer botão que precisa estar logado, e você não estiver, você será direcionado para fazer o login.</p> - -<p><img alt="New screenshot with new design" src="https://mdn.mozillademos.org/files/6857/Screen%20Shot%202014-01-30%20at%2012.22.20.png" style="border-style: solid; border-width: 1px; height: 145px; width: 451px;"></p> - -<p>Assim que você estiver logado, o botão "Sign in" mudar para indicar seu username, e para mostrar um link para sair "sign out", Desse jeito:</p> - -<p><img alt="New Screenshot for logging out with new design" src="https://mdn.mozillademos.org/files/6859/Screen%20Shot%202014-01-30%20at%2012.24.38.png" style="border-style: solid; border-width: 1px; height: 105px; width: 456px;"></p> - -<p>Agora você está pronto para <a href="/en-US/docs/Project:MDN/Contributing/How_to_help" title="/en-US/docs/Project:MDN/Contributing/Creating_and_editing_pages">get started</a>! Precisa de ajuda para decidir o que fazer? Veja o guia: <a href="/en-US/docs/Project:MDN/Contributing/Quick_start">Quick Start guide</a>.</p> - -<p>{{Next("Project:MDN/Contributing/How_to_help")}}</p> diff --git a/files/pt-br/archive/meta_docs/index.html b/files/pt-br/archive/meta_docs/index.html deleted file mode 100644 index 52de2c8447..0000000000 --- a/files/pt-br/archive/meta_docs/index.html +++ /dev/null @@ -1,12 +0,0 @@ ---- -title: MDN "meta-documentation" archive -slug: Archive/Meta_docs -tags: - - Archive - - MDN - - NeedsTranslation - - TopicStub -translation_of: Archive/Meta_docs ---- -<p>Here you'll find archived "meta-documentation"; that is, documentation about how to write documentation on MDN. The articles here are obsolete and should no longer be referenced; we are retaining them here for reference while we migrate some content to new places, but very little of this is useful.</p> -<p>{{LandingPageListSubpages}}</p> diff --git a/files/pt-br/archive/misc_top_level/index.html b/files/pt-br/archive/misc_top_level/index.html deleted file mode 100644 index 0959a3b10b..0000000000 --- a/files/pt-br/archive/misc_top_level/index.html +++ /dev/null @@ -1,8 +0,0 @@ ---- -title: Misc top level -slug: Archive/Misc_top_level -translation_of: Archive/Misc_top_level ---- -<p>In progress. These pages were moved from the top level of MDN in a spate of furious reorganization.</p> - -<p>{{SubpagesWithSummaries}}</p> diff --git a/files/pt-br/archive/misc_top_level/visualizing_audio_spectrum/index.html b/files/pt-br/archive/misc_top_level/visualizing_audio_spectrum/index.html deleted file mode 100644 index 9ea5676ded..0000000000 --- a/files/pt-br/archive/misc_top_level/visualizing_audio_spectrum/index.html +++ /dev/null @@ -1,169 +0,0 @@ ---- -title: Visualizando um espectro de áudio -slug: Archive/Misc_top_level/Visualizing_Audio_Spectrum -translation_of: Archive/Misc_top_level/Visualizing_Audio_Spectrum ---- -<p>Este exemplo calcula e mostra um espectro dos dados do áudio em execução usando Transformada Rápida de Fourier <span style="line-height: 1.572;">(Fast Fourier Transform - </span>FFT). A função manipula o evento <strong>loadedMetaData</strong> que guarda os metadados do elemento áudio em variaveis globais; a função para o evento <strong>MozAudioAvailable</strong> executa uma FFT das amostras e exibe-as no canvas.</p> - -<div class="note"> -<p><strong>NOTA:</strong> Você pode usar o {{domxref("AudioNode")}} chamado <span style="line-height: 1.5em;">{{domxref("AnalyserNode")}}</span><span style="line-height: 1.572;"> para executar uma análise FFT em tempo real em uma execução de áudio, ao invés de usar o código abaixo</span><span style="line-height: 1.572;">.</span></p> -</div> - -<p><img alt="Fft.png" class="default internal" src="/@api/deki/files/4723/=Fft.png"></p> - -<pre><!DOCTYPE html> -<html> - <head> - <title>JavaScript Spectrum Example</title> - </head> - <body> - <audio id="audio-element" - src="song.ogg" - controls="true" - style="width: 512px;"> - </audio> - <div><canvas id="fft" width="512" height="200"></canvas></div> - - <script> - var canvas = document.getElementById('fft'), - ctx = canvas.getContext('2d'), - channels, - rate, - frameBufferLength, - fft; - - function loadedMetadata() { - channels = audio.mozChannels; - rate = audio.mozSampleRate; - frameBufferLength = audio.mozFrameBufferLength; - - fft = new FFT(frameBufferLength / channels, rate); - } - - function audioAvailable(event) { - var fb = event.frameBuffer, - t = event.time, /* unused, but it's there */ - signal = new Float32Array(fb.length / channels), - magnitude; - - for (var i = 0, fbl = frameBufferLength / 2; i < fbl; i++ ) { - // Assuming interlaced stereo channels, - // need to split and merge into a stero-mix mono signal - signal[i] = (fb[2*i] + fb[2*i+1]) / 2; - } - - fft.forward(signal); - - // Clear the canvas before drawing spectrum - ctx.clearRect(0,0, canvas.width, canvas.height); - - for (var i = 0; i < fft.spectrum.length; i++ ) { - // multiply spectrum by a zoom value - magnitude = fft.spectrum[i] * 4000; - - // Draw rectangle bars for each frequency bin - ctx.fillRect(i * 4, canvas.height, 3, -magnitude); - } - } - - var audio = document.getElementById('audio-element'); - audio.addEventListener('MozAudioAvailable', audioAvailable, false); - audio.addEventListener('loadedmetadata', loadedMetadata, false); - - // FFT from dsp.js, see below - var FFT = function(bufferSize, sampleRate) { - this.bufferSize = bufferSize; - this.sampleRate = sampleRate; - this.spectrum = new Float32Array(bufferSize/2); - this.real = new Float32Array(bufferSize); - this.imag = new Float32Array(bufferSize); - this.reverseTable = new Uint32Array(bufferSize); - this.sinTable = new Float32Array(bufferSize); - this.cosTable = new Float32Array(bufferSize); - - var limit = 1, - bit = bufferSize >> 1; - - while ( limit < bufferSize ) { - for ( var i = 0; i < limit; i++ ) { - this.reverseTable[i + limit] = this.reverseTable[i] + bit; - } - - limit = limit << 1; - bit = bit >> 1; - } - - for ( var i = 0; i < bufferSize; i++ ) { - this.sinTable[i] = Math.sin(-Math.PI/i); - this.cosTable[i] = Math.cos(-Math.PI/i); - } - }; - - FFT.prototype.forward = function(buffer) { - var bufferSize = this.bufferSize, - cosTable = this.cosTable, - sinTable = this.sinTable, - reverseTable = this.reverseTable, - real = this.real, - imag = this.imag, - spectrum = this.spectrum; - - if ( bufferSize !== buffer.length ) { - throw "Supplied buffer is not the same size as defined FFT. FFT Size: " + bufferSize + " Buffer Size: " + buffer.length; - } - - for ( var i = 0; i < bufferSize; i++ ) { - real[i] = buffer[reverseTable[i]]; - imag[i] = 0; - } - - var halfSize = 1, - phaseShiftStepReal, - phaseShiftStepImag, - currentPhaseShiftReal, - currentPhaseShiftImag, - off, - tr, - ti, - tmpReal, - i; - - while ( halfSize < bufferSize ) { - phaseShiftStepReal = cosTable[halfSize]; - phaseShiftStepImag = sinTable[halfSize]; - currentPhaseShiftReal = 1.0; - currentPhaseShiftImag = 0.0; - - for ( var fftStep = 0; fftStep < halfSize; fftStep++ ) { - i = fftStep; - - while ( i < bufferSize ) { - off = i + halfSize; - tr = (currentPhaseShiftReal * real[off]) - (currentPhaseShiftImag * imag[off]); - ti = (currentPhaseShiftReal * imag[off]) + (currentPhaseShiftImag * real[off]); - - real[off] = real[i] - tr; - imag[off] = imag[i] - ti; - real[i] += tr; - imag[i] += ti; - - i += halfSize << 1; - } - - tmpReal = currentPhaseShiftReal; - currentPhaseShiftReal = (tmpReal * phaseShiftStepReal) - (currentPhaseShiftImag * phaseShiftStepImag); - currentPhaseShiftImag = (tmpReal * phaseShiftStepImag) + (currentPhaseShiftImag * phaseShiftStepReal); - } - - halfSize = halfSize << 1; - } - - i = bufferSize/2; - while(i--) { - spectrum[i] = 2 * Math.sqrt(real[i] * real[i] + imag[i] * imag[i]) / bufferSize; - } - }; - </script> - </body> -</html> -</pre> diff --git a/files/pt-br/archive/mozilla/activex_control_for_hosting_netscape_plug-ins_in_ie/index.html b/files/pt-br/archive/mozilla/activex_control_for_hosting_netscape_plug-ins_in_ie/index.html deleted file mode 100644 index 90f77c6e87..0000000000 --- a/files/pt-br/archive/mozilla/activex_control_for_hosting_netscape_plug-ins_in_ie/index.html +++ /dev/null @@ -1,107 +0,0 @@ ---- -title: Controlo ActiveX para alojar Netscape Plugins no IE -slug: Archive/Mozilla/ActiveX_Control_for_Hosting_Netscape_Plug-ins_in_IE -translation_of: Archive/Mozilla/ActiveX_Control_for_Hosting_Netscape_Plug-ins_in_IE ---- -<h2 id="Introduction" name="Introduction">Introdução</h2> - -<p>A Microsoft retirou o apoio aos Netscape plugins desde a versão IE 5.5 SP 2 . Este projeto poupa muito trabalho aos desenvolvedores de plugins . </p> - -<p>Esta página descreve um controlo que implementa a NPAPI e aloja a maioria dos plugins compativeis com Netscape. A partir de agora pode-se usar os passados plugins nas versões recentes do IE ou em outro contentor Activex. O próprio controlo é implementado numa DLL, a "pluginhostctrl.dll" autónoma do restante projeto Mozilla.</p> - -<p>Quem quiser saber como a Microsoft mantinha a NPAPI deve procurar a ficha "plugin.ocx" na diretoria do sistema Windows. Este controlo Activex de 100k contem toda a implementação NPAPI e equivalia ao funcionamento da atual "pluginhostctrl.dll".</p> - -<p>A secção subjacente conta como obter a fonte, construir e usar a pluginhostctrl.dll.</p> - -<p> </p> - -<h2 id="Get_the_source" name="Get_the_source">Obter a fonte</h2> - -<p>É preciso ter CVS para obter o código fonte. Admitindo que tem o CVS escreva ou copie e cole o código subjacente no command prompt:</p> - -<pre>C:\> set CVSROOT=:pserver:anonymous@cvs-mirror.mozilla.org:/cvsroot -C:\> set HOME=\TEMP -C:\> cvs login -(Logging in to anonymous@cvs-mirror.mozilla.org) -CVS password: anonymous -C:\> cvs -z3 co mozilla/embedding/browser/activex/src/pluginhostctrl -</pre> - -<p> Isto coloca o código fonte do controlo em mozilla\embedding\browser\activex\src\pluginhostctrl.</p> - -<p>Também pode-se ver o código fonte <a class="external" href="http://lxr.mozilla.org/seamonkey/source/embedding/browser/activex/src/pluginhostctrl/">online</a>.</p> - -<p> </p> - -<h2 id="Build_it" name="Build_it">Construir o controlo </h2> - -<p> E fácil construir o controlo:</p> - -<ol> - <li>Locatize a diretoria da pluginhostctrl :</li> - <li>Abra a pluginhostctrl.dsp</li> - <li>Faça o ficheiro "Win32 Debug" or outro </li> - <li>Abra algumas das fichas de teste em pluginhostctrl\tests no Internet Explorer e verifique se o controlo está construído e ficou registado corretamente. </li> -</ol> - -<p>O controlo lê os plugins do Netscape 4.x e IE instalados, mas ainda não funciona com o Mozilla ou NS 6.x .</p> - -<h2 id="A_note_to_developers" name="A_note_to_developers">Nota para os desenvolvedores</h2> - -<p> Se pretender ALTERAR este contolo tem de OBRIGATÓRIAMENTE alterar a CLSID from {DBB2DE32-61F1-4F7F-BEB8-A37F5BC24EE2} para algo diverso e outras GUIDs que o controlam (IID, LIBIDs etc). Isto é necessário para que possa coexistir com a versão genérica e outras versões que outros produtores de plugins que estejam ou possam ser instaladas. </p> - -<p>IAconselha-se a renomear o controlo e a não instalar à toa, ou na diretoria do Windows, para não ser ignorado. </p> - -<p>Use uma aplicação como guidgen.exe ou uuidgen.exe para fazer novas GUIDs.</p> - -<h2 id="Package_it" name="Package_it">Empacotamento</h2> - -<p>Há uma subdirectoria chamada cab/ com um script e um README.txt para cada desenvolvedor fazer or seus próprios ficheiros CAB.</p> - -<h2 id="Manual_installation" name="Manual_installation">Instalação manual</h2> - -<p>Após ter precompilado a pluginhostctrl.dll, para a instalar num computador, é preciso registar com um script de instalação ou manualmente.:</p> - -<pre>regsvr32 pluginhostctrl.dll</pre> - -<p>Para instalar um controlo num sistema operativo Windows NT, 2000 & XP precisa de autorização do nível de administrador..</p> - -<h2 id="Usage" name="Usage">Utilização</h2> - -<p>Escreva HTML como o do conteúdo.subjacente:</p> - -<pre> <OBJECT classid="CLSID:DBB2DE32-61F1-4F7F-BEB8-A37F5BC24EE2" - width="500" height="300"> - <PARAM name="type" value="video/quicktime"/> - <PARAM name="src" value="http://www.foobar.com/some_movie.mov"/> - <!-- Custom arguments --> - <PARAM name="loop" value="true"/> - </OBJECT> -</pre> - -<p>O atributo CLASSID diz ao IE para criar uma instància do plugin alojador do controlo. A WIDTH e a HEIGHT especificam as dimensões em pixeis.</p> - -<p>Pode-se optat por especificar um atributo CODEBASE se o controlo foi empacotado num ficheiro CAB para instalação automática. .</p> - -<p>Os seguintes atributos <EMBED> tem <PARAM> tag equivalentes:</p> - -<ul> - <li><PARAM name="type" ...> equivale a TYPE<br> - Especifica o tipo MIME do plugin. O controlo usa este valor para determinar o plugin a criar para manipular o conteúdo..</li> - <li><PARAM name="src" ...> equivale a SRC<br> - Especifca a URL para a corrente de dados initial alimentar o plugin. Se não foi especificado um "tipo" PARAM, o controlo tentará usar o tipo MIME da corrente para criar o plugin correto..</li> - <li><PARAM name="pluginspage" ...> equivale a PLUGINSPAGE<br> - Especifica a URL que instala o plugin. O plugin base redireciona a página quando o plugin correto não está instalado.</li> -</ul> - -<p>Pode-se colocar qualquer plugin personalizado como elemento adicional de <PARAM>.</p> - -<h2 id="Still_to_do" name="Still_to_do">Limitações: </h2> - -<ul> - <li>Apenas aloja plugins janelados .</li> - <li>Falta um ficheiro pluginhostctrl.cab oficial .</li> - <li>Não funciona com o Adobe Acrobat plugin .</li> - <li>Os Plugins não criam correntes editáveis nem procuram correntes legiveis. .</li> - <li>LiveConnect scripting não funciona . Para funcionar com scripting é preciso enviar a pluginhostctrl.dll modificada que exponha os métodos que são chamados no plugin.</li> -</ul> diff --git a/files/pt-br/archive/mozilla/index.html b/files/pt-br/archive/mozilla/index.html deleted file mode 100644 index 0acec76e6d..0000000000 --- a/files/pt-br/archive/mozilla/index.html +++ /dev/null @@ -1,10 +0,0 @@ ---- -title: Archived Mozilla and build documentation -slug: Archive/Mozilla -tags: - - NeedsTranslation - - TopicStub -translation_of: Archive/Mozilla ---- -<p>These articles are archived, obsolete documents about Mozilla, Gecko, and the process of building Mozilla projects.</p> -<p>{{SubpagesWithSummaries}}</p> diff --git a/files/pt-br/archive/mozilla/xpinstall/index.html b/files/pt-br/archive/mozilla/xpinstall/index.html deleted file mode 100644 index 44738d65b2..0000000000 --- a/files/pt-br/archive/mozilla/xpinstall/index.html +++ /dev/null @@ -1,56 +0,0 @@ ---- -title: XPInstall -slug: Archive/Mozilla/XPInstall -tags: - - NeedsTranslation - - TopicStub - - XPInstall - - XPInstall_API_reference -translation_of: Archive/Mozilla/XPInstall ---- -<p></p><div class="warning"><p>Parts of this page show the use of the <a class="new" href="https://developer.mozilla.org/pt-BR/docs/XPInstall_API_Reference" rel="nofollow">XPInstall API</a>. The majority of this API is now deprecated and as of Gecko 1.9 no longer available. <a class="new" href="https://developer.mozilla.org/pt-BR/docs/Extensions" rel="nofollow">Extension</a>, <a class="new" href="https://developer.mozilla.org/pt-BR/docs/Themes" rel="nofollow">Theme</a>, and <a class="new" href="https://developer.mozilla.org/pt-BR/docs/Plugins" rel="nofollow">plug-in</a> developers must switch away from <code>install.js</code> based packages to the new <a class="new" href="https://developer.mozilla.org/pt-BR/docs/Bundles" rel="nofollow">packaging scheme</a> with an <code><a class="new" href="https://developer.mozilla.org/pt-BR/docs/Install_Manifests" rel="nofollow">install.rdf</a></code> manifest. In particular plugin developers should see <a class="new" href="https://developer.mozilla.org/pt-BR/docs/Shipping_a_plugin_as_a_Toolkit_bundle" rel="nofollow">how to package a plugin as an extension</a>.</p></div><p></p> - -<div><strong>Cross-Platform Install (XPInstall)</strong> is a technology used by Mozilla Application Suite, Mozilla Firefox, Mozilla Thunderbird and other <a href="/en-US/docs/XUL" title="XUL">XUL</a>-based applications for installing <a href="/en-US/docs/Extensions" title="Extensions">extensions</a>. An <a href="/en-US/docs/XPI" title="XPI">XPI</a> (pronounced "zippy" and derived from XPInstall) installer module is a ZIP file that contains an install script or manifest (entitled install.js or <a href="/en-US/docs/Install_Manifests" title="Install_Manifests">install.rdf</a>) at the root of the file.</div> - -<table class="topicpage-table"> - <tbody> - <tr> - <td> - <h2 class="Documentation" id="Documentation" name="Documentation">Documentation</h2> - - <dl> - <dt><a href="/en-US/docs/XPInstall_API_Reference" title="XPInstall_API_Reference">XPInstall API Reference</a></dt> - <dd>XPInstall API Reference.</dd> - <dt><a href="/en-US/docs/Learn_XPI_Installer_Scripting_by_Example" title="Learn_XPI_Installer_Scripting_by_Example">Learn XPI Installer Scripting by Example</a></dt> - <dd>This article uses the installer script from <code>browser.xpi</code> install package as the basis for discussing XPI installations in general.</dd> - <dt><a href="/en-US/docs/Creating_XPI_Installer_Modules" title="Creating_XPI_Installer_Modules">Creating XPI Installer Modules</a></dt> - <dd>This article describes the packaging scheme of the Mozilla and offers a tutorial for creating a new package that can then be redistributed, installed, and made available to users.</dd> - <dt><a href="/en-US/docs/Install_Wizards_(aka:_Stub_Installers)" title="Install_Wizards_(aka:_Stub_Installers)">Install Wizards (aka: Stub Installers)</a></dt> - </dl> - - <p><span class="alllinks"><a href="/en-US/docs/tag/XPInstall" title="tag/XPInstall">View All...</a></span></p> - </td> - <td> - <h2 class="Community" id="Community" name="Community">Community</h2> - - <ul> - <li>View Mozilla forums... {{ DiscussionList("dev-platform", "mozilla.dev.platform") }}</li> - </ul> - - <h2 class="Tools" id="Tools" name="Tools">Tools</h2> - - <ul> - <li><a class="external" href="http://www.mozilla.org/quality/smartupdate/xpinstall-trigger.html">XPInstall trigger page</a></li> - </ul> - - <h2 class="Related_Topics" id="Related_Topics" name="Related_Topics">Related Topics</h2> - - <ul> - <li><a href="/en-US/docs/Extensions" title="Extensions">Extensions</a>, <a href="/en-US/docs/XUL" title="XUL">XUL</a>, <a href="/en-US/docs/XPI" title="XPI">XPI</a></li> - </ul> - </td> - </tr> - </tbody> -</table> - -<p> </p> diff --git a/files/pt-br/archive/mozilla/xpinstall/reference/index.html b/files/pt-br/archive/mozilla/xpinstall/reference/index.html deleted file mode 100644 index f17f898062..0000000000 --- a/files/pt-br/archive/mozilla/xpinstall/reference/index.html +++ /dev/null @@ -1,193 +0,0 @@ ---- -title: XPInstall API reference -slug: Archive/Mozilla/XPInstall/Reference -tags: - - NeedsTranslation - - TopicStub - - XPInstall - - XPInstall_API_reference -translation_of: Archive/Mozilla/XPInstall/Reference ---- -<p></p><div class="warning"><p>Parts of this page show the use of the <a class="new" href="https://developer.mozilla.org/pt-BR/docs/XPInstall_API_Reference" rel="nofollow">XPInstall API</a>. The majority of this API is now deprecated and as of Gecko 1.9 no longer available. <a class="new" href="https://developer.mozilla.org/pt-BR/docs/Extensions" rel="nofollow">Extension</a>, <a class="new" href="https://developer.mozilla.org/pt-BR/docs/Themes" rel="nofollow">Theme</a>, and <a class="new" href="https://developer.mozilla.org/pt-BR/docs/Plugins" rel="nofollow">plug-in</a> developers must switch away from <code>install.js</code> based packages to the new <a class="new" href="https://developer.mozilla.org/pt-BR/docs/Bundles" rel="nofollow">packaging scheme</a> with an <code><a class="new" href="https://developer.mozilla.org/pt-BR/docs/Install_Manifests" rel="nofollow">install.rdf</a></code> manifest. In particular plugin developers should see <a class="new" href="https://developer.mozilla.org/pt-BR/docs/Shipping_a_plugin_as_a_Toolkit_bundle" rel="nofollow">how to package a plugin as an extension</a>.</p></div><p></p> - -<h3 id="Objects" name="Objects">Objects</h3> - -<h4 id="Install" name="Install"><a href="/en-US/docs/XPInstall_API_Reference/Install_Object">Install</a></h4> - -<dl> - <dd><a href="/en-US/docs/XPInstall_API_Reference/Install_Object/Properties">Properties</a></dd> - <dd><a href="/en-US/docs/XPInstall_API_Reference/Install_Object/Methods">Methods</a></dd> -</dl> - -<dl> - <dd> - <dl> - <dd><a href="/en-US/docs/XPInstall_API_Reference/Install_Object/Methods/addDirectory">addDirectory</a></dd> - <dd><a href="/en-US/docs/XPInstall_API_Reference/Install_Object/Methods/addFile">addFile</a></dd> - <dd><a href="/en-US/docs/XPInstall_API_Reference/Install_Object/Methods/alert">alert</a></dd> - <dd><a href="/en-US/docs/XPInstall_API_Reference/Install_Object/Methods/cancelInstall">cancelInstall</a></dd> - <dd><a href="/en-US/docs/XPInstall_API_Reference/Install_Object/Methods/confirm">confirm</a></dd> - <dd><a href="/en-US/docs/XPInstall_API_Reference/Install_Object/Methods/deleteRegisteredFile">deleteRegisteredFile</a></dd> - <dd><a href="/en-US/docs/XPInstall_API_Reference/Install_Object/Methods/execute">execute</a></dd> - <dd><a href="/en-US/docs/XPInstall_API_Reference/Install_Object/Methods/gestalt">gestalt</a></dd> - <dd><a href="/en-US/docs/XPInstall_API_Reference/Install_Object/Methods/getComponentFolder">getComponentFolder</a></dd> - <dd><a href="/en-US/docs/XPInstall_API_Reference/Install_Object/Methods/getFolder">getFolder</a></dd> - <dd><a href="/en-US/docs/XPInstall_API_Reference/Install_Object/Methods/getLastError">getLastError</a></dd> - <dd><a href="/en-US/docs/XPInstall_API_Reference/Install_Object/Methods/getWinProfile">getWinProfile</a></dd> - <dd><a href="/en-US/docs/XPInstall_API_Reference/Install_Object/Methods/getWinRegistry">getWinRegistry</a></dd> - <dd><a href="/en-US/docs/XPInstall_API_Reference/Install_Object/Methods/initInstall">initInstall</a></dd> - <dd><a href="/en-US/docs/XPInstall_API_Reference/Install_Object/Methods/loadResources">loadResources</a></dd> - <dd><a href="/en-US/docs/XPInstall_API_Reference/Install_Object/Methods/logComment">logComment</a></dd> - <dd><a href="/en-US/docs/XPInstall_API_Reference/Install_Object/Methods/patch">patch</a></dd> - <dd><a href="/en-US/docs/XPInstall_API_Reference/Install_Object/Methods/performInstall">performInstall</a></dd> - <dd><a href="/en-US/docs/XPInstall_API_Reference/Install_Object/Methods/refreshPlugins">refreshPlugins</a></dd> - <dd><a href="/en-US/docs/XPInstall_API_Reference/Install_Object/Methods/registerChrome">registerChrome</a></dd> - <dd><a href="/en-US/docs/XPInstall_API_Reference/Install_Object/Methods/resetError">resetError</a></dd> - <dd><a href="/en-US/docs/XPInstall_API_Reference/Install_Object/Methods/setPackageFolder">setPackageFolder</a></dd> - </dl> - </dd> -</dl> - -<h4 id="InstallTrigger" name="InstallTrigger"><a href="/en-US/docs/XPInstall_API_Reference/InstallTrigger_Object">InstallTrigger</a></h4> - -<dl> - <dd><em>No properties</em></dd> - <dd><a href="/en-US/docs/XPInstall_API_Reference/InstallTrigger_Object/Methods">Methods</a></dd> -</dl> - -<dl> - <dd> - <dl> - <dd><a href="/en-US/docs/XPInstall_API_Reference/InstallTrigger_Object/Methods/compareVersion">compareVersion</a></dd> - <dd><a href="/en-US/docs/XPInstall_API_Reference/InstallTrigger_Object/Methods/enabled">enabled</a></dd> - <dd><a href="/en-US/docs/XPInstall_API_Reference/InstallTrigger_Object/Methods/getVersion">getVersion</a></dd> - <dd><a href="/en-US/docs/XPInstall_API_Reference/InstallTrigger_Object/Methods/install">install</a></dd> - <dd><a href="/en-US/docs/XPInstall_API_Reference/InstallTrigger_Object/Methods/installChrome">installChrome</a></dd> - <dd><a href="/en-US/docs/XPInstall_API_Reference/InstallTrigger_Object/Methods/startSoftwareUpdate">startSoftwareUpdate</a></dd> - </dl> - </dd> -</dl> - -<h4 id="InstallVersion" name="InstallVersion"><a href="/en-US/docs/XPInstall_API_Reference/InstallVersion_Object">InstallVersion</a></h4> - -<dl> - <dd><a href="/en-US/docs/XPInstall_API_Reference/InstallVersion_Object/Properties">Properties</a></dd> - <dd><a href="/en-US/docs/XPInstall_API_Reference/InstallVersion_Object/Methods">Methods</a></dd> -</dl> - -<dl> - <dd> - <dl> - <dd><a href="/en-US/docs/XPInstall_API_Reference/InstallVersion_Object/Methods/compareTo">compareTo</a></dd> - <dd><a href="/en-US/docs/XPInstall_API_Reference/InstallVersion_Object/Methods/init">init</a></dd> - <dd><a href="/en-US/docs/XPInstall_API_Reference/InstallVersion_Object/Methods/toString">toString</a></dd> - </dl> - </dd> -</dl> - -<h4 id="File" name="File"><a href="/en-US/docs/XPInstall_API_Reference/File_Object">File</a></h4> - -<dl> - <dd><em>No properties</em></dd> - <dd><a href="/en-US/docs/XPInstall_API_Reference/File_Object/Methods">Methods</a></dd> -</dl> - -<dl> - <dd> - <dl> - <dd><a href="/en-US/docs/XPInstall_API_Reference/File_Object/Methods/copy">copy</a></dd> - <dd><a href="/en-US/docs/XPInstall_API_Reference/File_Object/Methods/dirCreate">dirCreate</a></dd> - <dd><a href="/en-US/docs/XPInstall_API_Reference/File_Object/Methods/dirGetParent">dirGetParent</a></dd> - <dd><a href="/en-US/docs/XPInstall_API_Reference/File_Object/Methods/dirRemove">dirRemove</a></dd> - <dd><a href="/en-US/docs/XPInstall_API_Reference/File_Object/Methods/dirRename">dirRename</a></dd> - <dd><a href="/en-US/docs/XPInstall_API_Reference/File_Object/Methods/diskSpaceAvailable">diskSpaceAvailable</a></dd> - <dd><a href="/en-US/docs/XPInstall_API_Reference/File_Object/Methods/execute">execute</a></dd> - <dd><a href="/en-US/docs/XPInstall_API_Reference/File_Object/Methods/exists">exists</a></dd> - <dd><a href="/en-US/docs/XPInstall_API_Reference/File_Object/Methods/isDirectory">isDirectory</a></dd> - <dd><a href="/en-US/docs/XPInstall_API_Reference/File_Object/Methods/isFile">isFile</a></dd> - <dd><a href="/en-US/docs/XPInstall_API_Reference/File_Object/Methods/macAlias">macAlias</a></dd> - <dd><a href="/en-US/docs/XPInstall_API_Reference/File_Object/Methods/modDate">modDate</a></dd> - <dd><a href="/en-US/docs/XPInstall_API_Reference/File_Object/Methods/modDateChanged">modDateChanged</a></dd> - <dd><a href="/en-US/docs/XPInstall_API_Reference/File_Object/Methods/move">move</a></dd> - <dd><a href="/en-US/docs/XPInstall_API_Reference/File_Object/Methods/remove">remove</a></dd> - <dd><a href="/en-US/docs/XPInstall_API_Reference/File_Object/Methods/rename">rename</a></dd> - <dd><a href="/en-US/docs/XPInstall_API_Reference/File_Object/Methods/size">size</a></dd> - <dd><a href="/en-US/docs/XPInstall_API_Reference/File_Object/Methods/windowsGetShortName">windowsGetShortName</a></dd> - <dd><a href="/en-US/docs/XPInstall_API_Reference/File_Object/Methods/windowsRegisterServer">windowsRegisterServer</a></dd> - <dd><a href="/en-US/docs/XPInstall_API_Reference/File_Object/Methods/windowsShortcut">windowsShortcut</a></dd> - </dl> - </dd> -</dl> - -<h4 id="WinProfile" name="WinProfile"><a href="/en-US/docs/XPInstall_API_Reference/WinProfile_Object">WinProfile</a></h4> - -<dl> - <dd><em>No properties</em></dd> - <dd><a href="/en-US/docs/XPInstall_API_Reference/WinProfile_Object/Methods">Methods</a></dd> -</dl> - -<dl> - <dd> - <dl> - <dd><a href="/en-US/docs/XPInstall_API_Reference/WinProfile_Object/Methods/getString">getString</a></dd> - <dd><a href="/en-US/docs/XPInstall_API_Reference/WinProfile_Object/Methods/writeString">writeString</a></dd> - </dl> - </dd> -</dl> - -<h4 id="WinReg" name="WinReg"><a href="/en-US/docs/XPInstall_API_Reference/WinReg_Object">WinReg</a></h4> - -<dl> - <dd><em>No properties</em></dd> - <dd><a href="/en-US/docs/XPInstall_API_Reference/WinReg_Object/Methods">Methods</a></dd> -</dl> - -<dl> - <dd> - <dl> - <dd><a href="/en-US/docs/XPInstall_API_Reference/WinReg_Object/Methods/createKey">createKey</a></dd> - <dd><a href="/en-US/docs/XPInstall_API_Reference/WinReg_Object/Methods/deleteKey">deleteKey</a></dd> - <dd><a href="/en-US/docs/XPInstall_API_Reference/WinReg_Object/Methods/deleteValue">deleteValue</a></dd> - <dd><a href="/en-US/docs/XPInstall_API_Reference/WinReg_Object/Methods/enumKeys">enumKeys</a></dd> - <dd><a href="/en-US/docs/XPInstall_API_Reference/WinReg_Object/Methods/enumValueNames">enumValueNames</a></dd> - <dd><a href="/en-US/docs/XPInstall_API_Reference/WinReg_Object/Methods/getValue">getValue</a></dd> - <dd><a href="/en-US/docs/XPInstall_API_Reference/WinReg_Object/Methods/getValueNumber">getValueNumber</a></dd> - <dd><a href="/en-US/docs/XPInstall_API_Reference/WinReg_Object/Methods/getValueString">getValueString</a></dd> - <dd><a href="/en-US/docs/XPInstall_API_Reference/WinReg_Object/Methods/isKeyWritable">isKeyWritable</a></dd> - <dd><a href="/en-US/docs/XPInstall_API_Reference/WinReg_Object/Methods/keyExists">keyExists</a></dd> - <dd><a href="/en-US/docs/XPInstall_API_Reference/WinReg_Object/Methods/setRootKey">setRootKey</a></dd> - <dd><a href="/en-US/docs/XPInstall_API_Reference/WinReg_Object/Methods/setValue">setValue</a></dd> - <dd><a href="/en-US/docs/XPInstall_API_Reference/WinReg_Object/Methods/setValueNumber">setValueNumber</a></dd> - <dd><a href="/en-US/docs/XPInstall_API_Reference/WinReg_Object/Methods/setValueString">setValueString</a></dd> - <dd><a href="/en-US/docs/XPInstall_API_Reference/WinReg_Object/Methods/valueExists">valueExists</a></dd> - </dl> - </dd> -</dl> - -<dl> - <dd><a href="/en-US/docs/XPInstall_API_Reference/WinReg_Object/WinRegValue">WinRegValue constructor</a></dd> -</dl> - -<h3 id="Other_Information" name="Other_Information">Other Information</h3> - -<h4 id="Return_Codes" name="Return_Codes">Return Codes</h4> - -<p><a href="/en-US/docs/XPInstall_API_Reference/Return_Codes">See complete list</a></p> - -<h4 id="Examples" name="Examples"><a href="/en-US/docs/XPInstall_API_Reference/Examples">Examples</a></h4> - -<dl> - <dd><a href="/en-US/docs/XPInstall_API_Reference/Examples/Trigger_Scripts_and_Install_Scripts">Trigger Scripts and Install Scripts</a></dd> -</dl> - -<h5 id="Code_Samples" name="Code_Samples">Code Samples</h5> - -<dl> - <dd><a href="/en-US/docs/XPInstall_API_Reference/Examples/File.macAlias">File.macAlias</a></dd> - <dd><a href="/en-US/docs/XPInstall_API_Reference/Examples/File.windowsShortcut">File.windowsShortcut</a></dd> - <dd><a href="/en-US/docs/XPInstall_API_Reference/Examples/Install.addDirectory">Install.addDirectory</a></dd> - <dd><a href="/en-US/docs/XPInstall_API_Reference/Examples/Install.addFile">Install.addFile</a></dd> - <dd><a href="/en-US/docs/XPInstall_API_Reference/Examples/InstallTrigger.installChrome">InstallTrigger.installChrome</a></dd> - <dd><a href="/en-US/docs/XPInstall_API_Reference/Examples/InstallTrigger.startSoftwareUpdate">InstallTrigger.startSoftwareUpdate</a></dd> - <dd><a href="/en-US/docs/XPInstall_API_Reference/Examples/Windows_Install">Windows Install</a></dd> -</dl> diff --git a/files/pt-br/archive/mozilla/xpinstall/reference/install_object/index.html b/files/pt-br/archive/mozilla/xpinstall/reference/install_object/index.html deleted file mode 100644 index 006b785484..0000000000 --- a/files/pt-br/archive/mozilla/xpinstall/reference/install_object/index.html +++ /dev/null @@ -1,45 +0,0 @@ ---- -title: Install Object -slug: Archive/Mozilla/XPInstall/Reference/Install_Object -tags: - - NeedsTranslation - - TopicStub - - XPInstall_API_reference -translation_of: Archive/Mozilla/XPInstall/Reference/Install_Object ---- -<p></p><div class="warning"><p>Parts of this page show the use of the <a class="new" href="https://developer.mozilla.org/pt-BR/docs/XPInstall_API_Reference" rel="nofollow">XPInstall API</a>. The majority of this API is now deprecated and as of Gecko 1.9 no longer available. <a class="new" href="https://developer.mozilla.org/pt-BR/docs/Extensions" rel="nofollow">Extension</a>, <a class="new" href="https://developer.mozilla.org/pt-BR/docs/Themes" rel="nofollow">Theme</a>, and <a class="new" href="https://developer.mozilla.org/pt-BR/docs/Plugins" rel="nofollow">plug-in</a> developers must switch away from <code>install.js</code> based packages to the new <a class="new" href="https://developer.mozilla.org/pt-BR/docs/Bundles" rel="nofollow">packaging scheme</a> with an <code><a class="new" href="https://developer.mozilla.org/pt-BR/docs/Install_Manifests" rel="nofollow">install.rdf</a></code> manifest. In particular plugin developers should see <a class="new" href="https://developer.mozilla.org/pt-BR/docs/Shipping_a_plugin_as_a_Toolkit_bundle" rel="nofollow">how to package a plugin as an extension</a>.</p></div><p></p> - -<h2 id="Install" name="Install">Install</h2> - -<p>Use the <code>Install</code> object to manage the downloading and installation of software with the XPI Installation Manager.</p> - -<h3 id="Overview" name="Overview">Overview</h3> - -<p>The Install object is used primarily in installation scripts. In all cases, the <code>Install</code> object is implicit--like the <code>window</code> object in regular web page scripts--and needn't be prefixed to the object methods. The following two lines, for example, are equivalent:</p> - -<pre>f = getFolder("Program"); -f = Install.getFolder("Program"); -</pre> - -<p>An installation script is composed of calls to the Install object, and generally takes the following form:</p> - -<dl> - <dt>Initialize the installation</dt> - <dd>Call <a href="en/XPInstall_API_Reference/Install_Object/Methods/initInstall"> initInstall</a> with the name of the installation and the necessary registry and version information.</dd> - <dt>Add the files to the installation</dt> - <dd>Add files to the installation by calling <a href="en/XPInstall_API_Reference/Install_Object/Methods/getFolder"> getFolder</a> to get file objects and passing those object refs to <a href="en/XPInstall_API_Reference/Install_Object/Methods/addFile"> addFile</a> as many times as necessary.</dd> - <dt>Perform installation</dt> - <dd>Check that the files have been added successfully (e.g., by checking the error <a href="en/XPInstall_API_Reference/Return_Codes"> Return Codes</a> from many of the main installation methods, and go ahead with the install if everything is in order:</dd> -</dl> - -<pre>performOrCancel(); -function performOrCancel() -{ - if (0 == getLastError()) - performInstall(); - else - cancelInstall(); -} -</pre> - -<p>For complete script examples, see <a href="en/XPInstall_API_Reference/Examples"> Script Examples</a>.</p> diff --git a/files/pt-br/archive/mozilla/xpinstall/reference/install_object/methods/alert/index.html b/files/pt-br/archive/mozilla/xpinstall/reference/install_object/methods/alert/index.html deleted file mode 100644 index 6a676d5b70..0000000000 --- a/files/pt-br/archive/mozilla/xpinstall/reference/install_object/methods/alert/index.html +++ /dev/null @@ -1,16 +0,0 @@ ---- -title: alert -slug: Archive/Mozilla/XPInstall/Reference/Install_Object/Methods/alert -translation_of: Archive/Mozilla/XPInstall/Reference/Install_Object/Methods/alert ---- -<h2 id="Summary" name="Summary">Sumário</h2> -<p>A função <em>alert</em> mostra uma caixa de diálogo modal com uma mensagem.</p> -<h3 id="Method_of" name="Method_of">Método de</h3> -<p><a href="/en-US/docs/XPInstall_API_Reference/Install_Object">Install</a> object</p> -<h2 id="Syntax" name="Syntax">Sintaxe</h2> -<pre class="syntaxbox">void alert ( String <var>message</var> ); -</pre> -<h3 id="Parameters" name="Parameters">Parâmetros</h3> -<p>O parâmetro <em>message</em> é exibido como uma string na caixa de diálogo. Se <em>message</em> não é uma string, é convertido em uma e é exibido.</p> -<h3 id="Returns" name="Returns">Retorna</h3> -<p>Nada.</p> diff --git a/files/pt-br/archive/mozilla/xpinstall/reference/install_object/methods/index.html b/files/pt-br/archive/mozilla/xpinstall/reference/install_object/methods/index.html deleted file mode 100644 index 8ddb834c1f..0000000000 --- a/files/pt-br/archive/mozilla/xpinstall/reference/install_object/methods/index.html +++ /dev/null @@ -1,58 +0,0 @@ ---- -title: Methods -slug: Archive/Mozilla/XPInstall/Reference/Install_Object/Methods -tags: - - NeedsTranslation - - TopicStub -translation_of: Archive/Mozilla/XPInstall/Reference/Install_Object/Methods ---- -<p></p><div class="warning"><p>Parts of this page show the use of the <a class="new" href="https://developer.mozilla.org/pt-BR/docs/XPInstall_API_Reference" rel="nofollow">XPInstall API</a>. The majority of this API is now deprecated and as of Gecko 1.9 no longer available. <a class="new" href="https://developer.mozilla.org/pt-BR/docs/Extensions" rel="nofollow">Extension</a>, <a class="new" href="https://developer.mozilla.org/pt-BR/docs/Themes" rel="nofollow">Theme</a>, and <a class="new" href="https://developer.mozilla.org/pt-BR/docs/Plugins" rel="nofollow">plug-in</a> developers must switch away from <code>install.js</code> based packages to the new <a class="new" href="https://developer.mozilla.org/pt-BR/docs/Bundles" rel="nofollow">packaging scheme</a> with an <code><a class="new" href="https://developer.mozilla.org/pt-BR/docs/Install_Manifests" rel="nofollow">install.rdf</a></code> manifest. In particular plugin developers should see <a class="new" href="https://developer.mozilla.org/pt-BR/docs/Shipping_a_plugin_as_a_Toolkit_bundle" rel="nofollow">how to package a plugin as an extension</a>.</p></div><p></p> - -<h3 id="Methods" name="Methods">Methods</h3> - -<dl> - <dt><a href="/en-US/docs/XPInstall_API_Reference/Install_Object/Methods/addDirectory" title="en/XPInstall_API_Reference/Install_Object/Methods/addDirectory">addDirectory</a></dt> - <dd>Unpacks an entire subdirectory.</dd> - <dt><a href="/en-US/docs/XPInstall_API_Reference/Install_Object/Methods/addFile" title="en/XPInstall_API_Reference/Install_Object/Methods/addFile">addFile</a></dt> - <dd>Unpacks a single file.</dd> - <dt><a href="/en-US/docs/XPInstall_API_Reference/Install_Object/Methods/alert" title="en/XPInstall_API_Reference/Install_Object/Methods/alert">alert</a></dt> - <dd>Displays an Alert dialog box with a message and an OK button.</dd> - <dt><a href="/en-US/docs/XPInstall_API_Reference/Install_Object/Methods/cancelInstall" title="en/XPInstall_API_Reference/Install_Object/Methods/cancelInstall">cancelInstall</a></dt> - <dd>Aborts the installation of the software.</dd> - <dt><a href="/en-US/docs/XPInstall_API_Reference/Install_Object/Methods/confirm" title="en/XPInstall_API_Reference/Install_Object/Methods/confirm">confirm</a></dt> - <dd>Displays a Confirm dialog box with the specified message and OK and Cancel buttons. Also allows custom button labels and a checkbox.</dd> - <dt><a href="/en-US/docs/XPInstall_API_Reference/Install_Object/Methods/deleteRegisteredFile" title="en/XPInstall_API_Reference/Install_Object/Methods/deleteRegisteredFile">deleteRegisteredFile</a></dt> - <dd>Deletes the specified file and its entry in the Client Version Registry.</dd> - <dt><a href="/en-US/docs/XPInstall_API_Reference/Install_Object/Methods/execute" title="en/XPInstall_API_Reference/Install_Object/Methods/execute">execute</a></dt> - <dd>Extracts a file from the XPI file to a temporary location and schedules it for later execution.</dd> - <dt><a href="/en-US/docs/XPInstall_API_Reference/Install_Object/Methods/gestalt" title="en/XPInstall_API_Reference/Install_Object/Methods/gestalt">gestalt</a></dt> - <dd>Retrieves information about the operating environment. (Mac OS only)</dd> - <dt><a href="/en-US/docs/XPInstall_API_Reference/Install_Object/Methods/getComponentFolder" title="en/XPInstall_API_Reference/Install_Object/Methods/getComponentFolder">getComponentFolder</a></dt> - <dd>Returns an object representing the directory in which a component is installed.</dd> - <dt><a href="/en-US/docs/XPInstall_API_Reference/Install_Object/Methods/getFolder" title="en/XPInstall_API_Reference/Install_Object/Methods/getFolder">getFolder</a></dt> - <dd>Returns an object representing a directory, for use with the <code>addFile</code> method.</dd> - <dt><a href="/en-US/docs/XPInstall_API_Reference/Install_Object/Methods/getLastError" title="en/XPInstall_API_Reference/Install_Object/Methods/getLastError">getLastError</a></dt> - <dd>Returns the most recent non-zero error code.</dd> - <dt><a href="/en-US/docs/XPInstall_API_Reference/Install_Object/Methods/getWinProfile" title="en/XPInstall_API_Reference/Install_Object/Methods/getWinProfile">getWinProfile</a></dt> - <dd>Constructs an object for working with a Windows .ini file.</dd> - <dt><a href="/en-US/docs/XPInstall_API_Reference/Install_Object/Methods/getWinRegistry" title="en/XPInstall_API_Reference/Install_Object/Methods/getWinRegistry">getWinRegistry</a></dt> - <dd>Constructs an object for working with the Windows Registry.</dd> - <dt><a href="/en-US/docs/XPInstall_API_Reference/Install_Object/Methods/initInstall" title="en/XPInstall_API_Reference/Install_Object/Methods/initInstall">initInstall</a></dt> - <dd>Initializes installation for the given software and version.</dd> - <dt><a href="/en-US/docs/XPInstall_API_Reference/Install_Object/Methods/loadResources" title="en/XPInstall_API_Reference/Install_Object/Methods/loadResources">loadResources</a></dt> - <dd>Returns an object whose properties are localized strings loaded from the specified property file.</dd> - <dt><a href="/en-US/docs/XPInstall_API_Reference/Install_Object/Methods/logComment" title="en/XPInstall_API_Reference/Install_Object/Methods/logComment">logComment</a></dt> - <dd>Add a comment line to the install log.</dd> - <dt><a href="/en-US/docs/XPInstall_API_Reference/Install_Object/Methods/patch" title="en/XPInstall_API_Reference/Install_Object/Methods/patch">patch</a></dt> - <dd>Applies a set of differences between two versions.</dd> - <dt><a href="/en-US/docs/XPInstall_API_Reference/Install_Object/Methods/performInstall" title="en/XPInstall_API_Reference/Install_Object/Methods/performInstall">performInstall</a></dt> - <dd>Finalizes the installation of the software.</dd> - <dt><a href="/en-US/docs/XPInstall_API_Reference/Install_Object/Methods/refreshPlugins" title="en/XPInstall_API_Reference/Install_Object/Methods/refreshPlugins">refreshPlugins</a></dt> - <dd>Refreshes the list of plug-ins registered for the browser.</dd> - <dt><a href="/en-US/docs/XPInstall_API_Reference/Install_Object/Methods/registerChrome" title="en/XPInstall_API_Reference/Install_Object/Methods/registerChrome">registerChrome</a></dt> - <dd>Registers chrome with the chrome registry.</dd> - <dt><a href="/en-US/docs/XPInstall_API_Reference/Install_Object/Methods/resetError" title="en/XPInstall_API_Reference/Install_Object/Methods/resetError">resetError</a></dt> - <dd>Resets a saved error code to zero.</dd> - <dt><a href="/en-US/docs/XPInstall_API_Reference/Install_Object/Methods/setPackageFolder" title="en/XPInstall_API_Reference/Install_Object/Methods/setPackageFolder">setPackageFolder</a></dt> - <dd>Sets the default package folder that is saved with the root node.</dd> -</dl> diff --git a/files/pt-br/archive/mozilla/xul/index.html b/files/pt-br/archive/mozilla/xul/index.html deleted file mode 100644 index cebb1550b8..0000000000 --- a/files/pt-br/archive/mozilla/xul/index.html +++ /dev/null @@ -1,81 +0,0 @@ ---- -title: XUL -slug: Archive/Mozilla/XUL -tags: - - NeedsTranslation - - TopicStub - - XUL -translation_of: Archive/Mozilla/XUL ---- -<div class="callout-box"><strong><a href="/en-US/docs/XUL_Tutorial" title="en-US/docs/XUL_Tutorial">Tutorial XUL</a></strong><br> -Um tutorial guiado que o ajudará a começar com XUL, originario do XULPlanet.</div> - -<div> -<p><strong>XUL </strong> (XML Linguagem de Interface do usuário) é a<a href="/en-US/docs/XML" title="en-US/docs/XML"> linguagem baseada em XML </a> da Mozilla, para construir interfaces de usuário. Em particular, é usado pelo Firefox. Os desenvolvedores da Web já familiarizados com <a href="/en-US/docs/HTML" title="en-US/docs/HTML"> HTML </a> aprenderão XUL rapidamente e podem começar a criar aplicativos de imediato. Abra a <a class="external" href="http://www.hevanet.com/acorbin/xul/top.xul">Tabela Periódica XUL </a> no Firefox ou em outro <a href="/en-US/Docs/Gecko" title="en-US/docs/Gecko"> navegador baseado em Gecko </a> para ver alguns demos da XUL.</p> - -<div class="warning"><strong>Nota:</strong> Esta "Tabela Periódica XUL" não pode ser mostrada nas versões recentes do Gecko porque ele usa o XUL remoto, uma tecnologia cujo suporte foi descartado devido a possíveis problemas de segurança. Existe uma aplicação XULRunner que contém a tabela periódica XUL que pode ser aberta com navegadores baseados em Gecko. <a href="https://github.com/matthewkastor/XULRunner-Examples" title="https://github.com/matthewkastor/XULRunner-Examples"> Você pode obtê-la aqui</a>. Veja: <a href="/en-US/docs/XULRunner_tips#Using_Firefox_3_to_run_XULRunner_applications" title="/en-US/docs/XULRunner_tips#Using_Firefox_3_to_run_XULRunner_applications"> XULRunner_tips#Using_Firefox_3_to_run_XULRunner_applications </a> para obter instruções sobre a execução de aplicativos XULRunner no Firefox.</div> -</div> - -<table class="topicpage-table"> - <tbody> - <tr> - <td> - <h2 class="Documentation" id="Documentação">Documentação</h2> - - <dl> - <dt><a href="/en-US/docs/XUL_Reference" title="en-US/docs/XUL_Reference">Referencias XUL</a></dt> - <dd>Elementos XUL, atributos, propriedades, métodos e manipuladores de eventos.</dd> - <dt><a href="/en-US/docs/XUL_controls" title="en-US/docs/XUL_controls">Controle XUL</a></dt> - <dd>Uma lista rápida de todos os controles XUL disponíveis.</dd> - <dt><a href="/en-US/docs/XUL_School" title="en-US/docs/XUL School">Escola XUL</a></dt> - <dd>Um tutorial abrangente sobre o desenvolvimento de add-on no Mozilla.</dd> - <dt><a href="/en-US/docs/The_Joy_of_XUL" title="en-US/docs/The_Joy_of_XUL">A Alegria de XUL</a></dt> - <dd>Descreve os principais recursos e componentes do XUL.</dd> - <dt><a href="/en-US/docs/XUL/PopupGuide" title="en-US/docs/XUL/PopupGuide">Guia de menus e Popups</a></dt> - <dd>Um guia sobre o uso de menus e painéis popups.</dd> - <dt><a href="/en-US/docs/XUL/Template_Guide" title="en-US/docs/XUL/Template_Guide">Guia de Template</a></dt> - <dd>Um guia detalhado sobre modelos XUL, que é um meio de gerar conteúdo de uma base de dados.</dd> - <dt><a href="/en-US/docs/DragDrop/Drag_and_Drop" title="Drag and Drop">Drag e Drop</a></dt> - <dd>Como executar operações de Drag e Drop.</dd> - <dt><a href="/en-US/docs/XUL_improvements_in_Firefox_3" title="en-US/docs/XUL_improvements_in_Firefox_3">Adaptando aplicações XUL para o Firefox 3.0</a></dt> - <dd>Uma lista de alterações em <a href="/en-US/docs/Firefox_3_for_developers" title="en-US/docs/Firefox_3_for_developers"> Firefox 3.0</a>, afetando os desenvolvedores XUL.</dd> - <dt><a href="/en-US/docs/Firefox_2_for_developers#For_XUL_and_extension_developers" title="en-US/docs/Firefox_2_for_developers#For_XUL_and_extension_developers">Adaptando aplicações XUL para o Firefox 2.0</a></dt> - <dd>Uma lista de alterações em <a href="/en-US/docs/Firefox_2_for_developers" title="en-US/docs/Firefox_2_for_developers"> Firefox 2.0</a>, afetando os desenvolvedores XUL.</dd> - <dt><a href="/en-US/docs/Adapting_XUL_Applications_for_Firefox_1.5" title="en-US/docs/Adapting_XUL_Applications_for_Firefox_1.5">Adaptando aplicações XUL para Firefox 1.5</a></dt> - <dd>Uma lista de alterações em <a href="/en-US/docs/Firefox_1.5_for_developers" title="en-US/docs/Firefox_1.5_for_developers">Firefox 1.5</a>, afetando os desenvolvedores XUL.</dd> - </dl> - - <p><a href="/en-US/docs/tag/XUL" title="tag/XUL">Veja mais...</a></p> - </td> - <td> - <h2 class="Community" id="Comunidade">Comunidade</h2> - - <ul> - <li>Veja os fóruns de Mozilla...{{ DiscussionList("dev-tech-xul", "mozilla.dev.tech.xul") }}</li> - <li><a class="link-irc" href="irc://irc.mozilla.org/xul">#xul no irc.mozilla.org</a></li> - </ul> - - <h2 class="Tools" id="Ferramentas">Ferramentas</h2> - - <ul> - <li><a class="external" href="/en-US/docs/XUL_Explorer" title="en-US/docs/XUL_Explorer">XUL Explorer</a> (uma IDE leve XUL)</li> - <li><a href="https://github.com/matthewkastor/XULExplorer" title="https://github.com/matthewkastor/XULExplorer">XULExplorer</a> (Versão remendada do XUL explorer)</li> - <li><a class="external" href="http://ted.mielczarek.org/code/mozilla/extensiondev/">Extensão para desenvolvedor de extensão</a> (Apresentando um eficaz Editor XUL)</li> - <li><a class="external" href="http://forum.addonsmirror.net/index.php?showtopic=751" title="http://forum.addonsmirror.net/index.php?showtopic=751">XULRef sidebar</a></li> - <li><a class="external" href="http://www.getfirebug.com/">Firebug</a></li> - <li><a href="/en-US/docs/DOM_Inspector" title="en-US/docs/DOM_Inspector">DOM Inspector</a></li> - <li><a class="external" href="http://www.spket.com/">Spket IDE</a>, IDE para XUL/XBL</li> - <li><a class="external" href="http://www.amplesdk.com" title="http://www.amplesdk.com/">Ample SDK</a>, (Cross-browser XUL renderizador em JavaScript/HTML )</li> - </ul> - - <p><a href="/en-US/docs/tag/tools" title="tag/tools">Veja mais...</a></p> - - <h2 class="Related_Topics" id="Tópicos_Relacionados">Tópicos Relacionados</h2> - - <ul> - <li><a href="/en-US/docs/JavaScript" title="en-US/docs/JavaScript">JavaScript</a>, <a href="/en-US/docs/XBL" title="en-US/docs/XBL">XBL</a>, <a href="/en-US/docs/CSS" title="en-US/docs/CSS">CSS</a>, <a href="/en-US/docs/RDF" title="en-US/docs/RDF">RDF</a>, <a href="/en-US/docs/Extensions" title="en-US/docs/Extensions"> Extension</a>, <a href="/en-US/docs/XULRunner" title="en-US/docs/XULRunner">XULRunner</a></li> - </ul> - </td> - </tr> - </tbody> -</table> diff --git a/files/pt-br/archive/mozilla/xul/namespaces/index.html b/files/pt-br/archive/mozilla/xul/namespaces/index.html deleted file mode 100644 index ff8d74461d..0000000000 --- a/files/pt-br/archive/mozilla/xul/namespaces/index.html +++ /dev/null @@ -1,74 +0,0 @@ ---- -title: Namespaces -slug: Archive/Mozilla/XUL/Namespaces -tags: - - Add-ons - - Extensions -translation_of: Archive/Mozilla/XUL/Namespaces ---- -<p> </p> - -<p>Em adição a este documento, veja <a href="/pt-BR/docs/Web/SVG/Intensivo_de_Namespaces">Intensivo de Namespaces</a>.</p> - -<p><strong>Namespaces em XML</strong> fornecem uma forma de distinguir elementos duplicados e nomes de atributos. Elementos duplicados e nomes de atributos podem ocorrer quando um documento XML contêm elementos de dois ou mais esquemas XML (ou DTDs, Definição de Tipo de Documento). Citando a <a href="https://pt.wikipedia.org/wiki/Espa%C3%A7o_de_nomes">Wikipedia</a>: "Em geral, um namespace é um recipiente abstrato fornecendo contexto para os itens ... detém e permite desambiguação de itens que tem o mesmo nome."</p> - -<p>Se você se sente familiar com namespaces em C++, pacotes Java, pacotes Perl, ou módulo de importação em Python, você já é familiar com o conceito de namespace.</p> - -<p>Um namespace é identificado por um nome únco (chamado de URI, não uma URL, apesar de poder parecer com uma URL). Um URI é qualquer string, apesar de que a maioria das pessoas escolhem um URI baseado em uma URL pois URLs são uma forma fácil de esperar por singularidade. Apesarde que não há nada prevenindo alguém de usar o namespace <code>http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul</code>, é bastante improvável que alguém iria escolhê-lo acidentalmente. Mesmo se alguém acidentalmente o escolhe, pode talvez não definir os mesmos elementos como XUL de qualquer forma (e.g., <code><textbox/></code>) em seu esquema/DTD.</p> - -<p>Qualquer tipo de elemento ou nome de elemento em um namespace XML pode ser identificado por seu namespace XML e seu "nome local". Juntos, estes dois definem um <em>nome qualificado</em>, ou <a class="external" href="http://www.w3.org/TR/REC-xml-names/#dt-qualname">QName</a>.</p> - -<p>Por exemplo, <code><xul:textbox/></code> usa um namespace chamado "xul" e um nome local "textbox". Isto o distingue de, por exemplo, <code><foobar:textbox/></code> que pode ocorrer no mesmo documento. Os namespaces <strong>xul</strong> e <strong>foobar</strong> devem ser definidos no topo do documento XML em que estão sendo usados, como:</p> - -<pre> <foobar:algum-elemento - xmlns:xul="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" - xmlns:foobar="o-namespace-foobar"> - <xul:textbox id="foo" value="bar"/> - <foobar:textbox comida-favorita="pizza"/> - </foobar:algum-elemento> -</pre> - -<p>Note que misturei dois <code><textbox/></code> no mesmo documento. A única forma de distinguir que eles tem significados diferentes é com namespaces.</p> - -<p>Há mais uma outra coisa a saber: "namespace padrão", e é usado com elementos XUL por todo o tempo. Em documentos XUL, você normalmente vê isto:</p> - -<pre> <window - id="foo" - xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"> - ... - ... - </window> -</pre> - -<p>e documentos XHTML você vê isto:</p> - -<pre> <html xmlns="http://www.w3.org/1999/xhtml"> - ... - ... - </html> -</pre> - -<p>Há uma diferença muito sutil aqui em comparação com o anterior. Antes eu escrevi <code>xmlns<strong>:xul</strong>="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"</code> mas aqui a peça <strong>:xul</strong> é omitida. Isto mostra ao analisador XML que <code>http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul</code>é o <strong>namespace padrão</strong> para o elemento e seus elementos descendentes (até que seja substituído posteriormente por um namespace padrão em um elemento descendente), e que qualquer elemento sem um namespace (ex.: sem prefixo e vírgula) pertence ao namespace padrão. Por isto que podemos escrever de forma abreviada <code><textbox/></code> ao invés de <code><xul:textbox/></code> em XUL (embora o último é tão correcto quando não usamos <code>http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul</code> como namespace padrão) -- o namespace XUL é definido como o padrão no elemento mais elevado. Em outras palavras, um namespace padrão permite um tipo de forma abreviada a ser usada por todos os descendentes de um elemento.</p> - -<p>Aqui vai uma pergunta: qual namespace contêm o elemento <code>foo</code> no documento XML abaixo?</p> - -<pre> <foo/> -</pre> - -<p>A resposta é que é em <strong>nenhum</strong> namespace, ou alternadamente, está no namespace denotado pela string vazia:</p> - -<pre> <foo xmlns=""/> -</pre> - -<p>Este segundo exemplo é semanticamente equivalente ao primeiro. This second example is semantically equivalent to the first.</p> - -<p>Agora, uma segunda pergunta: em quais namespaces estão os atributos <code>bar</code>, <code>baz</code> e <code>quux</code>?</p> - -<pre> <foo bar="value"> - <element xmlns="namespace!" baz="value"> - <element quux="value"/> - </element> - </foo> -</pre> - -<p><code>bar</code> não é, obviamente, um namespace. E <code>baz</code> e <code>quux</code>? A resposta é que eles não são um namespace também. Na verdade nenhum atributo não pré-fixado é um namespace, principalmente porque XML originalmente não tinha namespaces, e todos os XML's do tempo tinham que ficar sem namespace. Isto é uma fonte de confusão geral em volta de namespaces em XML.</p> diff --git a/files/pt-br/archive/mozilla/xul/navegador/index.html b/files/pt-br/archive/mozilla/xul/navegador/index.html deleted file mode 100644 index b7426dd4ea..0000000000 --- a/files/pt-br/archive/mozilla/xul/navegador/index.html +++ /dev/null @@ -1,447 +0,0 @@ ---- -title: Navegador -slug: Archive/Mozilla/XUL/Navegador -translation_of: Archive/Mozilla/XUL/browser ---- -<div class="noinclude"><span class="breadcrumbs XULRef_breadcrumbs"> - « <a href="/pt-BR/docs/XUL_Reference">XUL Reference home</a> [ - <a href="#Examples">Examples</a> | - <a href="#Attributes">Attributes</a> | - <a href="#Properties">Properties</a> | - <a href="#Methods">Methods</a> | - <a href="#Related">Related</a> ] -</span></div> - -<p>Um quadro que deverá conter uma visão de um documento da Web. É semelhante a <code><a href="/pt-BR/docs/Mozilla/Tech/XUL/iframe" title="iframe">iframe</a></code>, exceto que ele contém um histórico de páginas e contém métodos adicionais para manipular a página atualmente exibida.</p> - -<p>A maioria das propriedades e métodos do navegador raramente serão usados e só podem ser chamados de Chrome URLs. Outros URLs precisarão usar os objetos do documento e do histórico para alterar o documento exibido.</p> - -<dl> - <dt>Atributos</dt> - <dd><a href="#a-autocompleteenabled">autocompleteenabled</a>, <a href="#a-autocompletepopup">autocompletepopup</a>, <a href="#a-autoscroll">autoscroll</a>, <a href="#a-disablehistory">disablehistory</a>, <a href="#a-disableglobalhistory">disableglobalhistory</a>, <a href="#a-disablesecurity">disablesecurity</a>, <a href="#a-droppedLinkHandler">droppedLinkHandler</a>, <a href="#a-homepage">homepage</a>, <a href="#a-remote">remote</a>,<a href="#a-showcaret">showcaret</a>, <a href="#a-src">src</a>, <a href="#a-browser.type">type</a></dd> -</dl> - -<dl> - <dt>Propriedades</dt> - <dd><a href="#p-accessibleType">accessibleType</a>, <a href="#p-canGoBack">canGoBack</a>, <a href="#p-canGoForward">canGoForward</a>, <a href="#p-contentDocument">contentDocument</a>, <a href="#p-contentPrincipal">contentPrincipal</a>, <a href="#p-contentTitle">contentTitle</a>, <a href="#p-contentViewerEdit">contentViewerEdit</a>, <a href="#p-contentViewerFile">contentViewerFile</a>, <a href="#p-contentWindow">contentWindow</a>, <a href="#p-currentURI">currentURI</a>, <a href="#p-docShell">docShell</a>, <a href="#p-documentCharsetInfo">documentCharsetInfo</a>, <a href="#p-homePage">homePage</a>, <a href="#p-markupDocumentViewer">markupDocumentViewer</a>, <a href="#p-messageManager">messageManager</a>, <a href="#p-browser.preferences">preferences</a>, <a href="#p-securityUI">securityUI</a>, <a href="#p-sessionHistory">sessionHistory</a>, <a href="#p-webBrowserFind">webBrowserFind</a>, <a href="#p-webNavigation">webNavigation</a>, <a href="#p-webProgress">webProgress</a></dd> -</dl> - -<dl> - <dt>Métodos</dt> - <dd><a href="#m-addProgressListener">addProgressListener</a>, <a href="#m-goBack">goBack</a>, <a href="#m-goForward">goForward</a>, <a href="#m-goHome">goHome</a>, <a href="#m-gotoIndex">gotoIndex</a>, <a href="#m-loadURI">loadURI</a>, <a href="#m-loadURIWithFlags">loadURIWithFlags</a>, <a href="#m-reload">reload</a>, <a href="#m-reloadWithFlags">reloadWithFlags</a>, <a href="#m-removeProgressListener">removeProgressListener</a>, <a href="#m-stop">stop</a>, <a href="#m-swapDocShells">swapDocShells</a></dd> -</dl> - -<h3 id="Examples" name="Examples">Exemplos</h3> - -<div class="float-right"><img alt="Image:XUL_ref_browser.png" class="internal" src="/@api/deki/files/447/=XUL_ref_browser.png"></div> - -<pre><!-- Mostra a página inicial do Mozilla dentro de um groupbox --> -<groupbox flex="1"> - <caption label="Mozilla homepage"/> - <browser type="content" src="http://www.mozilla.org" flex="1"/> -</groupbox> -</pre> - -<h3 id="Attributes" name="Attributes">Atributos</h3> - - - -<div id="a-autocompleteenabled"> - - -<dl> - <dt><code id="a-autocompleteenabled"><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Tech/XUL/Attribute/autocompleteenabled">autocompleteenabled</a></code></dt> - <dd>Type: <em>boolean</em></dd> - <dd>Set to <code>true</code> to enable autocomplete of fields.</dd> -</dl> -</div> <div id="a-autocompletepopup"> - -<dl> - <dt> - <code id="a-autocompletepopup"><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Tech/XUL/Attribute/autocompletepopup">autocompletepopup</a></code></dt> - <dd> - Type: <em>id</em></dd> - <dd> - The <code id="a-id"><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Tech/XUL/Attribute/id">id</a></code> of a <code><a href="/en-US/docs/Mozilla/Tech/XUL/popup" title="popup">popup</a></code> element used to hold autocomplete results for the element.</dd> -</dl> - -</div> <div id="a-autoscroll"> - - -<dl> - <dt><code id="a-autoscroll"><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Tech/XUL/Attribute/autoscroll">autoscroll</a></code></dt> - <dd>Type: <em>boolean</em></dd> - <dd>Set to <code>false</code> to disable autoscroll for this browser. If this attribute is set to <code>true</code> or omitted, autoscroll will be enabled or depending on the user preference <code>general.autoScroll</code>.</dd> -</dl> -</div> <div id="a-disablehistory"> - -<dl> <dt><code id="a-disablehistory"><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Tech/XUL/Attribute/disablehistory">disablehistory</a></code></dt> <dd>Type: <em>boolean</em></dd> <dd>Disables both session and global history for the docshell attached to the browser.</dd> -</dl> -</div> <div id="a-disableglobalhistory"> - -<dl> <dt><code id="a-disableglobalhistory"><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Tech/XUL/Attribute/disableglobalhistory">disableglobalhistory</a></code></dt> <dd>Type: <em>boolean</em></dd> <dd>Disables global history for the docshell attached to the browser while keeping session history active.</dd> -</dl> -</div> <div id="a-disablesecurity"> - - -<dl> - <dt><code id="a-disablesecurity"><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Tech/XUL/Attribute/disablesecurity">disablesecurity</a></code></dt> - <dd>Type: <em>boolean</em></dd> - <dd>Set this attribute to <code>true</code> to disable the security UI for this browser. Omit this attribute off to enable it.</dd> -</dl> -</div> <div id="a-droppedLinkHandler"> - - -<dl> - <dt><code id="a-droppedLinkHandler"><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Tech/XUL/Attribute/droppedLinkHandler">droppedLinkHandler</a></code></dt> - <dd>Type: <em>function</em></dd> - <dd> - <p>This function is called when links are dropped to the <a href="/en-US/docs/Mozilla/Tech/XUL/browser">browser</a> element, with the following arguments.</p> - - <pre>droppedLinkHandler(event, uri, name) -- Firefox 51 or older -droppedLinkHandler(event, links) -- Firefox 52 or newer</pre> - - <ul> - <li><code>event</code> -- drop event, or <code>null</code> if no event is available</li> - <li><code>uri</code> -- uri string of the dropped link</li> - <li><code>name</code> -- name string of the dropped link</li> - <li><code>links</code> -- array of the dropped items with <a href="/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIDroppedLinkItem" title="nsIDroppedLinkItem">nsIDroppedLinkItem</a> interface</li> - </ul> - </dd> -</dl> -</div> <div id="a-homepage"> - - -<dl> - <dt><code id="a-homepage"><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Tech/XUL/Attribute/homepage">homepage</a></code></dt> - <dd>Type: <em>URL</em></dd> - <dd>This attribute allows you to set a homepage for the browser element. It does not have any correlation with the user's browser homepage; instead it is a convenient property to hold a home page. You can switch to this home page using the <span id="m-goHome"><code><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Tech/XUL/Method/goHome">goHome</a></code></span> method.</dd> -</dl> -</div> <div id="a-remote"> - -<dl> - <dt> - <code id="a-remote"><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Tech/XUL/Attribute/remote">remote</a></code></dt> - <dd> - Type:<em> Boolean</em></dd> - <dd> - If true, the content of the XUL <browser> will be processed inside its own process. The document is then accessible from the chrome content only through <a href="/en-US/docs/The_message_manager" title="/en-US/docs/The_message_manager">the message manager</a>.</dd> -</dl> -</div> <div id="a-showcaret"> - - -<dl> - <dt><code id="a-showcaret"><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Tech/XUL/Attribute/showcaret">showcaret</a></code></dt> - <dd>Type: <em>boolean</em></dd> - <dd>Whether or not to cause a typing caret to be visible in the content area. Default is <code>false</code>.</dd> -</dl> - - -</div> <div id="a-src"> - -<dl> - <dt> - <code id="a-src"><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Tech/XUL/Attribute/src">src</a></code></dt> - <dd> - Type: <em>URI</em></dd> - <dd> - The URI of the content to appear in the element.</dd> -</dl> - - -</div><div id="a-browser.type"> - - -<dl> - <dt><code id="a-browser.type"><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Tech/XUL/Attribute/browser.type">type</a></code></dt> - <dd><span class="seoSummary">Type: <em>one of the values below</em>.</span></dd> - <dd><span class="seoSummary">The type of browser, which can be used to set access of the document loaded inside the browser.</span> If this is not set, the loaded document has the same access as the window containing the <code><code><a href="/en-US/docs/Mozilla/Tech/XUL/browser" title="browser">browser</a></code></code>. More precisely: The document loaded into a chrome window is always of chrome type. Subdocuments of chrome documents are of chrome type, unless the container element (one of iframe, browser or editor) has one of the special type attribute values (the common ones are content, content-targetable and content-primary) indicating that the subdocument is of content type. This boundary has a number of special effects, such as making window.top == window (unless the <code><code><a href="/en-US/docs/Mozilla/Tech/XUL/browser" title="browser">browser</a></code></code> is added to a chrome document), and preventing documents from inheriting the principal of the parent document. The type attribute on all frames in content documents is ignored; subdocuments of content documents are always content documents.</dd> - <dt> - <div class="warning"><strong>Warning: </strong>The type attribute must be set before the element is inserted into the document.</div> - </dt> - <dd> - <dl> - <dt><code>content</code></dt> - <dd>A browser for content. The content that is loaded inside the browser is not allowed to access the chrome above it.</dd> - <dt><code>content-primary</code></dt> - <dd>The primary browser for content. The content that is loaded inside the browser is not allowed to access the chrome above it. For instance, in a web browser, this would be the element that displays the web page. The window for the primary content can be retrieved more conveniently using <a href="/en/DOM/window.content" title="en/DOM/window.content">window.content</a>.</dd> - <dt><code>content-targetable</code></dt> - <dd>One browser among many for content. The content that is loaded inside the browser is not allowed to access the chrome above it. This is the preferred value for any <code><code><a href="/en-US/docs/Mozilla/Tech/XUL/browser" title="browser">browser</a></code></code> element in an application, which will use multiple browsers of equal privileges, and is unselected at the moment.</dd> - <dt><code>chrome</code></dt> - <dd>(default behaviour): A browser, intended to be used for loading privileged content using a chrome:// URI. Don't use for content from web, as this may cause serious security problems!</dd> - </dl> - </dd> -</dl> - - -</div> - -<h3 id="Properties" name="Properties">Propriedades</h3> - - - -<div id="p-accessibleType"> -<dl> - <dt> - <code><span><a href="https://developer.mozilla.org/en-US/docs/XUL/Property/accessibleType">accessibleType</a></span></code></dt> - <dd> - Type: <em>integer</em></dd> - <dd> - A value indicating the type of accessibility object for the element.</dd> -</dl> -</div> <div id="p-canGoBack"> -<dl> - <dt> - <code><span><a href="https://developer.mozilla.org/en-US/docs/XUL/Property/canGoBack">canGoBack</a></span></code></dt> - <dd> - Type: <em>boolean</em></dd> - <dd> - This read-only property is <code>true</code> if there is a page to go back to in the session history and the Back button should be enabled.</dd> -</dl></div> <div id="p-canGoForward"> - -<dl> - <dt><code><span><a href="https://developer.mozilla.org/en-US/docs/XUL/Property/canGoForward">canGoForward</a></span></code></dt> - <dd>Type: <em>boolean</em></dd> - <dd>This read-only property is <code>true</code> if there is a page to go forward to in the session history and the Forward button should be enabled.</dd> -</dl></div> <div id="p-contentDocument"> -<dl> - <dt> - <code><span><a href="https://developer.mozilla.org/en-US/docs/XUL/Property/contentDocument">contentDocument</a></span></code></dt> - <dd> - Type: <em>document</em></dd> - <dd> - This read-only property contains the document object in the element.</dd> -</dl></div> <div id="p-contentPrincipal"> - -<dl> - <dt><code><span><a href="https://developer.mozilla.org/en-US/docs/XUL/Property/contentPrincipal">contentPrincipal</a></span></code></dt> - <dd>Type: <em><code><a href="/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIPrincipal" title="">nsIPrincipal</a></code></em></dd> - <dd>This read-only property contains the principal for the content loaded in the browser, which provides security context information.</dd> -</dl></div> <div id="p-contentTitle"> -<dl> - <dt> - <code><span><a href="https://developer.mozilla.org/en-US/docs/XUL/Property/contentTitle">contentTitle</a></span></code></dt> - <dd> - Type: <em>string</em></dd> - <dd> - This read-only property contains the title of the document object in the browser.</dd> -</dl></div> <div id="p-contentViewerEdit"> -<dl> - <dt> - <code><span><a href="https://developer.mozilla.org/en-US/docs/XUL/Property/contentViewerEdit">contentViewerEdit</a></span></code></dt> - <dd> - Type: <em><code><a href="/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIContentViewerEdit" title="">nsIContentViewerEdit</a></code></em></dd> - <dd> - This read-only property contains the <code><a href="/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIContentViewerEdit" title="">nsIContentViewerEdit</a></code> which handles clipboard operations on the document.</dd> -</dl></div> <div id="p-contentViewerFile"> -<dl> - <dt> - <code><span><a href="https://developer.mozilla.org/en-US/docs/XUL/Property/contentViewerFile">contentViewerFile</a></span></code></dt> - <dd> - Type: <em><code><a href="/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIContentViewerFile" title="">nsIContentViewerFile</a></code></em></dd> - <dd> - Reference to the <code><a href="/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIContentViewerFile" title="">nsIContentViewerFile</a></code> interface for the document.</dd> -</dl></div> <div id="p-contentWindow"> -<dl> <dt><code><span><a href="https://developer.mozilla.org/en-US/docs/XUL/Property/contentWindow">contentWindow</a></span></code></dt> <dd>Type: <em>TODO</em></dd> <dd>Use the contentWindow.wrappedJSObject to obtain a DOM(html) window object</dd> -</dl></div> <div id="p-currentURI"> -<dl> - <dt> - <code><span><a href="https://developer.mozilla.org/en-US/docs/XUL/Property/currentURI">currentURI</a></span></code></dt> - <dd> - Type: <em><code><a href="/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIURI" title="">nsIURI</a></code></em></dd> - <dd> - This read-only property contains the currently loaded URL. To change the URL, use the <span id="m-loadURI"><code><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Tech/XUL/Method/loadURI">loadURI</a></code></span> method.</dd> -</dl></div> <div id="p-docShell"> -<dl> - <dt> - <code><span><a href="https://developer.mozilla.org/en-US/docs/XUL/Property/docShell">docShell</a></span></code></dt> - <dd> - Type: <em><code><a href="/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIDocShell" title="">nsIDocShell</a></code></em></dd> - <dd> - This read-only property contains the <code><a href="/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIDocShell" title="">nsIDocShell</a></code> object for the document.</dd> -</dl></div> <div id="p-documentCharsetInfo"> -<dl> - <dt> - <code><span><a href="https://developer.mozilla.org/en-US/docs/XUL/Property/documentCharsetInfo">documentCharsetInfo</a></span></code> <span class="inlineIndicator obsolete obsoleteInline" title="(Firefox 12.0 / Thunderbird 12.0 / SeaMonkey 2.9)">Obsolete since Gecko 12.0</span></dt> - <dd> - Type: <em><code><a href="/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIDocumentCharsetInfo" title="">nsIDocumentCharsetInfo</a></code></em></dd> - <dd> - This read-only property contains the <code><a href="/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIDocumentCharsetInfo" title="">nsIDocumentCharsetInfo</a></code> object for the document which is used to handle which character set should be used to display the document. The properties of the <code><a href="/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIDocumentCharsetInfo" title="">nsIDocumentCharsetInfo</a></code> object were merged into the docshell in Gecko 12.0 (Firefox 12.0 / Thunderbird 12.0 / SeaMonkey 2.9).</dd> -</dl></div> <div id="p-homePage"> -<dl> - <dt> - <code><span><a href="https://developer.mozilla.org/en-US/docs/XUL/Property/homePage">homePage</a></span></code></dt> - <dd> - Type: <em>string home page URL</em></dd> - <dd> - This property holds the value of the user's home page setting.</dd> -</dl></div> <div id="p-markupDocumentViewer"> -<dl> - <dt> - <code><span><a href="https://developer.mozilla.org/en-US/docs/XUL/Property/markupDocumentViewer">markupDocumentViewer</a></span></code></dt> - <dd> - Type: <em><code><a href="/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIMarkupDocumentViewer" title="">nsIMarkupDocumentViewer</a></code></em></dd> - <dd> - This read-only property contains the <code><a href="/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIMarkupDocumentViewer" title="">nsIMarkupDocumentViewer</a></code> which is responsible for drawing the document.</dd> -</dl></div> <div id="p-messageManager"> -<dl> - <dt> - <code><span><a href="https://developer.mozilla.org/en-US/docs/XUL/Property/messageManager">messageManager</a></span></code> </dt> - <dd> - Type: <em>message manager object</em></dd> - <dd> - This read-only property returns the <a href="/en/The_message_manager" title="en/The message manager">message manager</a> object for the <code><a href="/en-US/docs/Mozilla/Tech/XUL/browser" title="browser">browser</a></code> element.</dd> -</dl></div> <div id="p-browser.preferences"> -<dl> - <dt> - <code><span><a href="https://developer.mozilla.org/en-US/docs/XUL/Property/browser.preferences">preferences</a></span></code></dt> - <dd> - Type: <em><code><a href="/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIPrefService" title="">nsIPrefService</a></code></em></dd> - <dd> - This read-only property contains an <code><a href="/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIPref" title="">nsIPref</a></code> object for getting and setting user preferences.</dd> -</dl></div> <div id="p-securityUI"> -<dl> - <dt> - <code><span><a href="https://developer.mozilla.org/en-US/docs/XUL/Property/securityUI">securityUI</a></span></code></dt> - <dd> - Type: <em><code><a href="/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsISecureBrowserUI" title="">nsISecureBrowserUI</a></code></em></dd> - <dd> - The read-only property holds an object which may be used to determine the security level of the loaded document.</dd> -</dl></div> <div id="p-sessionHistory"> -<dl> - <dt> - <code><span><a href="https://developer.mozilla.org/en-US/docs/XUL/Property/sessionHistory">sessionHistory</a></span></code></dt> - <dd> - Type: <em><code><a href="/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsISHistory" title="">nsISHistory</a></code></em></dd> - <dd> - This read-only property contains the <code><a href="/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsISHistory" title="">nsISHistory</a></code> object which holds the session history.</dd> -</dl></div> <div id="p-webBrowserFind"> -<dl> - <dt> - <code><span><a href="https://developer.mozilla.org/en-US/docs/XUL/Property/webBrowserFind">webBrowserFind</a></span></code></dt> - <dd> - Type: <em><code><a href="/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIWebBrowserFind" title="">nsIWebBrowserFind</a></code></em></dd> - <dd> - This read-only property contains an <code><a href="/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIWebBrowserFind" title="">nsIWebBrowserFind</a></code> object which can be used to search for text in the document.</dd> -</dl></div> <div id="p-webNavigation"> -<dl> - <dt> - <code><span><a href="https://developer.mozilla.org/en-US/docs/XUL/Property/webNavigation">webNavigation</a></span></code></dt> - <dd> - Type: <em><code><a href="/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIWebNavigation" title="">nsIWebNavigation</a></code></em></dd> - <dd> - This read-only property contains the <code><a href="/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIWebNavigation" title="">nsIWebNavigation</a></code> object for the document. Most of its methods are callable directly on the element itself, such as <span id="m-goBack"><code><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Tech/XUL/Method/goBack">goBack</a></code></span> and <span id="m-goForward"><code><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Tech/XUL/Method/goForward">goForward</a></code></span>. It also contains the load constants used by <span id="m-reloadWithFlags"><code><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Tech/XUL/Method/reloadWithFlags">reloadWithFlags</a></code></span> and <span id="m-loadURIWithFlags"><code><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Tech/XUL/Method/loadURIWithFlags">loadURIWithFlags</a></code></span>.</dd> -</dl></div> <div id="p-webProgress"> -<dl> - <dt> - <code><span><a href="https://developer.mozilla.org/en-US/docs/XUL/Property/webProgress">webProgress</a></span></code></dt> - <dd> - Type: <em><code><a href="/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIWebProgress" title="">nsIWebProgress</a></code></em></dd> - <dd> - This read-only property contains an <code><a href="/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIWebProgress" title="">nsIWebProgress</a></code> object which is used to monitor the progress of a document loading.</dd> -</dl></div> - -<h3 id="Methods" name="Methods">Métodos</h3> - -<table style="border: 1px solid rgb(204, 204, 204); margin: 0 0 10px 10px; padding: 0 10px; background: rgb(238, 238, 238); float: right; width: 250px;"> -<tbody> -<tr> -<td> -<p><strong>Inherited Methods</strong><br> -<small><code><a href="https://developer.mozilla.org/pt-BR/docs/DOM/element.addEventListener">addEventListener()</a></code>, <code><a href="https://developer.mozilla.org/pt-BR/docs/DOM/element.appendChild">appendChild()</a></code>, <span id="m-blur"><code><a href="https://developer.mozilla.org/pt-BR/docs/Mozilla/Tech/XUL/Method/blur">blur</a></code></span>, <span id="m-click"><code><a href="https://developer.mozilla.org/pt-BR/docs/Mozilla/Tech/XUL/Method/click">click</a></code></span>, <code><a href="https://developer.mozilla.org/pt-BR/docs/DOM/element.cloneNode">cloneNode()</a></code>, <a href="/En/DOM/Node.compareDocumentPosition" title="En/DOM/Node.compareDocumentPosition">compareDocumentPosition</a>, <code><a href="https://developer.mozilla.org/pt-BR/docs/DOM/element.dispatchEvent">dispatchEvent()</a></code>, <span id="m-doCommand"><code><a href="https://developer.mozilla.org/pt-BR/docs/Mozilla/Tech/XUL/Method/doCommand">doCommand</a></code></span>, <span id="m-focus"><code><a href="https://developer.mozilla.org/pt-BR/docs/Mozilla/Tech/XUL/Method/focus">focus</a></code></span>, <code><a href="https://developer.mozilla.org/pt-BR/docs/DOM/element.getAttribute">getAttribute()</a></code>, <code><a href="https://developer.mozilla.org/pt-BR/docs/DOM/element.getAttributeNode">getAttributeNode()</a></code>, <code><a href="https://developer.mozilla.org/pt-BR/docs/DOM/element.getAttributeNodeNS">getAttributeNodeNS()</a></code>, <code><a href="https://developer.mozilla.org/pt-BR/docs/DOM/element.getAttributeNS">getAttributeNS()</a></code>, <code><a href="https://developer.mozilla.org/pt-BR/docs/DOM/element.getBoundingClientRect">getBoundingClientRect()</a></code>, <code><a href="https://developer.mozilla.org/pt-BR/docs/DOM/element.getClientRects">getClientRects()</a></code>, <span id="m-getElementsByAttribute"><code><a href="https://developer.mozilla.org/pt-BR/docs/Mozilla/Tech/XUL/Method/getElementsByAttribute">getElementsByAttribute</a></code></span>, <span id="m-getElementsByAttributeNS"><code><a href="https://developer.mozilla.org/pt-BR/docs/Mozilla/Tech/XUL/Method/getElementsByAttributeNS">getElementsByAttributeNS</a></code></span>, <code><a href="https://developer.mozilla.org/pt-BR/docs/DOM/element.getElementsByClassName">getElementsByClassName()</a></code>, <code><a href="https://developer.mozilla.org/pt-BR/docs/DOM/element.getElementsByTagName">getElementsByTagName()</a></code>, <code><a href="https://developer.mozilla.org/pt-BR/docs/DOM/element.getElementsByTagNameNS">getElementsByTagNameNS()</a></code>, <code><a href="https://developer.mozilla.org/pt-BR/docs/DOM/element.getFeature">getFeature()</a></code>, <a href="/En/DOM/Node.getUserData" title="En/DOM/Node.getUserData">getUserData</a>, <code><a href="https://developer.mozilla.org/pt-BR/docs/DOM/element.hasAttribute">hasAttribute()</a></code>, <code><a href="https://developer.mozilla.org/pt-BR/docs/DOM/element.hasAttributeNS">hasAttributeNS()</a></code>, <code><a href="https://developer.mozilla.org/pt-BR/docs/DOM/element.hasAttributes">hasAttributes()</a></code>, <code><a href="https://developer.mozilla.org/pt-BR/docs/DOM/element.hasChildNodes">hasChildNodes()</a></code>, <code><a href="https://developer.mozilla.org/pt-BR/docs/DOM/element.insertBefore">insertBefore()</a></code>, <code><a href="https://developer.mozilla.org/pt-BR/docs/DOM/element.isDefaultNamespace">isDefaultNamespace()</a></code>, <a href="/En/DOM/Node.isEqualNode" title="En/DOM/Node.isEqualNode">isEqualNode</a>, <a href="/En/DOM/Node.isSameNode" title="En/DOM/Node.isSameNode">isSameNode</a>, <code><a href="https://developer.mozilla.org/pt-BR/docs/DOM/element.isSupported">isSupported()</a></code>, <a href="/En/DOM/Node.lookupNamespaceURI" title="En/DOM/Node.lookupNamespaceURI">lookupNamespaceURI</a>, <a href="/En/DOM/Node.lookupPrefix" title="En/DOM/Node.lookupPrefix">lookupPrefix</a>, <code><a href="https://developer.mozilla.org/pt-BR/docs/DOM/element.normalize">normalize()</a></code>, <code><a href="https://developer.mozilla.org/pt-BR/docs/DOM/element.querySelector">querySelector()</a></code>, <code><a href="https://developer.mozilla.org/pt-BR/docs/DOM/element.querySelectorAll">querySelectorAll()</a></code>, <code><a href="https://developer.mozilla.org/pt-BR/docs/DOM/element.removeAttribute">removeAttribute()</a></code>, <code><a href="https://developer.mozilla.org/pt-BR/docs/DOM/element.removeAttributeNode">removeAttributeNode()</a></code>, <code><a href="https://developer.mozilla.org/pt-BR/docs/DOM/element.removeAttributeNS">removeAttributeNS()</a></code>, <code><a href="https://developer.mozilla.org/pt-BR/docs/DOM/element.removeChild">removeChild()</a></code>, <code><a href="https://developer.mozilla.org/pt-BR/docs/DOM/element.removeEventListener">removeEventListener()</a></code>, <code><a href="https://developer.mozilla.org/pt-BR/docs/DOM/element.replaceChild">replaceChild()</a></code>, <code><a href="https://developer.mozilla.org/pt-BR/docs/DOM/element.setAttribute">setAttribute()</a></code>, <code><a href="https://developer.mozilla.org/pt-BR/docs/DOM/element.setAttributeNode">setAttributeNode()</a></code>, <code><a href="https://developer.mozilla.org/pt-BR/docs/DOM/element.setAttributeNodeNS">setAttributeNodeNS()</a></code>, <code><a href="https://developer.mozilla.org/pt-BR/docs/DOM/element.setAttributeNS">setAttributeNS()</a></code>, <a href="/En/DOM/Node.setUserData" title="En/DOM/Node.setUserData">setUserData</a></small></p> - -</td> -</tr> -</tbody> -</table> - -<dl> - <dt> - <span id="m-addProgressListener"><code><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Tech/XUL/Method/addProgressListener">addProgressListener( listener )</a></code></span></dt> - <dd> - Return type: <em>no return value</em></dd> - <dd> - Add a progress listener to the browser which will monitor loaded documents. The progress listener should implement the <code><a href="/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIWebProgressListener" title="">nsIWebProgressListener</a></code> interface.</dd> -</dl> <dl> - <dt><span id="m-goBack"><code><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Tech/XUL/Method/goBack">goBack()</a></code></span></dt> - <dd>Return type: <em>no return value</em></dd> - <dd>Go back one page in the history.</dd> -</dl> <dl> - <dt><span id="m-goForward"><code><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Tech/XUL/Method/goForward">goForward()</a></code></span></dt> - <dd>Return type: <em>no return value</em></dd> - <dd>Go forward one page in the history.</dd> -</dl> <dl> - <dt><span id="m-goHome"><code><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Tech/XUL/Method/goHome">goHome()</a></code></span></dt> - <dd>Return type: <em>no return value</em></dd> - <dd>Load the user's home page into the browser.</dd> -</dl> <dl> - <dt><span id="m-gotoIndex"><code><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Tech/XUL/Method/gotoIndex">gotoIndex( index )</a></code></span></dt> - <dd>Return type: <em>no return value</em></dd> - <dd>Navigate to the page in the history with the given index. Use a positive number to go forward and a negative number to go back.</dd> -</dl> <p><span class="comment">NOTE: This is the XUL method on <browser> / <tabbrowser>, not the global function in <a class="external" rel="freelink">chrome://browser/content/browser.js</a>. Please check which one you're documenting! (This one has no post data parameter, see loadURIWithFlags for a version that does)</span></p> -<dl> - <dt> - <span id="m-loadURI"><code><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Tech/XUL/Method/loadURI">loadURI( uri, referrer, charset )</a></code></span></dt> - <dd> - Return type: <em>no return value</em></dd> - <dd> - Load a URL into the document, with the given referrer and character set.</dd> - <dd> - The first argument should be a string, not a <code><a href="/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIURI" title="">nsIURI</a></code> object. To get a string from an <code><a href="/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIURI" title="">nsIURI</a></code>, use <code>nsIURI.spec</code> or <code>nsIURI.asciiSpec</code></dd> -</dl> <dl> - <dt><span id="m-loadURIWithFlags"><code><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Tech/XUL/Method/loadURIWithFlags">loadURIWithFlags( uri, flags, referrer, charset, postData )</a></code></span></dt> - <dd>Return type: <em>no return value</em></dd> - <dd>Load a URL into the document, with the specified load flags, the given referrer, character set, and POST data. In addition to the flags allowed for the <span id="m-reloadWithFlags"><code><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Tech/XUL/Method/reloadWithFlags">reloadWithFlags</a></code></span> method, the following flags are also valid: - <ul> - <li><code>LOAD_FLAGS_IS_REFRESH</code>: This flag is used when the URL is loaded because of a meta tag refresh or redirect.</li> - <li><code>LOAD_FLAGS_IS_LINK</code>: This flag is used when the URL is loaded because a user clicked on a link. The HTTP Referer header is set accordingly.</li> - <li><code>LOAD_FLAGS_BYPASS_HISTORY</code>: Do not add the URL to the session history.</li> - <li><code>LOAD_FLAGS_REPLACE_HISTORY</code>: Replace the current URL in the session history with a new one. This flag might be used for a redirect.</li> - </ul> - </dd> -</dl> - -<p>(See <code><a href="https://developer.mozilla.org/en-US/docs/XPCOM_Interface_Reference/nsIWebNavigation#loadURI()">nsIWebNavigation.loadURI()</a></code> for details on the <code>referrer</code> and <code>postData</code> parameters.)</p> <dl> - <dt><span id="m-reload"><code><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Tech/XUL/Method/reload">reload()</a></code></span></dt> - <dd>Return type: <em>no return value</em></dd> - <dd>Reloads the document in the <code><a href="/en-US/docs/Mozilla/Tech/XUL/browser" title="browser">browser</a></code> element on which you call this method.</dd> -</dl> <dl> - <dt><span id="m-reloadWithFlags"><code><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Tech/XUL/Method/reloadWithFlags">reloadWithFlags( flags )</a></code></span></dt> - <dd>Return type: <em>no return value</em></dd> - <dd>Reloads the document in the browser with the given load flags. The flags listed below may be used, which are all constants of the <code><span><a href="https://developer.mozilla.org/en-US/docs/XUL/Property/webNavigation">webNavigation</a></span></code> property (or the <code><a href="/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIWebNavigation" title="">nsIWebNavigation</a></code> interface). You may combine flags using a or symbol ( <code>|</code> ). - <ul> - <li><code>LOAD_FLAGS_NONE</code>: No special flags. The document is loaded normally.</li> - <li><code>LOAD_FLAGS_BYPASS_CACHE</code>: Reload the page, ignoring if it is already in the cache. This is the flag used when the reload button is pressed while the Shift key is held down.</li> - <li><code>LOAD_FLAGS_BYPASS_PROXY</code>: Reload the page, ignoring the proxy server.</li> - <li><code>LOAD_FLAGS_CHARSET_CHANGE</code>: This flag is used if the document needs to be reloaded because the character set changed.</li> - </ul> - </dd> -</dl> <dl> - <dt><span id="m-removeProgressListener"><code><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Tech/XUL/Method/removeProgressListener">removeProgressListener( listener )</a></code></span></dt> - <dd>Return type: <em>no return value</em></dd> - <dd>Remove a <code><a href="/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIWebProgressListener" title="">nsIWebProgressListener</a></code> from the browser.</dd> -</dl> <dl> - <dt> - <span id="m-stop"><code><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Tech/XUL/Method/stop">stop()</a></code></span></dt> - <dd> - Return type: <em>no return value</em></dd> - <dd> - Equivalent to pressing the Stop button, this method stops the currently loading document.</dd> -</dl> <dl> - <dt> - <span id="m-swapDocShells"><code><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Tech/XUL/Method/swapDocShells">swapDocShells( otherBrowser )</a></code></span></dt> - <dd> - Return type: <em>no return value</em></dd> - <dd> - Swaps the content, history and current state of this <code><a href="/en-US/docs/Mozilla/Tech/XUL/browser" title="browser">browser</a></code> with another browser. During the swap, pagehide and pageshow events are fired on both browsers. This method can be used to move browser between windows or tear off a browser into a new window.</dd> -</dl> - -<div class="note"> -<p><strong>Note:</strong> Both browsers must be either standalone browsers or embedded in a <a href="/en-US/docs/XUL/tabbrowser"><code>tabbrowser</code></a>. You can't mix them.</p></div> - -<h3 id="Related" name="Related">Relações</h3> - -<dl> - <dt>Interfaces</dt> - <dd><code><a href="/pt-BR/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIAccessibleProvider" title="">nsIAccessibleProvider</a></code></dd> -</dl> diff --git a/files/pt-br/archive/mozilla/xul/tutorial/index.html b/files/pt-br/archive/mozilla/xul/tutorial/index.html deleted file mode 100644 index 8071ee6794..0000000000 --- a/files/pt-br/archive/mozilla/xul/tutorial/index.html +++ /dev/null @@ -1,142 +0,0 @@ ---- -title: XUL Tutorial -slug: Archive/Mozilla/XUL/Tutorial -tags: - - NeedsTranslation - - TopicStub - - Tutorials - - XUL - - XUL_Tutorial -translation_of: Archive/Mozilla/XUL/Tutorial ---- -<p>This tutorial describes <a href="/en-US/docs/XUL" title="/en-US/docs/XUL">XUL</a>, the <a href="/en-US/docs/XML" title="/en-US/docs/XML">XML</a> User-interface Language. This language was created for the Mozilla application and is used to describe its user interface.</p> -<h2 id="Introduction" name="Introduction">Introduction</h2> -<ul> - <li><a href="/en-US/docs/XUL/Tutorial/Introduction" title="/en-US/docs/XUL/Tutorial/Introduction">Introduction</a></li> - <li><a href="/en-US/docs/XUL/Tutorial/XUL_Structure" title="/en-US/docs/XUL/Tutorial/XUL_Structure">XUL Structure</a></li> - <li><a href="/en-US/docs/XUL/Tutorial/The_Chrome_URL" title="/en-US/docs/XUL/Tutorial/The_Chrome_URL">The Chrome URL</a></li> - <li><a href="/en-US/docs/XUL/Tutorial/Manifest_Files" title="/en-US/docs/XUL/Tutorial/Manifest_Files">Manifest Files</a></li> -</ul> -<h2 id="Simple_Elements" name="Simple_Elements">Simple Elements</h2> -<ul> - <li><a href="/en-US/docs/XUL/Tutorial/Creating_a_Window" title="/en-US/docs/XUL/Tutorial/Creating_a_Window">Creating a Window</a></li> - <li><a href="/en-US/docs/XUL/Tutorial/Adding_Buttons" title="/en-US/docs/XUL/Tutorial/Adding_Buttons">Adding Buttons</a></li> - <li><a href="/en-US/docs/XUL/Tutorial/Adding_Labels_and_Images" title="/en-US/docs/XUL/Tutorial/Adding_Labels_and_Images">Adding Labels and Images</a></li> - <li><a href="/en-US/docs/XUL/Tutorial/Input_Controls" title="/en-US/docs/XUL/Tutorial/Input_Controls">Input Controls</a></li> - <li><a href="/en-US/docs/XUL/Tutorial/Numeric_Controls" title="/en-US/docs/XUL/Tutorial/Numeric_Controls">Numeric Controls</a></li> - <li><a href="/en-US/docs/XUL/Tutorial/List_Controls" title="/en-US/docs/XUL/Tutorial/List_Controls">List Controls</a></li> - <li><a href="/en-US/docs/XUL/Tutorial/Progress_Meters" title="/en-US/docs/XUL/Tutorial/Progress_Meters">Progress Meters</a></li> - <li><a href="/en-US/docs/XUL/Tutorial/Adding_HTML_Elements" title="/en-US/docs/XUL/Tutorial/Adding_HTML_Elements">Adding HTML Elements</a></li> - <li><a href="/en-US/docs/XUL/Tutorial/Using_Spacers" title="/en-US/docs/XUL/Tutorial/Using_Spacers">Using Spacers</a></li> - <li><a href="/en-US/docs/XUL/Tutorial/More_Button_Features" title="/en-US/docs/XUL/Tutorial/More_Button_Features">More Button Features</a></li> -</ul> -<h2 id="The_Box_Model" name="The_Box_Model">The Box Model</h2> -<ul> - <li><a href="/en-US/docs/XUL/Tutorial/The_Box_Model" title="/en-US/docs/XUL/Tutorial/The_Box_Model">The Box Model</a></li> - <li><a href="/en-US/docs/XUL/Tutorial/Element_Positioning" title="/en-US/docs/XUL/Tutorial/Element_Positioning">Element Positioning</a></li> - <li><a href="/en-US/docs/XUL/Tutorial/Box_Model_Details" title="/en-US/docs/XUL/Tutorial/Box_Model_Details">Box Model Details</a></li> - <li><a href="/en-US/docs/XUL/Tutorial/Groupboxes" title="/en-US/docs/XUL/Tutorial/Groupboxes">Groupboxes</a></li> - <li><a href="/en-US/docs/XUL/Tutorial/Adding_More_Elements" title="/en-US/docs/XUL/Tutorial/Adding_More_Elements">Adding More Elements</a></li> -</ul> -<h2 id="More_Layout_Elements" name="More_Layout_Elements">More Layout Elements</h2> -<ul> - <li><a href="/en-US/docs/XUL/Tutorial/Stacks_and_Decks" title="/en-US/docs/XUL/Tutorial/Stacks_and_Decks">Stacks and Decks</a></li> - <li><a href="/en-US/docs/XUL/Tutorial/Stack_Positioning" title="/en-US/docs/XUL/Tutorial/Stack_Positioning">Stack Positioning</a></li> - <li><a href="/en-US/docs/XUL/Tutorial/Tabboxes" title="/en-US/docs/XUL/Tutorial/Tabboxes">Tabboxes</a></li> - <li><a href="/en-US/docs/XUL/Tutorial/Grids" title="/en-US/docs/XUL/Tutorial/Grids">Grids</a></li> - <li><a href="/en-US/docs/XUL/Tutorial/Content_Panels" title="/en-US/docs/XUL/Tutorial/Content_Panels">Content Panels</a></li> - <li><a href="/en-US/docs/XUL/Tutorial/Splitters" title="/en-US/docs/XUL/Tutorial/Splitters">Splitters</a></li> -</ul> -<h2 id="Toolbars_and_Menus" name="Toolbars_and_Menus">Toolbars and Menus</h2> -<ul> - <li><a href="/en-US/docs/XUL/Tutorial/Toolbars" title="/en-US/docs/XUL/Tutorial/Toolbars">Toolbars</a></li> - <li><a href="/en-US/docs/XUL/Tutorial/Simple_Menu_Bars" title="/en-US/docs/XUL/Tutorial/Simple_Menu_Bars">Simple Menu Bars</a></li> - <li><a href="/en-US/docs/XUL/Tutorial/More_Menu_Features" title="/en-US/docs/XUL/Tutorial/More_Menu_Features">More Menu Features</a></li> - <li><a href="/en-US/docs/XUL/Tutorial/Popup_Menus" title="/en-US/docs/XUL/Tutorial/Popup_Menus">Popup Menus</a></li> - <li><a href="/en-US/docs/XUL/Tutorial/Scrolling_Menus" title="/en-US/docs/XUL/Tutorial/Scrolling_Menus">Scrolling Menus</a></li> -</ul> -<h2 id="Events_and_Scripts" name="Events_and_Scripts">Events and Scripts</h2> -<ul> - <li><a href="/en-US/docs/XUL/Tutorial/Adding_Event_Handlers" title="/en-US/docs/XUL/Tutorial/Adding_Event_Handlers">Adding Event Handlers</a></li> - <li><a href="/en-US/docs/XUL/Tutorial/More_Event_Handlers" title="/en-US/docs/XUL/Tutorial/More_Event_Handlers">More Event Handlers</a></li> - <li><a href="/en-US/docs/XUL/Tutorial/Keyboard_Shortcuts" title="/en-US/docs/XUL/Tutorial/Keyboard_Shortcuts">Keyboard Shortcuts</a></li> - <li><a href="/en-US/docs/XUL/Tutorial/Focus_and_Selection" title="/en-US/docs/XUL/Tutorial/Focus_and_Selection">Focus and Selection</a></li> - <li><a href="/en-US/docs/XUL/Tutorial/Commands" title="/en-US/docs/XUL/Tutorial/Commands">Commands</a></li> - <li><a href="/en-US/docs/XUL/Tutorial/Updating_Commands" title="/en-US/docs/XUL/Tutorial/Updating_Commands">Updating Commands</a></li> - <li><a href="/en-US/docs/XUL/Tutorial/Broadcasters_and_Observers" title="/en-US/docs/XUL/Tutorial/Broadcasters_and_Observers">Broadcasters and Observers</a></li> -</ul> -<h2 id="Document_Object_Model" name="Document_Object_Model">Document Object Model</h2> -<ul> - <li><a href="/en-US/docs/XUL/Tutorial/Document_Object_Model" title="/en-US/docs/XUL/Tutorial/Document_Object_Model">Document Object Model</a></li> - <li><a href="/en-US/docs/XUL/Tutorial/Modifying_a_XUL_Interface" title="/en-US/docs/XUL/Tutorial/Modifying_a_XUL_Interface">Modifying a XUL Interface</a></li> - <li><a href="/en-US/docs/XUL/Tutorial/Manipulating_Lists" title="/en-US/docs/XUL/Tutorial/Manipulating_Lists">Manipulating Lists</a></li> - <li><a href="/en-US/docs/XUL/Tutorial/Box_Objects" title="/en-US/docs/XUL/Tutorial/Box_Objects">Box Objects</a></li> - <li><a href="/en-US/docs/XUL/Tutorial/XPCOM_Interfaces" title="/en-US/docs/XUL/Tutorial/XPCOM_Interfaces">XPCOM Interfaces</a></li> - <li><a href="/en-US/docs/XUL/Tutorial/XPCOM_Examples" title="/en-US/docs/XUL/Tutorial/XPCOM_Examples">XPCOM Examples</a></li> -</ul> -<h2 id="Trees" name="Trees">Trees</h2> -<ul> - <li><a href="/en-US/docs/XUL/Tutorial/Trees" title="/en-US/docs/XUL/Tutorial/Trees">Trees</a></li> - <li><a href="/en-US/docs/XUL/Tutorial/More_Tree_Features" title="/en-US/docs/XUL/Tutorial/More_Tree_Features">More Tree Features</a></li> - <li><a href="/en-US/docs/XUL/Tutorial/Tree_Selection" title="/en-US/docs/XUL/Tutorial/Tree_Selection">Tree Selection</a></li> - <li><a href="/en-US/docs/XUL/Tutorial/Custom_Tree_Views" title="/en-US/docs/XUL/Tutorial/Custom_Tree_Views">Custom Tree Views</a></li> - <li><a href="/en-US/docs/XUL/Tutorial/Tree_View_Details" title="/en-US/docs/XUL/Tutorial/Tree_View_Details">Tree View Details</a></li> - <li><a href="/en-US/docs/XUL/Tutorial/Tree_Box_Objects" title="/en-US/docs/XUL/Tutorial/Tree_Box_Objects">Tree Box Objects</a></li> -</ul> -<h2 id="RDF_and_Templates" name="RDF_and_Templates">RDF and Templates</h2> -<ul> - <li><a href="/en-US/docs/XUL/Tutorial/Introduction_to_RDF" title="/en-US/docs/XUL/Tutorial/Introduction_to_RDF">Introduction to RDF</a></li> - <li><a href="/en-US/docs/XUL/Tutorial/Templates" title="/en-US/docs/XUL/Tutorial/Templates">Templates</a></li> - <li><a href="/en-US/docs/XUL/Tutorial/Trees_and_Templates" title="/en-US/docs/XUL/Tutorial/Trees_and_Templates">Trees and Templates</a></li> - <li><a href="/en-US/docs/XUL/Tutorial/RDF_Datasources" title="/en-US/docs/XUL/Tutorial/RDF_Datasources">RDF Datasources</a></li> - <li><a href="/en-US/docs/XUL/Tutorial/Advanced_Rules" title="/en-US/docs/XUL/Tutorial/Advanced_Rules">Advanced Rules</a></li> - <li><a href="/en-US/docs/XUL/Tutorial/Persistent_Data" title="/en-US/docs/XUL/Tutorial/Persistent_Data">Persistent Data</a></li> -</ul> -<h2 id="Skins_and_Locales" name="Skins_and_Locales">Skins and Locales</h2> -<ul> - <li><a href="/en-US/docs/XUL/Tutorial/Adding_Style_Sheets" title="/en-US/docs/XUL/Tutorial/Adding_Style_Sheets">Adding Style Sheets</a></li> - <li><a href="/en-US/docs/XUL/Tutorial/Styling_a_Tree" title="/en-US/docs/XUL/Tutorial/Styling_a_Tree">Styling a Tree</a></li> - <li><a href="/en-US/docs/XUL/Tutorial/Modifying_the_Default_Skin" title="/en-US/docs/XUL/Tutorial/Modifying_the_Default_Skin">Modifying the Default Skin</a></li> - <li><a href="/en-US/docs/XUL/Tutorial/Creating_a_Skin" title="/en-US/docs/XUL/Tutorial/Creating_a_Skin">Creating a Skin</a></li> - <li><a href="/en-US/docs/XUL/Tutorial/Localization" title="/en-US/docs/XUL/Tutorial/Localization">Localization</a></li> - <li><a href="/en-US/docs/XUL/Tutorial/Property_Files" title="/en-US/docs/XUL/Tutorial/Property_Files">Property Files</a></li> -</ul> -<h2 id="Bindings" name="Bindings">Bindings</h2> -<ul> - <li><a href="/en-US/docs/XUL/Tutorial/Introduction_to_XBL" title="/en-US/docs/XUL/Tutorial/Introduction_to_XBL">Introduction to XBL</a></li> - <li><a href="/en-US/docs/XUL/Tutorial/Anonymous_Content" title="/en-US/docs/XUL/Tutorial/Anonymous_Content">Anonymous Content</a></li> - <li><a href="/en-US/docs/XUL/Tutorial/XBL_Attribute_Inheritance" title="/en-US/docs/XUL/Tutorial/XBL_Attribute_Inheritance">XBL Attribute Inheritance</a></li> - <li><a href="/en-US/docs/XUL/Tutorial/Adding_Properties_to_XBL-defined_Elements" title="/en-US/docs/XUL/Tutorial/Adding_Properties_to_XBL-defined_Elements">Adding Properties</a></li> - <li><a href="/en-US/docs/XUL/Tutorial/Adding_Methods_to_XBL-defined_Elements" title="/en-US/docs/XUL/Tutorial/Adding_Methods_to_XBL-defined_Elements">Adding Methods</a></li> - <li><a href="/en-US/docs/XUL/Tutorial/Adding_Event_Handlers_to_XBL-defined_Elements" title="/en-US/docs/XUL/Tutorial/Adding_Event_Handlers_to_XBL-defined_Elements">Adding Event Handlers</a></li> - <li><a href="/en-US/docs/XUL/Tutorial/XBL_Inheritance" title="/en-US/docs/XUL/Tutorial/XBL_Inheritance">XBL Inheritance</a></li> - <li><a href="/en-US/docs/Mozilla/Tech/XUL/Tutorial/Using_XBL_from_stylesheets">Creating reusable content using CSS and XBL</a></li> - <li><a href="/en-US/docs/XUL/Tutorial/XBL_Example" title="/en-US/docs/XUL/Tutorial/XBL_Example">XBL Example</a></li> -</ul> -<h2 id="Specialized_Window_Types" name="Specialized_Window_Types">Specialized Window Types</h2> -<ul> - <li><a href="/en-US/docs/XUL/Tutorial/Features_of_a_Window" title="/en-US/docs/XUL/Tutorial/Features_of_a_Window">Features of a Window</a></li> - <li><a href="/en-US/docs/XUL/Tutorial/Creating_Dialogs" title="/en-US/docs/XUL/Tutorial/Creating_Dialogs">Creating Dialogs</a></li> - <li><a href="/en-US/docs/XUL/Tutorial/Open_and_Save_Dialogs" title="/en-US/docs/XUL/Tutorial/Open_and_Save_Dialogs">Open and Save Dialogs</a></li> - <li><a href="/en-US/docs/XUL/Tutorial/Creating_a_Wizard" title="/en-US/docs/XUL/Tutorial/Creating_a_Wizard">Creating a Wizard</a></li> - <li><a href="/en-US/docs/XUL/Tutorial/More_Wizards" title="/en-US/docs/XUL/Tutorial/More_Wizards">More Wizards</a></li> - <li><a href="/en-US/docs/XUL/Tutorial/Overlays" title="/en-US/docs/XUL/Tutorial/Overlays">Overlays</a></li> - <li><a href="/en-US/docs/XUL/Tutorial/Cross_Package_Overlays" title="/en-US/docs/XUL/Tutorial/Cross_Package_Overlays">Cross Package Overlays</a></li> -</ul> -<h2 id="Installation" name="Installation">Installation</h2> -<ul> - <li><a href="/en-US/docs/XUL/Tutorial/Creating_an_Installer" title="/en-US/docs/XUL/Tutorial/Creating_an_Installer">Creating an Installer</a></li> - <li><a href="/en-US/docs/XUL/Tutorial/Install_Scripts" title="/en-US/docs/XUL/Tutorial/Install_Scripts">Install Scripts</a></li> - <li><a href="/en-US/docs/XUL/Tutorial/Additional_Install_Features" title="/en-US/docs/XUL/Tutorial/Additional_Install_Features">Additional Install Features</a></li> -</ul> -<div class="note"> - <p>This XUL tutorial was originally created by <a class="external" href="http://www.xulplanet.com/ndeakin/">Neil Deakin</a>. He has graciously given us permission to use it as part of the <a href="/en-US/docs/Project:About" title="Project:About">MDN</a>.</p> -</div> -<div class="originaldocinfo"> - <h2 id="Original_Document_Information" name="Original_Document_Information">Original Document Information</h2> - <ul> - <li>Author: <a class="external" href="http://www.xulplanet.com/ndeakin/">Neil Deakin</a></li> - <li>Copyright Information: © 1999-2005 XULPlanet.com</li> - </ul> -</div> -<p> </p> diff --git a/files/pt-br/archive/mozilla/xul/tutorial/localização/index.html b/files/pt-br/archive/mozilla/xul/tutorial/localização/index.html deleted file mode 100644 index 5bb49fa3f2..0000000000 --- a/files/pt-br/archive/mozilla/xul/tutorial/localização/index.html +++ /dev/null @@ -1,326 +0,0 @@ ---- -title: Localização -slug: Archive/Mozilla/XUL/Tutorial/Localização -tags: - - Internacionalização - - Localização - - Tutoriais - - XUL - - XUL_Tutorial -translation_of: Archive/Mozilla/XUL/Tutorial/Localization ---- -<p>XUL e XML fornecem entidades, que são uma forma conveniente de permitir localização.</p> - -<h3 id="Entities" name="Entities">Entidades</h3> - -<p>Muitos aplicativos são compilados de forma que a tradução da interface para um idioma diferente seja o mais simples possível. Geralmente, uma tabela de strings é criada para cada idioma. Em vez de codificar texto diretamente para um aplicativo, cada pedaço de texto só é uma referência na tabela de strings. <a href="/pt-BR/XML" title="en/XML">XML</a> fornece entidades que podem ser usadas para um propósito similar.</p> - -<p>Você já deve ser familiar com entidades se você escreveu <a href="/pt-BR/HTML" title="en/HTML">HTML</a>. Os códigos <code>&lt;</code> e <code>&gt;</code> são exemplos de entidades que podem ser usadas para colocar sinais de menor que e maior que no texto. XML possui uma sintaxe que lhe permite declarar entidades personalizadas. Você pode usá-las, de forma que a entidade seja substituída com seu valor, que pode ser uma string de texto. Entidades podem ser usados sempre que houver texto, inclundo os valores de atributos. O exemplo abaixo demonstra o uso de uma entidade em um botão.</p> - -<pre><button label="&findLabel;"/> -</pre> - -<p>O texto que aparecerá no rótulo será o valor que a entidade <code>&findLabel;</code> tem. Um arquivo é criado contendo as declarações da entidade para cada idioma suportado. Em ingçês, a entidade <code>&findLabel;</code> provavelmente será declarada para ter o texto "Find" ("localizar", "encontrar").</p> - -<h3 id="DTD_Files" name="DTD_Files">DTD Files</h3> - -<p>Entities are declared in <em>Document Type Definition</em> (DTD) files. Files of this type are normally used to declare the syntax and semantics of a particular XML file, but they also let you declare entities. In the Mozilla chrome system, you will find DTD files located in the <code>locales</code> subdirectory. You would normally have one DTD file (with an extension <code>.dtd</code>) per XUL file.</p> - -<p>If you look in the chrome directory, you should see an archive for your language. (<code>en-US.jar</code> is the default for English.) You might have locale files in multiple languages, for example, US English (en-US) and French (fr). Inside these archives, you will find the files that hold the localized text for each window. The structure of the archives is very similar to the directory structure used for <a href="/en/XUL_Tutorial/Creating_a_Skin" title="en/XUL_Tutorial/Creating_a_Skin">skins</a>.</p> - -<p>Inside the archives, you would place the DTD files in which you declare entities. Typically, you will have one DTD file for each XUL file, usually with the same filename except with a <code>.dtd</code> extension. So, for the find files dialog, we will need a file called <code>findfile.dtd</code>.</p> - -<p>For non-installed chrome files, you can just put the DTD file in the same directory as the XUL file.</p> - -<div class="note"><strong>Note:</strong> You should encode DTD files as UTF-8 for non-ASCII characters. That is, you should save them in UTF-8 format (<a class="external" href="http://www.mozdev.org/notes/l10n/unicode/editors-en.html">without BOM</a>). For more information, see <a class="external" href="http://www.mozilla.org/projects/l10n/mlp_chrome.html#text">Mozilla Language Packs</a>.</div> - -<p>Once you have created a DTD file for your XUL, you will need to add a line to the XUL file which indicates that you want to use the DTD file. Otherwise, errors will occur as it won't be able to find the entities. To do this, add a line of the following form somewhere near the top of the XUL file:</p> - -<pre><!DOCTYPE window SYSTEM "chrome://findfile/locale/findfile.dtd"> -</pre> - -<p>This line specifies that the URL indicated is to be used as a DTD for the file. In this case, we have declared that we want to use the <code>findfile.dtd</code> DTD file. This line is typically placed just before the <code><code><a href="/pt-BR/docs/Mozilla/Tech/XUL/window" title="window">window</a></code></code> element.</p> - -<p>You also need to add the locale to the <a href="/en/Chrome_Registration#locale" title="en/Chrome_Registration#locale">chrome.manifest</a> file, for example:</p> - -<pre class="eval">locale findfile en-US locale/ -</pre> - -<h3 id="Declaring_Entities" name="Declaring_Entities">Declaring Entities</h3> - -<p>The entities are declared using a simple syntax as shown below:</p> - -<pre><!ENTITY findLabel "Find"> -</pre> - -<p>This example creates an entity with the name <code>findLabel</code> and the value "Find". This means that wherever the text "&findLabel;" appears in the XUL file, it will be replaced with the text "Find". Note that entity declarations do not have a trailing slash at the end of them. In the DTD file for a different language, the text for that language will be used instead.</p> - -<pre class="eval"><strong>for Japanese:</strong> -<!ENTITY findLabel "検索"> -</pre> - -<p>For example, the following text:</p> - -<pre><description value="&findLabel;"/> -</pre> - -<p>is translated as:</p> - -<pre class="eval"><strong>English version:</strong> -<description value="Find"/> - -<strong>Japanese version:</strong> -<description value="検索"/> -</pre> - -<p>You would declare an entity for each label or string of text that you use in your interface. You should not have any directly displayed text in the XUL file at all.</p> - -<p>In addition to using entities for text labels, you should use them for any value that could be different in a different language. <a href="/en/XUL_Tutorial/Keyboard_Shortcuts" title="en/XUL_Tutorial/Keyboard_Shortcuts">Access keys and keyboard shortcuts </a> for example.</p> - -<pre class="eval"> <strong>XUL</strong> - <menuitem label="&undo.label;" accesskey="&undo.key;"/> - <strong>DTD</strong> - <!ENTITY undo.label "Undo"> - <!ENTITY undo.key "u"> -</pre> - -<p>The example above uses two entities, one for the label on the Undo menu item and the second for the access key.</p> - -<p> </p> - -<div class="highlight"> -<h3 id="Changing_the_Find_Files_example" name="Changing_the_Find_Files_example">Changing the Find Files example</h3> - -<p>Let's take a look at how we would put all of this together by modifying the find files dialog so that it uses a DTD file for all of its text strings. The entire XUL file is shown below with the changes shown in red.</p> - -<pre class="eval"><?xml version="1.0"?> - -<?xml-stylesheet href="<a class="external" rel="freelink">chrome://global/skin/</a>" type="text/css"?> -<?xml-stylesheet href="findfile.css" type="text/css"?> - -<span class="highlightred"><!DOCTYPE window SYSTEM "<a class="external" rel="freelink">chrome://findfile/locale/findfile.dtd</a>"></span> - -<window - id="findfile-window" - title="<span class="highlightred">&findWindow.title;</span>" - persist="screenX screenY width height" - orient="horizontal" - onload="initSearchList()" - xmlns="<span class="nowiki">http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul</span>"> - -<script src="findfile.js"/> - -<popupset> - <menupopup id="editpopup"> - <menuitem label="<span class="highlightred">&cutCmd.label;</span>" accesskey="<span class="highlightred">&cutCmd.accesskey;</span>"/> - <menuitem label="<span class="highlightred">&copyCmd.label;</span>" accesskey="<span class="highlightred">&copyCmd.accesskey;</span>"/> - <menuitem label="<span class="highlightred">&pasteCmd.label;</span>" accesskey="<span class="highlightred">&pasteCmd.accesskey;</span>" disabled="true"/> - </menupopup> -</popupset> - -<keyset> - <key id="cut_cmd" modifiers="accel" key="<span class="highlightred">&cutCmd.commandkey;</span>"/> - <key id="copy_cmd" modifiers="accel" key="<span class="highlightred">&copyCmd.commandkey;</span>"/> - <key id="paste_cmd" modifiers="accel" key="<span class="highlightred">&pasteCmd.commandkey;</span>"/> - <key id="close_cmd" keycode="VK_ESCAPE" oncommand="window.close();"/> -</keyset> - -<vbox flex="1"> - - <toolbox> - - <menubar id="findfiles-menubar"> - <menu id="file-menu" label="<span class="highlightred">&fileMenu.label;</span>" - accesskey="<span class="highlightred">&fileMenu.accesskey;</span>"> - <menupopup id="file-popup"> - <menuitem label="<span class="highlightred">&openCmd.label;</span>" - accesskey="<span class="highlightred">&openCmd.accesskey;</span>"/> - <menuitem label="<span class="highlightred">&saveCmd.label;</span>" - accesskey="<span class="highlightred">&saveCmd.accesskey;</span>"/> - <menuseparator/> - <menuitem label="<span class="highlightred">&closeCmd.label;</span>" - accesskey="<span class="highlightred">&closeCmd.accesskey;" key="close_cmd" oncommand="window.close();</span>"/> - </menupopup> - </menu> - <menu id="edit-menu" label="<span class="highlightred">&editMenu.label;</span>" - accesskey="<span class="highlightred">&editMenu.accesskey;</span>"> - <menupopup id="edit-popup"> - <menuitem label="<span class="highlightred">&cutCmd.label;</span>" - accesskey="<span class="highlightred">&cutCmd.accesskey;</span>" key="cut_cmd"/> - <menuitem label="<span class="highlightred">&copyCmd.label;</span>" - accesskey="<span class="highlightred">&copyCmd.accesskey;</span>" key="copy_cmd"/> - <menuitem label="<span class="highlightred">&pasteCmd.label;</span>" - accesskey="<span class="highlightred">&pasteCmd.accesskey;</span>" key="paste_cmd" disabled="true"/> - </menupopup> - </menu> - </menubar> - - <toolbar id="findfiles-toolbar"> - <toolbarbutton id="opensearch" label="<span class="highlightred">&openCmdToolbar.label;</span>"/> - <toolbarbutton id="savesearch" label="<span class="highlightred">&saveCmdToolbar.label;</span>"/> - </toolbar> - </toolbox> - - <tabbox> - <tabs> - <tab label="<span class="highlightred">&searchTab;</span>" selected="true"/> - <tab label="<span class="highlightred">&optionsTab;</span>"/> - </tabs> - - <tabpanels> - - <tabpanel id="searchpanel" orient="vertical" context="editpopup"> - - <description> - <span class="highlightred">&findDescription;</span> - </description> - - <spacer class="titlespace"/> - - <groupbox orient="horizontal"> - <caption label="<span class="highlightred">&findCriteria;</span>"/> - - <menulist id="searchtype"> - <menupopup> - <menuitem label="<span class="highlightred">&type.name;</span>"/> - <menuitem label="<span class="highlightred">&type.size;</span>"/> - <menuitem label="<span class="highlightred">&type.date;</span>"/> - </menupopup> - </menulist> - <spacer class="springspace"/> - <menulist id="searchmode"> - <menupopup> - <menuitem label="<span class="highlightred">&mode.is;</span>"/> - <menuitem label="<span class="highlightred">&mode.isnot;</span>"/> - </menupopup> - </menulist> - <spacer class="springspace"/> - - <menulist id="find-text" flex="1" - editable="true" - datasources="<a class="external" rel="freelink">file:///mozilla/recents.rdf</a>" - ref="<span class="nowiki">http://www.xulplanet.com/rdf/recent/all</span>"> - <template> - <menupopup> - <menuitem label="<span class="nowiki">rdf:http://www.xulplanet.com/rdf/recent#Label</span>" uri="rdf:*"/> - </menupopup> - </template> - </menulist> - - </groupbox> - - </tabpanel> - - <tabpanel id="optionspanel" orient="vertical"> - <checkbox id="casecheck" label="<span class="highlightred">&casesensitive;</span>"/> - <checkbox id="wordscheck" label="<span class="highlightred">&matchfilename;</span>"/> - </tabpanel> - - </tabpanels> - </tabbox> - - <tree id="results" style="display: none;" flex="1"> - <treecols> - <treecol id="name" label="<span class="highlightred">&results.filename;</span>" flex="1"/> - <treecol id="location" label="<span class="highlightred">&results.location;</span>" flex="2"/> - <treecol id="size" label="<span class="highlightred">&results.size;</span>" flex="1"/> - </treecols> - - <treechildren> - <treeitem> - <treerow> - <treecell label="mozilla"/> - <treecell label="/usr/local"/> - <treecell label="<span class="highlightred">&bytes.before;</span>2520<span class="highlightred">&bytes.after;</span>"/> - </treerow> - </treeitem> - </treechildren> - </tree> - - <splitter id="splitbar" resizeafter="grow" style="display: none;"/> - - <spacer class="titlespace"/> - - <hbox> - <progressmeter id="progmeter" value="50%" style="display: none;"/> - <spacer flex="1"/> - <button id="find-button" label="<span class="highlightred">&button.find;</span>" - oncommand="doFind()"/> - <button id="cancel-button" label="<span class="highlightred">&button.cancel;</span>" - oncommand="window.close();"/> - </hbox> -</vbox> - -</window> -</pre> - -<p>Each text string has been replaced by an entity reference. A DTD file has been included near the beginning of the XUL file. Each entity that was added should be declared in the DTD file. The window will not be displayed if an entity is found in the XUL file that hasn't been declared.</p> - -<p>Note that the name of the entity is not important. In the example above, words in entities have been separated with periods. You don't have to do this. The entity names here follow similar conventions as the rest of the Mozilla code.</p> - -<p>You might notice that the text '2520 bytes' has been replaced by two entities. This is because the phrase structure may be different in another locale. For example, the number might need to appear before the equivalent of 'bytes' instead of after. Of course, this might need to be more complicated in order to display KB or MB as needed.</p> - -<p>The access keys and keyboard shortcuts have also been translated into entities because they will likely be different in a different locale.</p> - -<p>Next, the DTD file - findfile.dtd:</p> - -<pre><!ENTITY findWindow.title "Find Files"> -<!ENTITY fileMenu.label "File"> -<!ENTITY editMenu.label "Edit"> -<!ENTITY fileMenu.accesskey "f"> -<!ENTITY editMenu.accesskey "e"> -<!ENTITY openCmd.label "Open Search..."> -<!ENTITY saveCmd.label "Save Search..."> -<!ENTITY closeCmd.label "Close"> -<!ENTITY openCmd.accesskey "o"> -<!ENTITY saveCmd.accesskey "s"> -<!ENTITY closeCmd.accesskey "c"> -<!ENTITY cutCmd.label "Cut"> -<!ENTITY copyCmd.label "Copy"> -<!ENTITY pasteCmd.label "Paste"> -<!ENTITY cutCmd.accesskey "t"> -<!ENTITY copyCmd.accesskey "c"> -<!ENTITY pasteCmd.accesskey "p"> -<!ENTITY cutCmd.commandkey "X"> -<!ENTITY copyCmd.commandkey "C"> -<!ENTITY pasteCmd.commandkey "V"> -<!ENTITY openCmdToolbar.label "Open"> -<!ENTITY saveCmdToolbar.label "Save"> -<!ENTITY searchTab "Search"> -<!ENTITY optionsTab "Options"> -<!ENTITY findDescription "Enter your search criteria below and select the Find button to begin the search."> -<!ENTITY findCriteria "Search Criteria"> -<!ENTITY type.name "Name"> -<!ENTITY type.size "Size"> -<!ENTITY type.date "Date Modified"> -<!ENTITY mode.is "Is"> -<!ENTITY mode.isnot "Is Not"> -<!ENTITY casesensitive "Case Sensitive Search"> -<!ENTITY matchfilename "Match Entire Filename"> -<!ENTITY results.filename "Filename"> -<!ENTITY results.location "Location"> -<!ENTITY results.size "Size"> -<!ENTITY bytes.before ""> -<!ENTITY bytes.after "bytes"> -<!ENTITY button.find "Find"> -<!ENTITY button.cancel "Cancel"> -</pre> - -<p>Now, to add text for a new language all you need to do is create another DTD file. By using the chrome system to add the DTD file to a different locale, the same XUL file can be used in any language.</p> - -<p>Find files example so far: <a href="https://developer.mozilla.org/samples/xultu/examples/findfile/findfile-locale.xul.txt">Source</a></p> -</div> - -<p>Next, we'll look at <a href="/en/XUL_Tutorial/Property_Files" title="en/XUL_Tutorial/Property_Files">property files</a>.</p> - -<div class="prevnext" style="text-align: right;"> - <p><a href="/pt-BR/docs/XUL_Tutorial/Creating_a_Skin" style="float: left;">« Previous</a><a href="/pt-BR/docs/XUL_Tutorial/Property_Files">Next »</a></p> -</div> - - - -<h2 id="See_Also">See Also</h2> - -<ul> - <li>How to localize html pages, xul files, and js/jsm files from bootstrapped add-ons: <a href="/en-US/Add-ons/Bootstrapped_extensions#Localization_%28L10n%29">Bootstrapped Extensions :: Localization (L10n)</a></li> -</ul> diff --git a/files/pt-br/archive/mozilla/xul/xul_reference/index.html b/files/pt-br/archive/mozilla/xul/xul_reference/index.html deleted file mode 100644 index 2ef2b7c473..0000000000 --- a/files/pt-br/archive/mozilla/xul/xul_reference/index.html +++ /dev/null @@ -1,286 +0,0 @@ ---- -title: Referência XUL -slug: Archive/Mozilla/XUL/XUL_Reference -translation_of: Archive/Mozilla/XUL/XUL_Reference ---- -<p>« <a href="https://developer.mozilla.org/docs/en-US/XUL" title="en-US/XUL">Referência XUL</a> «</p> -<h2 id="Lista_em_ordem_alfabética_de_todos_os_elementos_XUL">Lista em ordem alfabética de todos os elementos XUL</h2> -<ul> - <li><code><a href="/en/XUL/action" title="en/XUL/action">action</a></code></li> - <li><code><a href="/en/XUL/arrowscrollbox" title="en/XUL/arrowscrollbox">arrowscrollbox</a></code></li> - <li><code><a href="/en/XUL/assign" title="en/XUL/assign">assign</a></code></li> - <li><code><a href="/en/XUL/bbox" title="en/XUL/bbox">bbox</a></code></li> - <li><code><a href="/en/XUL/binding" title="en/XUL/binding">binding</a></code></li> - <li><code><a href="/en/XUL/bindings" title="en/XUL/bindings">bindings</a></code></li> - <li><code><a href="/en/XUL/box" title="en/XUL/box">box</a></code></li> - <li><code><a href="/en/XUL/broadcaster" title="en/XUL/broadcaster">broadcaster</a></code></li> - <li><code><a href="/en/XUL/broadcasterset" title="en/XUL/broadcasterset">broadcasterset</a></code></li> - <li><code><a href="/en/XUL/button" title="en/XUL/button">button</a></code></li> - <li><code><a href="/en/XUL/browser" title="en/XUL/browser">browser</a></code></li> - <li><code><a href="/en/XUL/checkbox" title="en/XUL/checkbox">checkbox</a></code></li> - <li><code><a href="/en/XUL/caption" title="en/XUL/caption">caption</a></code></li> - <li><code><a href="/en/XUL/colorpicker" title="en/XUL/colorpicker">colorpicker</a></code></li> - <li><code><a href="/en/XUL/column" title="en/XUL/column">column</a></code></li> - <li><code><a href="/en/XUL/columns" title="en/XUL/columns">columns</a></code></li> - <li><code><a href="/en/XUL/commandset" title="en/XUL/commandset">commandset</a></code></li> - <li><code><a href="/en/XUL/command" title="en/XUL/command">command</a></code></li> - <li><code><a href="/en/XUL/conditions" title="en/XUL/conditions">conditions</a></code></li> - <li><code><a href="/en/XUL/content" title="en/XUL/content">content</a></code></li> - <li><code><a href="/en/XUL/datepicker" title="en/XUL/datepicker">datepicker</a></code></li> - <li><code><a href="/en/XUL/deck" title="en/XUL/deck">deck</a></code></li> - <li><code><a href="/en/XUL/description" title="en/XUL/description">description</a></code></li> - <li><code><a href="/en/XUL/dialog" title="en/XUL/dialog">dialog</a></code></li> - <li><code><a href="/en/XUL/dialogheader" title="en/XUL/dialogheader">dialogheader</a></code></li> - <li><code><a href="/en/XUL/dropmarker" title="en/XUL/dropmarker">dropmarker</a></code></li> - <li><code><a href="/en/XUL/editor" title="en/XUL/editor">editor</a></code></li> - <li><code><a href="/en/XUL/grid" title="en/XUL/grid">grid</a></code></li> - <li><code><a href="/en/XUL/grippy" title="en/XUL/grippy">grippy</a></code></li> - <li><code><a href="/en/XUL/groupbox" title="en/XUL/groupbox">groupbox</a></code></li> - <li><code><a href="/en/XUL/hbox" title="en/XUL/hbox">hbox</a></code></li> - <li><code><a href="/en/XUL/iframe" title="en/XUL/iframe">iframe</a></code></li> - <li><code><a href="/en/XUL/image" title="en/XUL/image">image</a></code></li> - <li><code><a href="/en/XUL/key" title="en/XUL/key">key</a></code></li> - <li><code><a href="/en/XUL/keyset" title="en/XUL/keyset">keyset</a></code></li> - <li><code><a href="/en/XUL/label" title="en/XUL/label">label</a></code></li> - <li><code><a href="/en/XUL/listbox" title="en/XUL/listbox">listbox</a></code></li> - <li><code><a href="/en/XUL/listcell" title="en/XUL/listcell">listcell</a></code></li> - <li><code><a href="/en/XUL/listcol" title="en/XUL/listcol">listcol</a></code></li> - <li><code><a href="/en/XUL/listcols" title="en/XUL/listcols">listcols</a></code></li> - <li><code><a href="/en/XUL/listhead" title="en/XUL/listhead">listhead</a></code></li> - <li><code><a href="/en/XUL/listheader" title="en/XUL/listheader">listheader</a></code></li> - <li><code><a href="/en/XUL/listitem" title="en/XUL/listitem">listitem</a></code></li> - <li><code><a href="/en/XUL/member" title="en/XUL/member">member</a></code></li> - <li><code><a href="/en/XUL/menu" title="en/XUL/menu">menu</a></code></li> - <li><code><a href="/en/XUL/menubar" title="en/XUL/menubar">menubar</a></code></li> - <li><code><a href="/en/XUL/menuitem" title="en/XUL/menuitem">menuitem</a></code></li> - <li><code><a href="/en/XUL/menulist" title="en/XUL/menulist">menulist</a></code></li> - <li><code><a href="/en/XUL/menupopup" title="en/XUL/menupopup">menupopup</a></code></li> - <li><code><a href="/en/XUL/menuseparator" title="en/XUL/menuseparator">menuseparator</a></code></li> - <li><code><a href="/en/XUL/notification" title="en/XUL/notification">notification</a></code></li> - <li><code><a href="/en/XUL/notificationbox" title="en/XUL/notificationbox">notificationbox</a></code></li> - <li><code><a href="/en/XUL/observes" title="en/XUL/observes">observes</a></code></li> - <li><code><a href="/en/XUL/overlay" title="en/XUL/overlay">overlay</a></code></li> - <li><code><a href="/en/XUL/page" title="en/XUL/page">page</a></code></li> - <li><code><a href="/en/XUL/panel" title="en/XUL/panel">panel</a></code></li> - <li><code><a href="/en/XUL/param" title="en/XUL/param">param</a></code></li> - <li><code><a href="/en/XUL/popupset" title="en/XUL/popupset">popupset</a></code></li> - <li><code><a href="/en/XUL/preference" title="en/XUL/preference">preference</a></code></li> - <li><code><a href="/en/XUL/preferences" title="en/XUL/preferences">preferences</a></code></li> - <li><code><a href="/en/XUL/prefpane" title="en/XUL/prefpane">prefpane</a></code></li> - <li><code><a href="/en/XUL/prefwindow" title="en/XUL/prefwindow">prefwindow</a></code></li> - <li><code><a href="/en/XUL/progressmeter" title="en/XUL/progressmeter">progressmeter</a></code></li> - <li><code><a href="/en/XUL/query" title="en/XUL/query">query</a></code></li> - <li><code><a href="/en/XUL/queryset" title="en/XUL/queryset">queryset</a></code></li> - <li><code><a href="/en/XUL/radio" title="en/XUL/radio">radio</a></code></li> - <li><code><a href="/en/XUL/radiogroup" title="en/XUL/radiogroup">radiogroup</a></code></li> - <li><code><a href="/en/XUL/resizer" title="en/XUL/resizer">resizer</a></code></li> - <li><code><a href="/en/XUL/richlistbox" title="en/XUL/richlistbox">richlistbox</a></code></li> - <li><code><a href="/en/XUL/richlistitem" title="en/XUL/richlistitem">richlistitem</a></code></li> - <li><code><a href="/en/XUL/row" title="en/XUL/row">row</a></code></li> - <li><code><a href="/en/XUL/rows" title="en/XUL/rows">rows</a></code></li> - <li><code><a href="/en/XUL/rule" title="en/XUL/rule">rule</a></code></li> - <li><code><a href="/en/XUL/scale" title="en/XUL/scale">scale</a></code></li> - <li><code><a href="/en/XUL/script" title="en/XUL/script">script</a></code></li> - <li><code><a href="/en/XUL/scrollbar" title="en/XUL/scrollbar">scrollbar</a></code></li> - <li><code><a href="/en/XUL/scrollbox" title="en/XUL/scrollbox">scrollbox</a></code></li> - <li><code><a href="/en/XUL/scrollcorner" title="en/XUL/scrollcorner">scrollcorner</a></code></li> - <li><code><a href="/en/XUL/separator" title="en/XUL/separator">separator</a></code></li> - <li><code><a href="/en/XUL/spacer" title="en/XUL/spacer">spacer</a></code></li> - <li><code><a href="/en/XUL/spinbuttons" title="en/XUL/spinbuttons">spinbuttons</a></code></li> - <li><code><a href="/en/XUL/splitter" title="en/XUL/splitter">splitter</a></code></li> - <li><code><a href="/en/XUL/stack" title="en/XUL/stack">stack</a></code></li> - <li><code><a href="/en/XUL/statusbar" title="en/XUL/statusbar">statusbar</a></code></li> - <li><code><a href="/en/XUL/statusbarpanel" title="en/XUL/statusbarpanel">statusbarpanel</a></code></li> - <li><code><a href="/en/XUL/stringbundle" title="en/XUL/stringbundle">stringbundle</a></code></li> - <li><code><a href="/en/XUL/stringbundleset" title="en/XUL/stringbundleset">stringbundleset</a></code></li> - <li><code><a href="/en/XUL/tab" title="en/XUL/tab">tab</a></code></li> - <li><code><a href="/en/XUL/tabbrowser" title="en/XUL/tabbrowser">tabbrowser</a> (somente Firefox iniciando com Firefox 3/Gecko 1.9)</code></li> - <li><code><a href="/en/XUL/tabbox" title="en/XUL/tabbox">tabbox</a></code></li> - <li><code><a href="/en/XUL/tabpanel" title="en/XUL/tabpanel">tabpanel</a></code></li> - <li><code><a href="/en/XUL/tabpanels" title="en/XUL/tabpanels">tabpanels</a></code></li> - <li><code><a href="/en/XUL/tabs" title="en/XUL/tabs">tabs</a></code></li> - <li><code><a href="/en/XUL/template" title="en/XUL/template">template</a></code></li> - <li><code><a href="/en/XUL/textnode" title="en/XUL/textnode">textnode</a></code></li> - <li><code><a href="/en/XUL/textbox" title="en/XUL/textbox">textbox</a></code></li> - <li><code><a href="/En/XUL/Textbox_(Toolkit_autocomplete)" title="en/XUL/textbox_(Firefox_autocomplete)">textbox (Firefox autocomplete)</a></code></li> - <li><code><a href="/En/XUL/Textbox_(XPFE_autocomplete)" title="en/XUL/textbox_(Mozilla_autocomplete)">textbox (Mozilla autocomplete)</a></code></li> - <li><code><a href="/en/XUL/timepicker" title="en/XUL/timepicker">timepicker</a></code></li> - <li><code><a href="/en/XUL/titlebar" title="en/XUL/titlebar">titlebar</a></code></li> - <li><code><a href="/en/XUL/toolbar" title="en/XUL/toolbar">toolbar</a></code></li> - <li><code><a href="/en/XUL/toolbarbutton" title="en/XUL/toolbarbutton">toolbarbutton</a></code></li> - <li><code><a href="/en/XUL/toolbargrippy" title="en/XUL/toolbargrippy">toolbargrippy</a></code></li> - <li><code><a href="/en/XUL/toolbaritem" title="en/XUL/toolbaritem">toolbaritem</a></code></li> - <li><code><a href="/en/XUL/toolbarpalette" title="en/XUL/toolbarpalette">toolbarpalette</a></code></li> - <li><code><a href="/en/XUL/toolbarseparator" title="en/XUL/toolbarseparator">toolbarseparator</a></code></li> - <li><code><a href="/en/XUL/toolbarset" title="en/XUL/toolbarset">toolbarset</a></code></li> - <li><code><a href="/en/XUL/toolbarspacer" title="en/XUL/toolbarspacer">toolbarspacer</a></code></li> - <li><code><a href="/en/XUL/toolbarspring" title="en/XUL/toolbarspring">toolbarspring</a></code></li> - <li><code><a href="/en/XUL/toolbox" title="en/XUL/toolbox">toolbox</a></code></li> - <li><code><a href="/en/XUL/tooltip" title="en/XUL/tooltip">tooltip</a></code></li> - <li><code><a href="/en/XUL/tree" title="en/XUL/tree">tree</a></code></li> - <li><code><a href="/en/XUL/treecell" title="en/XUL/treecell">treecell</a></code></li> - <li><code><a href="/en/XUL/treechildren" title="en/XUL/treechildren">treechildren</a></code></li> - <li><code><a href="/en/XUL/treecol" title="en/XUL/treecol">treecol</a></code></li> - <li><code><a href="/en/XUL/treecols" title="en/XUL/treecols">treecols</a></code></li> - <li><code><a href="/en/XUL/treeitem" title="en/XUL/treeitem">treeitem</a></code></li> - <li><code><a href="/en/XUL/treerow" title="en/XUL/treerow">treerow</a></code></li> - <li><code><a href="/en/XUL/treeseparator" title="en/XUL/treeseparator">treeseparator</a></code></li> - <li><code><a href="/en/XUL/triple" title="en/XUL/triple">triple</a></code></li> - <li><code><a href="/en/XUL/vbox" title="en/XUL/vbox">vbox</a></code></li> - <li><code><a href="/en/XUL/where" title="en/XUL/where">where</a></code></li> - <li><code><a href="/en/XUL/window" title="en/XUL/window">window</a></code></li> - <li><code><a href="/en/XUL/wizard" title="en/XUL/wizard">wizard</a></code></li> - <li><code><a href="/en/XUL/wizardpage" title="en/XUL/wizardpage">wizardpage</a></code></li> -</ul> -<h2 id="Lista_por_categoria_de_todos_os_elementos_XUL">Lista por categoria de todos os elementos XUL</h2> -<p>« <a href="https://developer.mozilla.org/docs/en-US/XUL" title="en-US/XUL">Referência XUL</a> «</p> -<h3 id="Windows">Windows</h3> -<h3 id="Estrutura_da_Janela">Estrutura da Janela</h3> -<h3 id="Menus_e_popups">Menus e popups</h3> -<h3 id="Barra_de_Ferramentas">Barra de Ferramentas</h3> -<h3 id="Abas_e_agrupamento">Abas e agrupamento</h3> -<h3 id="Controles">Controles</h3> -<h3 id="Textos_e_imagens">Textos e imagens</h3> -<h3 id="Listas">Listas</h3> -<h3 id="Árvores">Árvores</h3> -<h3 id="Layout">Layout</h3> -<h3 id="Modelos">Modelos</h3> -<h3 id="Scripting">Scripting</h3> -<h3 id="Elementos_auxiliares">Elementos auxiliares</h3> -<h2 id="Other_XUL_lists" name="Other_XUL_lists">Outras listas XUL</h2> -<ol style="list-style-type: square;"> - <li><a href="/en/XUL/dialog" title="en/XUL/dialog">dialog</a></li> - <li><a href="/en/XUL/overlay" title="en/XUL/overlay">overlay</a></li> - <li><a href="/en/XUL/page" title="en/XUL/page">page</a></li> - <li><a href="/en/XUL/window" title="en/XUL/window">window</a></li> - <li><a href="/en/XUL/wizard" title="en/XUL/wizard">wizard</a></li> - <li><a href="/en/XUL/wizardpage" title="en/XUL/wizardpage">wizardpage</a></li> - <li><a href="/en/XUL/preference" title="en/XUL/preference">preference</a></li> - <li><a href="/en/XUL/preferences" title="en/XUL/preferences">preferences</a></li> - <li><a href="/en/XUL/prefpane" title="en/XUL/prefpane">prefpane</a></li> - <li><a href="/en/XUL/prefwindow" title="en/XUL/prefwindow">prefwindow</a></li> - <li><a href="/en/XUL/browser" title="en/XUL/browser">browser</a></li> - <li><a href="/en/XUL/tabbrowser" title="en/XUL/tabbrowser">tabbrowser</a></li> - <li><a href="/en/XUL/editor" title="en/XUL/editor">editor</a></li> - <li><a href="/en/XUL/iframe" title="en/XUL/iframe">iframe</a></li> - <li><a href="/en/XUL/titlebar" title="en/XUL/titlebar">titlebar</a></li> - <li><a href="/en/XUL/resizer" title="en/XUL/resizer">resizer</a></li> - <li><a href="/en/XUL/statusbar" title="en/XUL/statusbar">statusbar</a></li> - <li><a href="/en/XUL/statusbarpanel" title="en/XUL/statusbarpanel">statusbarpanel</a></li> - <li><a href="/en/XUL/dialogheader" title="en/XUL/dialogheader">dialogheader</a></li> - <li><a href="/en/XUL/notification" title="en/XUL/notification">notification</a></li> - <li><a href="/en/XUL/notificationbox" title="en/XUL/notificationbox">notificationbox</a></li> - <li><a href="/en/XUL/menubar" title="en/XUL/menubar">menubar</a></li> - <li><a href="/en/XUL/menu" title="en/XUL/menu">menu</a></li> - <li><a href="/en/XUL/menuitem" title="en/XUL/menuitem">menuitem</a></li> - <li><a href="/en/XUL/menuseparator" title="en/XUL/menuseparator">menuseparator</a></li> - <li><a href="/en/XUL/menupopup" title="en/XUL/menupopup">menupopup</a></li> - <li><a href="/en/XUL/panel" title="en/XUL/panel">panel</a></li> - <li><a href="/en/XUL/tooltip" title="en/XUL/tooltip">tooltip</a></li> - <li><a href="/en/XUL/popupset" title="en/XUL/popupset">popupset</a></li> - <li><a href="/en/XUL/toolbar" title="en/XUL/toolbar">toolbar</a></li> - <li><a href="/en/XUL/toolbarbutton" title="en/XUL/toolbarbutton">toolbarbutton</a></li> - <li><a href="/en/XUL/toolbargrippy" title="en/XUL/toolbargrippy">toolbargrippy</a></li> - <li><a href="/en/XUL/toolbaritem" title="en/XUL/toolbaritem">toolbaritem</a></li> - <li><a href="/en/XUL/toolbarpalette" title="en/XUL/toolbarpalette">toolbarpalette</a></li> - <li><a href="/en/XUL/toolbarseparator" title="en/XUL/toolbarseparator">toolbarseparator</a></li> - <li><a href="/en/XUL/toolbarset" title="en/XUL/toolbarset">toolbarset</a></li> - <li><a href="/en/XUL/toolbarspacer" title="en/XUL/toolbarspacer">toolbarspacer</a></li> - <li><a href="/en/XUL/toolbarspring" title="en/XUL/toolbarspring">toolbarspring</a></li> - <li><a href="/en/XUL/toolbox" title="en/XUL/toolbox">toolbox</a></li> - <li><a href="/en/XUL/tabbox" title="en/XUL/tabbox">tabbox</a></li> - <li><a href="/en/XUL/tabs" title="en/XUL/tabs">tabs</a></li> - <li><a href="/en/XUL/tab" title="en/XUL/tab">tab</a></li> - <li><a href="/en/XUL/tabpanels" title="en/XUL/tabpanels">tabpanels</a></li> - <li><a href="/en/XUL/tabpanel" title="en/XUL/tabpanel">tabpanel</a></li> - <li><a href="/en/XUL/groupbox" title="en/XUL/groupbox">groupbox</a></li> - <li><a href="/en/XUL/caption" title="en/XUL/caption">caption</a></li> - <li><a href="/en/XUL/separator" title="en/XUL/separator">separator</a></li> - <li><a href="/en/XUL/spacer" title="en/XUL/spacer">spacer</a></li> - <li><a href="/en/XUL/button" title="en/XUL/button">button</a></li> - <li><a href="/en/XUL/checkbox" title="en/XUL/checkbox">checkbox</a></li> - <li><a href="/en/XUL/colorpicker" title="en/XUL/colorpicker">colorpicker</a></li> - <li><a href="/en/XUL/datepicker" title="en/XUL/datepicker">datepicker</a></li> - <li><a href="/en/XUL/menulist" title="en/XUL/menulist">menulist</a></li> - <li><a href="/en/XUL/progressmeter" title="en/XUL/progressmeter">progressmeter</a></li> - <li><a href="/en/XUL/radio" title="en/XUL/radio">radio</a></li> - <li><a href="/en/XUL/radiogroup" title="en/XUL/radiogroup">radiogroup</a></li> - <li><a href="/en/XUL/scale" title="en/XUL/scale">scale</a></li> - <li><a href="/en/XUL/splitter" title="en/XUL/splitter">splitter</a></li> - <li><a href="/en/XUL/textbox" title="en/XUL/textbox">textbox</a></li> - <li><a href="/En/XUL/Textbox_(Toolkit_autocomplete)" title="en/XUL/textbox_(Firefox_autocomplete)">textbox (Firefox autocomplete)</a></li> - <li><a href="/En/XUL/Textbox_(XPFE_autocomplete)" title="en/XUL/textbox_(Mozilla_autocomplete)">textbox (Mozilla autocomplete)</a></li> - <li><a href="/en/XUL/timepicker" title="en/XUL/timepicker">timepicker</a></li> - <li><a href="/en/XUL/description" title="en/XUL/description">description</a></li> - <li><a href="/en/XUL/label" title="en/XUL/label">label</a></li> - <li><a href="/en/XUL/image" title="en/XUL/image">image</a></li> - <li><a href="/en/XUL/listbox" title="en/XUL/listbox">listbox</a></li> - <li><a href="/en/XUL/listitem" title="en/XUL/listitem">listitem</a></li> - <li><a href="/en/XUL/listcell" title="en/XUL/listcell">listcell</a></li> - <li><a href="/en/XUL/listcol" title="en/XUL/listcol">listcol</a></li> - <li><a href="/en/XUL/listcols" title="en/XUL/listcols">listcols</a></li> - <li><a href="/en/XUL/listhead" title="en/XUL/listhead">listhead</a></li> - <li><a href="/en/XUL/listheader" title="en/XUL/listheader">listheader</a></li> - <li><a href="/en/XUL/richlistbox" title="en/XUL/richlistbox">richlistbox</a></li> - <li><a href="/en/XUL/richlistitem" title="en/XUL/richlistitem">richlistitem</a></li> - <li><a href="/en/XUL/tree" title="en/XUL/tree">tree</a></li> - <li><a href="/en/XUL/treecell" title="en/XUL/treecell">treecell</a></li> - <li><a href="/en/XUL/treechildren" title="en/XUL/treechildren">treechildren</a></li> - <li><a href="/en/XUL/treecol" title="en/XUL/treecol">treecol</a></li> - <li><a href="/en/XUL/treecols" title="en/XUL/treecols">treecols</a></li> - <li><a href="/en/XUL/treeitem" title="en/XUL/treeitem">treeitem</a></li> - <li><a href="/en/XUL/treerow" title="en/XUL/treerow">treerow</a></li> - <li><a href="/en/XUL/treeseparator" title="en/XUL/treeseparator">treeseparator</a></li> - <li><a href="/en/XUL/box" title="en/XUL/box">box</a></li> - <li><a href="/en/XUL/hbox" title="en/XUL/hbox">hbox</a></li> - <li><a href="/en/XUL/vbox" title="en/XUL/vbox">vbox</a></li> - <li><a href="/en/XUL/bbox" title="en/XUL/bbox">bbox</a></li> - <li><a href="/en/XUL/deck" title="en/XUL/deck">deck</a></li> - <li><a href="/en/XUL/stack" title="en/XUL/stack">stack</a></li> - <li><a href="/en/XUL/grid" title="en/XUL/grid">grid</a></li> - <li><a href="/en/XUL/columns" title="en/XUL/columns">columns</a></li> - <li><a href="/en/XUL/column" title="en/XUL/column">column</a></li> - <li><a href="/en/XUL/rows" title="en/XUL/rows">rows</a></li> - <li><a href="/en/XUL/row" title="en/XUL/row">row</a></li> - <li><a href="/en/XUL/scrollbox" title="en/XUL/scrollbox">scrollbox</a></li> - <li><a href="/en/XUL/action" title="en/XUL/action">action</a></li> - <li><a href="/en/XUL/assign" title="en/XUL/assign">assign</a></li> - <li><a href="/en/XUL/binding" title="en/XUL/binding">binding</a></li> - <li><a href="/en/XUL/bindings" title="en/XUL/bindings">bindings</a></li> - <li><a href="/en/XUL/conditions" title="en/XUL/conditions">conditions</a></li> - <li><a href="/en/XUL/content" title="en/XUL/content">content</a></li> - <li><a href="/en/XUL/member" title="en/XUL/member">member</a></li> - <li><a href="/en/XUL/param" title="en/XUL/param">param</a></li> - <li><a href="/en/XUL/query" title="en/XUL/query">query</a></li> - <li><a href="/en/XUL/queryset" title="en/XUL/queryset">queryset</a></li> - <li><a href="/en/XUL/rule" title="en/XUL/rule">rule</a></li> - <li><a href="/en/XUL/template" title="en/XUL/template">template</a></li> - <li><a href="/en/XUL/textnode" title="en/XUL/textnode">textnode</a></li> - <li><a href="/en/XUL/triple" title="en/XUL/triple">triple</a></li> - <li><a href="/en/XUL/where" title="en/XUL/where">where</a></li> - <li><a href="/en/XUL/script" title="en/XUL/script">script</a></li> - <li><a href="/en/XUL/commandset" title="en/XUL/commandset">commandset</a></li> - <li><a href="/en/XUL/command" title="en/XUL/command">command</a></li> - <li><a href="/en/XUL/broadcaster" title="en/XUL/broadcaster">broadcaster</a></li> - <li><a href="/en/XUL/broadcasterset" title="en/XUL/broadcasterset">broadcasterset</a></li> - <li><a href="/en/XUL/observes" title="en/XUL/observes">observes</a></li> - <li><a href="/en/XUL/key" title="en/XUL/key">key</a></li> - <li><a href="/en/XUL/keyset" title="en/XUL/keyset">keyset</a></li> - <li><a href="/en/XUL/stringbundle" title="en/XUL/stringbundle">stringbundle</a></li> - <li><a href="/en/XUL/stringbundleset" title="en/XUL/stringbundleset">stringbundleset</a></li> - <li><a href="/en/XUL/scrollbar" title="en/XUL/scrollbar">arrowscrollbox</a></li> - <li><a href="/en/XUL/dropmarker" title="en/XUL/dropmarker">dropmarker</a></li> - <li><a href="/en/XUL/grippy" title="en/XUL/grippy">grippy</a></li> - <li><a href="/en/XUL/scrollbar" title="en/XUL/scrollbar">scrollbar</a></li> - <li><a href="/en/XUL/scrollcorner" title="en/XUL/scrollcorner">scrollcorner</a></li> - <li><a href="/en/XUL/spinbuttons" title="en/XUL/spinbuttons">spinbuttons</a></li> -</ol> -<ul> - <li><a href="/en/XUL/Attribute" title="en/XUL/Attribute">Todos os Atributos</a></li> - <li><a href="/en/XUL/Property" title="en/XUL/Property">Todas as Propriedades</a></li> - <li><a href="/en/XUL/Method" title="en/XUL/Method">Todos os Métofos</a></li> - <li><a href="/en/XUL_element_attributes" title="en/XUL_element_attributes">Atributos definidos para todos os elemetos XUL</a></li> - <li><a href="/en/XUL/Style" title="en/XUL/Style">Classes de Estilo</a></li> - <li><a href="/en/XUL/Events" title="en/XUL/Events">Eventos Manuais</a></li> - <li><a href="/en/XUL/Deprecated_and_defunct_markup" title="en/XUL/Deprecated//Defunct_Markup">Obsoleto/Markup</a> <a href="/en/XUL/Deprecated_and_defunct_markup" title="en/XUL/Deprecated//Defunct_Markup">Extinta</a></li> -</ul> diff --git a/files/pt-br/archive/mozilla/xulrunner/index.html b/files/pt-br/archive/mozilla/xulrunner/index.html deleted file mode 100644 index 7ae61e0398..0000000000 --- a/files/pt-br/archive/mozilla/xulrunner/index.html +++ /dev/null @@ -1,84 +0,0 @@ ---- -title: XULRunner -slug: Archive/Mozilla/XULRunner -translation_of: Archive/Mozilla/XULRunner ---- -<div class="callout-box"> - <strong><a href="/en-US/docs/Getting_started_with_XULRunner" title="Getting_started_with_XULRunner">Começando com o XULRunner</a></strong><br> - Uma breve introduçao ao XULRunner.</div> -<div> - <strong>XULRunner</strong> é um ambiente de execução fornecido pela Mozilla que pode ser utilizado para inicializar aplicações <a href="/en-US/docs/XUL" title="XUL">XUL</a>+<a href="/en-US/docs/XPCOM" title="XPCOM">XPCOM</a> com interfaces ricas como do Firefox e Thunderbird. Ele provê mecanismos para instalação, atualização e desinstalação de aplicações. XULRunner também fornece a libxul, uma solução que permite embarcar tecnologias da Mozilla em outros projetos e produtos.</div> -<table class="topicpage-table"> - <tbody> - <tr> - <td> - <h2 id="Releases" name="Releases">Lançamentos</h2> - <div class="note"> - <p>XULRunner 22.0 foi lançado e pode ser baixado em <a class="external" href="http://ftp.mozilla.org/pub/mozilla.org/xulrunner/releases/" title="http://ftp.mozilla.org/pub/mozilla.org/xulrunner/releases/">ftp.mozilla.org</a>. Leia as <a class="internal" href="/en-US/docs/XULRunner_1.9.2_Release_Notes" title="XULRunner 1.9.2 Release Notes">notas de lançamento</a> para instalação, desinstalação e outras informações.</p> - <p>Firefox 3 e versões recentes trazem um pacote privado do XULRunner, que pode rodar qualquer aplicação compatível com XULRunner usando <code>-app</code> switch.</p> - <p><a href="/en-US/docs/XULRunner/Old_Releases" title="XULRunner/Old_Releases">Compilações antigas </a>também estão disponíveis.</p> - </div> - <h2 id="Overview" name="Overview">Visão geral</h2> - <ul> - <li>{{ interwiki('wikimo', 'XULRunner', 'Plano de Desenvolvimento') }}</li> - <li><a href="/en-US/docs/XULRunner/What_XULRunner_Provides" title="XULRunner/What_XULRunner_Provides">O que XULRunner proporciona</a></li> - <li><a href="/en-US/docs/XULRunner_FAQ" title="XULRunner_FAQ">XULRunner FAQ</a></li> - <li>Nightly builds: <a class="external" href="http://ftp.mozilla.org/pub/mozilla.org/xulrunner/nightly/latest-trunk/">unstable-trunk</a></li> - </ul> - <h2 class="Documentation" id="Documentation" name="Documentation">DocumentaÇÃO</h2> - <dl> - <dt> - <a href="/en-US/docs/Getting_started_with_XULRunner" title="Getting_started_with_XULRunner">Iniciando com XULRunner</a></dt> - <dd> - Breve tutorial sobre desenvolvimento de aplicações desktop com XULRunner.</dd> - <dt> - <a href="/en-US/docs/XUL_Tutorial" title="XUL Tutorial">Tutorial XUL</a></dt> - <dd> - Assim que você tiver uma aplicação XULRunner em funcionamento, utilize o tutorial XUL para expandí-la em uma fantástica aplicação XUL.</dd> - <dt> - <a href="/en-US/docs/XULRunner_tips" title="XULRunner_tips">Dicas XULRunner</a></dt> - <dd> - Uma coleção de dicas para trabalhar com o XULRunner.</dd> - <dt> - <a href="/en-US/docs/XULRunner/Deploying_XULRunner_1.8" title="XULRunner/Deploying_XULRunner_1.8">Deploy com XULRunner</a></dt> - <dd> - Uma introdução em como empacotar sua aplicação com XULRunner.</dd> - <dt> - <a href="/en-US/docs/XULRunner_Hall_of_Fame" title="XULRunner_Hall_of_Fame">Hall da Fama do XULRunner</a></dt> - <dd> - Siga todas as aplicações baseadas em XULRunner disponíveis.</dd> - <dt> - <a href="/en-US/docs/Developer_Guide/Build_Instructions" title="Build_Documentation">Documentação para build</a></dt> - <dd> - Aprenda como obter os códigos-fonte e efetuar o build.</dd> - <dt> - <a href="/en-US/docs/Debugging_a_XULRunner_Application" title="Debugging_a_XULRunner_Application">Documentação de Debug</a></dt> - <dd> - Etapas para configurar Venkman para debugar sua aplicação</dd> - <dt> - <a class="external" href="http://zenit.senecac.on.ca/wiki/index.php/XULRunner_Guide">Guia XULRunner</a></dt> - <dd> - Introdução e tutorial bastante completos, porém desatualizados para o XULRunner, que agregam grande parte da documentação encontrada aqui.</dd> - </dl> - <p><span class="alllinks"><a href="/en-US/docs/tag/XULRunner" title="tag/XULRunner">Ver todos...</a></span></p> - </td> - <td> - <h2 class="Community" id="Community" name="Community">COMUNIDADE</h2> - <ul> - <li>Ver fóruns da Mozilla... {{ DiscussionList("dev-platform", "mozilla.dev.platform") }}</li> - <li><a class="link-irc" href="irc://irc.mozilla.org/#xulrunner">#xulrunner no irc.mozilla.org</a></li> - <li><a href="/en-US/docs/XULRunner/Community" title="XULRunner/Community">Outros links da comunidade...</a></li> - </ul> - <h2 class="Related_Topics" id="Related_Topics" name="Related_Topics">TÓPICOS RELACIONADOS</h2> - <ul> - <li><a href="/en-US/docs/XUL" title="XUL">XUL</a></li> - </ul> - <h2 id="See_also" name="See_also">Ver também</h2> - <ul> - <li><a class="external" href="http://www.kodewerx.org/wiki/A_Brief_Introduction_To_XULRunner:_Part_1" title="http://www.kodewerx.org/wiki/A_Brief_Introduction_To_XULRunner:_Part_1">Uma breve introdução ao XULRunner</a></li> - </ul> - </td> - </tr> - </tbody> -</table> -<p> </p> diff --git a/files/pt-br/archive/security/index.html b/files/pt-br/archive/security/index.html deleted file mode 100644 index 74823c8f52..0000000000 --- a/files/pt-br/archive/security/index.html +++ /dev/null @@ -1,14 +0,0 @@ ---- -title: Security -slug: Archive/Security -tags: - - NeedsTranslation - - TopicStub -translation_of: Archive/Security ---- -<p><strong><span class="seoSummary">Relying on these obsolete security articles is highly discouraged. Doing so may put your systems at risk.</span></strong></p> - -<div class="row topicpage-table"> - <div class="section"><dl><dl><dt class="landingPageList"><a href="/en-US/docs/Archive/Security/Digital_Signatures">Digital Signatures</a></dt><dd class="landingPageList">Encryption and decryption address the problem of eavesdropping, one of the three Internet security issues mentioned at the beginning of this document. But encryption and decryption, by themselves, do not address another problem: tampering.</dd><dt class="landingPageList"><a href="/en-US/docs/Archive/Security/Encryption_and_Decryption">Encryption and Decryption</a></dt><dd class="landingPageList">Encryption is the process of transforming information so it is unintelligible to anyone but the intended recipient. Decryption is the process of transforming encrypted information so that it is intelligible again.</dd><dt class="landingPageList"><a href="/en-US/docs/Archive/Security/Introduction_to_Public-Key_Cryptography">Introduction to Public-Key Cryptography</a></dt><dd class="landingPageList">Public-key cryptography and related standards and techniques underlie the security features of many products such as signed and encrypted email, single sign-on, and Secure Sockets Layer (SSL) communications. This document introduces the basic concepts of public-key cryptography. For an overview of SSL, see "<a href="/en/Introduction_to_SSL" title="en/Introduction_to_SSL">Introduction to SSL</a>." For an overview of encryption and decryption, see "<a href="/en-US/docs/Encryption_and_Decryption">Encryption and Decryption</a>." Information on digital signatures is available from "<a href="/en-US/docs/Digital_Signatures">Digital Signatures</a>."</dd></dl></dl></div> - <div class="section"><dl><dt class="landingPageList"><a href="/en-US/docs/Archive/Security/Introduction_to_SSL">Introduction to SSL</a></dt><dd class="landingPageList">This document introduces the Secure Sockets Layer (SSL) protocol. SSL has been universally accepted on the World Wide Web for authenticated and encrypted communication between clients and servers.</dd><dt class="landingPageList"><a href="/en-US/docs/Archive/Security/NSPR_engineering_guide">NSPR Release Engineering Guide</a></dt><dd class="landingPageList">This paper is for engineers performing formal release for the NetScape Portable Runtime (NSPR) across all platforms.</dd><dt class="landingPageList"><a href="/en-US/docs/Archive/Security/SSL_and_TLS">SSL and TLS</a></dt><dd class="landingPageList">The Secure Sockets Layer (SSL) and Transport Layer Security (TLS) protocols are universally accepted standards for authenticated and encrypted communication between clients and servers. Both client and server authentication occur over SSL/TLS.</dd></dl></div> - </div> diff --git a/files/pt-br/archive/security/vulnerabilidades/index.html b/files/pt-br/archive/security/vulnerabilidades/index.html deleted file mode 100644 index 9f8b340b62..0000000000 --- a/files/pt-br/archive/security/vulnerabilidades/index.html +++ /dev/null @@ -1,101 +0,0 @@ ---- -title: Vulnerabilidades -slug: Archive/Security/Vulnerabilidades -tags: - - Iniciante - - Segurança - - Segurança web - - Tutorial - - Vulnerabilidades -translation_of: Archive/Security/Vulnerabilities ---- -<div class="summary"> -<p>Este artigo explica sobre vulnerabilidades, explicando como eles são e como estão presentes em todos os sistemas.</p> -</div> - -<p>A vulnerabilidade é uma fraqueza em um sistema que pode ser explorado para impactar negativamente a confidencialidade, integridade e/ou disponibilidade.</p> - -<p>Existem algumas maneiras que as vulnerabilidades são categorizadas. Este artigo descreve três categorias de vulnerabilidades de alto-nível: falhas de software, problemas de configurações de segurança e uso indevido de recursos de software. Estas categorias estão descritas abaixo.</p> - -<h2 id="Categorias_de_Vulnerabilidades">Categorias de Vulnerabilidades</h2> - -<p>Uma <em>vulnerabilidade por falha de software</em> é causada por um erro não intencional no design ou codificação do software.Um exemplo é um erro na validação do dado de entrada, como uma informação preenchida pelo usuário não sendo adequadamente validada para verificação de strings com caracteres maliciosos e um valor de entrada muito longo que é associado com ataques conhecidos. Outro exemplo é um erro de "condição de corrida" ou "condição de concorrência" que permite que o invasor execute uma ação específica com privilégios elevados.</p> - -<p>A security configuration setting is an element of a software’s security that can be altered through the software itself. Examples of settings are an operating system offering access to control lists that set the privileges that users have for files, and an application offering a setting to enable or disable the encryption of sensitive data stored by the application.</p> - -<p>A<em> security configuration issue vulnerability</em> involves the use of security configuration settings that negatively affect the security of the software.</p> - -<p>A software feature is a functional capability provided by software. A <em>software feature misuse vulnerability</em> is a vulnerability in which the feature also provides an avenue to compromise the security of a system. These vulnerabilities are caused by the software designer making trust assumptions that permit the software to provide beneficial features, while also introducing the possibility of someone violating the trust assumptions to compromise security.</p> - -<p>For example, email client software may contain a feature that renders HTML content in email messages. An attacker could craft a fraudulent email message that contains hyperlinks that, when rendered in HTML, appear to the recipient to be benign but actually take the recipient to a malicious web site when they are clicked on. One of the trust assumptions in the design of the HTML content rendering feature was that users would not receive malicious hyperlinks and click on them.</p> - -<p>Software feature misuse vulnerabilities are introduced during the design of the software or a component of the software (e.g., a protocol that the software implements). Trust assumptions may have been explicit—for example, a designer being aware of a security weakness and determining that a separate security control would compensate for it.</p> - -<p>However, trust assumptions are often implicit, such as creating a feature without first evaluating the risks it would introduce. Threats may also change over the lifetime of software or a protocol used in software.</p> - -<p>For example, the Address Resolution Protocol (ARP) trusts that an ARP reply contains the correct mapping between Media Access Control (MAC) and <a href="/en-US/docs/Glossary/IP_Address">Internet Protocol</a> (IP) addresses. The ARP cache uses that information to provide a useful service—to enable sending data between devices within a local network. However, an attacker could generate false ARP messages to poison a system’s ARP table and thereby launch a denial-of-service or a man-in-the-middle attack.</p> - -<p>The ARP protocol was standardized over 25 years ago, and threats have changed a great deal since then, so the trust assumptions inherent in its design then are unlikely to still be reasonable today.</p> - -<p>It may be hard to differentiate software feature misuse vulnerabilities from the other two categories. For example, both software flaws and misuse vulnerabilities may be caused by deficiencies in software design processes. However, software flaws are purely negative—they provide no positive benefit to security or functionality—while software feature misuse vulnerabilities occur as a result of providing additional features.</p> - -<p>There may also be confusion regarding misuse vulnerabilities for features that can be enabled or disabled—in a way, configured—versus security configuration issues. The key difference is that for a misuse vulnerability, the configuration setting enables or disables the entire feature and does not specifically alter just its security; for a security configuration issue vulnerability, the configuration setting alters only the software’s security.</p> - -<p>For example, a setting that disables all use of HTML in emails has a significant impact on both security and functionality, so a vulnerability related to this setting would be a misuse vulnerability. A setting that disables the use of an antiphishing feature in an email client has a significant impact on only security, so a vulnerability with that setting would be considered a security configuration issue vulnerability.</p> - -<h2 id="A_presença_de_Vulnerabilidades">A presença de Vulnerabilidades</h2> - -<p>No system is 100% secure: every system has vulnerabilities. At any given time, a system may not have any known software flaws, but security configuration issues and software feature misuse vulnerabilities are always present.</p> - -<p>Misuse vulnerabilities are inherent in software features because each feature must be based on trust assumptions—and those assumptions can be broken, albeit involving significant cost and effort in some cases. Security configuration issues are also unavoidable for two reasons.</p> - -<p>First, many configuration settings increase security at the expense of reducing functionality, so using the most secure settings could make the software useless or unusable. Second, many security settings have both positive and negative consequences for security.</p> - -<p>An example is the number of consecutive failed authentication attempts to permit before locking out a user account. Setting this to 1 would be the most secure setting against password guessing attacks, but it would also cause legitimate users to be locked out after mistyping a password once, and it would also permit attackers to perform denial-of-service attacks against users more easily by generating a single failed login attempt for each user account.</p> - -<p>Because of the number of vulnerabilities inherent in security configuration settings and software feature misuse possibilities, plus the number of software flaw vulnerabilities on a system at any given time, there may be dozens or hundreds of vulnerabilities on a single system.</p> - -<p>These vulnerabilities are likely to have a wide variety of characteristics. Some will be very easy to exploit, while others will only be exploitable under a combination of highly unlikely conditions.</p> - -<p>One vulnerability might provide root-level access to a system, while another vulnerability might only permit read access to an insignificant file.</p> - -<p>Ultimately, organizations need to know how difficult it is for someone to exploit each vulnerability and, if a vulnerability is exploited, what the possible impact would be.</p> - -<h2 id="Vulnerabilidades_do_Website">Vulnerabilidades do Website</h2> - -<p>OWASP or Open Web Security Project is a non-profit charitable organization focused on improving the security of software and web applications. According to the Open Web Application Security Project, XSS was the <a class="external external-icon" href="https://www.owasp.org/images/7/72/OWASP_Top_10-2017_%28en%29.pdf.pdf" rel="noopener">seventh most common Web app vulnerability</a> in 2017.</p> - -<p>The organization publishes a list of top web security vulnerabilities based on the data from various security organizations.</p> - -<p>The <a href="/en-US/docs/Web/Security">web security</a> vulnerabilities are prioritized depending on exploitability, detectability and impact on software which can be any CMS such as WordPress, Joomla, Magento, Wocommerce and more.</p> - -<p><span class="hs_cos_wrapper hs_cos_wrapper_meta_field hs_cos_wrapper_type_rich_text">Here are six of the most common website vulnerabilities you must protect yourself against.</span></p> - -<p>1. SQL Injections<br> - 2. <a href="/en-US/docs/Glossary/Cross-site_scripting">Cross Site Scripting (XSS)</a><br> - 3. Broken Authentication & Session Management -<a href="https://developer.mozilla.org/en-US/docs/Archive/IdentityManager"> IdentityManager</a><br> - 4. Insecure Direct Object References -<a href="https://developer.mozilla.org/en-US/docs/Glossary/DOM"> DOM (Document Object Model)</a><br> - 5. Security Misconfiguration<br> - 6. <a href="/en-US/docs/Glossary/CSRF">Cross-Site Request Forgery (CSRF) </a></p> - -<h2 id="Veja_também">Veja também</h2> - -<ul> - <li><a class="external" href="https://www.owasp.org/">Open Web Application Security Project (OWASP)</a></li> - <li><a href="https://cve.mitre.org/">Vulnerabilidades e Exposições comuns (CVE)</a></li> - <li><a href="https://secure.wphackedhelp.com/blog/wordpress-vulnerabilities-how-to-fix-guide-tools/">Vulnerabilidades comuns de segurança do Wordpress</a></li> - <li><a href="https://en.wikipedia.org/wiki/Vulnerability_database">Vulnerabilidade de Banco de Dados</a></li> -</ul> - -<div class="originaldocinfo"> -<h3 id="Original_Document_Information" name="Original_Document_Information">Informação do Documento Original</h3> - -<ul> - <li>Autor(es): Elizabeth LeMay, Karen Scarfone, and Peter Mell</li> - <li>Título: National Institute of Standards and Technology (NIST) Interagency Report 7864, The Common Misuse Scoring System (CMSS): Metrics for Software Feature Misuse Vulnerabilities</li> - <li>Data da ultima atualização: Julho de 2012</li> - <li>Direitos Autorais: Este documento não foi submetido para direitos autorais.</li> -</ul> -</div> - -<p>{{QuickLinksWithSubpages("/en-US/docs/Web/Security")}}</p> diff --git a/files/pt-br/archive/web/index.html b/files/pt-br/archive/web/index.html deleted file mode 100644 index f27027ff8d..0000000000 --- a/files/pt-br/archive/web/index.html +++ /dev/null @@ -1,19 +0,0 @@ ---- -title: Archived open Web documentation -slug: Archive/Web -tags: - - Archive - - Archived - - NeedsTranslation - - TopicStub - - Web -translation_of: Archive/Web ---- -<p></p><div class="overheadIndicator obsolete obsoleteHeader"><p><strong><span title="This is an obsolete API and is no longer guaranteed to work."><i class="icon-trash"> </i></span> Obsolete</strong><br>This feature is obsolete. Although it may still work in some browsers, its use is discouraged since it could be removed at any time. Try to avoid using it.</p></div><p></p> - -<p>The documentation listed below is archived, obsolete material about open Web topics.</p> - -<p></p><div class="row topicpage-table"> - <div class="section"><dl><dl><dt class="landingPageList"><a href="/en-US/docs/Archive/Web/Talk:CSS_background-size">background-size</a></dt><dd class="landingPageList">Should not the "Browser compatibility" table also list Google Chrome and Konqueror? Chome is not mentioned at all, but is becoming increasingly popular. Konqueror is listed <em>below</em> the table, which seems inconsistent. <a href="/User:Znerd" rel="custom nofollow">Znerd</a> 04 August 2009</dd><dt class="landingPageList"><a href="/en-US/docs/Archive/Web/Browser_Detection_and_Cross_Browser_Support">Browser Detection and Cross Browser Support</a></dt><dd class="landingPageList">Improper browser detection can lead to web maintenance nightmares. Rethinking the basics of when and how to detect user agents is crucial to creating maintainable, cross browser web content. This article reviews several approaches to browser detection, their usefulness in specific circumstances to arrive at a common sense approach to browser detection.</dd><dt class="landingPageList"><a href="/en-US/docs/Archive/Web/Browser_feature_detection">Browser Feature Detection</a></dt><dd class="landingPageList"><span class="comment">Summary: An experimental approach to discovering degree of support for Standards</span></dd><dt class="landingPageList"><a href="/en-US/docs/Archive/Web/Displaying_notifications_(deprecated)">Displaying notifications (deprecated)</a></dt><dd class="landingPageList">Firefox offers support for "desktop notifications"; these are notifications that are displayed to the user outside the context of the web content, using the standard notification system provided by the operating system.</dd><dt class="landingPageList"><a href="/en-US/docs/Archive/Web/E4X">E4X</a></dt><dd class="landingPageList"><strong>ECMAScript for XML</strong> (<strong>E4X</strong>) is a programming language extension that adds native XML support to <a href="/en-US/docs/JavaScript" title="JavaScript">JavaScript</a>. It does this by providing access to the XML document in a form that feels natural for ECMAScript programmers. The goal is to provide an alternative, simpler syntax for accessing XML documents than via <a href="/en-US/docs/DOM" title="DOM">DOM</a> interfaces. A valid alternative to E4X is a non-native <a href="/en-US/docs/JXON" title="JXON">JXON algorithm</a>.</dd><dt class="landingPageList"><a href="/en-US/docs/Archive/Web/E4X_tutorial">E4X Tutorial</a></dt><dd class="landingPageList">This tutorial walks you through the basic syntax of <strong>E4X (ECMAScript for XML)</strong>. With E4X, programmers can manipulate an <a href="/en-US/docs/XML" title="XML">XML</a> document with a syntax more familiar to <a href="/en-US/docs/JavaScript" title="JavaScript">JavaScript</a> programming.</dd><dt class="landingPageList"><a href="/en-US/docs/Archive/Web/Talk:JavaScript_Reference_Global_Objects_Array_forEach">forEach</a></dt><dd class="landingPageList">Ok, in the end I didn't remove the old code as it isn't hosted anywhere (I thought the github reference contained the code) but inserted a faster implementation above while retaining the rest of the document.</dd><dt class="landingPageList"><a href="/en-US/docs/Archive/Web/Iterator">Iterator</a></dt><dd class="landingPageList">The <code><strong>Iterator</strong></code> function returns an object which implements legacy iterator protocol and iterates over enumerable properties of an object.</dd><dt class="landingPageList"><a href="/en-US/docs/Archive/Web/LiveConnect">LiveConnect</a></dt><dd class="landingPageList">(Please update or remove as needed.)</dd><dt class="landingPageList"><a href="/en-US/docs/Archive/Web/MSX_Emulator_(jsMSX)">MSX Emulator (jsMSX)</a></dt><dd class="landingPageList"></dd><dt class="landingPageList"><a href="/en-US/docs/Archive/Web/Old_Proxy_API">Old Proxy API</a></dt><dd class="landingPageList">Proxies are objects for which the programmer has to define the semantics in JavaScript. The default object semantics are implemented in the JavaScript engine, often written in lower-level languages like C++. Proxies let the programmer define most of the behavior of an object in JavaScript. They are said to provide a <strong>meta-programming API</strong>.</dd><dt class="landingPageList"><a href="/en-US/docs/Archive/Web/ParallelArray">ParallelArray</a></dt><dd class="landingPageList">The goal of <strong><code>ParallelArray</code></strong> was to enable data-parallelism in web applications. The higher-order functions available on <code>ParallelArray</code> attempted to execute in parallel, though they may fall back to sequential execution if necessary. To ensure that your code executes in parallel, it is suggested that the functions should be limited to the <a href="http://smallcultfollowing.com/babysteps/blog/2013/04/30/parallelizable-javascript-subset/">parallelizable subset of JS that Firefox supports</a>.</dd></dl></dl></div> - <div class="section"><dl><dt class="landingPageList"><a href="/en-US/docs/Archive/Web/Properly_Using_CSS_and_JavaScript_in_XHTML_Documents_">Properly Using CSS and JavaScript in XHTML Documents</a></dt><dd class="landingPageList"><a class="external" href="http://www.w3.org/TR/xhtml1">XHTML™ 1.0 The Extensible HyperText Markup Language (Second Edition)</a> defines XHTML to be a reformulation of HTML 4 as an XML 1.0 application.</dd><dt class="landingPageList"><a href="/en-US/docs/Archive/Web/Talk:JavaScript_Reference">Reference</a></dt><dd class="landingPageList">The guide section links to an interesting document discussing how to create and use private variables in objects, which is great if you want to protect the various properties within an object from being poked at accidentally. I also just read a document on proper inheritance using apply(). Well if you combine the two, you can have inherited private variables:</dd><dt class="landingPageList"><a href="/en-US/docs/Archive/Web/Scope_Cheatsheet">Scope Cheatsheet</a></dt><dd class="landingPageList">JavaScript with Mozilla extensions has both function-scoped <strong><code>var</code></strong>s and block-scoped <strong><code>let</code></strong>s. Along with hoisting and dynamic behavior, scope in JavaScript is sometimes surprising.</dd><dt class="landingPageList"><a href="/en-US/docs/Archive/Web/Server-Side_JavaScript">Server-Side JavaScript</a></dt><dd class="landingPageList">Here's a radical idea: Use one language to write entire Web apps -- the same language which billions of web pages already use, every day.</dd><dt class="landingPageList"><a href="/en-US/docs/Archive/Web/Sharp_variables_in_JavaScript">Sharp variables in JavaScript</a></dt><dd class="landingPageList">A sharp variable is a syntax in object initializers that allows serialization of objects that have cyclic references or multiple references to the same object.</dd><dt class="landingPageList"><a href="/en-US/docs/Archive/Web/Standards-Compliant_Authoring_Tools">Standards-Compliant Authoring Tools</a></dt><dd class="landingPageList">Creating cross-browser code upfront will save you lots of time quality testing your web content. The following authoring tools adhere to the W3 standards. If you're using older versions of tools that rely on old browser bugs or generate browser-specific code, it may be time to upgrade:</dd><dt class="landingPageList"><a href="/en-US/docs/Archive/Web/StopIteration">StopIteration</a></dt><dd class="landingPageList">The <code><strong>StopIteration</strong></code> object was used to tell the end of the iteration in the legacy iterator protocol. Do not use this ancient feature.</dd><dt class="landingPageList"><a href="/en-US/docs/Archive/Web/Styling_the_Amazing_Netscape_Fish_Cam_Page">Styling the Amazing Netscape Fish Cam Page</a></dt><dd class="landingPageList"></dd><dt class="landingPageList"><a href="/en-US/docs/Archive/Web/IndexedDB_API_Using_JavaScript_Generators_in_Firefox">Using JavaScript Generators in Firefox</a></dt><dd class="landingPageList">Generators can be used to simplify asynchronous code in Firefox by opting in to using JavaScript version 1.7 or later. You can opt in in HTML as follows:</dd><dt class="landingPageList"><a href="/en-US/docs/Archive/Web/Window.importDialog">Window.importDialog()</a></dt><dd class="landingPageList">Because opening windows on mobile isn't necessarily appropriate, the Firefox Mobile team designed the <code>importDialog()</code> method to replace <a href="/en-US/docs/Web/API/Window/openDialog" title="window.openDialog() is an extension to window.open(). It behaves the same, except that it can optionally take one or more parameters past windowFeatures, and windowFeatures itself is treated a little differently."><code>window.openDialog()</code></a>. Instead of opening a new window, it merges the specified XUL dialog into the main window.</dd><dt class="landingPageList"><a href="/en-US/docs/Archive/Web/Writing_JavaScript_for_HTML">Writing JavaScript for XHTML</a></dt><dd class="landingPageList">Technical review completed. Editorial review completed.</dd><dt class="landingPageList"><a href="/en-US/docs/Archive/Web/XForms">XForms</a></dt><dd class="landingPageList"><strong>XForms</strong> were envisioned as the future of online forms as envisioned by the W3C. Drawing on other W3C standards like <a href="/en/XML_Schema" title="en/XML_Schema">XML Schema</a>, <a href="/en/XPath" title="en/XPath">XPath</a>, and <a href="/en/XML_Events" title="en/XML_Events">XML Events</a>, XForms tried to address some of the limitations of the current <a href="/en/HTML" title="en/HTML">HTML</a> forms model. However, XForms never gained traction and is now considered obsolete.</dd></dl></div> - </div><p></p> diff --git a/files/pt-br/archive/web/javascript/funcao_generator_legada/index.html b/files/pt-br/archive/web/javascript/funcao_generator_legada/index.html deleted file mode 100644 index 71ffdffa31..0000000000 --- a/files/pt-br/archive/web/javascript/funcao_generator_legada/index.html +++ /dev/null @@ -1,52 +0,0 @@ ---- -title: "Função generator\_legada" -slug: Archive/Web/JavaScript/Funcao_generator_legada -translation_of: Archive/Web/JavaScript/Legacy_generator_function ---- -<div class="warning">A expressão de função generator legada é um recurso específico de SpiderMonkey, e será removida em algum ponto. Para usos voltados para o futuro, considere usar a {{jsxref("Operators/function*", "expressão function*")}}.</div> - -<div>{{jsSidebar("Operators")}}</div> - -<p>A palavra-chave <strong><code>function</code></strong> pode ser usada para definir uma função generator legada dentro de uma expressão. Para fazer de uma função um generator legado, o corpo da expressão deve ter pelo menos uma expressão {{jsxref("Operators/yield", "yield")}}.</p> - -<h2 id="Sintaxe">Sintaxe</h2> - -<pre class="syntaxbox">function [<em>nome</em>]([<em>param1</em>[, <em>param2[</em>, ..., <em>paramN</em>]]]) { - <em>declarações</em> -}</pre> - -<h3 id="Parâmetros">Parâmetros</h3> - -<dl> - <dt><code>nome</code></dt> - <dd>O nome da função. Pode ser omitido, no caso da função ser anônima. O nome é local apenas para o corpo da função.</dd> - <dt><code>paramN</code></dt> - <dd>O nome de um argumento para ser passado para a função. Uma função pode ter até 255 argumentos.</dd> - <dt><code>declarações</code></dt> - <dd>As declarações que compõem o corpo da função. Essas devem conter pelo menos uma expressão {{jsxref("Operators/yield", "yield")}}.</dd> -</dl> - -<h2 id="Descrição">Descrição</h2> - -<p>Uma visão geral do uso está disponível na página <a href="/en-US/docs/JavaScript/Guide/Iterators_and_Generators">Iterators e Generators</a>.</p> - -<h2 id="Compatibilidade_de_navegadores">Compatibilidade de navegadores</h2> - -<p>Supported nowhere.</p> - -<h2 id="Veja_também">Veja também</h2> - -<ul> - <li>{{jsxref("Generator")}}</li> - <li><a href="/en-US/docs/Web/JavaScript/Reference/Statements/Legacy_generator_function">The legacy generator function</a></li> - <li><a href="/en-US/docs/Web/JavaScript/Guide/The_legacy_Iterator_protocol">The legacy Iterator protocol</a></li> - <li>{{jsxref("Operators/yield", "yield")}}</li> - <li><a href="/en-US/docs/Web/JavaScript/Reference/Functions_and_function_scope">Functions and function scope</a></li> - <li>{{jsxref("Statements/function", "function")}}</li> - <li>{{jsxref("Operators/function", "function expression")}}</li> - <li>{{jsxref("Function")}}</li> - <li>{{jsxref("Statements/function*", "function*")}}</li> - <li>{{jsxref("Operators/function*", "function* expression")}}</li> - <li>{{jsxref("GeneratorFunction")}}</li> - <li><a href="/en-US/docs/Web/JavaScript/Guide/The_Iterator_protocol">The Iterator protocol</a></li> -</ul> diff --git a/files/pt-br/archive/web/javascript/generator_function_legada_statement/index.html b/files/pt-br/archive/web/javascript/generator_function_legada_statement/index.html deleted file mode 100644 index b8400139ca..0000000000 --- a/files/pt-br/archive/web/javascript/generator_function_legada_statement/index.html +++ /dev/null @@ -1,65 +0,0 @@ ---- -title: Generator function legada -slug: Archive/Web/JavaScript/Generator_function_legada_statement -tags: - - Iterator Legado - - JavaScript - - Legacy Iterator - - Reference - - Referencia -translation_of: Archive/Web/JavaScript/Legacy_generator_function_statement ---- -<div class="warning">A expressão de função generator legada é um recurso específico SpiderMonkey, e será removida em algum ponto. Para usos voltados para o futuro, considere usar a {{jsxref("Statements/function*", "function*")}}.</div> - -<div>{{jsSidebar("Statements")}}</div> - -<p>O <strong>declação de generator function legada</strong> declara uma generator function legada com os parâmetros específicos.</p> - -<p>Você também pode definir funções usando o construtor {{jsxref("Function")}} com <code>functionBody</code> e pelo menos uma expressão {{jsxref("Operators/yield", "yield")}}, e uma {{jsxref("Operators/Legacy_generator_function", "expressão generator function legada", "", 1)}}.</p> - -<h2 id="Sintaxe">Sintaxe</h2> - -<pre class="syntaxbox">function <em>nome</em>([<em>param</em>,[, <em>param</em>,[..., <em>param</em>]]]) { - [<em>declarações</em>] -} -</pre> - -<dl> - <dt><code>nome</code></dt> - <dd>O nome da função.</dd> -</dl> - -<dl> - <dt><code>param</code></dt> - <dd>O nome de um argumento que vai ser passado para a função, uma função pode ter até 255 argumentos.</dd> -</dl> - -<dl> - <dt><code>declarações</code></dt> - <dd>As declarações que compõem o corpo da função. Isso pode conter pelo menos uma expressão {{jsxref("Operators/yield", "yield")}}.</dd> -</dl> - -<h2 id="Descrição">Descrição</h2> - -<p>Uma visão geral do uso está disponível na página <a href="/en-US/docs/JavaScript/Guide/Iterators_and_Generators">Iterators e Generators</a>.</p> - -<h2 id="Compatibilidade_de_navegadores">Compatibilidade de navegadores</h2> - -<p>Supported nowhere.</p> - -<h2 id="Veja_também">Veja também</h2> - -<ul> - <li>{{jsxref("Generator")}}</li> - <li><a href="/en-US/docs/Web/JavaScript/Reference/Operators/Legacy_generator_function">A expressão de generator function legada</a></li> - <li><a href="/en-US/docs/Web/JavaScript/Guide/The_legacy_Iterator_protocol">O protocolo Iterator legado</a></li> - <li>{{jsxref("Operators/yield", "yield")}}</li> - <li><a href="/en-US/docs/Web/JavaScript/Reference/Functions_and_function_scope">Funções e escopo de função</a></li> - <li>{{jsxref("Statements/function", "function")}}</li> - <li>{{jsxref("Operators/function", "function expression")}}</li> - <li>{{jsxref("Function")}}</li> - <li>{{jsxref("Statements/function*", "function*")}}</li> - <li>{{jsxref("Operators/function*", "function* expression")}}</li> - <li>{{jsxref("GeneratorFunction")}}</li> - <li><a href="/en-US/docs/Web/JavaScript/Guide/The_Iterator_protocol">O protocolo Iterator</a></li> -</ul> diff --git a/files/pt-br/archive/web/javascript/index.html b/files/pt-br/archive/web/javascript/index.html deleted file mode 100644 index 4687b7bf23..0000000000 --- a/files/pt-br/archive/web/javascript/index.html +++ /dev/null @@ -1,12 +0,0 @@ ---- -title: JavaScript -slug: Archive/Web/JavaScript -translation_of: Archive/Web/JavaScript ---- -<div class="hidden">{{JSRef}}</div> - -<p>{{Obsolete_Header}}</p> - -<p class="summary">Obsolete JavaScript features and unmaintained docs</p> - -<p>{{SubpagesWithSummaries}}</p> diff --git a/files/pt-br/archive/web/javascript/microsoft_extensions/date.getvardate/index.html b/files/pt-br/archive/web/javascript/microsoft_extensions/date.getvardate/index.html deleted file mode 100644 index 6c50801768..0000000000 --- a/files/pt-br/archive/web/javascript/microsoft_extensions/date.getvardate/index.html +++ /dev/null @@ -1,40 +0,0 @@ ---- -title: Date.getVarDate() -slug: Archive/Web/JavaScript/Microsoft_Extensions/Date.getVarDate -translation_of: Archive/Web/JavaScript/Microsoft_Extensions/Date.getVarDate ---- -<div>{{JSRef("Global_Objects","Date")}}{{Non-standard_Header}}{{Obsolete_Header}} -<div class="warning"><strong>Warning: </strong><span style="font-size: 1.125rem;">This method is supported in Internet Explorer only.</span></div> -</div> - -<p>The <strong><code>getVarDate</code> method</strong> returns a <code>VT_DATE</code> value from a {{JSxRef("Date")}} object.</p> - -<h2 id="Syntax">Syntax</h2> - -<pre class="notranslate"><code>dateObj.getVarDate() -</code></pre> - -<h3 id="Parameters">Parameters</h3> - -<p>The required <code>dateObj</code> reference is a <code>Date</code> object.</p> - -<h3 id="Return_Value">Return Value</h3> - -<p>Returns a VT_DATE value.</p> - -<h3 id="Remarks">Remarks</h3> - -<p>The <code>getVarDate()</code> method is used when JavaScript code interacts with COM objects, ActiveX objects, or other objects that accept and return date values in VT_DATE format. These include objects in Visual Basic and Visual Basic Scripting Edition (VBScript). The actual format of the returned value depends on regional settings.</p> - -<h2 id="Requirements">Requirements</h2> - -<p>Supported in the following document modes: Quirks, Internet Explorer 6 standards, Internet Explorer 7 standards, Internet Explorer 8 standards, Internet Explorer 9 standards, and Internet Explorer 10 standards. Not supported in Windows 8.x Store apps.</p> - -<p><strong>Applies To</strong>: <a href="https://docs.microsoft.com/en-us/scripting/javascript/reference/date-object-javascript">Date Object</a></p> - -<h2 id="See_Also">See Also</h2> - -<ul> - <li>{{JSxRef("Date.getDate()")}}</li> - <li>{{JSxRef("Date.parse()")}}</li> -</ul> diff --git a/files/pt-br/archive/web/javascript/microsoft_extensions/index.html b/files/pt-br/archive/web/javascript/microsoft_extensions/index.html deleted file mode 100644 index c4e8031a8b..0000000000 --- a/files/pt-br/archive/web/javascript/microsoft_extensions/index.html +++ /dev/null @@ -1,71 +0,0 @@ ---- -title: Microsoft JavaScript extensions -slug: Archive/Web/JavaScript/Microsoft_Extensions -tags: - - JavaScript - - 'JavaScript:Microsoft Extensions' - - Landing page - - NeedsTranslation - - Non-standard - - Reference - - TopicStub -translation_of: Archive/Web/JavaScript/Microsoft_Extensions ---- -<div>{{JSSidebar("Microsoft Extensions")}}{{Non-standard_Header}} -<div class="blockIndicator warning"> -<p><strong>Warning:</strong> These APIs will only work in Microsoft applications, and are not on a standards track.</p> -</div> -</div> - -<p>Microsoft browsers (Internet Explorer, and in a few cases, Microsoft Edge) support a number of special Microsoft extensions to the otherwise standard <a href="/en-US/docs/Web/JavaScript">JavaScript APIs</a>.</p> - -<h2 id="Objects">Objects</h2> - -<div class="index"> -<ul> - <li>{{jsxref("ActiveXObject")}} </li> - <li>{{jsxref("Debug")}} </li> - <li>{{jsxref("Enumerator")}} </li> - <li>{{jsxref("VBArray")}} </li> -</ul> -</div> - -<h2 id="Functions">Functions</h2> - -<div class="index"> -<ul> - <li>{{jsxref("GetObject")}} </li> - <li>{{jsxref("ScriptEngine")}} </li> - <li>{{jsxref("ScriptEngineBuildVersion")}} </li> - <li>{{jsxref("ScriptEngineMajorVersion")}} </li> - <li>{{jsxref("ScriptEngineMinorVersion")}} </li> -</ul> -</div> - -<h2 id="Statements">Statements</h2> - -<div class="index"> -<ul> - <li><a href="/en-US/docs/Web/JavaScript/Microsoft_JavaScript_extensions/at-cc-on">@cc-on</a> </li> - <li><a href="/en-US/docs/Web/JavaScript/Microsoft_JavaScript_extensions/at-if">@if</a> </li> - <li><a href="/en-US/docs/Web/JavaScript/Microsoft_JavaScript_extensions/at-set">@set</a> </li> -</ul> -</div> - -<h2 id="Other">Other</h2> - -<div class="index"> -<ul> - <li><code><a href="/en-US/docs/Web/JavaScript/Microsoft_JavaScript_extensions/Date.getVarDate">Date.getVarDate()</a></code> </li> - <li><code><a href="/en-US/docs/Web/JavaScript/Microsoft_JavaScript_extensions/Error.description">Error.description</a></code> </li> - <li><code><a href="/en-US/docs/Web/JavaScript/Microsoft_JavaScript_extensions/Error.number">Error.number</a></code> </li> - <li><code><a href="/en-US/docs/Web/JavaScript/Microsoft_JavaScript_extensions/Error.stackTraceLimit">Error.stackTraceLimit</a></code> </li> -</ul> -</div> - -<h2 id="See_also">See also</h2> - -<ul> - <li><a href="/en-US/docs/Web/CSS/Microsoft_Extensions">Microsoft CSS Extensions</a></li> - <li><a href="/en-US/docs/Web/API/Microsoft_API_extensions">Microsoft DOM Extensions</a></li> -</ul> diff --git a/files/pt-br/archive/web/javascript/suporte_ao_ecmascript_7_no_mozilla/index.html b/files/pt-br/archive/web/javascript/suporte_ao_ecmascript_7_no_mozilla/index.html deleted file mode 100644 index 46fb6ab5f8..0000000000 --- a/files/pt-br/archive/web/javascript/suporte_ao_ecmascript_7_no_mozilla/index.html +++ /dev/null @@ -1,70 +0,0 @@ ---- -title: Suporte ao ECMAScript 7 no Mozilla -slug: Archive/Web/JavaScript/Suporte_ao_ECMAScript_7_no_Mozilla -tags: - - Firefox - - JavaScript -translation_of: Archive/Web/JavaScript/ECMAScript_Next_support_in_Mozilla ---- -<div>{{jsSidebar("New_in_JS")}}</div> - -<div>ECMAScript 7 é a nova evolução do padrão ECMA-262 (normalmente referenciado como <a href="https://developer.mozilla.org/pt-BR/docs/Web/JavaScript">JavaScript</a>). Antes mesmo que o ECMAScript 6 fosse finalizado em 17 de Junho de 2015, novas funcionalidades já haviam sido propostas. Você pode conferir essas propostas no repositório <a href="https://github.com/tc39/ecma262">tc39/ecma262</a> do GitHub.</div> - -<div><br> -Os problemas atuais com o processo das especificações foram solucionados ao adicionar <em>estágios </em>e <em>campeões</em> para os conjuntos de funcionalidades. Também, um ciclo de dois anos para as padronizações foi proposto. Para maiores informações sobre o processo de especificação do post-ES2015, veja essa <a href="http://slides.com/rafaelweinstein/tc39-process">apresentação feita pelo Rafael Weinstein</a>.</div> - -<p>Um canal para feedback sobre os padrões ECMAScript pode ser encontrado <a href="https://mail.mozilla.org/listinfo/es-discuss">aqui</a>.</p> - -<h2 id="Funcionalidades_Experimentais">Funcionalidades Experimentais</h2> - -<p>As funcionalidades a seguir já foram implementadas, mas só estão disponíveis no canal <a href="https://nightly.mozilla.org/">Firefox Nightly</a>:</p> - -<h3 id="Adições_ao_Array_object">Adições ao <code>Array</code> object</h3> - -<ul> - <li>{{jsxref("Array.prototype.includes()")}} (<a href="https://github.com/domenic/Array.prototype.includes/blob/master/spec.md">spec</a>)</li> -</ul> - -<h3 id="Adições_ao_ArrayBuffer_object">Adições ao <code>ArrayBuffer</code> object</h3> - -<ul> - <li>{{jsxref("ArrayBuffer.transfer()")}} (<a href="https://gist.github.com/lukewagner/2735af7eea411e18cf20">spec</a>)</li> -</ul> - -<h3 id="Novo_TypedObject_objects">Novo TypedObject objects</h3> - -<ul> - <li><a href="https://github.com/dslomov-chromium/typed-objects-es7">Typed Objects draft</a></li> -</ul> - -<h3 id="Novo_SIMD_objects">Novo SIMD objects</h3> - -<ul> - <li><a href="https://github.com/johnmccutchan/ecmascript_simd">Especificação preliminar doSIMD e polyfill</a></li> -</ul> - -<h2 id="Características_com_estabilização">Características com estabilização</h2> - -<p>Os seguintes recursos são suportados além do Nightly channel, mas a especificação e implementação estão em andamento. Recursos que estavam originalmente no ECMAScript 6 e foi adiada para ECMAScript 7 podem aparecer aqui também.</p> - -<h3 id="Expressões">Expressões</h3> - -<ul> - <li>{{jsxref("Operators/Arithmetic_Operators", "Exponentiation operator", "#Exponentiation", 1)}} (<a href="/en-US/Firefox/Releases/42">Firefox 42</a>)</li> -</ul> - -<h2 id="Features_ainda_não_suportadas">Features ainda não suportadas</h2> - -<p>Os seguintes recursos ainda não foram implementados, mas estará no ECMAScript 7.</p> - -<ul> - <li><code>Object.observe()</code> ({{bug(800355)}})</li> -</ul> - -<h2 id="Veja_também">Veja também</h2> - -<ul> - <li><a href="http://www.ecmascript.org/">ECMAScript web site</a></li> - <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1021376">Mozilla ES2016 tracking bug</a></li> - <li><a href="http://kangax.github.io/compat-table/es7/" title="http://kangax.github.io/es5-compat-table">ECMAScript 2015 support across browsers</a></li> -</ul> diff --git a/files/pt-br/browserid/configuracao_rapida/index.html b/files/pt-br/browserid/configuracao_rapida/index.html deleted file mode 100644 index 77c379f272..0000000000 --- a/files/pt-br/browserid/configuracao_rapida/index.html +++ /dev/null @@ -1,112 +0,0 @@ ---- -title: Configuração Rápida -slug: BrowserID/Configuracao_Rapida -translation_of: Archive/Mozilla/Persona/Quick_Setup ---- -<h2 id="Carregar_a_biblioteca_do_BrowserID">Carregar a biblioteca do BrowserID</h2> -<p>Inclua a biblioteca do BrowserID no seu site a partir de <a class="link-https" href="https://browserid.org/include.js">https://browserid.org/include.js</a>, certifique-se que ela carregue antes de chamar qualquer função <a href="/en/BrowserID/navigator.id" title="navigator.id"><code>navigator.id</code></a>.</p> -<p>Por exemplo:</p> -<pre class="brush: html"><script src="https://browserid.org/include.js" type="text/javascript"></script> -</pre> -<p>A biblioteca é projetada para ser neutra aos navegadores e funciona bem com o último Opera, Firefox, Chrome, Safari e Internet Explorer 8+ (amazenamento local - local storage - e postMessage são recursos detectados). No Internet Explorer 6 e 7, o script include.js não funcionará, mas ele foi feito de uma forma que a segurança do BrowserID para o Internet Explorer 6 e 7 é preservada (não é possível nenhum vazamento declaração ou endereço de email).</p> -<h2 id="Peça_ao_usuário_para_se_autenticar">Peça ao usuário para se autenticar</h2> -<p>Adicione um botão de login na sua página. Mesmo sendo completamente opcional, você pode usar um dos seguintes botões do BrowserID:</p> -<p><img alt="A red sign in button" src="https://browserid.org/i/sign_in_red.png"> <img alt="A blue sign in button" src="https://browserid.org/i/sign_in_blue.png"> <img alt="A orange sign in button" src="https://browserid.org/i/sign_in_orange.png"> <img alt="A green sign in button" src="https://browserid.org/i/sign_in_green.png"> <img alt="A grey sign in button" src="https://browserid.org/i/sign_in_grey.png" style=""></p> -<p>Por exemplo:</p> -<pre class="brush: html"><a href="#" id="browserid" title="Sign-in with BrowserID"> - <img src="/images/sign_in_blue.png" alt="Sign in"> -</a></pre> -<p>Quando o usuário clicar no botão de login, chame a função <a href="/en/DOM/navigator.id.get" title="navigator.id.get"><code>navigator.id.get()</code></a>, passando uma função de retorno:</p> -<pre class="brush: js">(function() { - $('#browserid').click(function() { - navigator.id.get(gotAssertion); - return false; - }); -}); -</pre> -<p>Em caso de sucesso, o retorno será a <strong>declaração</strong> (assertion): essa é uma string contendo um pedido verificado que o usuário possui um endereço de email particular.</p> -<h2 id="Verifique_a_declaração">Verifique a declaração</h2> -<p>Você precisará enviar essa declaração para o servidor para verificá-la, por exemplo usando uma requisição AJAX.</p> -<pre class="brush: js">function gotAssertion(assertion) { - // recebeu uma declaração, agora enviar para o servidor para verificação - if (assertion !== null) { - $.ajax({ - type: 'POST', - url: '/api/login', - data: { assertion: assertion }, - success: function(res, status, xhr) { - if (res === null) {}//loggedOut(); - else loggedIn(res); - }, - error: function(res, status, xhr) { - alert("login failure" + res); - } - }); - } else { - //loggedOut(); - } -}</pre> -<p>Nesse exemplo temos um serviço rodando em <code>/api/login</code> que recebe e verifica as declarações. Se o serviço verificar a declaração com sucesso podemos atualizar a Interface do Usuário (UI) chamando a função <code>loggedIn()</code>, ou então podemos manusear a falha no login.</p> -<div class="note"> - <strong>Nota:</strong> É importante que a declaração seja verificada no servidor e não no navegador.</div> -<p>On the server, you must verify the assertion, and extract the user's email address from it.</p> -<p>A maneira mais fácil de fazer isso é usar um serviço de verificação grátis provido pelo BrowserID. Envie uma requisição POST para <span class="nowiki"><code>https://browserid.org/verify</code></span> com dois parâmetros:</p> -<ul> - <li><code>assertion</code>: a declaração codificadathe encoded assertion</li> - <li><code>audience</code>: o hostname e porta opcional do seu site. Isso dificulta que uma declaração criada por outro site ganhe acesso no seu. Você deve especificar a audiência explicitamente e não confiar em um parâmetro enviado pelo navegador do usuário, como o <code>document.location</code>. O serviço irá verificar se a audiência que você especificou combina com o nome do domínio incluído na declaração.</li> -</ul> -<div class="note"> - <strong>Note:</strong> Essa chamada era um <code>GET</code>. A partir de 13 de outubro de 2011 ela deverá ser um <code>POST</code>.</div> -<p>O serviço verificará que a declaração foi feita para o seu site e é válida. Ela responde com uma estrutura JSON contendo o conteúdo da declaração e o código do status.</p> -<p>Suponha que você tenha uma declaração que peça ao endereço <span class="nowiki"><code>https://mysite.com</code></span> aceitar o email <span class="nowiki"><code>lloyd@example.com</code></span>.</p> -<p>Você pode enviá-lo para <span class="nowiki"><code>https://browserid.org/verify</code></span>:</p> -<pre><code>$ curl -d "assertion=<ASSERTION>&audience=https://mysite.com" "https://browserid.org/verify" -</code></pre> -<p>Essa é a resposta:</p> -<pre>{ - "status": "okay", - "email": "lloyd@example.com", - "audience": "https://mysite.com", - "expires": 1308859352261, - "issuer": "browserid.org" -} -</pre> -<p>Você só precisa de verificar se o status é "okay", e se for, o usuário pode fazer o login. Você pode criar uma sessão para ele e definir um cookie no navegador para identificar a sessão.</p> -<p>Um exemplo da implementação do /api/login em PHP:.</p> -<pre><code>$url = 'https://browserid.org/verify'; -$data = http_build_query(array('assertion' => $_POST['assertion'], 'audience' => urlencode('mysite.com'))); - -$params = array( - 'http' => array( - 'method' => 'POST', - 'content' => $data, - 'header'=> "Content-type: application/x-www-form-urlencoded\r\n" - . "Content-Length: " . strlen($data) . "\r\n" - ) -); - -$ctx = stream_context_create($params); -$fp = fopen($url, 'rb', false, $ctx); - -if ($fp) { - $result = stream_get_contents($fp); -} -else { - $result = FALSE; -}</code> - -$json = json_decode($result); - -if ($json->status == 'okay') { - // the user logged in successfully. -} -else { - // log in failed. -} - -echo $result; -</pre> -<h2 id="Implementação_do_logout">Implementação do logout</h2> -<p>Você pode implementar o logout simplesmente removendo o cookie de sessão do usuário. Se você implementou o suporte para <a href="/en/BrowserID/Advanced_Features" title="Advanced Features">persistent login</a>, então você também precisará chamar {{ domxref("navigator.id.logout()") }}.</p> -<p>Dependendo de quanto tempo tem desde que o usuário fez o login no provedor de identidade dele, o usuário ainda pode ter um certificado válido: se esse for o caso, então quando o usuário voltar a fazer o login, não será perguntado a eles pela senha do BrowserID. Mas será perguntado um endereço de email para usar e confirmar que eles querem entrar.</p> -<p>{{ languages( { "en": "en/BrowserID/Quick_Setup", "es": "es/BrowserID/Configuración_rápida", "pt-BR": "pt-BR/BrowserID/Configuracao_Rapida" } ) }}</p> diff --git a/files/pt-br/creating_a_dynamic_status_bar_extension/index.html b/files/pt-br/creating_a_dynamic_status_bar_extension/index.html deleted file mode 100644 index a6ed9d3e08..0000000000 --- a/files/pt-br/creating_a_dynamic_status_bar_extension/index.html +++ /dev/null @@ -1,115 +0,0 @@ ---- -title: Creating a dynamic status bar extension -slug: Creating_a_dynamic_status_bar_extension -translation_of: Archive/Creating_a_dynamic_status_bar_extension ---- -<p>{{ PreviousNext("Creating a status bar extension", "Adding preferences to an extension") }} This article builds upon the article <a href="/en-US/Creating_a_status_bar_extension" title="/en-US/Creating_a_status_bar_extension">Creating a status bar extension</a>, which creates a static status bar panel in the Firefox status bar, by dynamically updating its content with information fetched from the web every few minutes. Specifically, this sample displays a stock quote in the status bar, and, when you mouse over it, displays a tooltip containing more detailed information about the stock.</p> -<p>Concepts covered in the previous sample won't be reiterated here; instead, refer to the downloadable sample code or to the previous sample for further details.</p> -<h2 id="Download_the_sample" name="Download_the_sample">Download the sample</h2> -<p>You can download a copy of this sample to look over, or to use as the basis for your own extension. Or, if you've already got the code from the <a href="/en-US/Creating_a_status_bar_extension" title="/en-US/Creating_a_status_bar_extension">Creating a status bar extension</a> sample, you can follow this tutorial to update that existing code with new features.</p> -<p><a class="external" href="/samples/extension-samples/stockwatcher.zip">Download the sample</a></p> -<h2 id="Update_the_install_manifest" name="Update_the_install_manifest">Update the install manifest</h2> -<p>Replace all occurrences of the first sample's ID, "status-bar-sample-1", with the new sample's ID, "stockwatcher", and update the front end metadata to describe our new extension.</p> -<p>See <a href="/en-US/Install_Manifests" title="/en-US/Install_Manifests">Install Manifests</a> for details.</p> -<h2 id="Update_the_chrome_manifest" name="Update_the_chrome_manifest">Update the chrome manifest</h2> -<p>The <a href="/en-US/Chrome" title="/en-US/Chrome">chrome</a> manifest needs only a minor update from the previous sample; simply replace the ID of the first sample, "status-bar-sample-1", with the name of the new sample, "stockwatcher".</p> -<p>If you need to brush up, visit the <a href="/en-US/Chrome_Registration" title="/en-US/Chrome_Registration">Chrome Manifest</a> section.</p> -<h2 id="Write_the_XUL_file" name="Write_the_XUL_file">Write the XUL file</h2> -<p>We need a slightly more complicated XUL file this time, in order to add a reference to the JavaScript code that will do the real work:</p> -<pre class="brush: xml"><?xml version="1.0" encoding="UTF-8"?> - -<!DOCTYPE overlay> -<overlay id="stockwatcher-overlay" - xmlns="<span class="plain">http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul</span>"> - -<script type="application/javascript" - src="<span class="plain">chrome://stockwatcher/content/stockwatcher.js</span>"/> - -<!-- Firefox --> -<statusbar id="status-bar"> - <statusbarpanel id="stockwatcher" - label="Loading..." - tooltiptext="Current value" - onclick="StockWatcher.refreshInformation()" /> -</statusbar> - -</overlay> -</pre> -<p>Also, notice that the definition of the status bar panel now includes a new property, <code>onclick</code>, which references the JavaScript function that will be executed whenever the user clicks on the status bar panel. Our extension will refresh the stock information display when the user clicks the panel.</p> -<h2 id="Write_the_JavaScript_code" name="Write_the_JavaScript_code">Write the JavaScript code</h2> -<p>The work of fetching the stock quote and updating the status bar panel's display is handled by the JavaScript code in the file <code>stockwatcher.js</code>.</p> -<p>Unlike our previous sample, this one is implemented as an object. We do this because in future samples in this series, we're going to be doing things that are easier to do if our extension is implemented that way.</p> -<p>We use the <code>window.addEventListener()</code> DOM function to tell Firefox to call the <code>StockWatcher.startup()</code> function when a new browser window is opened:</p> -<pre class="brush: js">window.addEventListener("load", function(e) { StockWatcher.startup(); }, false); -</pre> -<p>Our new extension has two primary functions: <code>startup()</code> and <code>refreshInformation()</code>. The <code>refreshInformation()</code> function contains another function, called <code>infoReceived()</code>. The following sections will examine these one by one.</p> -<h3 id="startup.28.29" name="startup.28.29">startup()</h3> -<p>The <code>startup()</code> function is called when a new browser window is opened. <span class="comment">We end up reloading data from each of the windows once in 10 minutes - fixing this by creating a JS component responsible for communication with the server is a good idea for one of the future articles</span></p> -<pre class="brush: js">startup: function() -{ - this.refreshInformation(); - window.setInterval(this.refreshInformation, 10*60*1000); -}, -</pre> -<p>This starts by calling our <code>refreshInformation()</code> function, which is responsible for fetching and displaying stock ticker information in the status bar panel. We do this so that upon loading, the stock information is displayed as soon as possible.</p> -<p>After doing that, we install an interval routine on the browser window by calling <code><a href="/en-US/DOM/window.setInterval" title="/en-US/DOM/window.setInterval">window.setInterval()</a></code>. This configures our <code>refreshInformation()</code> routine to be called every 10 minutes (the time interval is specified in milliseconds).</p> -<h3 id="refreshInformation.28.29" name="refreshInformation.28.29">refreshInformation()</h3> -<p>The <code>refreshInformation()</code> function is called whenever we want to update the stock information. It's called whenever the user clicks on the status bar panel, when our extension is first added to a browser window, and by the interval handler to periodically update the display.</p> -<pre class="brush: js">refreshInformation: function() -{ - var httpRequest = null; - var fullUrl = 'http://quote.yahoo.com/d/quotes.csv?f=sl1d1t1c1ohgv&e=.csv&s=GOOG'; - - // ... - - httpRequest = new XMLHttpRequest(); - - httpRequest.open('GET', fullUrl, true); - httpRequest.onload = infoReceived; - httpRequest.send(null); -} -</pre> -<p>The <code>httpRequest</code> variable will contain an <code><a href="/en-US/nsIXMLHttpRequest" title="/en-US/XMLHttpRequest">XMLHttpRequest</a></code> object. This object is used to configure and run an HTTP request on a web server, which we'll use to fetch the stock quote data.</p> -<p>The <code>fullUrl</code> variable is the complete URL to use when requesting a stock quote. In this case, we're using Yahoo's comma-separated values return to fetch easily-parsed stock quote data for Google (ticker symbol GOOG).</p> -<p><code>refreshInformation()</code> embeds another function, <code>infoReceived()</code>, which we'll look at separately shortly.</p> -<p>The first thing we do is create a new <code>XMLHttpRequest</code> object to use for processing our request. We open the request, specifying that we wish to perform an HTTP "GET" command with the URL <code>fullUrl</code>. The <code>true</code> Boolean value in the third parameter indicates that we want to process the request asynchronously.</p> -<p>Setting the <code>httpRequest.onload</code> property to our <code>infoReceived()</code> function configures the request to call <code>infoReceived()</code> when the response is received from the server. Finally, we send the request to the server and return.</p> -<h3 id="infoReceived.28.29" name="infoReceived.28.29">infoReceived()</h3> -<p>When the server responds to our request, our the <code>infoReceived()</code> function, which is embedded inside <code>refreshInformation()</code>, gets called automatically.</p> -<p>We embed this function inside <code>refreshInformation()</code> so that its variable scope includes the variables used by that function. Due to the way JavaScript works, if <code>infoReceived()</code> were outside <code>refreshInformation()</code>, it would not have access to the same variable scope. In fact, even the <code>this</code> value would not match, so we couldn't get at the same variables and functions that way.</p> -<pre class="brush: js">function infoReceived() -{ - var samplePanel = document.getElementById('stockwatcher'); - var output = httpRequest.responseText; - - if (output.length) - { - // Remove whitespace from the end of the string; - // this gets rid of the end-of-line characters - - output = output.replace(/\W*$/, ''); - - // Build the tooltip string - - var fieldArray = output.split(','); // Assert that fieldArray[0] == 'GOOG' - samplePanel.label = 'GOOG: ' + fieldArray[1]; - samplePanel.tooltipText = 'Chg: ' + fieldArray[4] + ' | ' + - 'Open: ' + fieldArray[5] + ' | ' + - 'Low: ' + fieldArray[6] + ' | ' + - 'High: ' + fieldArray[7] + ' | ' + - 'Vol: ' + fieldArray[8]; - } -} -</pre> -<p>The first thing we do here is get the status bar panel into the variable <code>samplePanel</code> by calling the <code><a href="/en-US/DOM/document.getElementById" title="/en-US/DOM/document.getElementById">document.getElementById()</a></code> DOM function. We need this so that we can make changes to the status bar panel itself.</p> -<p>We then fetch the result returned by the web server into the variable <code>output</code> from the <code>XMLHttpRequest.responseText</code> property.</p> -<p>The text we receive back from the server looks something like this:</p> -<pre class="brush: js"> "GOOG",414.20,"5/1/2006","1:36pm",-3.74,417.85,419.44,412.19,4760215 -</pre> -<p>We then parse the text. We use the <code>split()</code> string function to split the comma-separated value string into its individual parts, with each field in a separate element in the array <code>fieldArray</code>. At index 0 is the ticker symbol itself, which we don't need since we know which stock we're looking at.</p> -<p>The status bar panel's label is set to indicate the current value of the stock, which is stored in <code>fieldArray</code>, by setting the <code>samplePanel.label</code> property.</p> -<p>We then set the tooltip for the status bar panel by assigning an appropriate string to the <code>samplePanel.tooltipText</code> property. The string is built from a combination of static strings and various elements from the <code>fieldArray</code> array.</p> -<h2 id="See_it_in_action" name="See_it_in_action">See it in action</h2> -<p>Now you can install it and try it out. You should see something that looks like this:</p> -<p><img alt="Image:stockwatcher.png" class="internal" src="/@api/deki/files/866/=Stockwatcher.png"></p> -<p>In this screenshot, we also have the previous sample running, displaying the text "Hello World." {{ PreviousNext("Creating a status bar extension", "Adding preferences to an extension") }}</p> diff --git a/files/pt-br/criar_plugin_de_busca_para_firefox/index.html b/files/pt-br/criar_plugin_de_busca_para_firefox/index.html deleted file mode 100644 index 7184338e65..0000000000 --- a/files/pt-br/criar_plugin_de_busca_para_firefox/index.html +++ /dev/null @@ -1,56 +0,0 @@ ---- -title: criar plugin de busca para mozilla firefox -slug: criar_plugin_de_busca_para_firefox -tags: - - criar pesquisa firefox - - pesquisa firefox - - plugin de pesquisa - - xml pesquisa -translation_of: Mozilla/Creating_MozSearch_plugins ---- -<p>Firefox 2 usos uma forma simplificada do <a class="external" href="http://opensearch.org/">OpenSearch</a> formate por armazenar plugins de procura. Um MozSearch procura plugin é um arquivo de XML que descreve a máquina de procura, sua URL, e os parâmetros que precisam ser passada àquela URL.</p> -<div class="warning"> - <b>Atenção:</b> MozSearch é sem padrão e é planejado para uso interno dentro de Mozilla só projeta. Só deveria ser usado se sua intenção for distribuir o plugin de procura empacotado dentro um <a href="en/Bundles#Application-specific_Extension_Files">Extensão de Firefox</a>, ou se você está criando que plugins significaram ser transportados através de falta em uma construção de Firefox. Por criar plugins de procura para instalação da teia, veja <a href="en/Creating_OpenSearch_plugins_for_Firefox">Criando OpenSearch plugins para Firefox</a></div> -<h2 id="The_plugin_file" name="The_plugin_file">O plugin arquivam</h2> -<p>O formato de MozSearch é semelhante para o <a href="en/Creating_OpenSearch_plugins_for_Firefox">OpenSearch</a> formato. A única diferença é o elemento de raiz e namespace de XML.</p> -<h2 id="Example:_searching_Yahoo.21" name="Example:_searching_Yahoo.21">Exemplo: procurando o Yahoo!</h2> -<p>O XML seguinte é o Firefox empacotado 2 plugin de procura por usar procurar o Yahoo!:</p> -<pre><SearchPlugin xmlns="http://www.mozilla.org/2006/browser/search/"> -<ShortName>Yahoo</ShortName> -<Description>Yahoo Search</Description> -<InputEncoding>UTF-8</InputEncoding> -<Image width="16" height="16">data:image/x-icon;base64,R0lGODlhEAAQAJECAP8AAAAAAP///wAAACH5BAEAAAIALAAAAAAQABAAAAIplI+py+0NogQuyBDEnEd2kHkfFWUamEzmpZSfmaIHPHrRguUm/fT+UwAAOw==</Image> -<Url type="application/x-suggestions+json" method="GET" - template="http://ff.search.yahoo.com/gossip?output=fxjson&amp;command={searchTerms}" /> -<Url type="text/html" method="GET" template="http://search.yahoo.com/search"> - <Param name="p" value="{searchTerms}"/> - <Param name="ei" value="UTF-8"/> - - <MozParam name="fr" condition="pref" pref="yahoo-fr" /> -</Url> -<SearchForm>http://search.yahoo.com/</SearchForm> -</SearchPlugin> -</pre> -<p>Digamos o usuário escolhe usar o Yahoo! procure plugin de máquina e entra " em mozilla " na caixa de procura e imprensas o entre em chave. Firefox usará a anterior descrição de máquina de procura para construir a URL de procura seguinte:</p> -<pre class="eval"><span class="nowiki">http://search.yahoo.com/search?p=mozilla&ei=UTF-8&fr=moz2</span> -</pre> -<p>Se o usuário clica o ícone de lupa na barra de procura, ou escolhe a Web Procura opção no cardápio de Ferramentas quando a barra de procura não for visível, o browser os levará <tt><span class="nowiki">http://search.yahoo.com/</span></tt>, o valor do <code><SearchForm></code> elemento.</p> -<h2 id="Example:_searching_MDC" name="Example:_searching_MDC">Exemplo: Buscando o MDC</h2> -<p>Este plugin o deixa procurar facilmente o Mozilla Fomentador Centro teia local.</p> -<pre><SearchPlugin xmlns="http://www.mozilla.org/2006/browser/search/"> -<ShortName>MDC</ShortName> -<Description>Mozilla Developer Center search</Description> -<InputEncoding>UTF-8</InputEncoding> -<Image width="16" height="16">data:image/x-icon;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8%2F9hAAAABGdBTUEAAK%2FINwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAHWSURBVHjaYvz%2F%2Fz8DJQAggJiQOe%2Ffv2fv7Oz8rays%2FN%2BVkfG%2FiYnJfyD%2F1%2BrVq7ffu3dPFpsBAAHEAHIBCJ85c8bN2Nj4vwsDw%2F8zQLwKiO8CcRoQu0DxqlWrdsHUwzBAAIGJmTNnPgYa9j8UqhFElwPxf2MIDeIrKSn9FwSJoRkAEEAM0DD4DzMAyPi%2FG%2BQKY4hh5WAXGf8PDQ0FGwJ22d27CjADAAIIrLmjo%2BMXA9R2kAHvGBA2wwx6B8W7od6CeQcggKCmCEL8bgwxYCbUIGTDVkHDBia%2BCuotgACCueD3TDQN75D4xmAvCoK9ARMHBzAw0AECiBHkAlC0Mdy7x9ABNA3obAZXIAa6iKEcGlMVQHwWyjYuL2d4v2cPg8vZswx7gHyAAAK7AOif7SAbOqCmn4Ha3AHFsIDtgPq%2FvLz8P4MSkJ2W9h8ggBjevXvHDo4FQUQg%2FkdypqCg4H8lUIACnQ%2FSOBMYI8bAsAJFPcj1AAEEjwVQqLpAbXmH5BJjqI0gi9DTAAgDBBCcAVLkgmQ7yKCZxpCQxqUZhAECCJ4XgMl493ug21ZD%2BaDAXH0WLM4A9MZPXJkJIIAwTAR5pQMalaCABQUULttBGCCAGCnNzgABBgAMJ5THwGvJLAAAAABJRU5ErkJggg%3D%3D</Image> -<Url type="text/html" method="GET" template="http://developer.mozilla.org/en/docs/Special:Search?search={searchTerms}"/> -<SearchForm>http://developer.mozilla.org/en/docs/Special:Search</SearchForm> -</SearchPlugin> -</pre> -<p>Note neste caso que em vez de usar <code><Param></code> para definir parâmetros à máquina de procura, eles são embutidos simplesmente dentro da URL de modelo. Este é de fato o modo preferido para fazer coisas ao usar <code>GET</code> como o método. <code><Param></code> deveria ser usada para <code>POST</code>.</p> -<h2 id="See_also" name="See_also">Também veja</h2> -<ul> - <li><a href="en/Creating_OpenSearch_plugins_for_Firefox#Troubleshooting_Tips">Search plugin troubleshooting tips</a></li> -</ul> -<div class="noinclude"> - </div> -<p>{{ languages( { "ca": "ca/Creaci\u00f3_de_connectors_MozSearch", "es": "es/Creaci\u00f3n_de_plugins_MozSearch", "fr": "fr/Cr\u00e9ation_de_plugins_MozSearch", "it": "it/Creare_Plugin_MozSearch", "ja": "ja/Creating_MozSearch_plugins", "pl": "pl/Tworzenie_wtyczek_MozSearch", "zh-tw": "zh_tw/\u88fd\u4f5c_MozSearch_\u641c\u5c0b\u6a21\u7d44" } ) }}</p> diff --git a/files/pt-br/desenvolvimento_web/responsive_web_design/index.html b/files/pt-br/desenvolvimento_web/responsive_web_design/index.html deleted file mode 100644 index 5655d1024d..0000000000 --- a/files/pt-br/desenvolvimento_web/responsive_web_design/index.html +++ /dev/null @@ -1,40 +0,0 @@ ---- -title: Responsive Web design -slug: desenvolvimento_web/Responsive_Web_design -translation_of: Web/Progressive_web_apps ---- -<p>Com os usuários da Web usando cada vez mais dispositivos móveis para navegar em sites da Web e aplicativos, Web designers e desenvolvedores precisam ter certeza de que suas criações olhar tão bom e funciona tão bem em dispositivos móveis como em computadores de mesa tradicionais. Proeminente designer de Luke Wroblewski defende criação de "<a class="external" href="http://www.lukew.com/ff/entry.asp?933" title="http://www.lukew.com/ff/entry.asp?933">Mobile First</a>", ao invés de como um adendo ao projeto para desktops. Se você design para dispositivos móveis como alvo principal ou como um extra legal, você pode usar o poder do CSS para garantir que o mesmo conteúdo pode ser acessado em todas as plataformas de hardware, desde telefones celulares a telas de alta resolução wide-screen.<br> - </p> -<p>Esta abordagem é conhecida como "Web design responsivo". Algumas de suas estratégias incluem:</p> -<ul> - <li><strong>Layout líquido ou fluido</strong>: Definição de todas as larguras de contêineres em termos de percentagem do navegador visor, de modo que eles se expandem e contraem como a janela do navegador muda de tamanho.</li> - <li><strong>Media queries</strong>: Invocando as folhas de estilo diferentes de acordo com as capacidades da tela que está sendo usado, como tamanho, resolução, formato e profundidade de cor.</li> - <li><strong>Imagens fluidas</strong>: Definir imagens para ocupar, no máximo, a largura máxima da tela.</li> -</ul> -<h2 id="Recursos">Recursos</h2> -<h3 id="Overviews">Overviews</h3> -<ul> - <li><a class="external" href="http://www.alistapart.com/articles/responsive-web-design/" title="http://www.alistapart.com/articles/responsive-web-design/">Responsive Web design</a>, by Ethan Marcotte</li> - <li><a class="external" href="http://thinkvitamin.com/design/beginners-guide-to-responsive-web-design/" title="http://thinkvitamin.com/design/beginners-guide-to-responsive-web-design/">Beginner's guide to responsive Web design</a>, by Rick Petit</li> - <li><a class="external" href="http://coding.smashingmagazine.com/2011/01/12/guidelines-for-responsive-web-design/" title="http://coding.smashingmagazine.com/2011/01/12/guidelines-for-responsive-web-design/">Responsive Web design: What it is and how to use it</a>, by Kayla Knight</li> - <li><a class="external" href="http://www.lukew.com/ff/entry.asp?1436" title="http://www.lukew.com/ff/entry.asp?1436">Multi-device Web design: an evolution</a>, by Luke Wroblewski</li> -</ul> -<h3 id="Techniques">Techniques</h3> -<ul> - <li><a href="/en/CSS/Media_queries" title="CSS media queries">CSS media queries</a> reference page</li> - <li><a class="external" href="http://css-tricks.com/6731-css-media-queries/" title="http://css-tricks.com/6731-css-media-queries/">CSS media queries and using available space</a>, by Chris Coyier</li> - <li><a class="external" href="http://www.maxdesign.com.au/articles/liquid/" title="http://www.maxdesign.com.au/articles/liquid/">Liquid layouts the easy way</a>, by Russ Weakley</li> - <li><a class="external" href="http://unstoppablerobotninja.com/entry/fluid-images/" title="http://unstoppablerobotninja.com/entry/fluid-images/">Fluid images</a>, by Ethan Marcotte</li> - <li><a class="external" href="http://www.whatcreative.co.uk/blog/tips/designing-for-touch-screen/" title="http://www.whatcreative.co.uk/blog/tips/designing-for-touch-screen/">Designing for touch screen</a>, by Chris Kemm</li> - <li><a class="external" href="http://www.smashingmagazine.com/2011/07/22/responsive-web-design-techniques-tools-and-design-strategies/" title="http://www.smashingmagazine.com/2011/07/22/responsive-web-design-techniques-tools-and-design-strategies/">Responsive Web Design Techniques, Tools and Design Strategies</a>, by Smashing Editorial Team</li> -</ul> -<h3 id="Tools">Tools</h3> -<ul> - <li><a href="/en-US/docs/Tools/Responsive_Design_View" title="/en-US/docs/Tools/Responsive_Design_View">Responsive Design View</a> in Firefox</li> -</ul> -<h3 id="Examples">Examples</h3> -<ul> - <li><a href="/en-US/demos/devderby/2011/october" title="https://developer.mozilla.org/en-US/demos/devderby/2011/october/">DevDerby demos of CSS media queries</a></li> - <li><a class="external" href="http://designshack.net/articles/css/20-amazing-examples-of-using-media-queries-for-responsive-web-design" title="http://designshack.net/articles/css/20-amazing-examples-of-using-media-queries-for-responsive-web-design">20 Amazing examples of using media queries for responsive Web design</a>, by Joshua Johnson</li> - <li><a class="external" href="http://designmodo.com/responsive-design-examples/" title="http://designmodo.com/responsive-design-examples/">Responsive Web design: 50 examples and best practices</a></li> -</ul> diff --git a/files/pt-br/git/index.html b/files/pt-br/git/index.html deleted file mode 100644 index ad49f60121..0000000000 --- a/files/pt-br/git/index.html +++ /dev/null @@ -1,16 +0,0 @@ ---- -title: Git -slug: Git -tags: - - Ferramentas - - Guía - - git -translation_of: Mozilla/Git ---- -<p>O <em>git mirror</em> atual e oficial da base de códigos do Firefox (também conhecida como "gecko" ou "mozilla-central") pode ser encontrada em <a href="https://github.com/mozilla/gecko-dev">https://github.com/mozilla/gecko-dev</a>. Este repositório contém todos os <em>branches</em> que compõem o dia-a-dia de nossos desenvolvedores, incluindo o <em>branch</em> mozilla-central (nightly), mozilla-aurora (edição de desenvolvedor), mozilla-beta e mozilla-release.</p> - -<p>Se você pretende trabalhar com outros <em>branches</em> do Mozilla, <a href="https://github.com/mozilla/gecko-projects">https://github.com/mozilla/gecko-projects</a> pode vir a calhar. Este repositório contém os <em>project branches</em> (também conhecidos como "twigs") que é de uso variado.</p> - -<p>Se você preferir usar o <em>git</em> diretamente com os repositórios <em>hg</em>, este <a href="http://glandium.org/blog/?page_id=3438">workflow</a> ajudará você a fazer isso da melhor maneira possível. Dessa maneira nós também deixamos você dar <em>push</em> diretamente do seu repositório <em>git</em> para o <em>mercurial</em>.</p> - -<p>Existe também um <em>etherpad</em> que busca descrever como você pode usar o <em>git</em> para interagir com o mozilla-central.</p> diff --git a/files/pt-br/guia_desenvolvedor_addons_firefox/index.html b/files/pt-br/guia_desenvolvedor_addons_firefox/index.html deleted file mode 100644 index a30a6292b4..0000000000 --- a/files/pt-br/guia_desenvolvedor_addons_firefox/index.html +++ /dev/null @@ -1,20 +0,0 @@ ---- -title: Guia do desenvolvedor de addons para Firefox -slug: guia_desenvolvedor_addons_firefox -translation_of: Archive/Add-ons/Overlay_Extensions/Firefox_addons_developer_guide ---- -<div> - {{Next("Guia do desenvolvedor de addons para Firefox/Introdução às extensões")}}</div> -<ol> - <li><a href="/en-US/docs/Firefox_addons_developer_guide/Introduction_to_Extensions" title="Firefox addons developer guide/Introduction to Extensions">Introdução às extensões</a></li> - <li><a href="/en-US/docs/Firefox_addons_developer_guide/Technologies_used_in_developing_extensions" title="Firefox Addons Dev Guide/Technologies used in developing extensions">Tecnologias usadas ao desenvolver extensões</a></li> - <li><a href="/en-US/docs/Firefox_addons_developer_guide/Introduction_to_XUL—How_to_build_a_more_intuitive_UI" title="Firefox Addons Dev Guide/Introduction to XUL—How to build a more intuitive UI">Introdução ao XUL — Como construir uma UI mais intuitiva</a></li> - <li><a href="/en-US/docs/Firefox_addons_developer_guide/Using_XPCOM—Implementing_advanced_processes" title="Firefox addons developer guide/Using XPCOM—Implementing advanced processes">Usando XPCOM — Implementando processos avançados</a></li> - <li><a href="/en-US/docs/Firefox_addons_developer_guide/Let's_build_a_Firefox_extension" title="Firefox addons developer guide/Let's build a Firefox extension">Vamos construir uma extensão para Firefox</a></li> - <li><a href="/en-US/docs/Firefox_addons_developer_guide/Firefox_extensions_and_XUL_applications" title="Firefox addons developer guide/Firefox extensions and XUL applications">Extensões para Firefox e aplicações XUL</a></li> -</ol> -<ul> - <li><a href="/en-US/docs/Firefox_addons_developer_guide/License_authors" title="Firefox addons developer guide/License authors"><strong>LLicença e autores</strong></a></li> -</ul> -<div> - {{Next("Guia do desenvolvedor de addons para Firefox/Introdução às extensões")}}</div> diff --git a/files/pt-br/mdn/contribute/guia/vincular_uma_conta_github/index.html b/files/pt-br/mdn/contribute/guia/vincular_uma_conta_github/index.html deleted file mode 100644 index 4a158cb44c..0000000000 --- a/files/pt-br/mdn/contribute/guia/vincular_uma_conta_github/index.html +++ /dev/null @@ -1,113 +0,0 @@ ---- -title: Como vincular uma conta do Github ao perfil do MDN -slug: MDN/Contribute/guia/VIncular_uma_conta_github -tags: - - Documentação - - MDN - - MDN Meta - - MDN Projeto -translation_of: Archive/MDN/Howto_Link_a_Github_account ---- -<div>{{MDNSidebar}}</div> - -<div>{{IncludeSubnav("/en-US/docs/MDN")}}</div> - -<div class="note"> -<p><strong>Note: </strong>Support for Persona logins on MDN was disabled on November 1, 2016. The method for adding a Github account to your profile therefore no longer works. If you didn't add a GitHub login to your MDN account before we disabled Persona logins, please <strong>file an <a class="external external-icon" href="https://mzl.la/accounthelp">"Account Help" bug</a> </strong>on Bugzilla. For further reading about the end of life of Persona, see: <a href="https://wiki.mozilla.org/Identity/Persona_Shutdown_Guidelines_for_Reliers">Persona shutdown guidelines</a>.</p> -</div> - -<p><span class="seoSummary">Porque o sistema de autenticação Mozilla <a href="https://login.persona.org/">Persona</a> está sendo desativado em 30 de Novembro de 2016, todos os usuários que querem contribuir para o MDN vai precisar ter outros meios para logar-se no MDN. Atualmente, a única alternativa que nós suportamos é o Github, então você vai precisar adicionar uma autenticação do <a href="https://github.com/">GitHub</a> ao seu perfil do MDN. </span></p> - -<div class="warning"> -<p>Você deve fazer isso antes de 30 de Novembro de 2016, ou você já não terá outra forma de logar-se no MDN.</p> -</div> - -<h2 id="Visão_Geral">Visão Geral</h2> - -<p>Adicionando uma autentitação do GIthub não é díficil de se fazer. Nós vamos entrar em detalhes em um momento, mas primeiro, aqui uma lista rápida dos passos involvidos:</p> - -<ol> - <li><a href="/en-US/docs/MDN/Signing_in">Logando-se em sua conta do MDN</a> com Persona.</li> - <li>Indo a página <a href="https://developer.mozilla.org/en-US/users/account/connections">contas vinculadas</a>.</li> - <li>Adicionando uma autenticação do GIthub.</li> -</ol> - -<h2 id="Instruções_detalhadas">Instruções detalhadas</h2> - -<p>Aqui estão um guia passo-a-passo com detalhes sobre como fazer tudo que você precisa fazer.</p> - -<h3 id="Logando-se_em_sua_conta_do_MDN">Logando-se em sua conta do MDN</h3> - -<ol> - <li>No topo de qualquer página do MDN, passe o mouse por cima ou clique em <strong>Entrar</strong>. Isso vai exibir metodos de aautenticação disnponíveis, <strong>Persona</strong> ou <strong>Github</strong>.<br> - <img alt="Sign in box on MDN, showing Persona and Github." src="https://mdn.mozillademos.org/files/13773/Persona%20Sign%20in%202016-08.png" style="border-style: solid; border-width: 1px; height: 162px; width: 414px;"></li> - <li>Selecione<strong> Persona </strong>e entre usando suas credenciais atuais.</li> -</ol> - -<h3 id="Vá_a_página_Contas_vinculadas.">Vá a página "Contas vinculadas".</h3> - -<p>Aqui estão duas formas para adicionar a página contas vinculadas.</p> - -<p>A primeira é simples, clique no link abaixo.</p> - -<p>De outra forma, faça o seguinte:</p> - -<ol> - <li>CLique no seu nome de usuário no topo de qualquer página do MDN. (Isso está na posiçãoo onde a caixa de <strong>Entrar </strong>quando você não estiver logado.</li> - <li>Abra o menu da <strong>"Engrenagem" </strong>, e clique em <strong>Contas vinculadas</strong><br> - <img alt='Gear menu in profile, showing the "Account connections" option' src="https://mdn.mozillademos.org/files/13428/SheppyWork___MDN_-__Private_Browsing_.png" style="height: 217px; width: 219px;"></li> -</ol> - -<h3 id="Adicione_uma_autenticação_do_Github">Adicione uma autenticação do Github</h3> - -<p>Você está agora em "Contas Vinculadas", qual lista a conta external você já tem vinculada ao seu perfil do MDN. Se o Github já estiver listado, parabéns! Você está pronto para ir! mas teste isso para ter certeza que você se lembra de sua senha, desconecte-se e volte usando suas credenciais do GIthub</p> - -<p>Se GIthub não estiver listado, quando próximo ao fim da página, olhe abaixo da lista de contas externais já listadas, você pode conectar seu perfil do MDN. Isso se parece com assim:</p> - -<p><img alt="" src="https://mdn.mozillademos.org/files/13430/Account_Connections___MDN_-__Private_Browsing_.png" style="height: 79px; width: 476px;"></p> - -<p>Para adicionar :</p> - -<ol> - <li>Clique <strong>Conectar com GIthub</strong>. MDN vai contactar GIthub requesitando permissão para vincular a conta. Se você não estiver conectado no Github, você vai ser perguntado:<br> - <img alt="Screenshot of GitHub sign in window." src="https://mdn.mozillademos.org/files/13444/GitHub_Sign_In.png" style="height: 447px; width: 356px;"></li> - <li><span id="result_box" lang="pt"><span>Se você tiver</span> <span>autenticação de dois fatores</span> <span>ativada em</span> <span>sua conta</span> <span>GitHub</span><span>, você será</span> <span>solicitado a digitar</span> <span>o seu</span> <span>código de autenticação</span><span>:</span></span><br> - <img alt="Screenshot of GitHub's Two-factor authentication window." src="https://mdn.mozillademos.org/files/13460/GitHub_-_Where_software_is_built.png" style="height: 448px; width: 361px;"></li> - <li><span id="result_box" lang="pt"><span>Agora que você está</span> <span>conectado à sua</span> <span>conta</span> <span>GitHub</span><span>, você</span> <span>será solicitado a</span> <span>autorizar a</span> <span>ligação entre</span> <span>GitHub</span> <span>e</span> <span>MDN</span> <span>(a menos que</span> <span>você já tem</span> <span>a autorização em</span> <span>arquivo</span> <span>por algum motivo)</span><span>.</span> <span>Esta página</span> <span>é mostrada abaixo.</span></span><br> - <img alt='Screenshot of GitHub "Authorize application" window.' src="https://mdn.mozillademos.org/files/13456/Authorize_Mozilla_Developer_Network.png" style="height: 420px; width: 766px;"><br> - <span id="result_box" lang="pt"><span>Clique no botão verde</span> <span><strong>Autorizar Aplicativo</strong></span><span> para</span> <span>conceder permissão</span> <span>para o seu perfil</span> <span>MDN</span> <span>para acessar sua conta</span> <span>GitHub</span><span>.</span> <span>Se a conta</span> <span>GitHub</span> <span>está ligada</span> <span>com sucesso</span> <span>ao seu perfil</span> <span>MDN</span><span>, você verá</span> <span>esta mensagem:</span></span><br> - <img alt="Account successfully created." src="https://mdn.mozillademos.org/files/13454/Edit_Your_Profile___MDN.png" style="height: 57px; width: 646px;"></li> -</ol> - -<p><span id="result_box" lang="pt"><span>Não apenas você pode</span> <span>agora usar</span> <span>GitHub</span> <span>para fazer login no</span> <span>MDN</span><span>, mas</span> <span>na verdade você está</span> <span>já</span> <span>assinado</span> <span>em usar</span> <span>sua autenticação</span> <span>GitHub</span><span>!</span> <span>Agora você está pronto</span> <span>para o</span> <span>desligamento</span> <span>Persona</span><span>.</span> <span>Certifique-se de</span> <span>atualizar quaisquer</span> <span>gerenciadores de senha</span> <span>você pode ter instalado</span><span>,</span> <span>se necessário.</span></span></p> - -<h2 id="Troubleshooting">Troubleshooting</h2> - -<p>Se você tiver problemas ao tentar adicionar sua conta do GitHub ao seu perfil, espero que as dicas de solução de problemas a seguir vai ajudar.</p> - -<h3 id="Erro_Não_foi_possivel_encontrar_conta_correspondente_ao_perfil">Erro : Não foi possivel encontrar conta correspondente ao perfil</h3> - -<p><span id="result_box" lang="pt"><span>Se você tentar</span> <span>adicionar sua conta do</span> <span>GitHub</span> <span>ao seu perfil e</span> <span>obter o erro</span> <span>"</span><span>Não foi possível encontrar</span> <span>conta correspondente</span> <span>perfil</span><span>",</span> <span>pode significar</span> <span>algumas coisas diferentes</span><span>.</span> <span>Se</span> <span>você tiver várias contas</span> <span>na sua conta</span> <span>GitHub</span><span>, pode haver</span> <span>alguma confusão</span><span>;</span> <span>GitHub</span> <span>não pode relatar</span> <span>o endereço de email</span> <span>esperada</span> <span>para</span> <span>MDN</span> <span>durante a tentativa de</span> <span>conta de</span> <span>emparelhamento,</span> <span>o que irá resultar</span> <span>neste erro</span><span>.</span> <span>Outras</span> <span>falhas no</span> <span>processo pode</span> <span>também</span> <span>resultar</span> <span>na mesma mensagem</span> <span>de erro</span><span>.</span></span></p> - -<p><span id="result_box" lang="pt"><span>Uma maneira de</span> <span>contornar esse</span> <span>problema:</span> <span>abrir uma nova janela</span> <span>privada</span> <span>no seu browser</span><span>;</span> <span>no Firefox</span><span>, por exemplo</span><span>, escolha "</span><span>Nova Janela</span> <span>privada</span><span>" no</span> <span>menu Arquivo</span> <span>(ou pressione</span></span> <kbd>Ctrl</kbd>+<kbd>Shift</kbd>+<kbd>P</kbd> [<kbd>Cmd</kbd>-<kbd>Shift</kbd>-<kbd>P</kbd> <span class="short_text" id="result_box" lang="pt"><span>no Mac</span><span>]</span><span>)</span><span>.</span> <span>Navegue até</span> <span>MDN</span> <span>lá,</span></span> <a href="/en-US/docs/MDN/Signing_in">logue na sua conta do MDN</a>, <span id="result_box" lang="pt"><span>tente novamente</span> <span>para adicionar</span> <span>sua conta do</span> <span>GitHub</span> <span>para</span> <span>o seu perfil como</span> <span>indicado acima</span><span>.</span></span></p> - -<h3 id="Meu_autorização_GitHub_não_é_exibido_na_página_Connections_conta."><span id="result_box" lang="pt"><span>Meu</span> <span>autorização</span> <span>GitHub</span> <span>não é exibido</span> <span>na página</span> <span>Connections</span> <span>conta.</span></span></h3> - -<p><span id="result_box" lang="pt"><span>Isso pode</span> <span>ser um</span> <span>problema de cache</span><span>.</span> <span>Recarregar a página</span> <span>ou</span> <span>desconectado</span> <span>e</span> <span>efetuar login novamente</span> <span>deve resolver o problema</span><span>.</span></span></p> - -<h3 id="Persona_não_lembra-se_de_mim">Persona não lembra-se de mim</h3> - -<p><span id="result_box" lang="pt"><span>Se você tentar</span> <span>fazer login no</span> <span>Persona</span> <span>assim você pode adicionar</span> <span>um login</span> <span>GitHub</span> <span>para a sua conta</span> <span>MDN</span> <span>e se</span> <span>disse</span> <span>"</span><span>O seu endereço de</span> <span>e-mail</span> <span>é novo para nós</span><span>," esta é</span> <span>provavelmente porque</span> <span>ele foi</span> <span>tempo suficiente</span> <span>desde</span> <span>seu último login na</span> <span>Persona</span> <span>que</span> <span>tenha excluído</span> <span>seu endereço de</span> <span>e-mail de</span> <span>seu sistema.</span> <span>Isto acontece</span> <span>depois de algum</span> <span>período</span> <span>de tempo</span><span>;</span> <span>a janela de login</span> <span>Persona</span> <span>parece com isso</span> <span>nessa situação</span><span>:</span></span></p> - -<p><img alt="" src="https://mdn.mozillademos.org/files/13765/unknown-to-persona.png" style="height: 533px; width: 800px;"></p> - -<p><span id="result_box" lang="pt"><span>Se isso acontecer</span><span>, você precisa</span> <span>simplesmente</span> <span>seguir as instruções do</span> <span>Persona</span> <span>para criar</span> <span>uma nova senha para</span> <span>esse endereço</span> <span>de e-mail</span><span>.</span> <span>O</span> <span>MDN</span> <span>não</span> <span>se preocupam com</span> <span>este processo;</span> <span>o fato de que</span> <span>o seu endereço de</span> <span>e-mail corresponde</span> <span>up é</span> <span>tudo o que importa</span><span>.</span> <span>Um e-mail</span> <span>de confirmação será enviado</span> <span>para verificar se</span> <span>você possui</span> <span>o endereço</span> <span>de e-mail</span><span>, provavelmente de</span> <span>no-reply@persona.org</span><span>.</span> <span>Se</span> <span>você tem</span> <span>filtragem de spam</span><span>, ele pode</span> <span>ser enviado</span> <span>para a pasta de</span> <span>spam.</span><br> - <br> - <span>Depois de terminar</span> <span>o processo de</span> <span>definir a senha</span> <span>para o endereço de</span> <span>e-mail usado</span> <span>para fazer login no</span> <span>MDN</span><span>,</span> <span>o seu acesso ao</span> <span>MDN</span> <span>será restaurada.</span> <span>Em seguida, você</span> <span>pode seguir</span> <span>os passos na</span> <span>{</span><span>{</span><span>anch</span> <span>( "</span><span>Instruções detalhadas</span><span>")</span><span>}}</span> <span>acima para adicionar</span> <span>o seu login</span> <span>GitHub</span> <span>para a sua conta</span> <span>MDN</span><span>.</span></span></p> - -<h2 id="Veja_também">Veja também</h2> - -<ul> - <li><a href="/en-US/docs/MDN/Contribute/Howto/Create_an_MDN_account">Como criar uma conta do MD</a></li> - <li><a href="/en-US/docs/MDN/Getting_started">Envolvendo-se com o MDN</a></li> -</ul> diff --git a/files/pt-br/mdn/contribute/persona_sign-in/index.html b/files/pt-br/mdn/contribute/persona_sign-in/index.html deleted file mode 100644 index 7c36309f88..0000000000 --- a/files/pt-br/mdn/contribute/persona_sign-in/index.html +++ /dev/null @@ -1,32 +0,0 @@ ---- -title: MDN e Persona logins -slug: MDN/Contribute/Persona_sign-in -tags: - - Documentação - - MDN - - MDN Meta - - Mozilla - - Persona -translation_of: Archive/MDN/Persona_sign-ins ---- -<div>{{MDNSidebar}}</div><div class="warning"> -<p>Nós não damos mais suporte ao acesso via Persona na MDN.Por favor <a href="/en-US/docs/MDN/Contribute/Howto/Link_a_GitHub_account">conecte sua conta do Github ao seu perfil na MDN agora</a> para que você possa continuar a logar na sua conta da MDN.</p> -</div> - -<p><span id="result_box" lang="pt"><span>Atualmente,</span> <span>a MDN</span> <span>permite que</span> <span>colaboradores loguem</span><span> usando</span> <span>dois</span> <span>provedores de autenticação</span> <span>diferentes:</span> <span>Mozilla</span> <span>Persona</span> <span>e</span> <span>GitHub</span><span>.</span> <span>A partir do dia</span> <span>1</span></span>º<span lang="pt"><span> de novembro de 2016</span><span>,</span> <span>nós iremos remover o</span> <span>Persona</span> <span>como uma opção para</span> <span>fazer o login.</span> <span>Por isso</span><span>, é necessário ativar</span> <span>a autenticação</span> <span>Github</span> <span>no seu perfil para</span> <span>evitar a perda de</span> <span>acesso de login</span> <span>para</span> <span>MDN</span><span>.</span></span></p> - -<p><span id="result_box" lang="pt"><span>Nós reconhecemos</span> <span>que isso é</span> <span>um inconveniente</span><span>, e nós</span> <span>pedimos desculpas por isso</span><span>.</span> <span>Infelizmente, isso</span> <span>está fora de</span> <span>nosso controle.</span></span></p> - -<h2 id="Porque_o_Persona_está_sendo_removido">Porque o Persona está sendo removido?</h2> - -<p><span id="result_box" lang="pt"><span>A Mozilla</span> <span>fechou</span> <span>o projeto</span> <span>Persona</span><span>,</span> <span>e seus servidores</span> <span>serão desligados</span> <span>em novembro</span> <span>de 2016.</span> <span>Você pode </span></span><a href="https://wiki.mozilla.org/Identity/Persona_Shutdown_Guidelines_for_Reliers#FAQs">entender melhor sobre a decisão da Mozilla</a> em encerrar o Persona no wiki da Mozilla.</p> - -<p> </p> - -<h2 id="A_MDN_oferecerá_outro_provedor_de_autenticação"><span class="short_text" id="result_box" lang="pt"><span class="alt-edited trans-target-highlight">A</span> <span>MDN</span> <span class="alt-edited">oferecerá outro</span> <span>provedor de autenticação</span><span>?</span></span></h2> - -<p><span id="result_box" lang="pt"><span>Nós</span> <span>gostaríamos muito</span> <span>de fazer isso,</span> <span>mas ainda não</span> <span class="alt-edited">identificamos</span> <span>outro fornecedor</span> <span>que</span> <span>atenda às nossas</span> <span>necessidades;</span> <span>Além disso,</span> <span>atualmente não</span> <span class="alt-edited">temos</span> <span class="alt-edited">os recursos de desenvolvimento</span> <span>para integrar</span> <span>outro provedor.</span> <span>Por enquanto</span><span>, a <em>única</em> opção</span> <span>para manter</span> <span>o acesso</span> <span class="alt-edited">do colaborador</span> <span class="alt-edited">na MDN</span> <span>é </span></span><a href="/en-US/docs/MDN/Contribute/Howto/Link_a_GitHub_account">ligar o seu perfil MDN à sua conta GitHub. </a><br> - <br> - Caso você não tenha como associar sua conta GitHub, por favor, preencha este formulário <a href="https://mzl.la/accounthelp">"Suporte as contas" </a>no Bugzilla.</p> - -<p><span lang="pt"><span>Tenha em mente,</span> <span class="alt-edited">que</span> <span>você não precisa</span> <span class="alt-edited">fazer login na</span> <span>MDN</span> <span class="alt-edited">para ler</span> <span>nosso conteúdo.</span> <span>Mas se você</span> <span>tem uma conta para</span> <span>contribuir</span><span>,</span> <span>e gostaria de</span> <span>poder contribuir</span> <span>a qualquer momento</span> <span>no futuro,</span> <span>não se esqueça de</span> <em><strong><span>adicionar uma conta</span> <span>GitHub</span> <span>ao seu perfil</span> <span class="alt-edited">o mais rápido</span> <span>possível</span></strong></em><span>,</span> <span>antes de</span> <span>31 de outubro de 2016</span><span>.</span></span></p> diff --git a/files/pt-br/mercurial/index.html b/files/pt-br/mercurial/index.html deleted file mode 100644 index 5271487787..0000000000 --- a/files/pt-br/mercurial/index.html +++ /dev/null @@ -1,34 +0,0 @@ ---- -title: Mercurial -slug: Mercurial -translation_of: Mozilla/Mercurial ---- -<p><a class="external" href="https://www.mercurial-scm.org/"><strong>Mercurial</strong></a> (também conhecido como "hg"), é um software de controle de versão distribuído usado para o desenvolvimento do Firefox, Thunderbird, e o Gecko core. Ele substituiu o <a href="/En/Developer_Guide/Source_Code/CVS" title="En/Developer_Guide/Source_Code/CVS">CVS</a> depois do Mozilla 1.9 ter sido ramificado.</p> - -<p><strong><code>hg</code></strong> é a ferramenta de linha de comando do Mercurial, sendo Hg o símbolo químico correspondente ao elemento mercúrio.</p> - -<h2 id="Learning_to_use_Mercurial" name="Learning_to_use_Mercurial">Aprendendo a usar o Mercurial</h2> - -<p>Primeiramente, leia com atenção o <a href="/en/Mercurial_basics" title="en/Mercurial_basics">Mercurial basics</a>, antes de fazer qualquer outra coisa.</p> - -<p>Depois, o <a href="/en/Mercurial_FAQ" title="en/Mercurial_FAQ">Mercurial FAQ</a> é um bom lugar para começar.</p> - -<p>Veja o <a href="/En/Developer_Guide/Source_Code/Mercurial" title="https://developer.mozilla.org/En/Developer_Guide/Source_Code/Mercurial">Getting Mozilla Source Code Using Mercurial</a><a href="/En/Developer_Guide/Source_Code/Mercurial" title="En/Developer_Guide/Source_Code/Mercurial"> </a>para obter a árvore (repositório(s)) para fazer o build.</p> - -<p>Veja o <a class="internal" href="/en/Mercurial_Queues" title="en/Mercurial Queues">Mercurial Queues</a> para o gerenciamento de filas de patches, e como integrar o Mercurial com o Bugzilla. </p> - -<h2 id="Further_reading" name="Further_reading">Leituras adicionais</h2> - -<p>O The <a class="external" href="http://hgbook.red-bean.com/hgbook.html">hg book</a> é o manual definitivo do Mercurial.</p> - -<p>O <a href="/pt-br/docs/tag/Mercurial">Mercurial tag</a> lista os artigos relacionados ao Mercurial no MDC.</p> - -<p>E na wiki.mozilla.org, essa páginas são úteis:</p> - -<ul> - <li>{{ interwiki('wikimo', 'Using_Mercurial_locally_with_CVS', 'Using Mercurial locally with CVS') }}, um how-to. (Observe que isso só é útil para o código que está ainda exclusivamente no CVS.)</li> - <li>{{ interwiki('wikimo', 'Mercurial_on_Windows', 'Mercurial on Windows') }}</li> - <li><a class="internal" href="/en/Creating_Mercurial_User_Repositories" title="en/Publishing Mercurial Clones">Publishing Mercurial Clones</a> - Se você tiver uma conta LDAP que permite colocar no hg.mozilla.org você também pode criar seus próprios repositórios de usuários no servidor para compartilhar o trabalho.</li> -</ul> - -<p>{{ languages( { "es": "es/Mercurial", "fr": "fr/Mercurial", "ja": "ja/Mercurial" } ) }}</p> diff --git a/files/pt-br/midas/index.html b/files/pt-br/midas/index.html deleted file mode 100644 index 547ad3f550..0000000000 --- a/files/pt-br/midas/index.html +++ /dev/null @@ -1,328 +0,0 @@ ---- -title: Midas -slug: Midas -tags: - - DOM - - Midas - - NeedsContent - - NeedsHelp - - NeedsTechnicalReview - - NeedsTranslation - - TopicStub - - needsattention -translation_of: Mozilla/Projects/Midas ---- -<h2 id="Introduction" name="Introduction">Introduction</h2> - -<p>Midas is the code name for Gecko's built-in rich text editor. Midas can be enabled via JavaScript on an HTML document. When Midas is enabled, the document becomes editable by the user. Scripting for Midas is based on the <a href="http://msdn.microsoft.com/en-us/library/ms533049.aspx">DHTML commands</a> supported by Internet Explorer. Internet Explorer supports the ability to make an entire document editable by setting the <code>designMode</code> property of the {{domxref("document")}} object; this is how Midas is invoked in Gecko. Internet Explorer also supports the ability to edit specific elements using the <code>contentEditable</code> attribute; Starting with Firefox 3, Gecko also supports <code>contentEditable</code>. Once Midas is invoked, a few more methods of the <code>document</code> object become available.</p> - -<h2 id="Properties" name="Properties">Properties</h2> - -<dl> - <dt><a href="/en-US/docs/Midas/designMode">document.designMode</a></dt> - <dd>By setting this property to "on", the document becomes editable.</dd> -</dl> - -<h2 id="Notes" name="Notes">Notes</h2> - -<p>Since an entire document becomes editable, authors often load the editable document into an <code>IFRAME</code> and do the bulk of the scripting in the parent document. According to <a href="http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html#ID-50708718">standards</a>, The <code>IFRAME</code> element has the <code>contentDocument</code> property that refers to the document in the inline frame. It also has a property called <code>contentWindow</code> that refers to the window object inside the inline frame. This also avoids problems with {{bug(198155)}}.</p> - -<p>In addition to the built-in commands, advanced editing can be done by manipulating the {{domxref("Selection")}} and {{domxref("range")}} objects. It is beneficial to be familiar with these objects when working with an editable document.</p> - -<h2 id="Examples" name="Examples">Examples</h2> - -<p>This example shows the basic structure described in the Notes section :</p> - -<pre><html> - <head> - <title>Simple Edit Box</title> - </head> - <body> - <iframe - id="MidasForm" - src="about:blank" - onload="this.contentDocument.designMode='on';" - ></iframe> - </body> -</html> -</pre> - -<h2 id="Methods" name="Methods">Methods</h2> - -<dl> - <dt>{{domxref("Document.execCommand")}}</dt> - <dd>Executes the given command.</dd> - <dt>{{domxref("Document.queryCommandEnabled")}}</dt> - <dd>Determines whether the given command can be executed on the document in its current state.</dd> - <dt>{{domxref("Document.queryCommandIndeterm")}}</dt> - <dd>Determines whether the current selection is in an indetermined state.</dd> - <dt>{{domxref("Document.queryCommandState")}}</dt> - <dd>Determines whether the given command has been executed on the current selection.</dd> - <dt>{{domxref("Document.queryCommandValue")}}</dt> - <dd>Determines the current value of the document, range, or current selection for the given command.</dd> -</dl> - -<h2 id="Supported_Commands" name="Supported_Commands">Supported Commands</h2> - -<table class="standard-table"> - <tbody> - <tr> - <td class="header">Command</td> - <td class="header">Value</td> - <td class="header">Description</td> - </tr> - <tr> - <td>backcolor</td> - <td>A color code.</td> - <td>This command will set the background color of the document.</td> - </tr> - <tr> - <td>bold</td> - <td> </td> - <td>If there is no selection, the insertion point will set bold for subsequently typed characters. - <p>If there is a selection and all of the characters are already bold, the bold will be removed. Otherwise, all selected characters will become bold.</p> - </td> - </tr> - <tr> - <td>contentReadOnly</td> - <td> </td> - <td>This command will make the editor readonly(true)or editable(false). Anticipated usage is for temporarily disabling input while something else is occurring elsewhere in the web page.</td> - </tr> - <tr> - <td>copy</td> - <td> </td> - <td>If there is a selection, this command will copy the selection to the clipboard. If there isn't a selection, nothing will happen. - <p>note: this command won't work without setting a pref or using signed JS. See: <a href="http://www.mozilla.org/editor/midasdemo/securityprefs.html">more about security preferences</a></p> - - <p>note: the shortcut key will automatically trigger this command (typically accel-C) with or without the signed JS or any code on the page to handle it.</p> - </td> - </tr> - <tr> - <td>createlink</td> - <td>A URI.</td> - <td>This command will not do anything if no selection is made. If there is a selection, a link will be inserted around the selection with the url parameter as the href of the link.</td> - </tr> - <tr> - <td>cut</td> - <td> </td> - <td>If there is a selection, this command will copy the selection to the clipboard and remove the selection from the edit control. If there isn't a selection, nothing will happen. - <p>note: this command won't work without setting a pref or using signed JS. See: <a href="http://www.mozilla.org/editor/midasdemo/securityprefs.html">more about security preferences</a></p> - - <p>note: the shortcut key will automatically trigger this command (typically accel-X) with or without the signed JS or any code on the page to handle it.</p> - </td> - </tr> - <tr> - <td>decreasefontsize</td> - <td> </td> - <td>This command will add a <small> tag around selection or at insertion point.</td> - </tr> - <tr> - <td>delete</td> - <td> </td> - <td>This command will delete all text and objects that are selected. If no text is selected it deletes one character to the right. This is similar to the <em>Delete</em> button on the keyboard.</td> - </tr> - <tr> - <td>fontname</td> - <td>A font name</td> - <td>This command will set the font face for a selection or at the insertion point if there is no selection. - <p>The given string is such as would be used in the "face" attribute of the font tag, i.e., a comma-separated list of font names.</p> - </td> - </tr> - <tr> - <td>fontsize</td> - <td>A number</td> - <td>This command will set the fontsize for a selection or at the insertion point if there is no selection. - <p>The given number is such as would be used in the "size" attribute of the font tag.</p> - </td> - </tr> - <tr> - <td>forecolor</td> - <td>A color code</td> - <td>This command will set the text color of the selection or at the insertion point.</td> - </tr> - <tr> - <td>formatblock</td> - <td>H1, H2, H3, H4, H5, H6, P, DIV, ADDRESS, BLOCKQUOTE (more?)</td> - <td>The selection surrounded by the given block element.</td> - </tr> - <tr> - <td>heading</td> - <td>H1, H2, H3, H4, H5, H6</td> - <td>Selected block will be formatted as the given type of heading.</td> - </tr> - <tr> - <td>hilitecolor</td> - <td>A color code</td> - <td>This command will set the hilite color of the selection or at the insertion point. It only works with styleWithCSS enabled.</td> - </tr> - <tr> - <td>increasefontsize</td> - <td> </td> - <td>This command will add a <big> tag around selection or at insertion point.</td> - </tr> - <tr> - <td>indent</td> - <td> </td> - <td>Indent the block where the caret is located. If the caret is inside a list, that item becomes a sub-item one level deeper.</td> - </tr> - <tr> - <td>insertbronreturn</td> - <td>true/false</td> - <td>Selects whether pressing return inside a paragraph creates another paragraph or just inserts a <br> tag.</td> - </tr> - <tr> - <td>inserthorizontalrule</td> - <td>null/string (when string is the Line's id)</td> - <td>This command will insert a horizontal rule (line) at the insertion point. - <p>Does it delete the selection? Yes!</p> - </td> - </tr> - <tr> - <td>inserthtml</td> - <td>A string.</td> - <td>This command will insert the given html into the <body> in place of the current selection or at the caret location. - <p>The given string is the HTML to insert.</p> - </td> - </tr> - <tr> - <td>insertimage</td> - <td>A URI.</td> - <td>This command will insert an image (referenced by the given url) at the insertion point.</td> - </tr> - <tr> - <td>insertorderedlist</td> - <td> </td> - <td>Depends on the selection. If the caret is not inside a non-LI block, that block becomes the first LI and an OL. If the caret is inside a bulleted item, the bulleted item becomes a numbered item.</td> - </tr> - <tr> - <td>insertunorderedlist</td> - <td> </td> - <td>Depends on the selection. If the caret is not inside a non-LI block, that block becomes the first LI and UL. If the caret is inside a numbered item, the numbered item becomes a bulleted item.</td> - </tr> - <tr> - <td>insertparagraph</td> - <td> </td> - <td>Inserts a new paragraph.</td> - </tr> - <tr> - <td>italic</td> - <td> </td> - <td>If there is no selection, the insertion point will set italic for subsequently typed characters. - <p>If there is a selection and all of the characters are already italic, the italic will be removed. Otherwise, all selected characters will become italic.</p> - </td> - </tr> - <tr> - <td>justifycenter</td> - <td> </td> - <td>Center-aligns the current block.</td> - </tr> - <tr> - <td>justifyfull</td> - <td> </td> - <td>Fully-justifies the current block.</td> - </tr> - <tr> - <td>justifyleft</td> - <td> </td> - <td>Left-aligns the current block.</td> - </tr> - <tr> - <td>justifyright</td> - <td> </td> - <td>Right aligns the current block.</td> - </tr> - <tr> - <td>outdent</td> - <td> </td> - <td>Outdent the block where the caret is located. If the block is not indented prior to calling outdent, nothing will happen. - <p>If the caret is in a list item, the item will bump up a level in the list or break out of the list entirely.</p> - </td> - </tr> - <tr> - <td>paste</td> - <td> </td> - <td>This command will paste the contents of the clipboard at the location of the caret. If there is a selection, it will be deleted prior to the insertion of the clipboard's contents. - <p>note: this command won't work without setting a pref or using signed JS. user_pref("capability.policy.policynames", "allowclipboard"); user_pref("capability.policy.allowclipboard.Clipboard.paste", "allAccess"); See: <a href="http://www.mozilla.org/editor/midasdemo/securityprefs.html">more about security preferences</a></p> - - <p>note: the shortcut key will automatically trigger this command (typically accel-V) with or without the signed JS or any code on the page to handle it.</p> - </td> - </tr> - <tr> - <td>redo</td> - <td> </td> - <td>This command will redo the previous undo action. If undo was not the most recent action, this command will have no effect. - <p>note: the shortcut key will automatically trigger this command (typically accel-shift-Z)</p> - </td> - </tr> - <tr> - <td>removeformat</td> - <td> </td> - <td>Removes inline formatting from the current selection.</td> - </tr> - <tr> - <td>selectall</td> - <td> </td> - <td>This command will select all of the contents within the editable area. - <p>note: the shortcut key will automatically trigger this command (typically accel-A)</p> - </td> - </tr> - <tr> - <td>strikethrough</td> - <td> </td> - <td>If there is no selection, the insertion point will set strikethrough for subsequently typed characters. - <p>If there is a selection and all of the characters are already striked, the strikethrough will be removed. Otherwise, all selected characters will have a line drawn through them.</p> - </td> - </tr> - <tr> - <td>styleWithCSS</td> - <td> </td> - <td>This command is used for toggling the format of generated content. By default (at least today), this is true. An example of the differences is that the "bold" command will generate <b> if the styleWithCSS command is false and generate css style attribute if the styleWithCSS command is true.</td> - </tr> - <tr> - <td>subscript</td> - <td> </td> - <td>If there is no selection, the insertion point will set subscript for subsequently typed characters. - <p>If there is a selection and all of the characters are already subscripted, the subscript will be removed. Otherwise, all selected characters will be drawn slightly lower than normal text.</p> - </td> - </tr> - <tr> - <td>superscript</td> - <td> </td> - <td>If there is no selection, the insertion point will set superscript for subsequently typed characters. - <p>If there is a selection and all of the characters are already superscripted, the superscript will be removed. Otherwise, all selected characters will be drawn slightly higher than normal text.</p> - </td> - </tr> - <tr> - <td>underline</td> - <td> </td> - <td>If there is no selection, the insertion point will set underline for subsequently typed characters. - <p>If there is a selection and all of the characters are already underlined, the underline will be removed. Otherwise, all selected characters will become underlined.</p> - </td> - </tr> - <tr> - <td>undo</td> - <td> </td> - <td>This command will undo the previous action. If no action has occurred in the document, then this command will have no effect. - <p>note: the shortcut key will automatically trigger this command (typically accel-Z)</p> - </td> - </tr> - <tr> - <td>unlink</td> - <td> </td> - <td>If the insertion point is within a link or if the current selection contains a link, the link will be removed and the text will remain.</td> - </tr> - <tr> - <td colspan="3">{{Deprecated_header}}</td> - </tr> - <tr> - <td>readonly</td> - <td> </td> - <td>This command has been replaced with contentReadOnly. It takes the same values as contentReadOnly, but the meaning of true and false are inversed.</td> - </tr> - <tr> - <td>useCSS</td> - <td> </td> - <td>This command has been replaced with styleWithCSS. It takes the same values as styleWithCSS, but the meaning of true and false are inversed.</td> - </tr> - </tbody> -</table> diff --git a/files/pt-br/midas/security_preferences/index.html b/files/pt-br/midas/security_preferences/index.html deleted file mode 100644 index 0c38717a54..0000000000 --- a/files/pt-br/midas/security_preferences/index.html +++ /dev/null @@ -1,33 +0,0 @@ ---- -title: Security preferences -slug: Midas/Security_preferences -translation_of: Mozilla/Projects/Midas/Security_preferences ---- -<h2 id="Changing_the_preferences_in_Firefox">Changing the preferences in Firefox</h2> - -<ol> - <li>Quit Firefox. If you have Quick Launch running (on Windows, this is an icon in the toolbar), quit that too.</li> - <li><a class="external" href="http://support.mozilla.com/en-US/kb/Profiles">Find your Firefox profile directory</a>.</li> - <li>Open the <code class="filename">user.js</code> file from that directory in a text editor. If there's no <code>user.js</code> file, create one.</li> - <li>Add these lines to <code class="filename">user.js</code>: - <pre class="code">user_pref("capability.policy.policynames", "allowclipboard"); -user_pref("capability.policy.allowclipboard.sites", "https://www.mozilla.org"); -user_pref("capability.policy.allowclipboard.Clipboard.cutcopy", "allAccess"); -user_pref("capability.policy.allowclipboard.Clipboard.paste", "allAccess");</pre> - </li> - <li>Change the url <span class="external"><code class="url">https://www.mozilla.org</code></span> to the site for which you want to enable this function.</li> - <li>Save the file and restart Firefox. The Clipboard buttons should now function.</li> -</ol> - -<div class="note"><strong>Note:</strong> The preference is site as well as protocol specific. For example: - -<pre>user_pref("capability.policy.allowclipboard.sites", "http://www.mozilla.org")</pre> - -<p>is not the same as:</p> - -<pre>user_pref("capability.policy.allowclipboard.sites", "https://www.mozilla.org")</pre> - -<p>This is because the first uses <a href="/en-US/docs/HTTP" title="/en-US/docs/HTTP">HTTP</a> while the second uses HTTPS.</p> -</div> - -<p>If you want to allow multiple URLs to access the Paste operation, separate the URLs with a space. For <span style="line-height: 1.572;">For more information about security policies, see this article about </span><a href="http://www.mozilla.org/projects/security/components/ConfigPolicy.html" style="line-height: 1.572;" title="http://www.mozilla.org/projects/security/components/ConfigPolicy.html">Configurable Security Policies</a><span style="line-height: 1.572;">.</span><span style="font-family: georgia,times,times new roman,serif; font-size: 1.628em; line-height: 1.572;">See also</span></p> diff --git a/files/pt-br/mozilla/add-ons/code_snippets/canvas/index.html b/files/pt-br/mozilla/add-ons/code_snippets/canvas/index.html deleted file mode 100644 index 5178d91a50..0000000000 --- a/files/pt-br/mozilla/add-ons/code_snippets/canvas/index.html +++ /dev/null @@ -1,235 +0,0 @@ ---- -title: Canvas fragmentos de códigos -slug: Mozilla/Add-ons/Code_snippets/Canvas -translation_of: Archive/Add-ons/Code_snippets/Canvas ---- -<p>Para informações gerais sobre o uso do <code><canvas></code> ver a <a class="internal" href="/en-US/docs/Web/API/Canvas_API" title="En/HTML/Canvas">página do tópico canvas</a>.</p> - -<h2 id="Código_usável_do_conteúdo_da_Web">Código usável do conteúdo da Web</h2> - -<h3 id="Recebendo_o_número_de_pixels_de_uma_certa_cor_em_um_canvas">Recebendo o número de pixels de uma certa cor em um canvas</h3> - -<p>A função a seguir retornará o número de pixels em um canvas que a cor RGB de r, g e b. Isso pode ser muito útil para comparar, por exemplo se um usuário pintou sobre uma outra área como explicado <a href="https://hacks.mozilla.org/2013/06/building-a-simple-paint-game-with-html5-canvas-and-vanilla-javascript/" title="https://hacks.mozilla.org/2013/06/building-a-simple-paint-game-with-html5-canvas-and-vanilla-javascript/">nessa publicação do blog</a>.</p> - -<pre class="brush: js">function getpixelamount(canvas, r, g, b) { - var cx = canvas.getContext('2d'); - var pixels = cx.getImageData(0, 0, canvas.width, canvas.height); - var all = pixels.data.length; - var amount = 0; - for (i = 0; i < all; i += 4) { - if (pixels.data[i] === r && - pixels.data[i + 1] === g && - pixels.data[i + 2] === b) { - amount++; - } - } - return amount; -}; -</pre> - -<h3 id="Recebendo_a_cor_de_um_pixel_em_um_canvas">Recebendo a cor de um pixel em um canvas</h3> - -<p>Esse fragmento a seguir retorna um objeto com os valores RGBA do pixel na posição x e y do canvas. Isso pode ser usado para determinar se o cursor do mouse está dentro de uma certa forma ou não.</p> - -<pre class="brush: js">function getpixelcolour(canvas, x, y) { - var cx = canvas.getContext('2d'); - var pixel = cx.getImageData(x, y, 1, 1); - return { - r: pixel.data[0], - g: pixel.data[1], - b: pixel.data[2], - a: pixel.data[3] - }; -} -</pre> - -<h3 id="Encadeamento_de_métodos">Encadeamento de métodos</h3> - -<p>Essa classe prove um estilo JQuery de acesso encadeado aos métodos e propriedades do contexto 2D.</p> - -<pre class="brush: js">function Canvas2DContext(canvas) { - if (typeof canvas === 'string') { - canvas = document.getElementById(canvas); - } - if (!(this instanceof Canvas2DContext)) { - return new Canvas2DContext(canvas); - } - this.context = this.ctx = canvas.getContext('2d'); - if (!Canvas2DContext.prototype.arc) { - Canvas2DContext.setup.call(this, this.ctx); - } -} -Canvas2DContext.setup = function () { - var methods = ['arc','arcTo','beginPath','bezierCurveTo','clearRect','clip', - 'closePath','drawImage','fill','fillRect','fillText','lineTo','moveTo', - 'quadraticCurveTo','rect','restore','rotate','save','scale','setTransform', - 'stroke','strokeRect','strokeText','transform','translate']; - - var getterMethods = ['createPattern','drawFocusRing','isPointInPath','measureText', // drawFocusRing not currently supported - // The following might instead be wrapped to be able to chain their child objects - 'createImageData','createLinearGradient', - 'createRadialGradient', 'getImageData','putImageData' - ]; - - var props = ['canvas','fillStyle','font','globalAlpha','globalCompositeOperation', - 'lineCap','lineJoin','lineWidth','miterLimit','shadowOffsetX','shadowOffsetY', - 'shadowBlur','shadowColor','strokeStyle','textAlign','textBaseline']; - - for (let m of methods) { - let method = m; - Canvas2DContext.prototype[method] = function () { - this.ctx[method].apply(this.ctx, arguments); - return this; - }; - } - - for (let m of getterMethods) { - let method = m; - Canvas2DContext.prototype[method] = function () { - return this.ctx[method].apply(this.ctx, arguments); - }; - } - - for (let p of props) { - let prop = p; - Canvas2DContext.prototype[prop] = function (value) { - if (value === undefined) - return this.ctx[prop]; - this.ctx[prop] = value; - return this; - }; - } -}; - -var canvas = document.getElementById('canvas'); - -// Use context to get access to underlying context -var ctx = Canvas2DContext(canvas) - .strokeStyle("rgb(30,110,210)") - .transform(10, 3, 4, 5, 1, 0) - .strokeRect(2, 10, 15, 20) - .context; - -// Use property name as a function (but without arguments) to get the value -var strokeStyle = Canvas2DContext(canvas) - .strokeStyle("rgb(50,110,210)") - .strokeStyle(); -</pre> - -<h2 id="Saving_a_canvas_image_to_a_file" name="Saving_a_canvas_image_to_a_file">Código usável apenas para código previlegiado</h2> - -<p>Esse fragmento só é útl para códigos previlegiados, como extensões ou aplicativos previlegiados.</p> - -<h3 id="Saving_a_canvas_image_to_a_file" name="Saving_a_canvas_image_to_a_file">Salvando uma imagem do canvas à um arquivo</h3> - -<p>A função a seguir aceita um objeto canvas e uma string de destinação do caminho do arquivo. O canvas é convertido para um arquivo PNG e, é salvo na localização especificada. A função retorna uma promessa que resolve quando o arquivo foi completamente salvo.</p> - -<pre class="brush: js">function saveCanvas(canvas, path, type, options) { - return Task.spawn(function *() { - var reader = new FileReader; - var blob = yield new Promise(accept => canvas.toBlob(accept, type, options)); - reader.readAsArrayBuffer(blob); - - yield new Promise(accept => { reader.onloadend = accept }); - - return yield OS.File.writeAtomic(path, new Uint8Array(reader.result), - { tmpPath: path + '.tmp' }); - }); -} -</pre> - -<h3 id="Loading_a_remote_page_onto_a_canvas_element" name="Loading_a_remote_page_onto_a_canvas_element">Carregando uma página remota em um elemento canvas</h3> - -<p>A classe a seguir primeiro cria um elemento iframe oculto e anexa um ouvinte ao evento carregar frame. Uma vez que a página remota foi carregada, o método remotePageLoaded é ativado. Esse método pega uma referência da janela do iframe e desenha essa janela no objeto canvas.</p> - -<p>Note que isso só funciona se você esta rodando a página no chrome. Se você tentar rodar o código como uma página da web simples, você receberá um 'Erro de segurança" código: erro "1000'.</p> - -<pre class="brush: js">RemoteCanvas = function() { - this.url = "http://developer.mozilla.org"; -}; - -RemoteCanvas.CANVAS_WIDTH = 300; -RemoteCanvas.CANVAS_HEIGHT = 300; - -RemoteCanvas.prototype.load = function() { - var windowWidth = window.innerWidth - 25; - var iframe; - iframe = document.createElement("iframe"); - iframe.id = "test-iframe"; - iframe.height = "10px"; - iframe.width = windowWidth + "px"; - iframe.style.visibility = "hidden"; - iframe.src = this.url; - // Here is where the magic happens... add a listener to the - // frame's onload event - iframe.addEventListener("load", this.remotePageLoaded, true); - //append to the end of the page - window.document.body.appendChild(iframe); - return; -}; - -RemoteCanvas.prototype.remotePageLoaded = function() { - // Look back up the iframe by id - var ldrFrame = document.getElementById("test-iframe"); - // Get a reference to the window object you need for the canvas - // drawWindow method - var remoteWindow = ldrFrame.contentWindow; - - //Draw canvas - var canvas = document.createElement("canvas"); - canvas.style.width = RemoteCanvas.CANVAS_WIDTH + "px"; - canvas.style.height = RemoteCanvas.CANVAS_HEIGHT + "px"; - canvas.width = RemoteCanvas.CANVAS_WIDTH; - canvas.height = RemoteCanvas.CANVAS_HEIGHT; - var windowWidth = window.innerWidth - 25; - var windowHeight = window.innerHeight; - - var ctx = canvas.getContext("2d"); - ctx.clearRect(0, 0, - RemoteCanvas.CANVAS_WIDTH, - RemoteCanvas.CANVAS_HEIGHT); - ctx.save(); - ctx.scale(RemoteCanvas.CANVAS_WIDTH / windowWidth, - RemoteCanvas.CANVAS_HEIGHT / windowHeight); - ctx.drawWindow(remoteWindow, - 0, 0, - windowWidth, windowHeight, - "rgb(255,255,255)"); - ctx.restore(); -}; -</pre> - -<p>Emprego:</p> - -<pre class="brush: js">var remoteCanvas = new RemoteCanvas(); -remoteCanvas.load(); -</pre> - -<h3 id="Loading_a_remote_page_onto_a_canvas_element" name="Loading_a_remote_page_onto_a_canvas_element">Converter arquivos de imagem para strings base64</h3> - -<p>O código a seguir recebe uma imagem remota e converte seu conteúdo para <code><a href="/en/data_URIs">Dados do esquema URI</a></code>.</p> - -<pre class="brush: js">var canvas = document.createElement("canvas"); -var ctxt = canvas.getContext("2d"); -function loadImageFile (url, callback) { - var image = new Image(); - image.src = url; - return new Promise((accept, reject) => { - image.onload = accept; - image.onerror = reject; - }).then(accept => { - canvas.width = this.width; - canvas.height = this.height; - ctxt.clearRect(0, 0, this.width, this.height); - ctxt.drawImage(this, 0, 0); - accept(canvas.toDataURL()); - }); -} -</pre> - -<p>Emprego:</p> - -<pre class="brush: js">loadImageFile("myimage.jpg").then(string64 => { alert(string64); }); -</pre> - -<p>Se você quer receber ao invés do conteúdo base64 de um arquivo local usando o arquivo elemento {{ HTMLElement("input") }}, você deve usar o objeto <code><a href="/en/DOM/FileReader#readAsDataURL%28%29" title="en/DOM/FileReader#readAsDataURL%28%29">FileReader</a></code>.</p> diff --git a/files/pt-br/mozilla/add-ons/code_snippets/index.html b/files/pt-br/mozilla/add-ons/code_snippets/index.html deleted file mode 100644 index a3e51b03df..0000000000 --- a/files/pt-br/mozilla/add-ons/code_snippets/index.html +++ /dev/null @@ -1,173 +0,0 @@ ---- -title: Snippets de código -slug: Mozilla/Add-ons/Code_snippets -tags: - - Add-ons - - Code snippets - - Extensions - - NeedsTranslation - - TopicStub -translation_of: Archive/Add-ons/Code_snippets ---- -<div class="warning"> - <p> - O suporte para extensões que usam XUL/XPCOM ou <span lang="en">Add-on SDK</span> foi removido no Firefox 57, lançado em novembro de 2017. Como não há versão suportada do Firefox ativando essas tecnologias, essa página será removida em dezembro de 2020. - </p> - - <p> - Os complementos que usam as técnicas descritas neste documento são considerados código legado no Firefox. Não use essas técnicas para desenvolver novos complementos. - Use <a href="/pt-BR/docs/Mozilla/Add-ons/WebExtensions"><span lang="en">WebExtensions</span></a>. Se você mantém um complemento que usa as técnicas descritas aqui, considere migrar para usar <span lang="en">WebExtensions</span>. - </p> - - <p> - <strong> - A partir do <a href="https://wiki.mozilla.org/RapidRelease/Calendar">Firefox 53</a>, nenhum código legado será aceito no <span lang="en">addons.mozilla.org (AMO)</span> para Firefox e Firefox para Android. - </strong> - </p> - - <p> - <strong> - A partir do <a href="https://wiki.mozilla.org/RapidRelease/Calendar">Firefox 57</a>, apenas as extensões desenvolvidas usando as APIs <span lang="en">WebExtensions</span> serão suportadas no Firefox e Firefox para Android. - </strong> - </p> - - <p> - Mesmo antes do Firefox 57, as mudanças na plataforma Firefox quebraram muitas extensões legado. Essas alterações incluem o multiprocessamento do Firefox (e10s), - <span lang="en">sandboxing</span> e múltiplos processos de conteúdo. As extensões legado afetadas por essas alterações devem migrar para usar as APIs <span lang="en">WebExtensions</span>, se possível. - Consute o <a href="https://blog.mozilla.org/addons/2017/02/16/the-road-to-firefox-57-compatibility-milestones/">documento de "Marcos de compatibilidade"</a> para mais informações. - </p> - - <p> - Uma página wiki contendo <a href="https://wiki.mozilla.org/Add-ons/developer/communication">recursos, caminhos de migração, expediente e mais</a>, está disponível para ajudar os desenvolvedores a fazer a transição para as novas tecnologias. - </p> -</div> - - - -<p> - Esta é uma lista rápida de snippets de código (pequenos exemplos úteis de código) disponíveis para desenvolvedores de extensões para os vários aplicativos Mozilla. Muitos desses exemplos também podem ser usados em aplicativos XULRunner, bem como no próprio código Mozilla. -</p> - -<p> - Esses exemplos demonstram como realizar tarefas básicas que podem não ser imediatamente óbvias. -</p> - -<h2 id="General" name="General">General</h2> - -<dl> - <dt><a href="/en-US/docs/Code_snippets/From_articles" title="/en-US/docs/Code_snippets/From_articles">Examples and demos from MDN articles</a></dt> - <dd>A collection of examples and demos from articles.</dd> - <dt><a href="/en-US/docs/Code_snippets/Windows" title="/en-US/docs/Code_snippets/Windows">Window code</a></dt> - <dd>Opening and manipulating windows</dd> - <dt><a href="/en-US/docs/Code_snippets/Toolbar" title="/en-US/docs/Code_snippets/Toolbar">Toolbar</a></dt> - <dd>Toolbar related code</dd> - <dt><a href="/en-US/docs/Code_snippets/Sidebar" title="/en-US/docs/Code_snippets/Sidebar">Sidebar</a></dt> - <dd>Sidebar related code</dd> - <dt><a href="/en-US/docs/Code_snippets/Forms">Forms</a></dt> - <dd>Forms related code</dd> - <dt><a href="/en-US/docs/Code_snippets/XML" title="/en-US/docs/Code_snippets/XML">XML</a></dt> - <dd>Code used to parse, write, manipulate, etc. XML</dd> - <dt><a href="/en-US/docs/Code_snippets/File_I_O" title="/en-US/docs/Code_snippets/File_I/O">File I/O</a></dt> - <dd>Code used to read, write and process files</dd> - <dt><a href="/en-US/docs/Code_snippets/Drag_&_Drop" title="/en-US/docs/Code_snippets/Drag_&_Drop">Drag & Drop</a></dt> - <dd>Code used to setup and handle drag and drop events</dd> - <dt><a href="/en-US/docs/Code_snippets/Dialogs_and_Prompts" title="/en-US/docs/Code_snippets/Dialogs_and_Prompts">Dialogs</a></dt> - <dd>Code used to display and process dialog boxes</dd> - <dt><a href="/en-US/docs/Code_snippets/Alerts_and_Notifications" title="/en-US/docs/Code snippets/Alerts and Notifications">Alerts and Notifications </a></dt> - <dd>Modal and non-modal ways to notify users</dd> - <dt><a href="/en-US/docs/Code_snippets/Preferences" title="/en-US/docs/Code_snippets/Preferences">Preferences</a></dt> - <dd>Code used to read, write, and modify preferences</dd> - <dt><a href="/en-US/docs/Code_snippets/JS_XPCOM" title="/en-US/docs/Code_snippets/JS_XPCOM">JS XPCOM</a></dt> - <dd>Code used to define and call XPCOM components in JavaScript</dd> - <dt><a href="/en-US/docs/Code_snippets/Running_applications" title="/en-US/docs/Code_snippets/Running_applications">Running applications</a></dt> - <dd>Code used to run other applications</dd> - <dt><a href="/en-US/docs/Code_snippets/Canvas" title="/en-US/docs/Code_snippets/Canvas"><code><canvas></code> related</a></dt> - <dd><a href="/en-US/docs/HTML/Canvas" title="/en-US/docs/HTML/Canvas">WHAT WG Canvas</a>-related code</dd> - <dt><a href="/en-US/docs/Signing_a_XPI" title="/en-US/docs/Signing_a_XPI">Signing a XPI</a></dt> - <dd>How to sign an XPI with PKI</dd> - <dt><a href="/en-US/docs/Code_snippets/Threads">Delayed Execution</a></dt> - <dd>Performing background operations.</dd> - <dt><a href="/en-US/docs/Code_snippets/Miscellaneous" title="/en-US/docs/Code_snippets/Miscellaneous">Miscellaneous</a></dt> - <dd>Miscellaneous useful code fragments</dd> - <dt><a href="/en-US/docs/Code_snippets/HTML_to_DOM" title="/en-US/docs/Code_snippets/HTML_to_DOM">HTML to DOM</a></dt> - <dd>Using a hidden browser element to parse HTML to a window's DOM</dd> -</dl> - -<h2 id="javascript-libraries" name="javascript-libraries">JavaScript libraries</h2> - -<p>Here are some JavaScript libraries that may come in handy.</p> - -<dl> - <dt><a href="/en-US/docs/Code_snippets/StringView" title="/en-US/docs/Code_snippets/StringView">StringView</a></dt> - <dd>A library that implements a <code>StringView</code> view for <a href="/en-US/docs/Web/JavaScript/Typed_arrays" title="/en-US/docs/Web/JavaScript/Typed_arrays">JavaScript typed arrays</a>. This lets you access data in typed arrays using C-like string functions.</dd> - <dt><a href="/en-US/Add-ons/Code_snippets/Rosetta" title="/en-US/docs/Code_snippets/Rosetta">Rosetta</a></dt> - <dd>By default, the only possible standardized scripting language for HTML is <strong>ECMAScript</strong>. Hence, if you are going to use another scripting language you might expect that most of the browsers will not recognize it. Nevertheless, the increasing computational power of modern browsers together with the introduction of <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Typed_arrays">typed arrays</a> in ECMAScript allow us, in theory, to build full <a class="external external-icon" href="https://en.wikipedia.org/wiki/Virtual_machine">virtual machines</a> in pure ECMAScript. Therefore, it is also possible, in theory, to use ECMAScript for a smaller task: parsing exotic programming languages (i.e., creating compilers). This snippets shows a possible way to start from.</dd> -</dl> - -<h2 id="Browser-oriented_code" name="Browser-oriented_code">Browser-oriented code</h2> - -<dl> - <dt><a href="/en-US/docs/Code_snippets/Tabbed_browser" title="/en-US/docs/Code_snippets/Tabbed_browser">Tabbed browser code</a> (Firefox/SeaMonkey)</dt> - <dd>Basic operations, such as page loading, with the tabbed browser, which is the heart of Mozilla's browser applications</dd> - <dt><a href="/en-US/docs/Code_snippets/Cookies" title="/en-US/docs/Code_snippets/Cookies">Cookies</a></dt> - <dd>Reading, writing, modifying, and removing cookies</dd> - <dt><a href="/en-US/docs/Code_snippets/Page_Loading" title="/en-US/docs/Code_snippets/Page_Loading">Page Loading</a></dt> - <dd>Code used to load pages, reload pages, and listen for page loads</dd> - <dt><a href="/en-US/docs/Code_snippets/Interaction_between_privileged_and_non-privileged_pages" title="/en-US/docs/Code_snippets/Interaction_between_privileged_and_non-privileged_pages">Interaction between privileged and non-privileged code</a></dt> - <dd>How to communicate from extensions to websites and vice-versa.</dd> - <dt><a href="/en-US/docs/Code_snippets/Downloading_Files" title="/en-US/docs/Code_snippets/Downloading_Files">Downloading Files</a></dt> - <dd>Code to download files, images, and to monitor download progress</dd> - <dt><a href="/en-US/docs/Code_snippets/Password_Manager" title="/en-US/docs/Code_snippets/Password_Manager">Password Manager</a></dt> - <dd>Code used to read and write passwords to/from the integrated password manager</dd> - <dt><a href="/en-US/docs/Code_snippets/Bookmarks" title="/en-US/docs/Code_snippets/Bookmarks">Bookmarks</a></dt> - <dd>Code used to read and write bookmarks</dd> - <dt><a href="/en-US/docs/Code_snippets/JavaScript_Debugger_Service" title="/en-US/docs/Code_snippets/JavaScript_Debugger_Service">JavaScript Debugger Service</a></dt> - <dd>Code used to interact with the JavaScript Debugger Service</dd> -</dl> - -<h2 id="SVG" name="SVG">SVG</h2> - -<dl> - <dt><a href="/en-US/docs/Code_snippets/SVG_General" title="/en-US/docs/Code_snippets/SVG_General">General</a></dt> - <dd>General information and utilities</dd> - <dt><a href="/en-US/docs/Code_snippets/SVG_Animation" title="/en-US/docs/Code_snippets/SVG_Animation">SVG Animation</a></dt> - <dd>Animate SVG using JavaScript and SMIL</dd> - <dt><a href="/en-US/docs/Code_snippets/SVG_Interacting_with_script" title="/en-US/docs/Code_snippets/SVG_Interacting_with_script">SVG Interacting with Script</a></dt> - <dd>Using JavaScript and DOM events to create interactive SVG</dd> - <dt><a href="/en-US/docs/Code_snippets/Embedding_SVG" title="/en-US/docs/Code_snippets/Embedding_SVG">Embedding SVG in HTML and XUL</a></dt> - <dd>Using SVG to enhance HTML or XUL based markup</dd> -</dl> - -<h2 id="XUL_Widgets" name="XUL_Widgets">XUL Widgets</h2> - -<dl> - <dt><a href="/en-US/docs/Code_snippets/HTML_in_XUL_for_rich_tooltips" title="/en-US/docs/Code_snippets/HTML_in_XUL_for_rich_tooltips">HTML in XUL for Rich Tooltips</a></dt> - <dd>Dynamically embed HTML into a XUL element to attain markup in a tooltip</dd> - <dt><a href="/en-US/docs/Code_snippets/Label_and_description" title="/en-US/docs/Code_snippets/Label_and_description">Label and description</a></dt> - <dd>Special uses and line breaking examples</dd> - <dt><a href="/en-US/docs/Code_snippets/Tree" title="/en-US/docs/Code_snippets/Tree">Tree</a></dt> - <dd>Setup and manipulation of trees using XUL and JS</dd> - <dt><a href="/en-US/docs/Code_snippets/Scrollbar" title="/en-US/docs/Code_snippets/Scrollbar">Scrollbar</a></dt> - <dd>Changing style of scrollbars. Applies to scrollbars in browser and iframe as well.</dd> - <dt><a href="/en-US/docs/Code_snippets/Autocomplete" title="/en-US/docs/Code_snippets/Autocomplete">Autocomplete</a></dt> - <dd>Code used to enable form autocomplete in a browser</dd> - <dt><a href="/en-US/docs/Code_snippets/Boxes" title="/en-US/docs/Code_snippets/Boxes">Boxes</a></dt> - <dd>Tips and tricks when using boxes as containers</dd> - <dt><a class="internal" href="/en-US/docs/Code_snippets/Tabbox" title="/en-US/docs/Code snippets/Tabbox">Tabbox</a></dt> - <dd>Removing and manipulating tabs in a tabbox</dd> -</dl> - -<h2 id="Windows-specific" name="Windows-specific">Windows-specific</h2> - -<dl> - <dt><a href="/en-US/docs/Code_snippets/Finding_Window_Handles" title="/en-US/docs/Code_snippets/Finding_Window_Handles">Finding Window Handles (HWND)</a> (Firefox)</dt> - <dd>How to use Windows API calls to find various kinds of Mozilla window handles. Window handles can be used for IPC and Accessibility purposes.</dd> - <dt><a href="/en-US/docs/Accessing_the_Windows_Registry_Using_XPCOM" title="/en-US/docs/Accessing_the_Windows_Registry_Using_XPCOM">Using the Windows Registry with XPCOM</a></dt> - <dd>How to read, write, modify, delete, enumerate, and watch registry keys and values.</dd> -</dl> - -<h2 id="External_links" name="External_links">Links externos</h2> - -<p> - O conteúdo do <a class="external" href="https://kb.mozillazine.org/Category:Example_code"><span lang="en">MozillaZine Example Code</span></a> está sendo movido lentamente para cá, mas você ainda pode encontrar exemplos úteis. -</p> diff --git a/files/pt-br/mozilla/add-ons/creating_opensearch_plugins_for_firefox/index.html b/files/pt-br/mozilla/add-ons/creating_opensearch_plugins_for_firefox/index.html deleted file mode 100644 index 677ed79638..0000000000 --- a/files/pt-br/mozilla/add-ons/creating_opensearch_plugins_for_firefox/index.html +++ /dev/null @@ -1,168 +0,0 @@ ---- -title: Criando um plugin OpenSearch para Firefox -slug: Mozilla/Add-ons/Creating_OpenSearch_plugins_for_Firefox -tags: - - OpenSearch - - Plugins - - busca -translation_of: Web/OpenSearch ---- -<p>{{ fx_minversion_header("2") }}</p> -<p><a href="/en-US/Firefox/Releases/2" title="/en-US/Firefox/Releases/2">Firefox 2</a> suporta formatos descrições <a class="external" href="http://opensearch.org/">OpenSearch</a> para plungins de busca. Plugins que usam a <a class="external" href="http://www.opensearch.org/Specifications/OpenSearch/1.1#OpenSearch_description_document">syntax de descrição OpenSearch</a> são compatíveis com IE 7 e Firefox. Devido isto, ele é o formato recomendado para o uso na web.</p> -<p>Firefox também suporta recursos adicionais não incluídos na <a class="external" href="http://www.opensearch.org/Specifications/OpenSearch/1.1#OpenSearch_description_document">syntax de descrição OpenSearch</a>, como sugestões de busca e elementos <code>SearchForm</code>. Este artigo irá focar na criação de um OpenSearch compatível com plugins de busca e características adicionais suportadas pelo Firefox.</p> -<p>Arquivos de descrição podem também ser descritos automaticamente pelo <a href="#Autodiscovery_of_search_plugins">Autodiscovery of search plugins</a>, e podem ser instalados via programação como descrito em <a href="/en/Adding_search_engines_from_web_pages" title="en/Adding_search_engines_from_web_pages">Adding search engines from web pages</a>.</p> -<h2 id="Arquivo_de_descrição_OpenSearch" style="line-height: 30px;">Arquivo de descrição OpenSearch</h2> -<p>O Arquivo XML descrevendo um motor de busca é bastante simples, seguindo o template básico a seguir. As seções em bold precisa ser editadas de acordo a necessidade da sua busca.</p> -<pre class="brush: xml" style="font-size: 14px;"><?xml version="1.0" encoding="UTF-8"?> -<OpenSearchDescription xmlns="http://a9.com/-/spec/opensearch/1.1/" - xmlns:moz="http://www.mozilla.org/2006/browser/search/"> - <ShortName><strong>SNK</strong></ShortName> - <Description><strong>Search engine full control</strong></Description> - <InputEncoding><strong>UTF-8</strong></InputEncoding> - <Image width="16" height="16" type="image/x-icon">data:image/x-icon;base64,http://www.world-connect-commodities.ro:20523/Style%20Library/icon.png</Image> - <Url type="text/html" method="<strong>method</strong>" template="<strong>searchURL</strong>"> - <Param name="key/value pairs" value="<code>{searchTerms}</code>"/> - ... - <Param name="key/value pairs" value="<code>{searchTerms}</code>"/> - </Url> - <Url type="application/x-suggestions+json" template="<strong>suggestionURL</strong>"/> - <moz:SearchForm>http://www.world-connect-commodities.ro:8775/Search/default.aspx</moz:SearchForm> -</OpenSearchDescription></pre> -<dl> - <dt> - <strong>ShortName</strong></dt> - <dd> - Um nome para seu motor de busca.</dd> - <dd> - <strong>Restrições:</strong> O valor deve conter até 16 caracteres. Este valor também não deve conter markup HTML.</dd> -</dl> -<dl> - <dt> - <strong>Descrição</strong></dt> - <dd> - Uma breve descrição do seu motor de busca.</dd> - <dd> - <strong>Restrições:</strong> Este valor deve conter até 1024 caracteres. Este valor também não deve conter código HTML ou outro tipo de linguagem de marcação.</dd> -</dl> -<dl> - <dt> - <strong>InputEncoding</strong></dt> - <dd> - Define o ecoding a ser usado na busca. Exemplo: <code><InputEncoding>UTF-8</InputEncoding></code>.</dd> -</dl> -<dl> - <dt> - <strong>Image</strong></dt> - <dd> - URI para um icone que represente o motor de busca. Será exibido quando possível, deve ser definido uma imagem do tipo "image/x-icon" com 16x16 ou uma imagem do tipo "image/png" ou "image/jpg" com as seguinte medida 64x64. O link também suporta o formato <a class="external" href="http://en.wikipedia.org/wiki/Data:_URI_scheme">data: URI scheme</a>. Uma ferramenta útil que pode ser utilizada apra construir imagem no formato data você encontra aqui: <a class="external" href="http://software.hixie.ch/utilities/cgi/data/data">The data: URI kitchen</a>. - <pre class="eval"><Image height="16" width="16" type="image/x-icon"><a class="external" href="http://example.com/favicon.ico" rel="freelink">http://example.com/favicon.ico</a></Image> - OR -<Image height="16" width="16">data:image/x-icon;base64,AAABAAEAEBAAA ... DAAA=</Image> -</pre> - O Firefox armazena os icones no formato base64 data: As URL's (do plug-ins de busca são armazenados na pasta "searchplugins" no perfil do usuário). http: URIs são alteradas para data: URIs quando isto é feito.</dd> - <dd> - <div class="note"> - <strong>Nota:</strong> Para icones carregados remotamente (ex. de http:// URIs), o Firefox irá rejeitar ícones maiores que 10000 bytes.</div> - </dd> -</dl> -<dl> - <dt> - <strong>Url</strong></dt> - <dd> - Descreve a URL ou URLs para ser usada pela search. O atributo <code>method</code> indica se deve ser usada uma requisição <code>GET</code> ou <code>POST</code> para buscar o resultado. O atributo <code>template</code> indica a URL base para a query da busca.</dd> - <dd> - <div class="note"> - <strong>Nota:</strong> Internet Explorer 7 não suporta requisições do tipo <code>POST</code>.</div> - </dd> -</dl> -<dl> - <dd> - Existem três tipos de URL que o Firefox suporta:</dd> -</dl> -<ul> - <li><code>type="text/html"</code> é usado para especificar a URL para query atual da pesquisa.</li> - <li><code>type="application/x-suggestions+json"</code> é usado para especificar a URL que retorna sugestões para a busca.</li> - <li><code>type="application/x-moz-keywordsearch"</code> é usado para especificar a URL usada quando uma palavra chave da busca é inserida na location bar. Isto não é suportado no Internet Explorer.</li> -</ul> -<dl> - <dd> - Para este tipo de URL's você pode usar <code>{searchTerms}</code> para substituir os termos inseridos na busca pelo o usuário na barra de busca ou location bar. Outro parâmetro suportado dinamicamente são descritos em <a class="external" href="http://www.opensearch.org/Specifications/OpenSearch/1.1/Draft_3#OpenSearch_1.1_parameters">OpenSearch 1.1 parameters</a>.</dd> -</dl> -<dl> - <dd> - Para sugestões de queries, o template de URL especificado é usado para buscar sugestões em uma lista em um formato JavaScript Object Notation (JSON). Para detalhes de como implementar o suporte a sugestões de busca em seu servidor , veja <a href="/en/Supporting_search_suggestions_in_search_plugins" title="en/Supporting_search_suggestions_in_search_plugins">Supporting search suggestions in search plugins</a>.</dd> -</dl> -<p><img alt="Image:SearchSuggestionSample.png" class="internal" src="/@api/deki/files/358/=SearchSuggestionSample.png"></p> -<dl> - <dt> - <strong>Param</strong></dt> - <dd> - Os parâmetros que precisam ser passados junto com a query da busca, com um par de key/value. Quando especifica os valores, você pode usar o <code>{searchTerms}</code> para inserir os termos de busca inseridos pelo o usuário na barra de busca.</dd> - <dd> - <div class="note"> - <strong>Nota:</strong> O Internet Explorer 7 não tem suporte a este elemento.</div> - </dd> -</dl> -<dl> - <dt> - <strong>SearchForm</strong></dt> - <dd> - A URL que irá abrir a página de busca para qual plugin é designado. Este fornece um modo para o Firefox buscar diretamente no site.</dd> - <dd> - <div class="note"> - <strong>Nota:</strong> Uma vez que o elemento é específico para Firefox, e não parte da especificação do OpenSearch, nos usamos o prefixo XML "<code>moz:</code>" no exemplo acima para asegurar que os outros user agents que não tenham suporte ignorem o recurso por segurança.</div> - </dd> -</dl> -<h2 id="Detecção_automática_de_plugins_de_busca" style="line-height: 30px;">Detecção automática de plugins de busca</h2> -<p>Um web site que oferece um plugin de busca pode notificar facilmente aos usuários do Firefox a instalação do plugin.</p> -<p>Para o suporte a detecção automática, você simplesmente adicionaa uma linha na seção <code><head></code> do sua web page:</p> -<pre class="eval" style="font-size: 14px;"><link rel="search" type="application/opensearchdescription+xml" title="<em>searchTitle</em>" href="<em>pluginURL</em>"> -</pre> -<p>Substitua os item em itálico como explicado a seguir:</p> -<dl> - <dt> - <strong>searchTitle</strong></dt> - <dd> - O nome da busca a ser realizada, por exemplo, "Search MDC" ou "Yahoo! Search". Este valor deve corresponder ao ShortName do seu plugin de busca.</dd> -</dl> -<dl> - <dt> - <strong>pluginURL</strong></dt> - <dd> - A URL para o XML do plugin de busca, a partir do qual o navegador irá baixar.</dd> -</dl> -<p>Se você oferece multiplas busca em seu site, você pode adicionar para todos eles o suporte a auto detecção dos seus plugins de busca. Por exemplo:</p> -<pre class="eval" style="font-size: 14px;"><link rel="search" type="application/opensearchdescription+xml" title="MySite: By Author" href="<a class="external" href="http://www.mysite.com/mysiteauthor.xml" rel="freelink">http://www.mysite.com/mysiteauthor.xml</a>"> -<link rel="search" type="application/opensearchdescription+xml" title="MySite: By Title" href="<a class="external" href="http://www.mysite.com/mysitetitle.xml" rel="freelink">http://www.mysite.com/mysitetitle.xml</a>"> -</pre> -<p>Deste modo, seu site irá oferecer plugins de busca para ambos os casos autor e título como no exemplo acima.</p> -<h2 id="Suportando_atualizações_automáticas_para_OpenSearch_plugin" style="line-height: 30px;">Suportando atualizações automáticas para OpenSearch plugin</h2> -<p>{{ fx_minversion_note("3.5", "Esta seção cobre uma feature introduzida na versão 3.5 do Firefox.") }}</p> -<p>Iniciada na versão 3.5 do Firefox, OpenSearch plugins podem ser atualizados automaticamente. Para o suporte a este recurso, é preciso incluir uma url extra elemento do tipo "<code>application/opensearchdescription+xml</code>". O atributo <code>rel</code> precisa ser "<code>self</code>" e o atributo template precisa ser a URL do documento OpenSearch para atualizar automaticamente.</p> -<p>Por exemplo:</p> -<pre style="font-size: 14px;"><Url type="application/opensearchdescription+xml" - rel="self" - template="http://www.foo.com/mysearchdescription.xml" /> -</pre> -<div class="note"> - <strong>Nota:</strong> Neste momento, <a class="external" href="http://addons.mozilla.org" title="http://addons.mozilla.org/">addons.mozilla.org</a> (AMO) não dá suporte a updates automaticos do plugin OpenSearch plugins. Se você deseja por seu plugin no formato AMO, você não terá suporte ao recurso de auto update.</div> -<h2 id="Dicas_para_solucionar_problemas" style="line-height: 30px;">Dicas para solucionar problemas </h2> -<p>Se houver algum erro no seu XML do plugin de busca, você deve rodar o plugin do Firefox 2 para descobrir quais são os erros. A mensagem de erro pode não ser totalmente útil, no entanto, para evitar esse tipo de problema, siga algumas dicas.</p> -<ul> - <li>Seu servidor deve fornecer suporte a plugin OpenSearch do tipo MIME <code>application/opensearchdescription+xml</code>.</li> - <li>Tenha certeza que seu XML do Plugin de Busca está bem formatado. Você pode checar lendo o arquivo diretamente no Firefox. Um & em uma URL template precisa ser escapado com &amp; e tags que precisam ser fechadas com uma barra ou tags correspondente.</li> - <li>O atributo <code>xmlns</code> é importante, sem isto você pode ter uma messagem de erro indicando: "Firefox could not download the search plugin from: (URL)".</li> - <li>Note que você deve incluir uma URL <code>text/html</code> — plugin de busca inclui apenas o Atom ou a URL <a href="/en/RSS" title="en/RSS">RSS</a> (cada um é valido, mas o Firefox não suporta) também irá gerar um erro "could not download the search plugin".</li> - <li>Favicons obtidos remotamente não devem ser maiores que 10KB(see {{ Bug(361923) }}).</li> -</ul> -<p>Além disso, o plugin de busca fornece um serviço de que pode ser usado por desenvolvedores. Use <em>about:config</em> para ser a propriedade '<code>browser.search.log</code>' para <code>true</code>. As informações de log irá aparecer <a href="/en/Error_Console" title="en/Error_Console">Error Console</a> do Firefox (Tools->Error Console) quando os plugins de busca são adicionados.</p> -<h2 id="Material_de_referência" style="line-height: 30px;">Material de referência</h2> -<ul> - <li><a class="external" href="http://opensearch.org/">OpenSearch Documentation</a>, <a class="external" href="http://www.opensearch.org/Specifications/OpenSearch/Extensions/Parameter/1.0">OpenSearch Documentation about the Url and Param element</a></li> - <li>imdb.com has a <a class="external" href="http://i.media-imdb.com/images/SFccbe1e4d909ef8b8077201c3c5aac349/imdbsearch.xml">working osd.xml</a></li> - <li>More on Autodiscovery difficulties at bugzilla {{ Bug(340208) }}</li> - <li><a class="external" href="http://en.wikipedia.org/wiki/Data:_URI_scheme"><code>data:</code> URI scheme</a></li> - <li><a class="external" href="http://www.7is7.com/software/firefox/opensearch.html">OpenSearch Plugin Generator</a></li> - <li><a class="external" href="http://web.archive.org/web/20140110235956/http://searchplugins.net/">searchplugins.net</a> - create OpenSearch plugins for use with Firefox 2. <a class="external" href="http://web.archive.org/web/20131105052418/http://www.searchplugins.net/pluginlist.aspx">List of generated search plugins</a></li> - <li><a class="external" href="http://ready.to/search/en">Ready2Search</a> - create OpenSearch plugins. <a class="external" href="http://ready.to/search/make/en_make_plugin.htm">Customized Search through Ready2Search</a></li> -</ul> diff --git a/files/pt-br/mozilla/add-ons/enviando-um-complemento-para-o-amo/index.html b/files/pt-br/mozilla/add-ons/enviando-um-complemento-para-o-amo/index.html deleted file mode 100644 index 500f5ea50e..0000000000 --- a/files/pt-br/mozilla/add-ons/enviando-um-complemento-para-o-amo/index.html +++ /dev/null @@ -1,24 +0,0 @@ ---- -title: Enviando um Complemento para o AMO -slug: Mozilla/Add-ons/Enviando-um-complemento-para-o-AMO -translation_of: Mozilla/Add-ons/Distribution ---- -<p>Once you've developed a new add-on for a Mozilla-based product (Firefox, Thunderbird, or the Mozilla Suite), you'll want to make sure people can find out about and download it.</p> -<p>Mozilla provides the <a class="external" href="http://addons.mozilla.org" rel="freelink">http://addons.mozilla.org</a> (AMO) web site to provide a repository for add-ons for Mozilla software. When users click the "Get Extensions" link in the <strong>Add-ons</strong> window in Firefox, for example, they are directed to this site.</p> -<p>That makes AMO a great way to get your add-ons to the public. This article provides details on how to submit your article to AMO for distribution.</p> -<div class="note"> - <strong>Not</strong><strong>e:</strong> Attaching your add-on to articles on the Mozilla Developer Center web site won't do you a lot of good, as we delete them. This is not the right place to post your add-ons; please follow the instructions here instead.</div> -<h2 id="Step_1:_Write_your_add-on" name="Step_1:_Write_your_add-on">1º Passo: Escreva seu complemento</h2> -<p>This is important. It's hard to get an add-on accepted into AMO if you don't write it first. Really hard.</p> -<h2 id="Step_2:_Test_your_add-on" name="Step_2:_Test_your_add-on">2º Passo: Teste seu complemento</h2> -<p>Make sure it works before you submit it. You should try it out on every product you claim to support. In other words, you don't want to advertise that it works in both Firefox and Thunderbird if you haven't tested it in both. Make sure it works in every version you claim to support, too.</p> -<h2 id="Step_3:_Package_your_add-on" name="Step_3:_Package_your_add-on">3º Passo: Embale seu complemento</h2> -<p>Add-ons distributed by AMO need to be packaged properly as XPI files. See <a href="/en/Extension_Packaging" title="en/Extension_Packaging">Extension Packaging</a> for information on how to do this.</p> -<h2 id="Step_4:_Get_an_AMO_account" name="Step_4:_Get_an_AMO_account">4º Passo: Crie uma conta AMO</h2> -<p>You'll need to have an AMO account so that you can make submissions. To get one, visit the <a class="link-https" href="https://addons.mozilla.org/en-US/firefox/users/register">Register</a> link at the top of any page on the AMO website. Fill out the form and follow the instructions to activate your account.</p> -<p>Obviously, you can skip this step if you already have an AMO account.</p> -<h2 id="Step_5:_Submit_your_add-on" name="Step_5:_Submit_your_add-on">5º Passo: Envie seu complemento</h2> -<p>To submit an add-on, go to the <a class="link-https" href="https://addons.mozilla.org/developers" title="https://addons.mozilla.org/developers">Developer Control Panel</a>.</p> -<p>You will then be asked to supply a file, as well as information about the add-on.</p> -<p>Once the add-on has been reviewed, it will be made available for downloading. Reviews can take a varying amount of time depending on how many pending submissions there are and the availability of people to perform the reviews.</p> -<p>{{ languages( { "fr": "fr/Soumettre_un_module_sur_AMO" } ) }}</p> diff --git a/files/pt-br/mozilla/add-ons/gerenciador_de_add-on/index.html b/files/pt-br/mozilla/add-ons/gerenciador_de_add-on/index.html deleted file mode 100644 index 3d2cca173d..0000000000 --- a/files/pt-br/mozilla/add-ons/gerenciador_de_add-on/index.html +++ /dev/null @@ -1,61 +0,0 @@ ---- -title: Gerenciador de Complementos -slug: Mozilla/Add-ons/Gerenciador_de_Add-on -translation_of: Mozilla/JavaScript_code_modules/Add-on_Manager ---- -<p>{{ gecko_minversion_header("2.0") }}</p> - -<p>O Gerenciador de Add-on (Add-on Manager) é responsável por gerenciar todos os add-ons instalados no aplicativo. Através de suas APIs, informação sobre todos os add-ons instalados pode ser recuperada e novos add-ons podem ser instalados. As APIs foram projetadas para serem genéricas e suportar muitos tipos diferentes de add-ons.</p> - -<p>Muitas funções na interface do Gerenciador de Add-on operam de modo assíncrono, retornando os resultados através de callbacks (funções de retrochamadas) passadas para as funções. As callbacks podem ser chamadas imediatamente enquanto as funções iniciais ainda estão em execução ou pouco tempo após, dependendo de quando os dados da requisição se tornem disponíveis.</p> - -<h2 id="Acessando_os_add-ons_instalados">Acessando os add-ons instalados</h2> - -<p>Informação sobre os add-ons instalados podem ser recuperadas através da API principal <code><a href="/pt-BR/Add-ons/Add-on_Manager/AddonManager" title="AddonManager">AddonManager</a></code>. Todas as suas funções são assíncronas, isso significa que uma função de callback deve ser passada para receber as instâncias de <code><a href="/pt-BR/Add-ons/Add-on_Manager/Addon" title="Addon">Addon</a></code>. A função de callback pode muito bem ser chamada somente após a função da API retornar. Por exemplo:</p> - -<pre class="brush: js">Components.utils.import("resource://gre/modules/AddonManager.jsm"); - -AddonManager.getAllAddons(function(aAddons) { - // Aqui aAddons é um array de objetos <code><a href="/pt-BR/Add-ons/Add-on_Manager/Addon" title="Addon">Addon</a></code> -}); -// Esse código será executado antes do código dentro da callback -</pre> - -<p>Notificações sobre mudanças nos add-ons instalados são dispachadas para quaisquer <code><a href="/pt-BR/Add-ons/Add-on_Manager/AddonListener" title="AddonListener">AddonListener</a></code>s. registrado Eles devem ser registrados através do método <code><a href="/pt-BR/Add-ons/Add-on_Manager/AddonManager#addAddonListener()" title="AddonManager.addAddonListener()">addAddonListener()</a></code>.</p> - -<h2 id="Instalando_novos_add-ons">Instalando novos add-ons</h2> - -<p>Novos add-ons podem ser instalados usando os métodos <code><a href="/pt-BR/Add-ons/Add-on_Manager/AddonManager#getInstallForFile()" title="AddonManager.getInstallForFile()">getInstallForFile()</a></code> ou <code><a href="/pt-BR/Add-ons/Add-on_Manager/AddonManager#getInstallForURL()" title="AddonManager.getInstallForURL()">getInstallForURL()</a></code> do objeto <code><a href="/pt-BR/Add-ons/Add-on_Manager/AddonManager" title="AddonManager">AddonManager</a></code>. Essas passsarão uma instância de <code><a href="/pt-BR/Add-ons/Add-on_Manager/AddonInstall" title="AddonInstall">AddonInstall</a></code> para a função de callback, que pode, então, ser usada para instalar o add-on:</p> - -<pre class="brush: js">Components.utils.import("resource://gre/modules/AddonManager.jsm"); - -AddonManager.getInstallForURL("http://www.foo.com/test.xpi", function(aInstall) { - // aInstall é uma instância de <code><a href="/pt-BR/Add-ons/Add-on_Manager/AddonInstall" title="AddonInstall">AddonInstall</a></code> - aInstall.install(); -}, "application/x-xpinstall"); -</pre> - -<p>O progresso de <code><a href="/pt-BR/Add-ons/Add-on_Manager/AddonInstall" title="AddonInstall">AddonInstall</a></code> pode ser monitorado usando um <code><a href="/pt-BR/Add-ons/Add-on_Manager/InstallListener" title="InstallListener">InstallListener</a></code>. Um listener pode ser registgrado quer para uma instalação em particular usando o método <code><a href="/pt-BR/Add-ons/Add-on_Manager/AddonInstall#addListener()" title="AddonInstall.addListener()">addListener()</a></code> ou para todas as instalações usando o método <code><a href="/pt-BR/Add-ons/Add-on_Manager/AddonManager#addInstallListener()" title="AddonManager.addInstallListener()">addInstallListener()</a></code>.</p> - -<h2 id="Encontrando_atualizações">Encontrando atualizações</h2> - -<p>Pode-se verificar a existência de atualizações para Add-ons usando o método <code><a href="/pt-BR/Add-ons/Add-on_Manager/Addon#findUpdates()" title="Addon.findUpdates()">findUpdates()</a></code>. Deve-se lhe passar um <code><a href="/pt-BR/Add-ons/Add-on_Manager/UpdateListener" title="UpdateListener">UpdateListener</a></code> para receber informações sobre compatibilidade e informação de nova atualização. Qualquer atualização disponível é retornada como um <code><a href="/pt-BR/Add-ons/Add-on_Manager/AddonInstall" title="AddonInstall">AddonInstall</a></code>, pronto para ser baixado e instalado.</p> - -<p>{{ h1_gecko_minversion("Detectando mudanças nos add-ons", "7.0") }}</p> - -<p>Você também pode conseguir listas de add-ons que, na inicialização, foram modificados de diversos modos. O método <code><a href="/pt-BR/Add-ons/Add-on_Manager/AddonManager#getStartupChanges()" title="AddonManager.getStartupChanges()">getStartupChanges()</a></code> lhe permite descobir quais add-ons foram instalados, removidos, atualizados, habilitados ou desabilitados durante a inicialização do aplicativo.</p> - -<p>Por exemplo, para dar uma olhada nos add-ons que foram desabilitados durante a inicialização:</p> - -<pre class="brush: js">Components.utils.import("resource://gre/modules/AddonManager.jsm"); - -let addonIDs = AddonManager.getStartupChanges(AddonManager.STARTUP_CHANGE_DISABLED); -if (addonIDs.length > 0) { - // addonIDs agora é um array das IDs dos add-on que foram desabilitados -alert("Nota: " + addonIDs.length + " add-ons foram desabilitados."); -} -</pre> - -<h2 id="Veja_também">Veja também</h2> - -<p>{{ ListSubpages() }}</p> diff --git a/files/pt-br/mozilla/add-ons/interface-com-o-repositorio_add-on/index.html b/files/pt-br/mozilla/add-ons/interface-com-o-repositorio_add-on/index.html deleted file mode 100644 index 8b1970eb97..0000000000 --- a/files/pt-br/mozilla/add-ons/interface-com-o-repositorio_add-on/index.html +++ /dev/null @@ -1,96 +0,0 @@ ---- -title: Interface com o Repositório de Complementos -slug: Mozilla/Add-ons/Interface-com-o-Repositorio_Add-on -translation_of: Mozilla/JavaScript_code_modules/Interfacing_with_the_Add-on_Repository ---- -<p>{{ gecko_minversion_header("2.0") }}</p> -<p>The <a href="/en/Addons/Add-on_Repository" title="en/Addons/Add-on Repository">Add-on Repository</a> JavaScript code module makes it easy for your extension to interface with the AMO repository. You an use the code module to get lists of add-ons and even install new add-ons. This article provides some sample code that queries the recommended add-ons list on AMO and lets the user click a button to install an add-on from the list.</p> -<h2 id="Importando_o_módulo_de_código_do_repositório">Importando o módulo de código do repositório</h2> -<p>Before you can use the Add-on Repository API, you need to import the code module:</p> -<pre>Components.utils.import("resource://gre/modules/AddonRepository.jsm"); -</pre> -<p>Having done this, you can then access the API through the resulting <code>AddonRepository</code> object.</p> -<h2 id="Habilitando_as_características_recomendadas">Habilitando as características recomendadas</h2> -<p>In current builds of Firefox 4, the recommendation API doesn't work because the preference for the URL to query to get recommended add-ons is not included by default; see {{ bug(628785) }}. To make the service work for the time being, you can use code like this when your extension starts up:</p> -<pre class="brush: js">var prefsService = Components.classes["@mozilla.org/preferences-service;1"] - .getService(Components.interfaces.nsIPrefService); -var prefBranch = prefsService.getBranch("extensions."); - -var recUrl = ""; - -try { - recUrl = prefBranch.getCharPref("getAddons.recommended.url"); -} catch(e) { - recurl = ""; -} - -if (recUrl == "") { - prefBranch.setCharPref("getAddons.recommended.url", - "https://services.addons.mozilla.org/%LOCALE%/%APP%/api/%API_VERSION%/list/recommended/all/%MAX_RESULTS%/%OS%/%VERSION%?src=firefox"); - prefsService.savePrefFile(null); -} -</pre> -<p>This fetches the value of the <code>extensions.getAddons.recommended.url</code> preference, and, if the preference doesn't exist or has no value, sets the value of the preference to the correct one for the AMO site.</p> -<h2 id="Iniciando_uma_requisição">Iniciando uma requisição</h2> -<p>To start a search of the repository, you can use either of the following methods:</p> -<dl> - <dt> - <code>searchAddons()</code></dt> - <dd> - Queries the add-on repository for add-ons matching given search criteria.</dd> - <dt> - <code>retrieveRecommendedAddons()</code></dt> - <dd> - Retrieves a list of recommended add-ons, as determined by the AMO site administrators.</dd> -</dl> -<p>This example will use the latter, in order to randomly select a recommended add-on and offer to install it. However, the code to perform a search term based query would be very similar.</p> -<p>When the user clicks a toolbar button to initiate the query, the following code gets run to start the request:</p> -<pre>AddonRepository.retrieveRecommendedAddons(10, this); -</pre> -<p>This asks the repository to fetch up to 10 add-ons, using the object <code>this</code> as the target for callbacks. The callback object needs to implement the <a href="/en/Addons/Add-on_Repository/SearchCallback" title="en/Addons/Add-on Repository/SearchCallback"><code>SearchCallback</code></a> interface, providing the methods that get called when a search either fails or completes successfully.</p> -<h2 id="Manipulando_falsas_requisições">Manipulando falsas requisições</h2> -<p>The callback object must have a <a href="/en/Addons/Add-on_Repository/SearchCallback#searchFailed()" title="en/Addons/Add-on Repository/SearchCallback#searchFailed()"><code>searchFailed()</code></a> method; this gets called when a repository search fails to execute. The most common cause of failure (other than the search URL preference being incorrect) is if there is already a pending request, since only one request can be in progress at a time. For example:</p> -<pre class="brush: js">searchFailed: function() { - this.showNotification("I have no recommendations for you right now!", - "Oh noes!", null); -}, -</pre> -<p>Here, we call a <code>showNotification()</code> method with some parameters that we'll look at shortly when we get to our <code>showNotification()</code> method below. The important thing to note is that this will handle the failure case.</p> -<h2 id="Manipulando_requisições_de_sucesso">Manipulando requisições de sucesso</h2> -<p>The callback object's searchSucceeded() method gets called when a search completes successfully. It receives a list of the matching addons, the number of add-ons returned, and the total number of add-ons that matched the query (in case the returned number is smaller than the requested number, for example).</p> -<p>For example:</p> -<pre class="brush: js">searchSucceeded: function(addons, addonCount, totalResults) { - var num = Math.floor(Math.random() * addonCount); - - this.showNotification("Would you like to try the " + addons[num].name + " addon?", - "Install", addons[num].install); -}, -</pre> -<p>This routine randomly selects one of the returned add-ons, then calls the previously mentioned <code>showNotification()</code> routine, passing in as parameters a prompt including the name of the returned add-on, a label for the button to show in the notification ("Install"), and the <a href="/en/Addons/Add-on_Manager/AddonInstall" title="en/Addons/Add-on Manager/AddonInstall"><code>AddonInstall</code></a> object that can be used with the Add-on Manager API to install the add-on.</p> -<h2 id="Instalando_Extensões">Instalando Extensões</h2> -<p>The <code>showNotification()</code> routine displays a notification box offering to install the recommended add-on, if one was found, or reports an error if the search failed:</p> -<pre class="brush: js">showNotification: function(prompt, button, installObj) { - this.install = installObj; - var box = PopupNotifications.show(gBrowser.selectedBrowser, "sample-popup", - prompt, - null, /* anchor ID */ - { - label: button, - accessKey: "I", - callback: function() { - if (popupnotifications.install) { - popupnotifications.install.install(); - } else { - PopupNotifications.remove(box); - } - } - }, - null /* secondary action */ - ); -} -</pre> -<p>The code here starts by stashing the passed-in <a href="/en/Addons/Add-on_Manager/AddonInstall" title="en/Addons/Add-on Manager/AddonInstall"><code>AddonInstall</code></a> object for later use, then creates and displays the <a href="/en/JavaScript_code_modules/PopupNotifications.jsm" title="en/JavaScript code modules/PopupNotifications.jsm">pop-up notification</a> box with the text and button label passed into the method.</p> -<p><img alt="popup.png" class="internal default" src="/@api/deki/files/4918/=popup.png"></p> -<p>The pop-up callback function that gets called when the user clicks the button looks to see if there's a non-null <a href="/en/Addons/Add-on_Manager/AddonInstall" title="en/Addons/Add-on Manager/AddonInstall"><code>AddonInstall</code></a> object reference; if it's <code>null</code>, then the pop-up is displaying an error notification, so clicking the button simply dismisses the pop-up. Otherwise, the <a href="/en/Addons/Add-on_Manager/AddonInstall" title="en/Addons/Add-on Manager/AddonInstall"><code>AddonInstall</code></a> object's <a href="/en/Addons/Add-on_Manager/AddonInstall#install()" title="en/Addons/Add-on Manager/AddonInstall#install()"><code>install()</code></a> method is called to install the add-on.</p> -<p>This doesn't display any UI showing that the install is taking place; however, if you go to the Add-on Manager panel, you'll see the pending install listed among your add-ons.</p> -<p><img alt="install.png" class="internal default" src="/@api/deki/files/4919/=install.png"></p> diff --git a/files/pt-br/mozilla/add-ons/orientacoes-de-complementos/index.html b/files/pt-br/mozilla/add-ons/orientacoes-de-complementos/index.html deleted file mode 100644 index fe51cb25a2..0000000000 --- a/files/pt-br/mozilla/add-ons/orientacoes-de-complementos/index.html +++ /dev/null @@ -1,117 +0,0 @@ ---- -title: Orientações de complementos -slug: Mozilla/Add-ons/Orientacoes-de-complementos -translation_of: 'https://extensionworkshop.com/documentation/publish/add-on-policies/' ---- -<p>These add-on guidelines were created to foster an open and diverse add-on developer community while ensuring an excellent user experience. They apply to all add-ons and add-on updates regardless of where they are hosted, and also apply to customizations performed by installers that configure Firefox without using an add-on. Add-ons hosted on <a class="external text" href="https://addons.mozilla.org/" rel="nofollow">AMO</a> are subject to <a href="https://addons.mozilla.org/developers/docs/policies" title="https://addons.mozilla.org/developers/docs/policies">additional policies</a>.</p> -<h2 id="Ser_Transparente">Ser Transparente</h2> -<ul> - <li>Add-ons must either be installed using the add-on web install system, or be approved by the user using the <a class="external text" href="https://blog.mozilla.org/addons/2011/08/11/strengthening-user-control-of-add-ons/" rel="nofollow">install opt-in dialog</a>. - <ul> - <li>We want our users to know what they are installing so that they are not unpleasantly surprised by changes they did not expect. We also want them to know what to remove if they decide not to keep it.</li> - <li>Add-ons installed through application installers should <a class="external text" href="/en-US/docs/Adding_Extensions_using_the_Windows_Registry" rel="nofollow">use the Windows Registry</a> or equivalent global install methods so that Firefox displays the opt-in screen. The opt-in screen must not be tampered with in any way, including overlaying additional information or images on top of it.</li> - </ul> - </li> - <li>Add-ons must always be possible to uninstall or disable from the Add-ons Manager. - <ul> - <li>Add-ons installed globally using the Windows registry or global extension directories cannot be uninstalled (<a class="external text" href="https://bugzilla.mozilla.org/show_bug.cgi?id=640775" rel="nofollow">bug 640775</a>), but they can be disabled to the same effect.</li> - </ul> - </li> - <li>Add-ons must use a <a class="external text" href="/en-US/docs/Install_manifests#id" rel="nofollow">single unique ID</a> during their entire lifetime. - <ul> - <li>Using the same ID for multiple products, or multiple IDs for a single product, can lead to problems with automatic updates as well as blocklisting conflicts. Add-ons may change their IDs due to ownership changes, as they commonly use an email address-like format ( - <i> - e.g.,</i> - personasplus@mozilla.com).</li> - </ul> - </li> - <li>Add-ons must not use brand names, trademarks, or other terms in ways that deceive users. Using Mozilla trademarks must follow <a class="external text" href="http://www.mozilla.org/foundation/trademarks/policy.html" rel="nofollow">our trademark policy</a>.</li> - <li>Add-ons should clearly communicate their intended purpose and active features, including features introduced through updates. - <ul> - <li>While we understand and support add-on developers who choose to monetize their products, this should not come at the expense of users' browsing experience. If an add-on inserts advertisements, affiliate codes, sponsored search results, or the like, into web pages, the user should be made aware of this when the add-on is installed. Likewise, if some features require payment to use, or require payment to remain active after a trial period, users should be made aware of this.</li> - </ul> - </li> -</ul> -<h2 id="Respeitar_os_Usuários">Respeitar os Usuários</h2> -<ul> - <li>Add-ons must remove all introduced code, executables, and application configuration changes when they are uninstalled. - <ul> - <li>Uninstalling an add-on using the regular uninstall process should generally suffice. This guideline primarily applies to changes made to preferences such as the homepage, default search URL, network settings, and so forth. These preferences should be restored to their previous values when the add-on is uninstalled. Most add-ons can easily accomplish this by making such changes via a <a class="external text" href="/en-US/docs/Building_an_Extension#Defaults_Files" rel="nofollow">default preferences file</a>.</li> - </ul> - </li> - <li>Add-ons must respect the users' choices and not make unexpected changes, or limit users' ability to revert them. - <ul> - <li>For instance, users generally do not expect an add-on to change the Firefox homepage. Asking users to opt-in to such extra changes is recommended.</li> - <li>Making settings changes difficult or impossible to revert is prohibited. It's not allowed to block users or other add-ons or installers from changing any settings.</li> - </ul> - </li> - <li>Add-ons should make it clear how private user data is being used. - <ul> - <li>Add-ons which send user data over the Internet should generally provide a Privacy Policy, ideally concise and easily readable.</li> - </ul> - </li> - <li>Add-on developers should provide a mechanism for them to be contacted. - <ul> - <li>While developers are not required to provide a support channel for users, it is recommended. All add-on developers should have a contact form or public email address so that they can be contacted in case of emergencies, such as guideline violations that could lead to blocklisting.</li> - </ul> - </li> -</ul> -<h2 id="Ser_Seguro">Ser Seguro</h2> -<ul> - <li>Add-ons must not cause harm to users' data, system, or online identities.</li> - <li>Add-ons must not transmit users' private data unsafely, or expose it to third parties unnecessarily. - <ul> - <li>Private data should always be sent over a secure connection. This includes browsing data such as visited URLs and bookmarks.</li> - <li>Making the browser easier to fingerprint by adding text to the User-Agent string or adding custom headers is also a privacy concern, and should be avoided.</li> - </ul> - </li> - <li>Add-ons must not create or expose application or system vulnerabilities. - <ul> - <li>Security bugs happen, but once discovered they need to be addressed immediately. A popular add-on with a security vulnerability is a valuable attack vector for hackers, and in such cases we will move quickly to blocklist the add-on if there is no prompt response from the developer.</li> - </ul> - </li> - <li>Add-ons must not tamper with the application or blocklist update systems.</li> - <li>Add-ons should not store any browsing data while in Private Browsing Mode. - <ul> - <li>It's worth stressing that PBM is about avoiding storing - <i> - local</i> - data while browsing, not about sending data elsewhere. To learn more about PBM we recommend reading <a class="external text" href="http://ehsanakhgari.org/tag/privatebrowsing" rel="nofollow">Ehsan's blog posts</a> about it.</li> - </ul> - </li> -</ul> -<h2 id="Ser_Estável">Ser Estável</h2> -<ul> - <li>Add-ons must not cause hangs or crashes.</li> - <li>Add-ons should not break or disable core application features. - <ul> - <li>This includes features like tabbed browsing, Private Browsing Mode, and the location bar. Add-ons that are specifically meant to do this are exempt.</li> - </ul> - </li> - <li>Add-ons should not cause memory leaks, or unnecessarily consume large amounts of memory.</li> - <li>Add-ons should not slow down the application or system significantly.</li> - <li>Add-ons should not consume network resources to an extent that affects regular application usage. - <ul> - <li>Downloading large amounts of data without user awareness can significantly disrupt regular browsing, and may result in unexpected charges for users who have network usage limitations (notably on mobile).</li> - </ul> - </li> -</ul> -<h2 id="Exceções">Exceções</h2> -<ul> - <li>Add-ons can break some of these guidelines if that's their intended purpose and there isn't malicious intent ( - <i> - e.g.,</i> - a security exploit proof of concept).</li> - <li>Add-ons deployed by administrators within workplaces, schools, kiosks, and so forth, are exempt from most guidelines.</li> - <li>As add-ons can only run clean up code if they are uninstalled while Firefox is running and they are enabled, we do not require that they attempt to clean up after themselves when they are uninstalled under other circumstances. Application installers that configure Firefox without add-ons should revert any changes when uninstalled.</li> - <li>Add-ons may leave behind preferences changes in private preference branches which do not affect Firefox when the add-on is not active, so that any previous add-on configuration is not lost if the user decides to re-install the add-on in the future.</li> -</ul> -<p>Other exceptions may apply.</p> -<h2 id="Aplicação">Aplicação</h2> -<p>Add-ons that do not follow these guidelines may qualify for blocklisting, depending on the extent of the violations. Guidelines qualified with the word - <i> - must</i> - are especially important, and violations thereof will most likely result in a blocklisting nomination.</p> -<p>The Add-ons Team will do their best to contact the add-on's developers and provide a reasonable time frame for the problems to be corrected before a block is put in place. If an add-on is considered malicious or its developers have proven unreachable or unresponsive, or in case of repeat violations, blocklisting may be immediate.</p> -<p>Guideline violations should be <a class="external text" href="https://bugzilla.mozilla.org/enter_bug.cgi?product=Tech%20Evangelism&component=Add-ons" rel="nofollow">reported via Bugzilla</a>, under Tech Evangelism > Add-ons. Questions can be posted in the <a class="external text" href="irc://irc.mozilla.org/addons" rel="nofollow">#addons IRC channel</a>.</p> -<p>These guidelines may change in the future. All updates will be announced in the <a class="external text" href="https://blog.mozilla.org/addons/" rel="nofollow">Add-ons Blog</a>.</p> diff --git a/files/pt-br/mozilla/add-ons/overlay_extensions/index.html b/files/pt-br/mozilla/add-ons/overlay_extensions/index.html deleted file mode 100644 index 6b6ac40112..0000000000 --- a/files/pt-br/mozilla/add-ons/overlay_extensions/index.html +++ /dev/null @@ -1,71 +0,0 @@ ---- -title: Overlay extensions -slug: Mozilla/Add-ons/Overlay_Extensions -tags: - - Add-ons - - Extensions - - Landing - - NeedsTranslation - - TopicStub -translation_of: Archive/Add-ons/Overlay_Extensions ---- -<p>This page contains links to documentation for the approach to developing extensions for Gecko-based applications which uses:</p> -<ul> - <li>XUL overlays to specify the interface</li> - <li>APIs available to privileged code such as <a href="/en-US/docs/XUL/tabbrowser"><code>tabbrowser</code></a> and <a href="/en-US/docs/Mozilla/JavaScript_code_modules">JavaScript modules</a> to interact with the application and content.</li> -</ul> -<p>Before Gecko 2.0 was released this was the only way to develop extensions. Now there are two alternative techniques: <a href="/en-US/docs/Extensions/Bootstrapped_extensions">restartless extensions</a> and <a href="https://addons.mozilla.org/en-US/developers/docs/sdk/latest/">Add-on SDK-based extensions</a>. The privileged JavaScript APIs described here can still be used by the newer techniques.</p> -<h2 id="XUL_School">XUL School</h2> -<p><a href="/en-US/Add-ons/Overlay_Extensions/XUL_School">XUL School</a> is a comprehensive add-on development tutorial, focusing on Firefox extension development but mostly applicable to other Gecko-based applications.</p> -<h2 id="More_resources">More resources</h2> -<div class="column-container"> - <div class="column-half"> - <dl> - <dt> - <a href="/en-US/Mozilla/Add-ons/Setting_up_extension_development_environment">Setting up your environment</a></dt> - <dd> - Setting up the application for extension development.</dd> - <dt> - <a href="/en-US/docs/XUL">XUL</a></dt> - <dd> - Tutorials and reference for the user interface language used by XUL extensions.</dd> - <dt> - <a href="/en-US/Mozilla/Add-ons/Code_snippets">Code snippets</a></dt> - <dd> - Sample code for many of the things you'll want to do.</dd> - <dt> - <a href="/en-US/Mozilla/Add-ons/Installing_extensions">Installing extensions</a></dt> - <dd> - How to install an extension by copying the extension files into the application's install directory.</dd> - <dt> - <a href="/en-US/Add-ons/Overlay_extensions/Firefox_addons_developer_guide">Firefox add-ons developer guide</a></dt> - <dd> - A guide to developing overlay extensions.</dd> - </dl> - </div> - <div class="column-half"> - <dl> - <dt> - <a href="/en-US/docs/Mozilla/JavaScript_code_modules">JavaScript code modules</a></dt> - <dd> - JavaScript modules available to extension developers.</dd> - <dt> - <a href="/en-US/Mozilla/Add-ons/Inline_Options">Extension preferences</a></dt> - <dd> - How to specify the preferences for your extension that will appear in the Add-ons Manager.</dd> - <dt> - <a href="/en-US/Mozilla/Add-ons/Extension_Frequently_Asked_Questions">Frequently Asked Questions</a></dt> - <dd> - Common issues with extension development.</dd> - <dt> - <a href="/en-US/Mozilla/Add-ons/Extension_Packaging">Extension packaging</a></dt> - <dd> - How extensions are packaged and installed.</dd> - <dt> - <a href="/en-US/Mozilla/Add-ons/Creating_Custom_Firefox_Extensions_with_the_Mozilla_Build_System">Binary Firefox extensions</a></dt> - <dd> - Creating binary extensions for Firefox.</dd> - </dl> - </div> -</div> -<p> </p> diff --git a/files/pt-br/mozilla/add-ons/repositorio_add-on/index.html b/files/pt-br/mozilla/add-ons/repositorio_add-on/index.html deleted file mode 100644 index cb3210e93a..0000000000 --- a/files/pt-br/mozilla/add-ons/repositorio_add-on/index.html +++ /dev/null @@ -1,155 +0,0 @@ ---- -title: Repositório Add-on -slug: Mozilla/Add-ons/Repositorio_Add-on -translation_of: Mozilla/JavaScript_code_modules/Add-on_Repository ---- -<p>{{ gecko_minversion_header("2") }}{{LegacyAddonsNotice}}</p> - -<p>The Add-on Repository is responsible for finding available add-ons; it provides an interface for interacting with the <a class="external" href="http://addons.mozilla.org" title="http://addons.mozilla.org/">addons.mozilla.org</a> (AMO) site. Its API provides URLs that can be visited to browse the repository's add-ons. The API also offers two ways to search for and retrieve an array of <a href="/pt-BR/docs/Mozilla/Add-ons/Add-on_Manager/Addon">Addon</a> instances: {{ manch("retrieveRecommendedAddons") }}, which returns a list of recommended add-ons, and {{ manch("searchAddons") }}, which performs a search of the repository.</p> - -<p>These searches are asynchronous; results are passed to the provided <code><a href="/en/Addons/Add-on_Repository/SearchCallback" title="en/Addons/Add-on Repository/SearchCallback">SearchCallback</a></code> object when the search is completed. Results passed to the <code><a href="/en/Addons/Add-on_Repository/SearchCallback" title="en/Addons/Add-on Repository/SearchCallback">SearchCallback</a></code> object only include add-ons that are compatible with the current application and are not already installed or in the process of being installed. <code>AddonRepository</code> can only process one search at a time. A new search will immediately fail if the <code>AddonRepository</code> is already handling another search request.</p> - -<p>To import the Add-on Repository code module, use:</p> - -<pre>Components.utils.import("resource://gre/modules/AddonRepository.jsm"); -</pre> - -<h2 id="Method_overview">Method overview</h2> - -<table class="standard-table"> - <tbody> - <tr> - <td><code>string <a href="#getRecommendedURL()">getRecommendedURL</a>()</code></td> - </tr> - <tr> - <td><code>string <a href="#getSearchURL()">getSearchURL</a>(in string searchTerms)</code></td> - </tr> - <tr> - <td><code>void <a href="#cancelSearch()">cancelSearch</a>()</code></td> - </tr> - <tr> - <td><code>void <a href="#retrieveRecommendedAddons()">retrieveRecommendedAddons</a>(in integer maxResults, in <a href="/en/Addons/Add-on_Repository/SearchCallback" title="en/Addons/Add-on Repository/SearchCallback">SearchCallback</a> callback)</code></td> - </tr> - <tr> - <td><code>void <a href="#searchAddons()">searchAddons</a>(in string searchTerms, in integer maxResults, in <a href="/en/Addons/Add-on_Repository/SearchCallback" title="en/Addons/Add-on Repository/SearchCallback">SearchCallback</a> callback)</code></td> - </tr> - </tbody> -</table> - -<h2 id="Properties">Properties</h2> - -<table class="standard-table"> - <tbody> - <tr> - <td class="header">Property</td> - <td class="header">Type</td> - <td class="header">Description</td> - </tr> - <tr> - <td><code>homepageURL</code></td> - <td><code>string</code></td> - <td>The URL of the repository site's home page.</td> - </tr> - <tr> - <td><code>isSearching</code></td> - <td><code>boolean</code></td> - <td><code>true</code> if a search is currently in progress; otherwise <code>false</code>.</td> - </tr> - </tbody> -</table> - -<h2 id="Methods">Methods</h2> - -<h3 id="getRecommendedURL()">getRecommendedURL()</h3> - -<p>Returns the URL that can be visited to see recommended add-ons.</p> - -<pre>string getRecommendedURL();</pre> - -<h6 id="Parameters">Parameters</h6> - -<p>None.</p> - -<h6 id="Return_value">Return value</h6> - -<p>An URL indicating the repository's page of recommended add-ons.</p> - -<h3 id="getSearchURL()">getSearchURL()</h3> - -<p>Returns an URL of a web page that can be visited to see search results for the specified search terms.</p> - -<pre>string getSearchURL( - in string searchTerms -);</pre> - -<h6 id="Parameters_2">Parameters</h6> - -<dl> - <dt><code>searchTerms</code></dt> - <dd>Search terms used to search the repository.</dd> -</dl> - -<h6 id="Return_value_2">Return value</h6> - -<p>The URL of the search results page for the specified search terms.</p> - -<h3 id="cancelSearch()">cancelSearch()</h3> - -<p>Cancels the search in progress. Does nothing if there is no search in progress.</p> - -<pre>void cancelSearch();</pre> - -<h6 id="Parameters_3">Parameters</h6> - -<p>None.</p> - -<h3 id="retrieveRecommendedAddons()">retrieveRecommendedAddons()</h3> - -<p>Begins a search for recommended add-ons in the repository. The list of recommended add-ons frequently changes. Results will be passed to the given <code><a href="/en/Addons/Add-on_Repository/SearchCallback" title="en/Addons/Add-on Repository/SearchCallback">SearchCallback</a></code> callback.</p> - -<pre>void retrieveRecommendedAddons( - in integer maxResults, - in SearchCallback callback -);</pre> - -<h6 id="Parameters_4">Parameters</h6> - -<dl> -</dl> - -<dl> - <dt><code>maxResults</code></dt> - <dd>The maximum number of results to return.</dd> - <dt><code>callback</code></dt> - <dd>The <code><a href="/en/Addons/Add-on_Repository/SearchCallback" title="en/Addons/Add-on Repository/SearchCallback">SearchCallback</a></code> callback to which results will be delivered.</dd> -</dl> - -<h3 id="searchAddons()">searchAddons()</h3> - -<p>Begins a search for add-ons in this repository. Results will be passed to the given callback.</p> - -<pre>string searchAddons( - in string searchTerms, - in integer maxResults, - in SearchCallback callback -);</pre> - -<h6 id="Parameters_5">Parameters</h6> - -<dl> -</dl> - -<dl> - <dt><code>searchTerms</code></dt> - <dd>The search terms to pass to AMO. The results will match what you would get if you typed this string in the search box on the AMO web site.</dd> - <dt><code>maxResults</code></dt> - <dd>The maximum number of results to return.</dd> - <dt><code>callback</code></dt> - <dd>The <code><a href="/en/Addons/Add-on_Repository/SearchCallback" title="en/Addons/Add-on Repository/SearchCallback">SearchCallback</a></code> callback to pass results to.</dd> -</dl> - -<h2 id="See_also">See also</h2> - -<ul> - <li><a href="/en/Addons/Interfacing_with_the_Add-on_Repository" title="en/Addons/Interfacing with the Add-on Repository">Interfacing with the Add-on Repository</a></li> -</ul> diff --git a/files/pt-br/mozilla/add-ons/sdk/guides/index.html b/files/pt-br/mozilla/add-ons/sdk/guides/index.html deleted file mode 100644 index 1f7e439322..0000000000 --- a/files/pt-br/mozilla/add-ons/sdk/guides/index.html +++ /dev/null @@ -1,367 +0,0 @@ ---- -title: Guides -slug: Mozilla/Add-ons/SDK/Guides -tags: - - Add-on SDK - - NeedsTranslation - - TopicStub -translation_of: Archive/Add-ons/Add-on_SDK/Guides ---- -<p> </p> - -<div class="warning"> -<p>Support for extensions using XUL/XPCOM or the Add-on SDK was removed in Firefox 57, released November 2017. As there is no supported version of Firefox enabling these technologies, this page will be removed by December 2020.</p> - -<p>Add-ons using the techniques described in this document are considered a legacy technology in Firefox. Don't use these techniques to develop new add-ons. Use <a href="/en-US/Add-ons/WebExtensions">WebExtensions</a> instead. If you maintain an add-on which uses the techniques described here, consider migrating it to use WebExtensions.</p> - -<p><strong>Starting from <a href="https://wiki.mozilla.org/RapidRelease/Calendar">Firefox 53</a>, no new legacy add-ons will be accepted on addons.mozilla.org (AMO) for desktop Firefox and Firefox for Android.</strong></p> - -<p><strong>Starting from <a href="https://wiki.mozilla.org/RapidRelease/Calendar">Firefox 57</a>, only extensions developed using WebExtensions APIs will be supported on Desktop Firefox and Firefox for Android. </strong></p> - -<p>Even before Firefox 57, changes coming up in the Firefox platform will break many legacy extensions. These changes include multiprocess Firefox (e10s), sandboxing, and multiple content processes. Legacy extensions that are affected by these changes should migrate to use WebExtensions APIs if they can. See the <a href="https://blog.mozilla.org/addons/2017/02/16/the-road-to-firefox-57-compatibility-milestones/">"Compatibility Milestones" document</a> for more information.</p> - -<p>A wiki page containing <a href="https://wiki.mozilla.org/Add-ons/developer/communication">resources, migration paths, office hours, and more</a>, is available to help developers transition to the new technologies.</p> -</div> - -<section class="Quick_links" id="Quick_Links"> -<ol> - <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions"><strong>Browser extensions</strong></a></li> - <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions#Getting_started">Getting started</a> - <ol> - <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/What_are_WebExtensions">What are extensions?</a></li> - <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/Your_first_WebExtension">Your first extension</a></li> - <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/Your_second_WebExtension">Your second extension</a></li> - <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/Anatomy_of_a_WebExtension">Anatomy of an extension</a></li> - <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/Examples">Example extensions</a></li> - <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/What_next_">What next?</a></li> - </ol> - </li> - <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions#Concepts">Concepts</a> - <ol> - <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/Using_the_JavaScript_APIs">Using the JavaScript APIs</a></li> - <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/Content_scripts">Content scripts</a></li> - <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/Match_patterns">Match patterns</a></li> - <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/Working_with_files">Working with files</a></li> - <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/Internationalization">Internationalization</a></li> - <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/Security_best_practices">Security best practices</a></li> - <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/Content_Security_Policy">Content Security Policy</a></li> - <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/Native_messaging">Native messaging</a></li> - </ol> - </li> - <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions#User_Interface">User interface</a> - <ol> - <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/user_interface">User Interface</a></li> - <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/user_interface/Browser_action">Toolbar button</a></li> - <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/user_interface/Page_actions">Address bar button</a></li> - <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/user_interface/Sidebars">Sidebars</a></li> - <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/user_interface/Context_menu_items">Context menu items</a></li> - <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/user_interface/Options_pages">Options page</a></li> - <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/user_interface/Extension_pages">Extension pages</a></li> - <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/user_interface/Notifications">Notifications</a></li> - <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/user_interface/Omnibox">Address bar suggestions</a></li> - <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/user_interface/devtools_panels">Developer tools panels</a></li> - </ol> - </li> - <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions#How_to">How to</a> - <ol> - <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/Intercept_HTTP_requests">Intercept HTTP requests</a></li> - <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/Modify_a_web_page">Modify a web page</a></li> - <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/Safely_inserting_external_content_into_a_page">Insert external content</a></li> - <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/Add_a_button_to_the_toolbar">Add a button to the toolbar</a></li> - <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/Implement_a_settings_page">Implement a settings page</a></li> - <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/Working_with_the_Tabs_API">Work with the Tabs API</a></li> - <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/Work_with_the_Bookmarks_API">Work with the Bookmarks API</a></li> - <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/Work_with_the_Cookies_API">Work with the Cookies API</a></li> - <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/Work_with_contextual_identities">Work with contextual identities</a></li> - </ol> - </li> - <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions#Porting">Porting</a> - <ol> - <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/Porting_a_Google_Chrome_extension">Porting a Google Chrome extension</a></li> - <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/Porting_a_legacy_Firefox_add-on">Porting a legacy Firefox extension</a></li> - <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/Embedded_WebExtensions">Embedded WebExtensions</a></li> - <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/Comparison_with_the_Add-on_SDK">Comparison with the Add-on SDK</a></li> - <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/Comparison_with_XUL_XPCOM_extensions">Comparison with XUL/XPCOM extensions</a></li> - <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/Chrome_incompatibilities">Chrome incompatibilities</a></li> - <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/Differences_between_desktop_and_Android">Differences between desktop and Android</a></li> - </ol> - </li> - <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions#Firefox_workflow">Firefox workflow</a> - <ol> - <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/User_experience_best_practices">User Experience</a></li> - <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/Temporary_Installation_in_Firefox">Temporary Installation in Firefox</a></li> - <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/Debugging">Debugging</a></li> - <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/Testing_persistent_and_restart_features">Testing persistent and restart features</a></li> - <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/Developing_WebExtensions_for_Firefox_for_Android">Developing for Firefox for Android</a></li> - <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/Getting_started_with_web-ext">Getting started with web-ext</a></li> - <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/web-ext_command_reference">web-ext command reference</a></li> - <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/WebExtensions_and_the_Add-on_ID">Extensions and the Add-on ID</a></li> - <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/Request_the_right_permissions">Request the right permissions</a></li> - </ol> - </li> - <li data-default-state="closed"><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/API">JavaScript APIs</a> - <ol> - <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/Browser_support_for_JavaScript_APIs">Browser support for JavaScript APIs</a></li> - <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/API/alarms">alarms</a></li> - <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/API/bookmarks">bookmarks</a></li> - <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/API/browserAction">browserAction</a></li> - <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/API/browserSettings">browserSettings</a></li> - <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/API/browsingData">browsingData</a></li> - <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/API/clipboard">clipboard</a></li> - <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/API/commands">commands</a></li> - <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/API/contentScripts">contentScripts</a></li> - <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/API/contextualIdentities">contextualIdentities</a></li> - <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/API/cookies">cookies</a></li> - <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/API/devtools.inspectedWindow">devtools.inspectedWindow</a></li> - <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/API/devtools.network">devtools.network</a></li> - <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/API/devtools.panels">devtools.panels</a></li> - <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/API/dns">dns</a></li> - <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/API/downloads">downloads</a></li> - <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/API/events">events</a></li> - <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/API/extension">extension</a></li> - <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/API/extensionTypes">extensionTypes</a></li> - <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/API/find">find</a></li> - <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/API/history">history</a></li> - <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/API/i18n">i18n</a></li> - <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/API/identity">identity</a></li> - <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/API/idle">idle</a></li> - <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/API/management">management</a></li> - <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/API/menus">menus</a></li> - <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/API/notifications">notifications</a></li> - <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/API/omnibox">omnibox</a></li> - <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/API/pageAction">pageAction</a></li> - <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/API/permissions">permissions</a></li> - <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/API/pkcs11">pkcs11</a></li> - <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/API/privacy">privacy</a></li> - <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/API/proxy">proxy</a></li> - <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/API/runtime">runtime</a></li> - <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/API/search">search</a></li> - <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/API/sessions">sessions</a></li> - <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/API/sidebarAction">sidebarAction</a></li> - <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/API/storage">storage</a></li> - <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/API/tabs">tabs</a></li> - <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/API/theme">theme</a></li> - <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/API/topSites">topSites</a></li> - <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/API/types">types</a></li> - <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/API/webNavigation">webNavigation</a></li> - <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/API/webRequest">webRequest</a></li> - <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/API/windows">windows</a></li> - </ol> - </li> - <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json">Manifest keys</a> - <ol> - <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/applications">applications</a></li> - <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/author">author</a></li> - <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/background">background</a></li> - <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/browser_action">browser_action</a></li> - <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/chrome_settings_overrides">chrome_settings_overrides</a></li> - <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/chrome_url_overrides">chrome_url_overrides</a></li> - <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/commands">commands</a></li> - <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/content_scripts">content_scripts</a></li> - <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/content_security_policy">content_security_policy</a></li> - <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/default_locale">default_locale</a></li> - <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/description">description</a></li> - <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/developer">developer</a></li> - <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/devtools_page">devtools_page</a></li> - <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/homepage_url">homepage_url</a></li> - <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/icons">icons</a></li> - <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/incognito">incognito</a></li> - <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/manifest_version">manifest_version</a></li> - <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/name">name</a></li> - <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/omnibox">omnibox</a></li> - <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/optional_permissions">optional_permissions</a></li> - <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/options_ui">options_ui</a></li> - <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/page_action">page_action</a></li> - <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/permissions">permissions</a></li> - <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/protocol_handlers">protocol_handlers</a></li> - <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/short_name">short_name</a></li> - <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/sidebar_action">sidebar_action</a></li> - <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/theme">theme</a></li> - <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/version">version</a></li> - <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/version_name">version_name</a></li> - <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/web_accessible_resources">web_accessible_resources</a></li> - </ol> - </li> - <li><a href="/en-US/docs/Mozilla/Add-ons/Themes"><strong>Themes</strong></a></li> - <li><a href="/en-US/docs/Mozilla/Add-ons/Themes/Theme_concepts">Browser themes</a> - <ol> - <li><a href="/en-US/docs/Mozilla/Add-ons/Themes/Theme_concepts">Browser theme concepts</a></li> - </ol> - </li> - <li><a href="/en-US/docs/Mozilla/Add-ons/Themes/Lightweight_themes">Lightweight themes</a> - <ol> - <li><a href="/en-US/docs/Mozilla/Add-ons/Themes/Lightweight_themes">Lightweight themes</a></li> - <li><a href="/en-US/docs/Mozilla/Add-ons/Themes/Lightweight_Themes/FAQ">Lightweight themes FAQ</a></li> - </ol> - </li> - <li><a href="/en-US/docs/Mozilla/Add-ons/Distribution"><strong>Publishing and Distribution</strong></a></li> - <li><a href="/en-US/docs/Mozilla/Add-ons/Distribution">Publishing add-ons</a> - <ol> - <li><a href="/en-US/docs/Mozilla/Add-ons/Distribution">Signing and distribution overview</a></li> - <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/Package_your_extension_">Package your extension</a></li> - <li><a href="/en-US/docs/Mozilla/Add-ons/Distribution/Submitting_an_add-on">Submit an add-on</a></li> - <li><a href="/en-US/docs/Mozilla/Add-ons/Source_Code_Submission">Source code submission</a></li> - <li><a href="/en-US/docs/Mozilla/Add-ons/Distribution/Resources_for_publishers">Resources for publishers</a></li> - <li><a href="/en-US/docs/Mozilla/Add-ons/Listing">Creating an appealing listing</a></li> - <li><a href="/en-US/docs/Mozilla/Add-ons/AMO/Policy/Reviews">Review policies</a></li> - <li><a href="/en-US/docs/Mozilla/Add-ons/AMO/Policy/Agreement">Developer agreement</a></li> - <li><a href="/en-US/docs/Mozilla/Add-ons/AMO/Policy/Featured">Featured add-ons</a></li> - <li><a href="/en-US/docs/Mozilla/Add-ons/Distribution/Retiring_your_extension">Retiring your extension</a></li> - </ol> - </li> - <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/Alternative_distribution_options">Distributing add-ons</a> - <ol> - <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/Alternative_distribution_options/Sideloading_add-ons">For sideloading</a></li> - <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/Alternative_distribution_options/Add-ons_for_desktop_apps">For desktop apps</a></li> - <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/Alternative_distribution_options/Add-ons_in_the_enterprise">For an enterprise</a></li> - </ol> - </li> - <li><a href="https://discourse.mozilla.org/c/add-ons"><strong>Community and Support</strong></a></li> - <li><a href="#">Channels</a> - <ol> - <li><a href="https://blog.mozilla.org/addons">Add-ons blog</a></li> - <li><a href="https://discourse.mozilla.org/c/add-ons">Add-on forums</a></li> - <li><a href="http://stackoverflow.com/questions/tagged/firefox-addon">Stack Overflow</a></li> - <li><a href="/en-US/docs/Mozilla/Add-ons/#Contact_us">Contact us</a></li> - </ol> - </li> -</ol> -</section> - -<p> </p> - -<p>This page lists more theoretical in-depth articles about the SDK.</p> - -<hr> -<h3 id="Contributor's_guide"><a name="contributors-guide">Contributor's guide</a></h3> - -<div class="column-container"> -<div class="column-half"> -<dl> - <dt><a href="Guides/Getting_Started">Getting Started</a></dt> - <dd>Learn how to contribute to the SDK: getting the code, opening/taking a bug, filing a patch, getting reviews, and getting help.</dd> - <dt><a href="Guides/Modules">Modules</a></dt> - <dd>Learn about the module system used by the SDK (which is based on the CommonJS specification), how sandboxes and compartments can be used to improve security, and about the built-in SDK module loader, known as Cuddlefish.</dd> - <dt><a href="Guides/Classes_and_Inheritance">Classes and Inheritance</a></dt> - <dd>Learn how classes and inheritance can be implemented in JavaScript, using constructors and prototypes, and about the helper functions provided by the SDK to simplify this.</dd> -</dl> -</div> - -<div class="column-half"> -<dl> - <dt><a href="Guides/Private_Properties">Private Properties</a></dt> - <dd>Learn how private properties can be implemented in JavaScript using prefixes, closures, and WeakMaps, and how the SDK supports private properties by using namespaces (which are a generalization of WeakMaps).</dd> - <dt><a href="Guides/Content_Processes">Content Processes</a></dt> - <dd>The SDK was designed to work in an environment where the code to manipulate web content runs in a different process from the main add-on code. This article highlights the main features of that design.</dd> - <dt><a href="Guides/Testing_the_Add-on_SDK">Testing the Add-on SDK</a></dt> - <dd>Learn how to run the Add-on SDK test suites.</dd> -</dl> -</div> -</div> - -<hr> -<h3 id="SDK_infrastructure"><a name="sdk-infrastructure">SDK infrastructure</a></h3> - -<div class="column-container"> -<div class="column-half"> -<dl> - <dt><a href="Guides/Module_structure_of_the_SDK">Module structure of the SDK</a></dt> - <dd>The SDK, and add-ons built using it, are of composed from reusable JavaScript modules. This explains what these modules are, how to load modules, and how the SDK's module tree is structured.</dd> - <dt><a href="Guides/SDK_API_Lifecycle">SDK API lifecycle</a></dt> - <dd>Definition of the lifecycle for the SDK's APIs, including the stability ratings for APIs.</dd> -</dl> -</div> - -<div class="column-half"> -<dl> - <dt><a href="Guides/Program_ID">Program ID</a></dt> - <dd>The Program ID is a unique identifier for your add-on. This guide explains how it's created, what it's used for and how to define your own.</dd> - <dt><a href="Guides/Firefox_Compatibility">Firefox compatibility</a></dt> - <dd>Working out which Firefox releases a given SDK release is compatible with, and dealing with compatibility problems.</dd> -</dl> -</div> -</div> - -<hr> -<h3 id="SDK_idioms"><a name="sdk-idioms">SDK idioms</a></h3> - -<div class="column-container"> -<div class="column-half"> -<dl> - <dt><a href="Guides/Working_with_Events">Working With Events</a></dt> - <dd>Write event-driven code using the the SDK's event emitting framework.</dd> - <dt><a href="Guides/Content_Scripts">Content scripts guide</a></dt> - <dd>An overview of content scripts, including: what they are, what they can do, how to load them, how to communicate with them.</dd> -</dl> -</div> - -<div class="column-half"> -<dl> - <dt><a href="Guides/Two_Types_of_Scripts">Two Types of Scripts</a></dt> - <dd>This article explains the differences between the APIs available to your main add-on code and those available to content scripts.</dd> -</dl> -</div> -</div> - -<hr> -<h3 id="XUL_migration"><a name="xul-migration">XUL migration</a></h3> - -<div class="column-container"> -<div class="column-half"> -<dl> - <dt><a href="Guides/XUL_Migration_Guide">XUL Migration Guide</a></dt> - <dd>Techniques to help port a XUL add-on to the SDK.</dd> - <dt><a href="Guides/XUL_vs_SDK">XUL versus the SDK</a></dt> - <dd>A comparison of the strengths and weaknesses of the SDK, compared to traditional XUL-based add-ons.</dd> -</dl> -</div> - -<div class="column-half"> -<dl> - <dt><a href="Guides/Porting_the_Library_Detector">Porting Example</a></dt> - <dd>A walkthrough of porting a relatively simple XUL-based add-on to the SDK.</dd> -</dl> -</div> -</div> - -<hr> -<h3 id="Multiprocess_Firefox"><a name="multiprocess-firefox">Multiprocess Firefox</a></h3> - -<div class="column-container"> -<div class="column-half"> -<dl> - <dt><a href="Guides/Multiprocess_Firefox_and_the_SDK">Multiprocess Firefox and the SDK</a></dt> - <dd>How to check whether your add-on is compatible with multiprocess Firefox, and fix it if it isn't.</dd> -</dl> -</div> - -<div class="column-half"> </div> -</div> - -<hr> -<div> -<div class="overheadIndicator communitybox" dir="ltr"> -<div class="column-container"> -<h2 id="Join_the_Add-on_SDK_community">Join the Add-on SDK community</h2> - -<div class="column-half"> -<div class="communitysubhead">Choose your preferred method for joining the discussion:</div> - -<ul class="communitymailinglist"> - <li><a href="https://lists.mozilla.org/listinfo/">Mailing list</a></li> - <li><a href="https://twitter.com/mozillajetpack">Twitter</a></li> - <li><a href="http://stackoverflow.com/questions/tagged/firefox-addon-sdk">Stack Overflow</a></li> - <li><a href="http://groups.google.com/group/mozilla-labs-jetpack">Newsgroup</a></li> - <li><a href="http://groups.google.com/group/mozilla-labs-jetpack/feeds">RSS feed</a></li> -</ul> -</div> - -<div class="column-half"> -<ul class="communitycontact"> - <li><strong>IRC: </strong><a href="irc://irc.mozilla.org/jetpack">#jetpack</a> <span class="smaller">(<a href="https://wiki.mozilla.org/IRC">learn more</a>)</span></li> - <li><strong>Team info: </strong><a href="https://wiki.mozilla.org/Jetpack" title="Designs and plans for the SDK tools">Jetpack Wiki</a></li> -</ul> -</div> -</div> -</div> -</div> diff --git a/files/pt-br/mozilla/add-ons/sdk/guides/working_with_events/index.html b/files/pt-br/mozilla/add-ons/sdk/guides/working_with_events/index.html deleted file mode 100644 index 9c51d1328f..0000000000 --- a/files/pt-br/mozilla/add-ons/sdk/guides/working_with_events/index.html +++ /dev/null @@ -1,154 +0,0 @@ ---- -title: Trabalhando com Eventos -slug: Mozilla/Add-ons/SDK/Guides/Working_with_Events -translation_of: Archive/Add-ons/Add-on_SDK/Guides/Working_with_Events ---- -<p>O Add-on SDK suporta programação dirigida a evento.</p> - -<p>Objetos emitem eventos sobre mudança de estados que devem ser interessantes ao código do add-on, tais como abertura de janelas, carregamento de páginas, requisições de rede completas, e cliques de mouse. Pelo registro de uma função de escuta para um emissor de evento um add-on pode receber notificações destes eventos.</p> - -<p><span>Nós falamos sobre scripts de conteúdo em mais detalhes no guia <a href="/en-US/Add-ons/SDK/Guides/Content_Scripts">Working with Content Scripts</a>.</span></p> - -<p>Adicionalmente, se você está usando scripts de conteúdo para interagir com o conteúdo web, você pode definir seus próprios eventos e usá-los para comunicar entre o código principal do add-on e os scripts de conteúdo. <span id="result_box" lang="pt"><span class="hps">Neste caso,</span> <span class="hps">uma extremidade</span> <span class="hps">da conversa</span> <span class="hps">emite</span> <span class="hps">os</span> <span class="hps">eventos</span><span>,</span> <span class="hps">e</span> <span class="hps">a outra extremidade</span> <span class="hps">ouve</span></span>.</p> - -<p>Portanto, há dois modos principais que você interagirá com o framework emissor de eventos:</p> - -<ul> - <li> - <p><strong>escutando eventos embutidos</strong> emitidos pelos objetos no SDK, tais como abertura de tab, carregamento de páginas, cliques de mouse</p> - </li> - <li> - <p><strong>enviando e recebendo eventos definidos pelos usuários</strong> entre scripts de conteúdo e o código do add-on</p> - </li> -</ul> - -<p>Este guia cobre somente o primeiro destes; o segundo é explicado no guia <a href="/en-US/Add-ons/SDK/Guides/Content_Scripts">Working with Content Scripts</a>.</p> - -<h2 id="Adicionando_Escutadores">Adicionando Escutadores</h2> - -<p>Você pode adicionar um escutador para um emissor de evento pela chamada ao seu método<code> on(type, listener)</code>.</p> - -<p>Ele leva dois parâmetros:</p> - -<ul> - <li> - <p><strong><code>type</code></strong>: o tipo de evento que nós estamos interessado, identificado por uma string. Muitos emissores de evento devem emitir mais do que um tipo de evento: por exemplo, a janela do navegador deve emitir ambos os eventos <code>open</code> e <code>close</code>. A lista de tipos de eventos válidos é específica a cada emissor de evento e é incluída em sua documentação.</p> - </li> - <li> - <p><strong><code>listener</code></strong>: o escutador em si. Esta é uma função que será chamada sempre que o evento ocorrer. O argumento que será passado para o escutador é específico a um tipo de evento e é documentado com o emissor de evento.</p> - </li> -</ul> - -<p>Por exemplo, o seguinte add-on registra uma escuta com o módulo <a href="/en-US/Add-ons/SDK/High-Level_APIs/tabs"><code>tabs</code></a> para esperar pelo evento <code>ready</code>, e registra uma string no console reportando o evento:</p> - -<pre class="brush: js">var tabs = require("sdk/tabs"); - -tabs.on("ready", function () { - console.log("tab loaded"); -}); -</pre> - -<p>Não é possível enumerar o conjunto de escutas para um dado evento.</p> - -<p>O valor de <code>this</code> na função de escuta é o objeto que emitiu o evento.</p> - -<h3 id="Escutando_Todos_os_Eventos">Escutando Todos os Eventos</h3> - -<p>Você pode passar o curinga "*" como o argumento <code>type</code>. Se você fizer isso, a escuta será chamada para qualquer evento emitido por qualquer objeto, e seu argumento será o nome do evento:</p> - -<pre class="brush: js">var ui = require("sdk/ui"); -var panels = require("sdk/panel"); -var self = require("sdk/self"); - -var panel = panels.Panel({ - contentURL: self.data.url("panel.html") -}); - -panel.on("*", function(e) { - console.log("event " + e + " was emitted"); -}); - -var button = ui.ActionButton({ - id: "my-button", - label: "my button", - icon: "./icon-16.png", - onClick: handleClick -}); - -function handleClick(state) { - panel.show({ - position: button - }); -}</pre> - -<p>Esta característica do curinga não funciona ainda nos módulos<a href="/en-US/Add-ons/SDK/High-Level_APIs/tabs"><code> tabs</code></a> ou <a href="/en-US/Add-ons/SDK/High-Level_APIs/windows"><code>window</code></a>.</p> - -<h3 id="Adicionando_escutas_em_construtores">Adicionando escutas em construtores</h3> - -<p>Emissores de evento podem ser módulos como no caso do evento <code>ready</code> acima, ou eles podem ser objetos retornados pelos construtores.</p> - -<p>No último caso o objeto <code>options</code> passado para o construtor tipicamente define propriedades cujos nomes são nomes de tipos de eventos suportados prefixados com "on": por exemplo, "onOpen", "onReady" e assim por diante. Então o construtor pode atribuir uma função de escuta para aquela propriedade como uma alternativa a chamada do método do objeto <code>on()</code>.</p> - -<p>Por exemplo: o objeto <a href="/en-US/Add-ons/SDK/Low-Level_APIs/ui_button_action"><code>ActionButton</code></a> emite um evento quando o botão é clicado.</p> - -<p>O add-on a seguir cria um botão e atribui uma escuta para a propriedade <code>onClick</code> do objeto fornecida no <code>options</code> do construtor do objeto botão. A escuta carrega https://developer.mozilla.org/:</p> - -<pre class="brush: js">require("sdk/ui/button/action").ActionButton({ - id: "visit-mozilla", - label: "Visit Mozilla", - icon: "./icon-16.png", - onClick: function() { - require("sdk/tabs").open("https://developer.mozilla.org/"); - } -}); -</pre> - -<p>Isto é exatamente equivalente a construir o botão e então chamar o método <code>on()</code> do botão</p> - -<pre class="brush: js">var button = require("sdk/ui/button/action").ActionButton({ - id: "visit-mozilla", - label: "Visit Mozilla", - icon: "./icon-16.png" -}); - -button.on("click", function() { - require("sdk/tabs").open("https://developer.mozilla.org/"); -}); -</pre> - -<h2 id="Removendo_Escutas_de_Evento">Removendo Escutas de Evento</h2> - -<p>Escutas de evento pode ser removidos pela chamada de <code>removeListener(type, listener)</code>, fornecendo o tipo do evento e escuta a remover.</p> - -<p>A escuta deve ter sido previamente adicionada usando um dos métodos descritos acima.</p> - -<p>No add-on a seguir, nós adicionamos duas escutas para o <a href="https://developer.mozilla.org/en-US/Add-ons/SDK/High-Level_APIs/tabs#ready">evento <code>ready</code> do módulo<code> tab</code></a>. Uma das funções de manipulação remove a escuta.</p> - -<p>Então nós abrimos duas abas.</p> - -<pre class="brush: js">var tabs = require("sdk/tabs"); - -function listener1() { - console.log("Listener 1"); - tabs.removeListener("ready", listener1); -} - -function listener2() { - console.log("Listener 2"); -} - -tabs.on("ready", listener1); -tabs.on("ready", listener2); - -tabs.open("https://www.mozilla.org"); -tabs.open("https://www.mozilla.org"); -</pre> - -<p>Nós devemos ver a saída como esta:</p> - -<pre>info: tabevents: Listener 1 -info: tabevents: Listener 2 -info: tabevents: Listener 2 -</pre> - -<p>As escutas serão removidas automaticamente quando o add-on for descarregado.</p> diff --git a/files/pt-br/mozilla/add-ons/sdk/high-level_apis/index.html b/files/pt-br/mozilla/add-ons/sdk/high-level_apis/index.html deleted file mode 100644 index 2537723562..0000000000 --- a/files/pt-br/mozilla/add-ons/sdk/high-level_apis/index.html +++ /dev/null @@ -1,11 +0,0 @@ ---- -title: High-Level APIs -slug: Mozilla/Add-ons/SDK/High-Level_APIs -tags: - - Add-on SDK - - NeedsTranslation - - TopicStub -translation_of: Archive/Add-ons/Add-on_SDK/High-Level_APIs ---- -<p>Modules listed on this page implement high-level APIs for building add-ons: creating user interfaces, interacting with the web, and interacting with the browser.</p> -<p>Unless the documentation explicitly says otherwise, all these modules are "Stable": we'll avoid making incompatible changes to them. {{ LandingPageListSubpages ("/en-US/Add-ons/SDK/High-Level_APIs", 5) }}</p> diff --git a/files/pt-br/mozilla/add-ons/sdk/high-level_apis/request/index.html b/files/pt-br/mozilla/add-ons/sdk/high-level_apis/request/index.html deleted file mode 100644 index 01937e2036..0000000000 --- a/files/pt-br/mozilla/add-ons/sdk/high-level_apis/request/index.html +++ /dev/null @@ -1,214 +0,0 @@ ---- -title: request -slug: Mozilla/Add-ons/SDK/High-Level_APIs/request -translation_of: Archive/Add-ons/Add-on_SDK/High-Level_APIs/request ---- -<div class="note"> -<p>Stable</p> -</div> - -<p><span class="seoSummary">Faça requesições simples de rede. Para uso mais avançado, cheque os módulos</span> <a href="/en-US/Add-ons/SDK/Low-Level_APIs/net_xhr">net/xhr</a>, baseado no objeto <a href="https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest">XMLHttpRequest</a> do navegador.</p> - -<h2 id="Globals">Globals</h2> - -<h3 id="Constructors">Constructors</h3> - -<h4 class="addon-sdk-api-name" id="Request(options)"><code>Request(options)</code></h4> - -<p>Este construtor cria um objeto request que pode ser usado para fazer requisições de rede. O construtor leva um único parâmetro <code>options</code> que é usado para configurar várias propriedades no resultado do <code>Request</code>.</p> - -<h5 id="Parâmetros">Parâmetros</h5> - -<p><strong>options : object</strong><br> - Opções opcionais:</p> - -<table class="standard-table"> - <thead> - <tr> - <th scope="col">Name</th> - <th scope="col">Type</th> - <th scope="col"> </th> - </tr> - </thead> - <tbody> - <tr> - <td>url</td> - <td>string,url</td> - <td> - <p>This is the url to which the request will be made. Can either be a <a href="https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/String">String</a> or an instance of the SDK's <a href="/en-US/Add-ons/SDK/High-Level_APIs/url">URL</a>.</p> - </td> - </tr> - <tr> - <td>onComplete</td> - <td>function</td> - <td> - <p>This function will be called when the request has received a response (or in terms of XHR, when <code>readyState == 4</code>). The function is passed a <code>Response</code> object.</p> - </td> - </tr> - <tr> - <td>headers</td> - <td>object</td> - <td> - <p>An unordered collection of name/value pairs representing headers to send with the request.</p> - </td> - </tr> - <tr> - <td>content</td> - <td>string,object</td> - <td> - <p>The content to send to the server. If <code>content</code> is a string, it should be URL-encoded (use <code>encodeURIComponent</code>). If <code>content</code> is an object, it should be a collection of name/value pairs. Nested objects & arrays should encode safely.</p> - - <p>For <code>GET</code> <span style="line-height: 1.5;">and </span><code style="font-style: normal; line-height: 1.5;">HEAD</code><span style="line-height: 1.5;"> requests, the query string (</span><code style="font-style: normal; line-height: 1.5;">content</code><span style="line-height: 1.5;">) will be appended to the URL. For </span><code style="font-style: normal; line-height: 1.5;">POST</code><span style="line-height: 1.5;"> and </span><code style="font-style: normal; line-height: 1.5;">PUT</code><span style="line-height: 1.5;"> requests, it will be sent as the body of the request.</span></p> - </td> - </tr> - <tr> - <td>contentType</td> - <td>string</td> - <td> - <p>The type of content to send to the server. This explicitly sets the <code>Content-Type</code> header. The default value is <code>application/x-www-form-urlencoded</code>.</p> - </td> - </tr> - <tr> - <td>overrideMimeType</td> - <td>string</td> - <td> - <p>Use this string to override the MIME type returned by the server in the response's Content-Type header. You can use this to treat the content as a different MIME type, or to force text to be interpreted using a specific character.</p> - - <p>For example, if you're retrieving text content which was encoded as ISO-8859-1 (Latin 1), it will be given a content type of "utf-8" and certain characters will not display correctly. To force the response to be interpreted as Latin-1, use <code>overrideMimeType</code>:</p> - - <pre class="brush: js"> -var Request = require("sdk/request").Request; -var quijote = Request({ - url: "http://www.latin1files.org/quijote.txt", - overrideMimeType: "text/plain; charset=latin1", - onComplete: function (response) { - console.log(response.text); - } -}); - -quijote.get();</pre> - </td> - </tr> - <tr> - <td>anonymous</td> - <td>boolean</td> - <td>If <code>true</code>, the request will be sent without cookies or authentication headers. This option sets the <a href="/en/docs/Web/API/XMLHttpRequest#Non-standard_properties"><code>mozAnon</code></a> property in the underlying XMLHttpRequest object. Defaults to <code>false</code>.</td> - </tr> - </tbody> -</table> - -<h2 id="Request">Request</h2> - -<p>The <code>Request</code> object is used to make <code>GET</code>, <code style="font-style: normal; line-height: 1.5;"><code style="font-style: normal;">HEAD</code></code>, <code style="font-style: normal; line-height: 1.5;"><code style="font-style: normal;">POST</code></code><span style="line-height: 1.5;">, </span><code style="font-style: normal; line-height: 1.5;">PUT</code><span style="line-height: 1.5;">,</span><span style="line-height: 1.5;"> </span><span style="line-height: 1.5;">or </span><code style="font-style: normal; line-height: 1.5;">DELETE</code><span style="line-height: 1.5;"> network requests. It is constructed with a URL to which the request is sent. Optionally the user may specify a collection of headers and content to send alongside the request and a callback which will be executed once the request completes.</span></p> - -<p>Once a <code>Request</code> object has been created a <code>GET</code> request can be executed by calling its <code>get()</code> method, a <code>POST</code> request by calling its <code>post()</code> method, and so on.</p> - -<p>When the server completes the request, the <code>Request</code> object emits a "complete" event. Registered event listeners are passed a <code>Response</code> object.</p> - -<p>Each <code>Request</code> object is designed to be used once. Attempts to reuse them will throw an error.</p> - -<p>Since the request is not being made by any particular website, requests made here are not subject to the same-domain restriction that requests made in web pages are subject to.</p> - -<p>With the exception of <code>response</code>, all of a <code>Request</code> object's properties correspond with the options in the constructor. Each can be set by simply performing an assignment. However, keep in mind that the same validation rules that apply to <code>options</code> in the constructor will apply during assignment. Thus, each can throw if given an invalid value.</p> - -<p>The example below shows how to use Request to get the most recent tweet from the <a href="https://twitter.com/mozhacks">@mozhacks</a> account:</p> - -<pre class="brush: js">var Request = require("sdk/request").Request; -var latestTweetRequest = Request({ - url: "https://api.twitter.com/1/statuses/user_timeline.json?screen_name=mozhacks&count=1", - onComplete: function (response) { - var tweet = response.json[0]; - console.log("User: " + tweet.user.screen_name); - console.log("Tweet: " + tweet.text); - } -}); - -// Be a good consumer and check for rate limiting before doing more. -Request({ - url: "http://api.twitter.com/1/account/rate_limit_status.json", - onComplete: function (response) { - if (response.json.remaining_hits) { - latestTweetRequest.get(); - } else { - console.log("You have been rate limited!"); - } - } -}).get();</pre> - -<h3 id="Methods">Methods</h3> - -<h4 class="addon-sdk-api-name" id="get()"><code>get()</code></h4> - -<p>Make a <code>GET</code> request.</p> - -<h4 class="addon-sdk-api-name" id="head()" style="line-height: 18px; font-size: 1.28571428571429rem;"><code>head()</code></h4> - -<p>Make a <code>HEAD</code> request.</p> - -<h4 class="addon-sdk-api-name" id="post()"><code>post()</code></h4> - -<p>Make a <code>POST</code> request.</p> - -<h4 class="addon-sdk-api-name" id="put()"><code>put()</code></h4> - -<p>Make a <code>PUT</code> request.</p> - -<h4 class="addon-sdk-api-name" id="delete()"><span style="font-family: courier new,andale mono,monospace; font-size: 1.28571428571429rem; font-style: inherit; font-weight: inherit;">delete()</span></h4> - -<p>Make a <code>DELETE</code> request.</p> - -<h3 id="Properties">Properties</h3> - -<h4 class="addon-sdk-api-name" id="url"><code>url</code></h4> - -<h4 class="addon-sdk-api-name" id="headers"><code>headers</code></h4> - -<h4 class="addon-sdk-api-name" id="content"><code>content</code></h4> - -<h4 class="addon-sdk-api-name" id="contentType"><code>contentType</code></h4> - -<h4 class="addon-sdk-api-name" id="response"><code>response</code></h4> - -<h3 id="Events">Events</h3> - -<h4 class="addon-sdk-api-name" id="complete"><code>complete</code></h4> - -<p>The <code>Request</code> object emits this event when the request has completed and a response has been received.</p> - -<h5 id="Arguments">Arguments</h5> - -<p><strong>Response</strong> : Listener functions are passed the response to the request as a <code>Response</code> object.</p> - -<h2 id="Response">Response</h2> - -<p>The Response object contains the response to a network request issued using a <code>Request</code> object. It is returned by the <code>get()</code>, <code style="font-style: normal; line-height: 1.5;">head()</code><span style="line-height: 1.5;">, </span><code style="font-style: normal; line-height: 1.5;">post()</code><span style="line-height: 1.5;">, </span><code style="font-style: normal; line-height: 1.5;">put()</code><span style="line-height: 1.5;"> </span><span style="line-height: 1.5;">or </span><code style="font-style: normal; line-height: 1.5;">delete()</code><span style="line-height: 1.5;"> method of a </span><code style="font-style: normal; line-height: 1.5;">Request</code><span style="line-height: 1.5;"> object.</span></p> - -<p>All members of a <code>Response</code> object are read-only.</p> - -<h3 id="Properties_2">Properties</h3> - -<h4 class="addon-sdk-api-name" id="text"><code>text</code></h4> - -<p>The content of the response as plain text.</p> - -<h4 class="addon-sdk-api-name" id="json"><code>json</code></h4> - -<p>The content of the response as a JavaScript object. The value will be <code>null</code> if the document cannot be processed by <code>JSON.parse</code>.</p> - -<h4 class="addon-sdk-api-name" id="status"><code>status</code></h4> - -<p>The HTTP response status code (e.g. <em>200</em>).</p> - -<h4 class="addon-sdk-api-name" id="statusText"><code>statusText</code></h4> - -<p>The HTTP response status line (e.g. <em>OK</em>).</p> - -<h4 class="addon-sdk-api-name" id="headers_2"><code>headers</code></h4> - -<p>The HTTP response headers represented as key/value pairs.</p> - -<p>To print all the headers you can do something like this:</p> - -<pre class="brush: js">for (var headerName in response.headers) { - console.log(headerName + " : " + response.headers[headerName]); -}</pre> diff --git a/files/pt-br/mozilla/add-ons/sdk/high-level_apis/tabs/index.html b/files/pt-br/mozilla/add-ons/sdk/high-level_apis/tabs/index.html deleted file mode 100644 index 22493dce1d..0000000000 --- a/files/pt-br/mozilla/add-ons/sdk/high-level_apis/tabs/index.html +++ /dev/null @@ -1,671 +0,0 @@ ---- -title: tabs -slug: Mozilla/Add-ons/SDK/High-Level_APIs/tabs -tags: - - Guías - - Tab -translation_of: Archive/Add-ons/Add-on_SDK/High-Level_APIs/tabs ---- -<div class="note"> -<p>Stable</p> -</div> - -<p><span class="seoSummary">Abre, manipula, e acessa tabs, e recebe eventos de tabs</span></p> - -<h2 id="Uso">Uso</h2> - -<h3 id="Abrir_uma_tab">Abrir uma tab</h3> - -<p>Você pode abrir uma nova tab, especificando várias propriedades incluindo localização:</p> - -<pre class="brush: js">var tabs = require("sdk/tabs"); -tabs.open("http://www.Exemplo.com");</pre> - -<h3 id="Rastrear_tabs">Rastrear tabs</h3> - -<p>Você pode registrar eventos de escuta para ser notificado quando a tabs abre, fecha, termina o carregamento de conteúdo DOM, ou tornam-se ativa ou inativa:</p> - -<pre class="brush: js">var tabs = require("sdk/tabs"); - -// Listen for tab openings. -tabs.on('open', function onOpen(tab) { - myOpenTabs.push(tab); -}); - -// Listen for tab content loads. -tabs.on('ready', function(tab) { - console.log('tab is loaded', tab.title, tab.url); -});</pre> - -<h3 id="Accessar_tabs">Accessar tabs</h3> - -<p>O módulo por ele mesmo pode ser usado como uma lista de todas as tabs abertas em todos os navegadores. Em particular, você pode enumerá-las:</p> - -<pre class="brush: js">var tabs = require('sdk/tabs'); -for (let tab of tabs) - console.log(tab.title);</pre> - -<p>Você também pode acessar tabs individual pelo índice:</p> - -<pre class="brush: js">var tabs = require('sdk/tabs'); - -tabs.on('ready', function () { - console.log('first: ' + tabs[0].title); - console.log('last: ' + tabs[tabs.length-1].title); -});</pre> - -<p>Você pode acessar a tab ativa atualmente:</p> - -<pre class="brush: js">var tabs = require('sdk/tabs'); - -tabs.on('activate', function () { - console.log('active: ' + tabs.activeTab.url); -});</pre> - -<h3 id="Rastrear_uma_única_tab">Rastrear uma única tab</h3> - -<p>Dada uma tab, você pode registrar escutas para eventos serem notificados quando a tab é fechada, ativada ou desativada, ou quando a página hospedad pela tab é carregada ou recuperada do <a href="https://developer.mozilla.org/en-US/docs/Working_with_BFCache">"back-forward cache"</a>:</p> - -<pre class="brush: js">var tabs = require("sdk/tabs"); - -function onOpen(tab) { - console.log(tab.url + " is open"); - tab.on("pageshow", logShow); - tab.on("activate", logActivate); - tab.on("deactivate", logDeactivate); - tab.on("close", logClose); -} - -function logShow(tab) { - console.log(tab.url + " is loaded"); -} - -function logActivate(tab) { - console.log(tab.url + " is activated"); -} - -function logDeactivate(tab) { - console.log(tab.url + " is deactivated"); -} - -function logClose(tab) { - console.log(tab.url + " is closed"); -} - -tabs.on('open', onOpen);</pre> - -<h3 id="Manipular_uma_tab">Manipular uma tab</h3> - -<p>Você pode conseguir e configurar várias propriedades de tabs (mas note que propriedades relacionadas ao conteúdo da tab, tal como URL, não conterão valores válidos até depois do evento <code>ready</code> disparar). Pela configuração da propriedade <code>url</code> você pode carregar uma nova página na tab:</p> - -<pre class="brush: js">var tabs = require("sdk/tabs"); -tabs.on('activate', function(tab) { - tab.url = "http://www.Exemplo.com"; -});</pre> - -<h3 id="Execute_scripts_em_um_tab">Execute scripts em um tab</h3> - -<p>Você pode anexar um script de <a href="https://developer.mozilla.org/en-US/Add-ons/SDK/Guides/Content_Scripts">conteúdo a página</a> hospedad na tab, e usar aquele para acessar e manipular o conteúdo da página (veja o tutorial <a href="/en-US/Add-ons/SDK/Tutorials/Modifying_the_Page_Hosted_by_a_Tab">Modifying the Page Hosted by a Tab</a>):</p> - -<pre class="brush: js">var tabs = require("sdk/tabs"); - -tabs.on('activate', function(tab) { - var worker = tab.attach({ - contentScript: 'self.port.emit("html", document.body.innerHTML);' - }); - worker.port.on("html", function(message) { - console.log(message) - }) -});</pre> - -<p>Observe que <code>tab.attach</code> é centrado na tab: se o usuário navegar para uma nova página na mesma tab, então o trabalho e scripts de conteúdo serão reanexados á nova página.</p> - -<h3 id="Anexação_de_stylesheets">Anexação de stylesheets</h3> - -<div class="geckoVersionNote"> -<p>Novo no Firefox 34.</p> -</div> - -<p>Você não pode anexar folhas de estilo para uma tab usando <code>tab.attach()</code>, mas do Firefox 34 em diante você pode anexar e desanexa-los usando APIs de baixo nível <a href="/en-US/Add-ons/SDK/Low-Level_APIs/stylesheet_style">stylesheet/style</a> e <a href="/en-US/Add-ons/SDK/Low-Level_APIs/content_mod">content/mod</a>. Aqui está um add-on que usa botões alternados para anexar uma folha de estilo a tab ativa, e desanexar novamente. A folha de estilo é chamada "style.css" e está localizada no diretório "data":</p> - -<pre class="brush: js">var tabs = require("sdk/tabs"); -var { attach, detach } = require('sdk/content/mod'); -var { Style } = require('sdk/stylesheet/style'); -var { ToggleButton } = require("sdk/ui/button/toggle"); - -var style = Style({ - uri: './style.css' -}); - -var button = ToggleButton({ - id: "stylist", - label: "stylist", - icon: "./icon-16.png", - onChange: function(state) { - if (state.checked) { - attach(style, tabs.activeTab); - } - else { - detach(style, tabs.activeTab); - } - } -});</pre> - -<h3 id="Janelas_Privadas">Janelas Privadas</h3> - -<p>Se o seu add-on não optou por entrar em navegação privada, então você não verá quaisquer tabs pela janela de navegação privada.</p> - -<p>Tabs hospedadas por janelas em navegação privada não serão vista se você enumerar o módulo <code>tab</code> por si mesmo, e você não receberá quaisquer eventos deles.</p> - -<p>Para aprender mais sobre janelas privadas, como optar por entrar em navegação privada, e como suportar navegação privada, dirija-se à <a href="/en-US/Add-ons/SDK/High-Level_APIs/private-browsing">documentação do módulo para <code>private-browsing</code></a>.</p> - -<h3 id="Converção_para_XUL_tabs">Converção para XUL tabs</h3> - -<p>Para converter de um objeto <a href="/en-US/Add-ons/SDK/High-Level_APIs/tabs#Tab"><code>Tab</code></a> de alto nível usando esta API para um objeto <a href="/en-US/docs/Mozilla/Tech/XUL/tab">XUL <code>tab</code></a> de baixo nível usado na API <a href="/en-US/Add-ons/SDK/Low-Level_APIs/tabs_utils"><code>tabs/utils</code></a> e por add-ons tradicionais, use a função <code>viewFor()</code> exportada pelo móduloa <code>viewFor</code>.</p> - -<p>Para converter de volta, de uma <code>tab</code> XUL para um objeto <code>Tab</code> de alto nível, use a função <code>modelFor(),</code> exportada pelo módulo <code>modelFor</code>.</p> - -<p>Aqui está um exemplo covertendo de uma <code>Tab </code>de alto nível para uma <code>tab XUL</code> e então converte de volta:</p> - -<pre class="brush: js">var { modelFor } = require("sdk/model/core"); -var { viewFor } = require("sdk/view/core"); - -var tabs = require("sdk/tabs"); -var tab_utils = require("sdk/tabs/utils"); - -function mapHighLevelToLowLevel(tab) { - // get the XUL tab that corresponds to this high-level tab - var lowLevelTab = viewFor(tab); - // now we can, for Exemplo, access the tab's content directly - var browser = tab_utils.getBrowserForTab(lowLevelTab); - console.log(browser.contentDocument.body.innerHTML); - // get the high-level tab back from the XUL tab - var highLevelTab = modelFor(lowLevelTab); - console.log(highLevelTab.url); -} - -tabs.on("ready", mapHighLevelToLowLevel); -</pre> - -<p>Observe que acessar objetos XUL diretamente e conteúdo web como este significa que você não está protegido pelas garantias de compatibilidades feitas pelas APIs de alto nível do SDK. Em particular, seu código não deve trabalhar com <a href="http://billmccloskey.wordpress.com/2013/12/05/multiprocess-firefox/">multiprocess Firefox</a>.</p> - -<h2 id="Globais">Globais</h2> - -<h3 id="Funções">Funções</h3> - -<h4 class="addon-sdk-api-name" id="open(opções)"><code>open(opções)</code></h4> - -<p>Abre uma nova tab. A nova tab abrirá na janela ativa ou na nova janela, dependendo da opção <code>inNewWindow</code>.</p> - -<p><strong>Examplo</strong></p> - -<pre class="brush: js">var tabs = require("sdk/tabs"); - -// Open a new tab on active window and make tab active. -tabs.open("http://www.mysite.com"); - -// Open a new tab in a new window and make it active. -tabs.open({ - url: "http://www.mysite.com", - inNewWindow: true -}); - -// Open a new tab on active window in the background. -tabs.open({ - url: "http://www.mysite.com", - inBackground: true -}); - -// Open a new tab as an app tab and do something once it's open. -tabs.open({ - url: "http://www.mysite.com", - isPinned: true, - onOpen: function onOpen(tab) { - // do stuff like listen for content - // loading. - } -});</pre> - -<h5 id="Parâmetros">Parâmetros</h5> - -<p><strong>opção: object</strong><br> - Opções necessárias:</p> - -<table class="standard-table"> - <thead> - <tr> - <th scope="col">Name</th> - <th scope="col">Type</th> - <th scope="col"> </th> - </tr> - </thead> - <tbody> - <tr> - <td>url</td> - <td>string</td> - <td> - <p>URL a ser aberta na nova tab. Esta é uma propriedade necessária.</p> - </td> - </tr> - </tbody> -</table> - -<p>Opções opcionais:</p> - -<table class="standard-table"> - <thead> - <tr> - <th scope="col">Name</th> - <th scope="col">Type</th> - <th scope="col"> </th> - </tr> - </thead> - <tbody> - <tr> - <td>isPrivate</td> - <td>boolean</td> - <td> - <p>Boolean que determinará se a nova tab deve ser privada ou não. Se seu add-on não suporta navegação privada isto não terá efeito. Veja a documentação de <a href="https://developer.mozilla.org/en-US/Add-ons/SDK/High-Level_APIs/private-browsing">navegação privada</a> para mais informação. O padrão é <code>false</code>.</p> - </td> - </tr> - <tr> - <td>inNewWindow</td> - <td>boolean</td> - <td> - <p>Se presente e true, uma nova janela de navegação será aberta e na primeira tab naquela janela. Esta é uma propriedade opcional.</p> - </td> - </tr> - <tr> - <td>inBackground</td> - <td>boolean</td> - <td> - <p>Se presente e true, a nova tab será aberta à direita da tab ativa e não estará ativa. Esta é uma propriedade opcional.</p> - </td> - </tr> - <tr> - <td>isPinned</td> - <td>boolean</td> - <td> - <p>Se presente e true, a nova tab será anexada como um <a href="http://support.mozilla.com/en-US/kb/what-are-app-tabs">app tab</a>.</p> - </td> - </tr> - <tr> - <td>onOpen</td> - <td>function</td> - <td> - <p>Uma função que será registrada para o evento 'open'. Esta é uma propriedade opcional.</p> - </td> - </tr> - <tr> - <td>onClose</td> - <td>function</td> - <td> - <p>Uma função de callback que será registrada para o evento 'close'. Esta é uma propriedade opcional.</p> - </td> - </tr> - <tr> - <td>onReady</td> - <td>function</td> - <td> - <p>Uma função de callback que será registrada para o evento 'ready'. Esta é uma propriedade opcional.</p> - </td> - </tr> - <tr> - <td>onLoad</td> - <td>function</td> - <td> - <p>Uma função de callback que será registrada para o evento 'load'. Esta é uma propriedade opcional.</p> - </td> - </tr> - <tr> - <td>onPageShow</td> - <td>function</td> - <td> - <p>Uma função de callback que será registrada para o evento 'pageshow'. Esta é uma propriedade opcional.</p> - </td> - </tr> - <tr> - <td>onActivate</td> - <td>function</td> - <td> - <p>Uma função de callback que será registrada para o evento 'activate'. Esta é uma propriedade opcional.</p> - </td> - </tr> - <tr> - <td>onDeactivate</td> - <td>function</td> - <td> - <p>Uma função de callback que será registrada para o evento 'deactivate'. Esta é uma propriedade opcional.</p> - </td> - </tr> - </tbody> -</table> - -<h3 id="Propriedades">Propriedades</h3> - -<h4 class="addon-sdk-api-name" id="activeTab"><code>activeTab</code></h4> - -<p>A tab ativa na janela ativa. Esta propriedade é somente leitura. Para ativar um objeto<code> Tab</code>, chame seu método <code>activate</code>.</p> - -<p><strong>Exemplo</strong></p> - -<pre class="brush: js">// Get the active tab's title. -var tabs = require("sdk/tabs"); -console.log("title of active tab is " + tabs.activeTab.title);</pre> - -<h4 class="addon-sdk-api-name" id="length"><code>length</code></h4> - -<p>O número de tabs abertas em todas as janelas.</p> - -<h3 id="Eventos">Eventos</h3> - -<h4 class="addon-sdk-api-name" id="open"><code>open</code></h4> - -<p>Este evento é emitido quando uma nova tab é aberta. Isto não significa que o conteúdo carregou, somente que o navegador está inteiramente visível para o usuário.</p> - -<p>Propriedades relacionadas à conteúdo da tab (por exemplo: <code>title</code>, <code>favicon</code>, e <code>url</code>) não serão corrigidas neste ponto. Se você precisar acessar estas propriedades, escute o evento <code>ready</code>:</p> - -<pre class="brush: js">var tabs = require("sdk/tabs"); -tabs.on('open', function(tab){ - tab.on('ready', function(tab){ - console.log(tab.url); - }); -});</pre> - -<h5 id="Argumentos">Argumentos</h5> - -<p><strong>Tab</strong> : Escutas são passadas ao objeto tab que acaba de abrir.</p> - -<h4 class="addon-sdk-api-name" id="close"><code>close</code></h4> - -<p>Este evento é emitido quando a tab é fechada. Quando a janela é fechada este evento será emitido para cada uma das tabs abertas naquela janela.</p> - -<h5 id="Argumentos_2">Argumentos</h5> - -<p><strong>Tab</strong> : Escutas são passadas ao objeto tab que fechou.</p> - -<h4 class="addon-sdk-api-name" id="ready"><code>ready</code></h4> - -<p>Este evento é emitido quando o DOM para o conteúdo da página estiver preparado. É equivalmente ao evento <code>DOMContentLoaded</code> para conteúdo da página dada.</p> - -<p>Um única tab emitirá este evento toda vez todas às vezes que o DOM for carregado: então será emitido novamente se o endereço da página mudar ou o conteúdo for recarregado.</p> - -<p>Depois que este evento for emitido, todas as propriedades relacionadas ao conteúdo da página poderão ser usadas.</p> - -<h5 id="Argumentos_3">Argumentos</h5> - -<p><strong>Tab</strong> : Escutas são passadas ao objeto tab que carregou.</p> - -<h4 class="addon-sdk-api-name" id="activate"><code>activate</code></h4> - -<p>Este evento é emitido quando uma tab inativa torna-se ativa.</p> - -<h5 id="Argumentos_4">Argumentos</h5> - -<p><strong>Tab</strong> : Escutas são passadas para o objeto tab que torna-se ativa.</p> - -<h4 class="addon-sdk-api-name" id="deactivate"><code>deactivate</code></h4> - -<p>Este evento é emitido quando a tab ativa torna-se inativa.</p> - -<h5 id="Argumentos_5">Argumentos</h5> - -<p><strong>Tab</strong> : Escutas são passadas para o objeto tab que tornou-se inativo.</p> - -<h2 id="Tab">Tab</h2> - -<p>Uma instância Tab representa um única tab aberta. Ele contém várias propriedades, vários métodos para manipulação, assim como registração de evento por tab.</p> - -<p>Tabs emitem todos os eventos descritos na seção de Eventos. Escutas são passadas ao objeto <code>Tab</code> que lança eventos.</p> - -<h3 id="Métodos">Métodos</h3> - -<h4 class="addon-sdk-api-name" id="pin()"><code>pin()</code></h4> - -<p>Anexa a tab como uma <a href="http://support.mozilla.com/en-US/kb/what-are-app-tabs">app tab</a>.</p> - -<h4 class="addon-sdk-api-name" id="unpin()"><code>unpin()</code></h4> - -<p>Desanexa esta tab.</p> - -<h4 class="addon-sdk-api-name" id="close(callback)"><code>close(callback)</code></h4> - -<p>Fecha esta tab.</p> - -<h5 id="Parâmetros_2">Parâmetros</h5> - -<p><strong>callback : function</strong><br> - Uma função será chamada quanto a tab termine seu processo de fechamento. Este é uma argumento opcional.</p> - -<h4 class="addon-sdk-api-name" id="reload()"><code>reload()</code></h4> - -<p>Recarrega esta tab.</p> - -<h4 class="addon-sdk-api-name" id="activate()"><code>activate()</code></h4> - -<p>Torna esta tab ativa, que trará esta tab para o primeiro plano.</p> - -<h4 class="addon-sdk-api-name" id="getThumbnail()"><code>getThumbnail()</code></h4> - -<p>Retorna o dado thumbnail da URI da página atualmente carregada nesta tab.</p> - -<h4 class="addon-sdk-api-name" id="attach(options)"><code>attach(options)</code></h4> - -<p>Anexa um ou mais scripts ao documento carregado na tab. Observe que este é centrado na tab: se o usuário navega para uma nova página na mesma tab, então o script de conteúdo será reanexado à nova página.</p> - -<p><strong>Exemplo</strong></p> - -<pre class="brush: js">var tabs = require("sdk/tabs"); - -tabs.on('ready', function(tab) { - var worker = tab.attach({ - contentScript: - 'document.body.style.border = "5px solid red";' - }); -});</pre> - -<h5 id="Parâmetros_3">Parâmetros</h5> - -<p><strong>options : objeto</strong><br> - Opções opcionais:</p> - -<table class="standard-table"> - <thead> - <tr> - <th scope="col">Name</th> - <th scope="col">Type</th> - <th scope="col"> </th> - </tr> - </thead> - <tbody> - <tr> - <td>contentScriptFile</td> - <td>string,array</td> - <td> - <p>As URLs dos arquivos locais dos scripts de conteúdo carregados. Scripts de conteúdo especificados por esta opção são carregados <em>antes </em>daqueles especificados pela opção <code>contentScript</code>. Opcional.</p> - </td> - </tr> - <tr> - <td>contentScript</td> - <td>string,array</td> - <td> - <p>Uma string ou uma array de strings do código para ser avaliado no contexto. Scripts de conteúdo especificados por esta opção são carregados <em>depois</em> daqueles especificados pela opção <code>contentScriptFile</code>. Opcional.</p> - </td> - </tr> - <tr> - <td>contentScriptOptions</td> - <td>object</td> - <td> - <p>Você pode usar esta opção para definir valores somente leitura para seus scripts de conteúdo.</p> - - <p>A opção consiste de uma listagem de objetos literais no formato pares <code>name:value</code> para os valores que você quer fornecer para o script de conteúdo. Por exemplo:</p> - - <pre class="brush: js"> -// main.js - -const tabs = require("sdk/tabs"); - -tabs.open({ - url: "./page.html", - onReady: function(tab) { - tab.attach({ - contentScriptFile: "./content-script.js", - contentScriptOptions: { - a: "blah" - } - }); - } -});</pre> - - <p>Os valores são acessíveis ao script de conteúdo via propriedade <code>self.options</code>:</p> - - <pre class="brush: js"> -// content-script.js - -alert(self.options.a);</pre> - </td> - </tr> - <tr> - <td>onMessage</td> - <td>function</td> - <td> - <p>Uma função chamada quando o conteúdo de trabalho recebe uma mensagem dos scripts de conteúdo. Escutas são passadas como um único argumento, a mensagem postada do script de conteúdo.</p> - </td> - </tr> - <tr> - <td>onError</td> - <td>function</td> - <td> - <p>Uma função chamada quando o trabalhador de conteúdo recebe um erro dos scripts de conteúdo. Escutas são passar como um único argumento, <code>error</code>, que é erro postado do script de conteúdo e um objeto do tipo <a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error">Error</a>. Opcional.</p> - </td> - </tr> - </tbody> -</table> - -<h5 id="Retorno">Retorno</h5> - -<p><strong>Worker</strong> : O objeto <a href="/en-US/Add-ons/SDK/Low-Level_APIs/content_worker">Worker</a> pode ser usado para comunicar com o script de conteúdo. Veja o <a href="/en-US/Add-ons/SDK/Guides/Content_Scripts">guia de scripts de conteúdo</a> para aprender os detalhes.</p> - -<h3 id="Propriedades_2">Propriedades</h3> - -<h4 class="addon-sdk-api-name" id="id"><code>id</code></h4> - -<p>O único id para a tab. Esta propriedade é somente leitura.</p> - -<h4 class="addon-sdk-api-name" id="title"><code>title</code></h4> - -<p>O título da tab (normalmente o título da página atualmente carregada na tab). Esta propriedade pode ser configurada para mudar o título da tab.</p> - -<h4 class="addon-sdk-api-name" id="url"><code>url</code></h4> - -<p>A URL da página atualmente carregada na tab. Esta propriedade pode ser configurada para carregar uma URL diferente na tab.</p> - -<h4 class="addon-sdk-api-name" id="favicon"><code>favicon</code></h4> - -<p>A URL do favicon para a página atualmente carregada na tab. Esta propriedade é somente para leitura.</p> - -<div class="warning">Esta propriedade está desatualizada. Da versão 1.15, use a função <a href="/en-US/Add-ons/SDK/Low-Level_APIs/places_favicon">getFavicon() do módulo favicon</a> ao invés.</div> - -<h4 class="addon-sdk-api-name" id="contentType"><code>contentType</code></h4> - -<div class="experimental"><strong>Esta é uma API experimental atualmente, então nós devemos mudar ele em lançamentos futuros. </strong> - -<p>Retorna o tipo MIME que o documento atualmente tem carregado na tab sendo desenhada. Ele deve vir do cabeçalho do HTTP ou outra fonte de informação MIME, e deve ser afetado pela conversão de tipo automática executada pelo navegador ou extensão. Esta propriedade é somente leitura.</p> -</div> - -<h4 class="addon-sdk-api-name" id="index"><code>index</code></h4> - -<p>O índice da tab relativa a outras tabs na janela da aplicação. Esta propriedade pode ser configurada para mudar sua posição relativa.</p> - -<h4 class="addon-sdk-api-name" id="isPinned"><code>isPinned</code></h4> - -<p>Se ou não esta tab é anexável como uma <a href="http://support.mozilla.com/en-US/kb/what-are-app-tabs">app tab</a>. Esta propriedade é somente leitura.</p> - -<h4 class="addon-sdk-api-name" id="window"><code>window</code></h4> - -<p>O objeto <a href="/en-US/Add-ons/SDK/High-Level_APIs/windows#BrowserWindow"><code>window</code></a> para esta tab.</p> - -<h4 class="addon-sdk-api-name" id="readyState"><code>readyState</code></h4> - -<div class="geckoVersionNote"> -<p>Novo no Firefox 33.</p> -</div> - -<p>Uma string dizendo a você qual o estado de carga do documento hospedado por esta tab. Isto corresponde diretamente ao <a href="/en-US/docs/Web/API/document.readyState"><code>Document.readyState</code></a>. Ele tem um de quatro valores possíveis:</p> - -<ul> - <li>"uninitialized": o documento da tab não está ainda carregado</li> - <li>"loading": o documento da tab está ainda em processo de carga</li> - <li>"interactive": o documento da tab carregou e está analisado, mas os recursos tais como imagens e folhas de escilo devem ainda ser carregados</li> - <li>"complete": o documento da tab e todos os recursos estão inteiramente carregados</li> -</ul> - -<p>Uma vez que o <code>readyState</code> da tab entrou no "interactive", você pode pegar as propriedades tais como a URL do documento.</p> - -<h3 id="Eventos_2">Eventos</h3> - -<h4 class="addon-sdk-api-name" id="close_2"><code>close</code></h4> - -<p>Este evento é emitido quando a tab é fechada. Ele também é emitido quando a janela da tab é fechada.</p> - -<h5 id="Argumentos_6">Argumentos</h5> - -<p><strong>Tab</strong> : Escutas são passadas ao objeto tab.</p> - -<h4 class="addon-sdk-api-name" id="ready_2"><code>ready</code></h4> - -<p>Este evento é emitido quando o DOM para o conteúdo da tab estiver preparado. Ele é equivalente ao evento <a href="https://developer.mozilla.org/en-US/docs/Web/Reference/Events/DOMContentLoaded"><code>DOMContentLoaded</code></a> para o dado conteúdo da página. Neste ponto o documento por si só está inteiramente carreado e analisado, mas recursos tais como folhas de estilo e imagens devem estar ainda carregando.</p> - -<p>Uma única tab emitirá este evento todas às vezes que o DOM estiver carregado: então ela será emitida novamente se o endereço da tab mudar ou o conteúdo for recarregado. Depois deste evento ser emitido, todas as propriedades relacionadas ao conteúdo da tab podem ser usadas.</p> - -<h5 id="Argumentos_7">Argumentos</h5> - -<p><strong>Tab</strong> : Escutas são passadas ao objeto tab.</p> - -<h4 class="addon-sdk-api-name" id="load"><code>load</code></h4> - -<p>Este evento é emitido quando a página do conteúdo da tab estiver carregada. É equivalente ao evento <a href="https://developer.mozilla.org/en-US/docs/Web/Reference/Events/load"><code>load</code></a> para o dado conteúdo da página. Neste ponto o documento e seus recursos, tais como imagens e folhas de estilo, terminaram o carregamento.</p> - -<p>Este evento pode ser usado por páginas que não tem um evento <code>DOMContentLoaded</code>, como imagens. Para páginas que tem um evento<code> DOMContentLoaded</code>, <code>load</code> é disparado depois do <code>ready</code>.</p> - -<p>Uma única tab emitirá este evento toda vez que a página for carregada: então ele será emitido novamente se o endereço da tab mudar ou o conteúdo for recarregado. Depois deste evento ser emitido, todas as propriedades relacionadas ao conteúdo da tab podem ser usados</p> - -<h5 id="Argumentos_8">Argumentos</h5> - -<p><strong>Tab</strong> : Escutas são passadas para o objeto tab.</p> - -<h4 class="addon-sdk-api-name" id="pageshow"><code>pageshow</code></h4> - -<p>O evento <code>pageshow</code> é emitido quando a página para o conteúdo da tab for carregado. É equivalente ao evento <a href="https://developer.mozilla.org/en-US/docs/DOM/Mozilla_event_reference/pageshow"><code>pageshow</code></a> para um dado conteúdo da página.</p> - -<p>Este evento é similar aos eventos <a href="/en-US/Add-ons/SDK/High-Level_APIs/tabs#load"><code>load</code></a> e <a href="/en-US/Add-ons/SDK/High-Level_APIs/tabs#ready"><code>ready</code></a>, exceto que diferente de <code>load</code> e <code>ready</code>, <code>pageshow</code> é lançado se a página for recuperada do <a href="https://developer.mozilla.org/en-US/docs/Working_with_BFCache">bfcache.</a> Isto significa que se o usuário carrega a página, carrega uma nova página, então se move para a página anterior usando o botão "Back", o evento <code>pageshow</code> é emitido quando o usuário volta a página, enquanto os eventos <code>load</code> e <code>ready</code> não são.</p> - -<p>Este evento <em>não</em> é emitido quando a tab fica ativa: para conseguir ser notificado sobre isso, você precisa escutar o evento <a href="/en-US/Add-ons/SDK/High-Level_APIs/tabs#activate"><code>activate</code></a>.</p> - -<p>Depois que este evento foi emitido, todas as propriedades relacionadas ao conteúdo da tab podem ser usadas. Ele é emitido depois do <code>load</code> e <code>ready</code>.</p> - -<h5 id="Argumentos_9">Argumentos</h5> - -<p><strong>Tab</strong> : Escutas são passadas ao objeto tab.</p> - -<p><strong>persisted</strong> : Escutas são passadas um valor booleano indicando se ou não a página foi carregada do <a href="https://developer.mozilla.org/en-US/docs/Working_with_BFCache">bfcache</a>.</p> - -<h4 class="addon-sdk-api-name" id="activate_2"><code>activate</code></h4> - -<p>Este evento é emitido quando a tab torna-se ativa.</p> - -<p>Observe que você não pode garantir que o conteúdo da tab, ou mesmo sua <code>url</code>, estão inicializados na hora que o <code>activate</code> foi emitido. Isto porque quando uma nova tab é aberta, seu evento activate pode ser emitido antes do conteúdo ser carregado.</p> - -<p>Você pode usar a propriedade <a href="/en-US/Add-ons/SDK/High-Level_APIs/tabs#readyState"><code>readyState</code></a> da tab para determinar se o conteúdo da tab e <code>url</code> estão disponíveis: se o <code>readyState</code> está <code>uninitialized</code> ou <code>loading</code>, então você não pode acessar as propriedades da tab e deve esperar pelo evento <a href="/en-US/Add-ons/SDK/High-Level_APIs/tabs#ready_2"><code>ready</code></a> da tab.</p> - -<h5 id="Argumentos_10">Argumentos</h5> - -<p><strong>Tab</strong> : Escutas são passadas ao objeto.</p> - -<h4 class="addon-sdk-api-name" id="deactivate_2"><code>deactivate</code></h4> - -<p>Este evento é emitido quando a tab torna-se inativa.</p> - -<h5 id="Argumentos_11">Argumentos</h5> - -<p><strong>Tab</strong> : Escutas são passadas ao objeto tab.</p> diff --git a/files/pt-br/mozilla/add-ons/sdk/high-level_apis/windows/index.html b/files/pt-br/mozilla/add-ons/sdk/high-level_apis/windows/index.html deleted file mode 100644 index 35c0b6bdb3..0000000000 --- a/files/pt-br/mozilla/add-ons/sdk/high-level_apis/windows/index.html +++ /dev/null @@ -1,303 +0,0 @@ ---- -title: Janelas -slug: Mozilla/Add-ons/SDK/High-Level_APIs/windows -tags: - - Add-on SDK -translation_of: Archive/Add-ons/Add-on_SDK/High-Level_APIs/windows ---- -<div class="note"> -<p>Stable</p> -</div> - -<p><span class="seoSummary">Enumera e examina janelas do navegador abertas, abre novas janelas, e escuta por eventos de janela.</span></p> - -<h2 id="Uso">Uso</h2> - -<p>O módulo <code>windows</code> fornece funções básicas para trabalhar janelas de navegador. Com este módulo, você pode:</p> - -<ul> - <li><a href="/en-US/Add-ons/SDK/High-Level_APIs/windows#open(options)">enumerar as janeals abertas atualmente</a></li> - <li><a href="/en-US/Add-ons/SDK/High-Level_APIs/windows#open(options)">abrir novas janelas do navegador</a></li> - <li><a href="/en-US/Add-ons/SDK/High-Level_APIs/windows#Events">criar escutas para eventos comuns de janela tais como open e close</a></li> -</ul> - -<h3 id="Janelas_Privadas">Janelas Privadas</h3> - -<p>Se seu add-on não optou pela navegação privada, então você não verá qualquer janela de navegação privada. Janelas de navegação privada não aparecerão na propriedade <a href="/en-US/Add-ons/SDK/High-Level_APIs/windows#browserWindows"><code>browserWindows</code></a>, você não receberá qualquer evento de janela, e você não será capaz de abrir janelas privadas.</p> - -<p>Para aprender mais sobre navegação privada, como optar pela navegação privada, e como suportar navegação privada dirija-se à <a href="/en-US/Add-ons/SDK/High-Level_APIs/private-browsing">documentação para o módulo <code>private-browsing</code></a>.</p> - -<h3 id="Converção_para_as_Janelas_Chrome">Converção para as Janelas Chrome</h3> - -<p>Para converter do objeto <a href="/en-US/Add-ons/SDK/High-Level_APIs/windows#BrowserWindow"><code>BrowserWindow</code></a> usando nesta API para o objeto chrome <a href="/en-US/docs/Web/API/Window"><code>window</code></a> usado na API <a href="/en-US/Add-ons/SDK/Low-Level_APIs/window_utils"><code>window/utils</code></a>, use a função <code>viewFor()</code> expotada pelo módulo <code>viewFor()</code>.</p> - -<p>Para converter de vola, de uma janela chrome para um objeto <code>BrowserWindow</code>, use a função <code>modelFor()</code>, exportada pelo módulo <code>modelFor</code>.</p> - -<p>Aqui está um exemplo convertendo do alto nível <code>BrowserWindow</code> para uma janela chrome, e então voltando para o outro modo:</p> - -<pre class="brush: js">var { modelFor } = require("sdk/model/core"); -var { viewFor } = require("sdk/view/core"); - -var browserWindows = require("sdk/windows").browserWindows; - -function convertToChromeAndBack(browserWindow) { - // get the chrome window for this BrowserWindow - var chromeWindow = viewFor(browserWindow); - // now we can use the chrome window API - console.log(chromeWindow.document.location.href); - // -> "chrome://browser/content/browser.xul" - - // convert back to the high-level window - var highLevelWindow = modelFor(chromeWindow); - // now we can use the SDK's high-level window API - console.log(highLevelWindow.title); -} - -browserWindows.on("open", convertToChromeAndBack);</pre> - -<p>Note que acessar diretamente os objetos chrome de baixo nível significa que você não está protegido pelas garantias de compatibilidade das APIs de alto nível do SDK. Em particular, dependendo de o que você faz com estes objetos, seu código não deve trabalhar com <a href="http://billmccloskey.wordpress.com/2013/12/05/multiprocess-firefox/">multiprocess Firefox</a>.</p> - -<h2 id="Globais">Globais</h2> - -<h3 id="Funções">Funções</h3> - -<h4 class="addon-sdk-api-name" id="open(options)"><code>open(options)</code></h4> - -<p>Abre uma nova janela.</p> - -<pre class="brush: js">var windows = require("sdk/windows").browserWindows; - -// Open a new window. -windows.open("http://www.example.com"); - -// Open a new window and set a listener for "open" event. -windows.open({ - url: "http://www.example.com", - onOpen: function(window) { - // do stuff like listen for content - // loading. - } -});</pre> - -<p>Retorna a janela que foi aberta:</p> - -<pre class="brush: js">var windows = require("sdk/windows").browserWindows; -var example = windows.open("http://www.example.com"); - -require("sdk/ui/button/action").ActionButton({ - id: "read", - label: "Read", - icon: "./read.png", - onClick: function() { - example.close(); - } -}); -</pre> - -<div class="note"> -<p>Este exemplo usa a API <a href="https://developer.mozilla.org/en-US/Add-ons/SDK/Low-Level_APIs/ui_button_action">action button</a>, que está disponível somente do Firefox 29 em frente.</p> -</div> - -<h5 id="Parâmetros">Parâmetros</h5> - -<p><strong>options : object</strong><br> - Opções requeridas:</p> - -<table class="standard-table"> - <thead> - <tr> - <th scope="col">Name</th> - <th scope="col">Type</th> - <th scope="col"> </th> - </tr> - </thead> - <tbody> - <tr> - <td>url</td> - <td>string</td> - <td> - <p>String com a URL a ser aberta na nova janela. É uma propriedade necessária.</p> - </td> - </tr> - <tr> - <td>isPrivate</td> - <td>boolean</td> - <td> - <p>Boleano que determinará se a nova janela seria privada ou não. Se seus add-ons não suportam navegação privada isto não terá efeito. Veja a documentação sobre <a href="/en-US/Add-ons/SDK/High-Level_APIs/private-browsing">private-browsing</a> para mais informação.</p> - </td> - </tr> - </tbody> -</table> - -<p>Opções opcionais:</p> - -<table class="standard-table"> - <thead> - <tr> - <th scope="col">Name</th> - <th scope="col">Type</th> - <th scope="col"> </th> - </tr> - </thead> - <tbody> - <tr> - <td>onOpen</td> - <td>function</td> - <td> - <p>Uma função de retorno que é chamada quando a janela está aberta. Isto não significa que o conteúdo da URL foi carregado, somente que a janela por si está inteiramente funcional e suas propriedades podem ser acessadas. Isto é uma propriedade opcional.</p> - </td> - </tr> - <tr> - <td>onClose</td> - <td>function</td> - <td> - <p>Uma função de retorno que é chamada quando a janela será chamada. Isto é uma propriedade opcional.</p> - </td> - </tr> - <tr> - <td>onActivate</td> - <td>function</td> - <td> - <p>Uma função de retorno que é chamada quando a janela está ativa. Isto é uma propriedade opcional.</p> - </td> - </tr> - <tr> - <td>onDeactivate</td> - <td>function</td> - <td> - <p>Uma função de retorno que é chamada quando a janela não está ativa. Isto é uma propriedade opcional.</p> - </td> - </tr> - </tbody> -</table> - -<h5 id="Retorna">Retorna</h5> - -<p><strong>BrowserWindow</strong> :</p> - -<h3 id="Properties">Properties</h3> - -<h4 class="addon-sdk-api-name" id="browserWindows"><code>browserWindows</code></h4> - -<p><code>browserWindows</code> fornece acesso a todas as janelas de navegadores abertas com os objetos <a href="/en-US/Add-ons/SDK/High-Level_APIs/windows#BrowserWindow">BrowserWindow</a>.</p> - -<pre class="brush: js">var windows = require("sdk/windows"); -for (let window of windows.browserWindows) { - console.log(window.title); -} - -console.log(windows.browserWindows.length);</pre> - -<p>Este objeto emite todos os eventos listados na seção "Eventos':</p> - -<pre class="brush: js">var windows = require("sdk/windows").browserWindows; - -// add a listener to the 'open' event -windows.on('open', function(window) { - myOpenWindows.push(window); -}); - -// add a listener to the 'close' event -windows.on('close', function(window) { - console.log("A window was closed."); -}); - -// add a listener to the 'activate' event -windows.on('activate', function(window) { - console.log("A window was activated."); -}); - -// add a listener to the 'deactivate' event -windows.on('deactivate', function(window) { - console.log("A window was deactivated."); -});</pre> - -<p>A janela ativa atual é data pelo <code>BrowserWindows.activeWindow</code>:</p> - -<pre class="brush: js">var windows = require("sdk/windows").browserWindows; - -windows.on('activate', function(window) { - console.log("A window was activated."); - var activeWindowTitle = windows.activeWindow.title; - console.log("Active window title is: " + activeWindowTitle); -});</pre> - -<h3 id="Eventos">Eventos</h3> - -<h4 class="addon-sdk-api-name" id="open"><code>open</code></h4> - -<p>Evento emitido quando uma nova janela é aberta. Isso não significa que o conteúdo foi carregado, somente que a janela do navegador por si só está inteiramente visível ao usuário.</p> - -<h5 id="Argumentos">Argumentos</h5> - -<p><strong>Window</strong> : Escutas são passadas para o objeto <code>window</code> que desencadeou o evento.</p> - -<h4 class="addon-sdk-api-name" id="close"><code>close</code></h4> - -<p>Evento emitido quando uma janela é fechada. Você não pode sempre confiar na recepção do evento close para todas as janelas abertas. Em particular, se o usuário fechar o navegador de forma preciptada o que pode fechar o add-on antes das janelas serem fechadas.</p> - -<h5 id="Argumentos_2">Argumentos</h5> - -<p><strong>Window</strong> : escutas são passadas para o objeto <code>window</code> lançou o evento.</p> - -<h4 class="addon-sdk-api-name" id="activate"><code>activate</code></h4> - -<p>Evento emitido quando uma janela inativa é tornada ativa.</p> - -<h5 id="Argumentos_3">Argumentos</h5> - -<p><strong>Window</strong> : Escutas são passadas para o objeto <code>window</code> que torna ativa.</p> - -<h4 class="addon-sdk-api-name" id="deactivate"><code>deactivate</code></h4> - -<p>Evento emitido quando a janela ativa se torna inativa.</p> - -<h5 id="Arguments">Arguments</h5> - -<p><strong>Window</strong> : Escutas são passadas para o objeto<code> window</code> que se tornou inativa.</p> - -<h2 id="BrowserWindow">BrowserWindow</h2> - -<p>Uma instância <code>BrowserWindow</code> representa uma única janela aberta. Elas podem ser recuperadas da propriedade <code>browserWindows</code> exportadas pelo módulo.</p> - -<pre class="brush: js">var windows = require("sdk/windows").browserWindows; - -//Print how many tabs the current window has -console.log("The active window has " + - windows.activeWindow.tabs.length + - " tabs."); - -// Print the title of all browser windows -for (let window of windows) { - console.log(window.title); -} - -// close the active window -windows.activeWindow.close(function() { - console.log("The active window was closed"); -});</pre> - -<h3 id="Métodos">Métodos</h3> - -<h4 class="addon-sdk-api-name" id="activate()"><code>activate()</code></h4> - -<p>Torna a janela ativa, que focará aquela janela e trará ela para o primeiro plano.</p> - -<h4 class="addon-sdk-api-name" id="close(callback)"><code>close(callback)</code></h4> - -<p>Fecha a janela.</p> - -<h5 id="Parâmetros_2">Parâmetros</h5> - -<p><strong>callback : function</strong><br> - Uma função chamada quando a janela termina seu processo de fechamento. É um argumento opcional.</p> - -<h3 id="Propriedades">Propriedades</h3> - -<h4 class="addon-sdk-api-name" id="title"><code>title</code></h4> - -<p>O título atual da janela. Normalmente o título da tab ativa, mais um identificador da app. Esta propriedade é somente leitura.</p> - -<h4 class="addon-sdk-api-name" id="tabs"><code>tabs</code></h4> - -<p>Uma lista ao vivo das tabs na janela. Esse objeto tem as mesma interface da API <a href="/en-US/Add-ons/SDK/High-Level_APIs/tabs"><code>tabs</code></a>, exceto que ele contem somente as tabs nesta janela, não todas as tabs em todas as janelas. Esta propriedade é somente leitura.</p> diff --git a/files/pt-br/mozilla/add-ons/sdk/index.html b/files/pt-br/mozilla/add-ons/sdk/index.html deleted file mode 100644 index 88ed15ad16..0000000000 --- a/files/pt-br/mozilla/add-ons/sdk/index.html +++ /dev/null @@ -1,102 +0,0 @@ ---- -title: Add-on SDK -slug: Mozilla/Add-ons/SDK -tags: - - Add-on SDK - - Extensões -translation_of: Archive/Add-ons/Add-on_SDK ---- -<p>Usando a SDK de Add-ons você pode criar add-ons para Firefox usando tecnologias web padrão: Javascript, HTML e CSS. A SDK inclui APIs Javascript as quais você pode utilizar para criar add-ons, além de ferramentas para rodar, testar e empacotar os mesmos.</p> -<hr> -<h3 id="Tutoriais">Tutoriais</h3> -<div class="column-container"> - <div class="column-half"> - <dl> - <dt> - <a href="/en-US/Add-ons/SDK/Tutorials#getting-started">Começando</a></dt> - <dd> - Como <a href="/en-US/Add-ons/SDK/Tutorials/Installation">instalar a SDK</a> e <a href="/en-US/Add-ons/SDK/Tutorials/Getting_Started_With_cfx">usar a ferramenta cfx</a> para desenvolver, testar e empacotar add-ons.</dd> - <dt> - <a href="/en-US/Add-ons/SDK/Tutorials#interact-with-the-browser">Interagindo com o Navegador</a></dt> - <dd> - <a href="https://developer.mozilla.org/en-US/Add-ons/SDK/Tutorials/Open_a_Web_Page">Abrir páginas web</a>, <a href="https://developer.mozilla.org/en-US/Add-ons/SDK/Tutorials/Listen_For_Page_Load">escutar por carregamento de páginas</a> e <a href="https://developer.mozilla.org/en-US/Add-ons/SDK/Tutorials/List_Open_Tabs">listar páginas abertas.</a></dd> - <dt> - <a href="/en-US/Add-ons/SDK/Tutorials#development-techniques">Técnicas de Desenvolvimento</a></dt> - <dd> - Aprenda técnicas comúns de desenvolvimento, tal como <a href="https://developer.mozilla.org/en-US/Add-ons/SDK/Tutorials/Unit_testing">testes unitários</a>, <a href="https://developer.mozilla.org/en-US/Add-ons/SDK/Tutorials/Logging">registramento</a>, <a href="https://developer.mozilla.org/en-US/Add-ons/SDK/Tutorials/Creating_Reusable_Modules">criando módulos reutilizáveis</a>, <a href="https://developer.mozilla.org/en-US/Add-ons/SDK/Tutorials/l10n">localização</a> e <a href="https://developer.mozilla.org/en-US/Add-ons/SDK/Tutorials/Mobile_development">desenvolvimento mobile</a>.</dd> - </dl> - </div> - <div class="column-half"> - <dl> - <dt> - <a href="/en-US/Add-ons/SDK/Tutorials#create-user-interfaces">Crie componentes de Interface de Usuário</a></dt> - <dd> - Crie componentes de interface de usuário tais como <a href="https://developer.mozilla.org/en-US/Add-ons/SDK/Tutorials/Adding_a_Button_to_the_Toolbar">botões de toolbar</a>, <a href="https://developer.mozilla.org/en-US/Add-ons/SDK/Tutorials/Add_a_Context_Menu_Item">menus de contexto</a>, <a href="https://developer.mozilla.org/en-US/Add-ons/SDK/Tutorials/Add_a_Menu_Item_to_Firefox">itens de menu</a> e <a href="https://developer.mozilla.org/en-US/Add-ons/SDK/Tutorials/Display_a_Popup">dialogs</a>.</dd> - <dt> - <a href="/en-US/Add-ons/SDK/Tutorials#modify-web-pages">Modifique páginas Web</a></dt> - <dd> - Modifique páginas que <a href="https://developer.mozilla.org/en-US/Add-ons/SDK/Tutorials/Modifying_Web_Pages_Based_on_URL">verificam um padrão de URL</a> ou dinamicamente <a href="https://developer.mozilla.org/en-US/Add-ons/SDK/Tutorials/Modifying_the_Page_Hosted_by_a_Tab">modifique uma aba em particular</a>.</dd> - <dt> - <a href="/en-US/Add-ons/SDK/Tutorials/Annotator">Juntando Tudo</a></dt> - <dd> - Um guia sobre o exemplo do add-on Annotator</dd> - </dl> - </div> -</div> -<hr> -<h3 id="Guia">Guia</h3> -<div class="column-container"> - <div class="column-half"> - <dl> - <dt> - <a href="/en-US/Add-ons/SDK/Guides#contributors-guide">Guia do Contribuidor</a></dt> - <dd> - Aprenda sobre <a href="https://developer.mozilla.org/en-US/Add-ons/SDK/Guides/Getting_Started">como começar a contribuir</a> para a SDK e sobre os idiomas mais importantes utilizados no código da SDK, tal como <a href="https://developer.mozilla.org/en-US/Add-ons/SDK/Guides/Modules">módulos</a>, <a href="https://developer.mozilla.org/en-US/Add-ons/SDK/Guides/Classes_and_Inheritance">classes e herança</a>, <a href="https://developer.mozilla.org/en-US/Add-ons/SDK/Guides/Private_Properties">propriedades privadas</a> e <a href="https://developer.mozilla.org/en-US/Add-ons/SDK/Guides/Content_Processes">processos de conteúdo</a>.</dd> - <dt> - <a href="/en-US/Add-ons/SDK/Guides#sdk-infrastructure">Infraestrutura da SDK</a></dt> - <dd> - Aspectos da tecnologia fundamental da SDK: <a href="https://developer.mozilla.org/en-US/Add-ons/SDK/Guides/Module_structure_of_the_SDK">módulos</a>, o <a href="https://developer.mozilla.org/en-US/Add-ons/SDK/Guides/Program_ID">ID de Programa</a> e regras que definem <a href="https://developer.mozilla.org/en-US/Add-ons/SDK/Guides/Firefox_Compatibility">compatibilidade do Firefox</a>.</dd> - <dt> - <a href="/en-US/Add-ons/SDK/Guides/Content_Scripts">Content scripts</a></dt> - <dd> - Um guia detalhado sobre <a href="https://developer.mozilla.org/en-US/Add-ons/SDK/Guides/Content_Scripts">trabalhar com content scripts</a>, incluindo: <a href="https://developer.mozilla.org/en-US/Add-ons/SDK/Guides/Loading_content_scripts">como carregar content scripts</a>, <a href="https://developer.mozilla.org/en-US/Add-ons/SDK/Guides/Accessing_the_DOM">que objetos content scripts podem acessar</a> e <a href="https://developer.mozilla.org/en-US/Add-ons/SDK/Guides/Communicating_with_other_scripts">como comunicar entre content scripts e o resto do add-on</a>.</dd> - </dl> - </div> - <div class="column-half"> - <dl> - <dt> - <a href="/en-US/Add-ons/SDK/Guides#sdk-idioms">Idiomas da SDK</a></dt> - <dd> - O <a href="https://developer.mozilla.org/en-US/Add-ons/SDK/Guides/Working_with_Events">event framework</a> da SDK e uma <a href="https://developer.mozilla.org/en-US/Add-ons/SDK/Guides/Two_Types_of_Scripts">distinção entre scripts add-on e content scripts</a>.</dd> - <dt> - <a href="/en-US/Add-ons/SDK/Guides/XUL_Migration_Guide">Migração de XUL</a></dt> - <dd> - Um guia sobre <a href="https://developer.mozilla.org/en-US/Add-ons/SDK/Guides/XUL_Migration_Guide">como portar add-ons XUL para a SDK</a>. Este guia inclui uma <a href="https://developer.mozilla.org/en-US/Add-ons/SDK/Guides/XUL_vs_SDK">comparação das duas ferramentas</a> e um <a href="https://developer.mozilla.org/en-US/Add-ons/SDK/Guides/Porting_the_Library_Detector">exemplo funcionando</a> de como portal um add-on XUL.</dd> - </dl> - </div> -</div> -<hr> -<h3 id="Referência">Referência</h3> -<div class="column-container"> - <div class="column-half"> - <dl> - <dt> - <a href="/en-US/Add-ons/SDK/High-Level_APIs">APIs Alto Nível</a></dt> - <dd> - Documentação referência para as APIs de Alto nível da SDK.</dd> - <dt> - <a href="/en-US/Add-ons/SDK/Tools">Referência de Ferramentas</a></dt> - <dd> - Documentação referência para a <a href="https://developer.mozilla.org/en-US/Add-ons/SDK/Tools/cfx">ferramenta cfx</a> usada para desenvolver, testar e empacotar add-ons, o <a href="https://developer.mozilla.org/en-US/Add-ons/SDK/Tools/console">console</a> global usado para registro e o arquivo <a href="https://developer.mozilla.org/en-US/Add-ons/SDK/Tools/package_json">package.json</a>.</dd> - </dl> - </div> - <div class="column-half"> - <dl> - <dt> - <a href="/en-US/Add-ons/SDK/Low-Level_APIs">APIs Baixo Nível</a></dt> - <dd> - Documentação referência para as APIs baixo nível.</dd> - </dl> - </div> -</div> -<p> </p> diff --git a/files/pt-br/mozilla/add-ons/sdk/low-level_apis/index.html b/files/pt-br/mozilla/add-ons/sdk/low-level_apis/index.html deleted file mode 100644 index 8cd08458f0..0000000000 --- a/files/pt-br/mozilla/add-ons/sdk/low-level_apis/index.html +++ /dev/null @@ -1,23 +0,0 @@ ---- -title: Low-Level APIs -slug: Mozilla/Add-ons/SDK/Low-Level_APIs -tags: - - NeedsTranslation - - TopicStub -translation_of: Archive/Add-ons/Add-on_SDK/Low-Level_APIs ---- -<p>Modules in this section implement low-level APIs. These modules fall roughly into three categories:</p> -<ul> - <li> - <p>fundamental utilities such as <a href="/en-US/Add-ons/SDK/Low-Level_APIs/util_collection">collection</a>. Many add-ons are likely to want to use modules from this category.</p> - </li> - <li> - <p>building blocks for higher level modules, such as <a href="/en-US/Add-ons/SDK/Low-Level_APIs/event_core">events</a> and <a href="/en-US/Add-ons/SDK/Low-Level_APIs/content_worker">worker</a>. You're more likely to use these if you are building your own modules that implement new APIs, thus extending the SDK itself.</p> - </li> - <li> - <p>privileged modules that expose powerful low-level capabilities such as <a href="/en-US/Add-ons/SDK/Low-Level_APIs/window_utils">window/utils</a> and <a href="/en-US/Add-ons/SDK/Low-Level_APIs/net_xhr">net/xhr</a>. You can use these modules in your add-on if you need to, but should be aware that the cost of privileged access is the need to take more elaborate security precautions. In many cases these modules have simpler, more restricted analogs among the "High-Level APIs" (for example, <a href="/en-US/Add-ons/SDK/High-Level_APIs/windows">windows</a> or <a href="/en-US/Add-ons/SDK/High-Level_APIs/request">request</a>).</p> - </li> -</ul> -<p>These modules are still in active development, and we expect to make incompatible changes to them in future releases.</p> -<p>{{ LandingPageListSubpages ("/en-US/Add-ons/SDK/Low-Level_APIs", 5) }}</p> -<p> </p> diff --git a/files/pt-br/mozilla/add-ons/sdk/low-level_apis/ui_sidebar/index.html b/files/pt-br/mozilla/add-ons/sdk/low-level_apis/ui_sidebar/index.html deleted file mode 100644 index a8bd2be2eb..0000000000 --- a/files/pt-br/mozilla/add-ons/sdk/low-level_apis/ui_sidebar/index.html +++ /dev/null @@ -1,455 +0,0 @@ ---- -title: ui/sidebar -slug: Mozilla/Add-ons/SDK/Low-Level_APIs/ui_sidebar -translation_of: Archive/Add-ons/Add-on_SDK/Low-Level_APIs/ui_sidebar ---- -<p>{{AddonSidebar}}</p> - -<div class="note"> -<p>Experimental</p> -</div> - -<p><span class="seoSummary">Enables you to create sidebars.</span> A sidebar is a vertical strip of user interface real estate for your add-on that's attached to the left-hand side of the browser window. You specify its content using HTML, CSS, and JavaScript, and the user can show or hide it in the same way they can show or hide the built-in sidebars.</p> - -<h2 id="Usage">Usage</h2> - -<h3 id="Creating_showing_and_hiding_sidebars">Creating, showing, and hiding sidebars</h3> - -<p>You construct a <code>Sidebar</code> object using the <a href="/en-US/Add-ons/SDK/Low-Level_APIs/ui_sidebar#Sidebar(options)"><code>Sidebar()</code></a> constructor.</p> - -<p>Once you've done that, you can show the sidebar by calling the Sidebar's <a href="/en-US/Add-ons/SDK/Low-Level_APIs/ui_sidebar#show()"><code>show()</code></a> method. If a new window is opened from a window that has a sidebar visible, the new window gets a sidebar, too.</p> - -<p>You can hide the sidebar by calling its <a href="/en-US/Add-ons/SDK/Low-Level_APIs/ui_sidebar#hide()"><code>hide()</code></a> method.</p> - -<p>Called with no arguments, <code>show()</code> and <code>hide()</code> will operate on the currently active window. From Firefox 33 onwards you can pass a <a href="/en-US/Add-ons/SDK/High-Level_APIs/windows#BrowserWindow"><code>BrowserWindow</code></a> into these methods, and they will then operate on the specified window.</p> - -<p>Alternatively, the View->Sidebar submenu in Firefox will contain a new item which the user can use to show or hide the sidebar:</p> - -<p><img alt="" src="https://mdn.mozillademos.org/files/6667/sidebar-menu.png" style="display: block; height: 229px; margin-left: auto; margin-right: auto; width: 518px;">The sidebar generates a <a href="/en-US/Add-ons/SDK/Low-Level_APIs/ui_sidebar#show"><code>show</code></a> event when it is shown and a <a href="/en-US/Add-ons/SDK/Low-Level_APIs/ui_sidebar#hide"><code>hide</code></a> event when it is hidden.</p> - -<p>Once you've finished using the sidebar you can destroy it by calling its <a href="/en-US/Add-ons/SDK/Low-Level_APIs/ui_sidebar#dispose()"><code>dispose()</code></a> method.</p> - -<p>To show what a sidebar looks like, here's a sidebar that displays the results of running the <a href="http://validator.w3.org/">W3C Validator</a> on the current page:</p> - -<p><img alt="" src="https://mdn.mozillademos.org/files/6669/sidebar.png" style="display: block; margin-left: auto; margin-right: auto;"></p> - -<h3 id="Specifying_sidebar_content">Specifying sidebar content</h3> - -<p>O conteúdo de uma barra lateral é especificado usando HTML, que é carregado a partir da URL fornecida na opção url do construtor da barra lateral. Ao contrário de módulos como <a href="/en-US/Add-ons/SDK/High-Level_APIs/panel"><code>panel</code></a>, o conteúdo deve ser local, normalmente carregado do diretório de dados ('data') da extensão, através de um URL contruída usando <a href="/en-US/Add-ons/SDK/High-Level_APIs/self#data"><code>self.data.url()</code></a>:</p> - -<pre class="brush: js">var sidebar = require("sdk/ui/sidebar").Sidebar({ - id: 'my-sidebar', - title: 'My sidebar', - url: require("sdk/self").data.url("sidebar.html") -});</pre> - -<div class="note"> -<p>From Firefox 34, you can use <code>"./sidebar.html"</code> as an alias for <code>self.data.url("sidebar.html")</code>. So you can rewrite the above code like this:</p> - -<pre class="brush: js">var sidebar = require("sdk/ui/sidebar").Sidebar({ - id: 'my-sidebar', - title: 'My sidebar', - url: "./sidebar.html" -});</pre> -</div> - -<p>Você pode incluir JavaScript e CSS no HTML como faria com qualquer página da web, por exemplo, usando tags <script> e <link> contendo o caminho relativo ao próprio arquivo HTML.</p> - -<pre class="brush: html"><!DOCTYPE HTML> -<html> - <head> - <link href="stuff.css" type="text/css" rel="stylesheet"> - </head> - <body> - <script type="text/javascript" src="stuff.js"></script> - </body> -</html> - -</pre> - -<p>You can update the sidebar's content by setting the sidebar's <code>url</code> property. This will change the sidebar's content across all windows.</p> - -<h3 id="Communicating_with_sidebar_scripts">Communicating with sidebar scripts</h3> - -<p>You can't directly access your sidebar's content from your main add-on code, but you can send messages between your main add-on code and scripts loaded into your sidebar.</p> - -<p>On the sidebar end of the conversation, sidebar scripts get a global variable <code>addon</code> that contains a <code>port</code> for sending and receiving messages.</p> - -<p>On the add-on side, you need to get a <code>worker</code> object for the sidebar before you can send or receive messages. There are two events emitted by the sidebar which will give you a worker: <code>attach</code> and <code>ready</code>. Listen to <code>attach</code> if the first message in your add-on goes from the sidebar scripts to the main add-on code, and listen to <code>ready</code> if the first message goes from the main add-on code to the sidebar script.</p> - -<h4 id="Using_attach">Using attach</h4> - -<p>The <code>attach</code> event is triggered whenever the DOM for a new sidebar instance is loaded and its scripts are attached. The sidebar script may not be initialized yet, so you can't reliably send messages to the sidebar script right away: however, you can start listening to messages from the script.</p> - -<p>Here's a simple but complete add-on that shows how to set up communication between main.js and a script in a sidebar, in the case where the sidebar script initiates communication:</p> - -<p>The HTML file includes just a script, "sidebar.js":</p> - -<pre class="brush: html"><!DOCTYPE HTML> -<html> - <body> - Content for my sidebar - <script type="text/javascript" src="sidebar.js"></script> - </body> -</html> - -</pre> - -<p>The "sidebar.js" file sends a <code>ping</code> message to main.js using <code>port.emit()</code> as soon as it loads, and adds a listener to the <code>pong</code> message.</p> - -<pre class="brush: js">addon.port.emit("ping"); - -addon.port.on("pong", function() { - console.log("sidebar script got the reply"); -});</pre> - -<p>The "main.js" file creates a sidebar object and adds a listener to its <code>attach</code> event. On attach, "main.js" starts listening to the <code>ping</code> message, and responds with a <code>pong</code>:</p> - -<pre class="brush: js">var sidebar = require("sdk/ui/sidebar").Sidebar({ - id: 'my-sidebar', - title: 'My sidebar', - url: require("sdk/self").data.url("sidebar.html"), - onAttach: function (worker) { - worker.port.on("ping", function() { - console.log("add-on script got the message"); - worker.port.emit("pong"); - }); - } -});</pre> - -<p>Try running the add-on, and showing the sidebar using the "View->Sidebar->My sidebar" menu item. You should see console output like:</p> - -<pre>console.log: add-on: add-on script got the message -console.log: add-on: sidebar script got the reply -</pre> - -<h4 id="Using_ready">Using ready</h4> - -<p>The <code>ready</code> event is emitted when the DOM for the sidebar's content is ready. It is equivalent to the <code>DOMContentLoaded</code> event. At this point the sidebar script is initialized, so you can send messages to the sidebar script and be confident that they will not be lost. Listen to this event if your add-on initiates the conversation.</p> - -<p>Here's a simple but complete add-on that shows how to set up communication between main.js and a script in a sidebar, in the case where the main.js script initiates communication:</p> - -<p>The HTML file includes just a script, "sidebar.js":</p> - -<pre class="brush: html"><!DOCTYPE HTML> -<html> - <body> - Content for my sidebar - <script type="text/javascript" src="sidebar.js"></script> - </body> -</html> - -</pre> - -<p>The "sidebar.js" file listens to the <code>ping</code> message from main.js, and responds with a <code>pong</code> message.</p> - -<pre class="brush: js">addon.port.on("ping", function() { - console.log("sidebar script got the message"); - addon.port.emit("pong"); -});</pre> - -<p>The "main.js" file creates a sidebar object and adds a listener to its <code>attach</code> event. On attach, "main.js" sends the <code>ping</code> message, and starts listening for the <code>pong</code>:</p> - -<pre class="brush: js">var sidebar = require("sdk/ui/sidebar").Sidebar({ - id: 'my-sidebar', - title: 'My sidebar', - url: require("sdk/self").data.url("sidebar.html"), - onReady: function (worker) { - worker.port.emit("ping"); - worker.port.on("pong", function() { - console.log("add-on script got the reply"); - }); - } -});</pre> - -<p>Try running the add-on, and showing the sidebar using the "View->Sidebar->My sidebar" menu item. You should see console output like:</p> - -<pre>console.log: add-on: sidebar script got the message -console.log: add-on: add-on script got the reply -</pre> - -<p> </p> - -<h2 id="Globals">Globals</h2> - -<h3 id="Constructors">Constructors</h3> - -<h4 class="addon-sdk-api-name" id="Sidebar(options)"><code>Sidebar(options)</code></h4> - -<p>Creates a sidebar.</p> - -<pre class="brush: js">var sidebar = require("sdk/ui/sidebar").Sidebar({ - id: 'my-sidebar', - title: 'My sidebar', - url: require("sdk/self").data.url("sidebar.html"), - onAttach: function (worker) { - console.log("attaching"); - }, - onShow: function () { - console.log("showing"); - }, - onHide: function () { - console.log("hiding"); - }, - onDetach: function () { - console.log("detaching"); - } -});</pre> - -<h5 id="Parameters">Parameters</h5> - -<p><strong>options : object</strong><br> - Required options:</p> - -<table class="standard-table"> - <thead> - <tr> - <th scope="col">Name</th> - <th scope="col">Type</th> - <th scope="col"> </th> - </tr> - </thead> - <tbody> - <tr> - <td>title</td> - <td>string</td> - <td> - <p>A title for the sidebar. This will be used for the label for your sidebar in the "Sidebar" submenu in Firefox, and will be shown at the top of your sidebar when it is open.</p> - </td> - </tr> - <tr> - <td>url</td> - <td>string</td> - <td> - <p>The URL of the content to load in the sidebar. This must be a local URL (typically, loaded from the "data" folder using <code>self.data.url()</code>).</p> - - <div class="note"> - <p>From Firefox 34, you can use <code>"./myFile.html"</code> as an alias for <code>self.data.url("myFile.html")</code>.</p> - </div> - </td> - </tr> - </tbody> -</table> - -<p>Optional options:</p> - -<table class="standard-table"> - <thead> - <tr> - <th scope="col">Name</th> - <th scope="col">Type</th> - <th scope="col"> </th> - </tr> - </thead> - <tbody> - <tr> - <td>id</td> - <td>string</td> - <td> - <p>The <code>id</code> of the sidebar. This used to identify this sidebar in its chrome window. It must be unique.</p> - - <div class="geckoVersionNote"> - <p>This option was mandatory before Firefox 28.</p> - </div> - </td> - </tr> - <tr> - <td>onAttach</td> - <td>function</td> - <td> - <p>Listener for the sidebar's <code>attach</code> event.</p> - </td> - </tr> - <tr> - <td>onDetach</td> - <td>function</td> - <td> - <p>Listener for the sidebar's <code>detach</code> event.</p> - </td> - </tr> - <tr> - <td>onShow</td> - <td>function</td> - <td> - <p>Listener for the sidebar's <code>show</code> event.</p> - </td> - </tr> - <tr> - <td>onHide</td> - <td>function</td> - <td> - <p>Listener for the sidebar's <code>hide</code> event.</p> - </td> - </tr> - </tbody> -</table> - -<h2 id="Sidebar">Sidebar</h2> - -<p>The Sidebar object. Once a sidebar has been created it can be shown and hidden in the active window using its <a href="/en-US/Add-ons/SDK/Low-Level_APIs/ui_sidebar#show()"><code>show()</code></a> and <a href="/en-US/Add-ons/SDK/Low-Level_APIs/ui_sidebar#hide()"><code>hide()</code></a> methods. Once a sidebar is no longer needed it can be destroyed using <a href="/en-US/Add-ons/SDK/Low-Level_APIs/ui_sidebar#dispose()"><code>dispose()</code></a>.</p> - -<h3 id="Methods">Methods</h3> - -<h4 class="addon-sdk-api-name" id="dispose()"><code>dispose()</code></h4> - -<p>Destroys the sidebar. Once destroyed, the sidebar can no longer be used.</p> - -<h4 class="addon-sdk-api-name" id="show(window)"><code>show(window)</code></h4> - -<p>Displays the sidebar.</p> - -<h5 id="Parameters_2">Parameters</h5> - -<p><strong>window : BrowserWindow</strong><br> - The window in which to show the sidebar, specified as a <a href="/en-US/Add-ons/SDK/High-Level_APIs/windows#BrowserWindow"><code>BrowserWindow</code></a>. This parameter is optional. If it is omitted, then the sidebar will be shown in the currently active window. This parameter is new in Firefox 33.</p> - -<h4 class="addon-sdk-api-name" id="hide(window)"><code>hide(window)</code></h4> - -<p>Hides the sidebar.</p> - -<h5 id="Parameters_3">Parameters</h5> - -<p><strong>window : BrowserWindow</strong><br> - The window for which to hide the sidebar, specified as a <a href="/en-US/Add-ons/SDK/High-Level_APIs/windows#BrowserWindow"><code>BrowserWindow</code></a>. This parameter is optional. If it is omitted, then the sidebar will be hidden for the currently active window. This parameter is new in Firefox 33.</p> - -<h4 class="addon-sdk-api-name" id="on(type_listener)"><code>on(type, listener)</code></h4> - -<p>Registers an event listener with the sidebar.</p> - -<h5 id="Parameters_4">Parameters</h5> - -<p><strong>type : string</strong><br> - The type of event to listen for.</p> - -<p><strong>listener : function</strong><br> - The listener function that handles the event.</p> - -<h4 class="addon-sdk-api-name" id="once(type_listener)"><code>once(type, listener)</code></h4> - -<p>Registers an event listener with the sidebar. The difference between <code>on</code> and <code>once</code> is that <code>on</code> will continue listening until it is removed, whereas <code>once</code> is removed automatically upon the first event it catches.</p> - -<h5 id="Parameters_5">Parameters</h5> - -<p><strong>type : string</strong><br> - The type of event to listen for.</p> - -<p><strong>listener : function</strong><br> - The listener function that handles the event.</p> - -<h4 class="addon-sdk-api-name" id="removeListener(type_listener)"><code>removeListener(type, listener)</code></h4> - -<p>Unregisters/removes an event listener from the sidebar.</p> - -<h5 id="Parameters_6">Parameters</h5> - -<p><strong>type : string</strong><br> - The type of event for which <code>listener</code> was registered.</p> - -<p><strong>listener : function</strong><br> - The listener function that was registered.</p> - -<h3 id="Properties">Properties</h3> - -<h4 class="addon-sdk-api-name" id="id"><code>id</code></h4> - -<p>The id of the sidebar. This used to identify this sidebar in its chrome window. It must be unique.</p> - -<h4 class="addon-sdk-api-name" id="title"><code>title</code></h4> - -<p>The title of the sidebar. This will be used for the label for your sidebar in the "Sidebar" submenu in Firefox, and will be shown at the top of your sidebar when it is open.</p> - -<h4 class="addon-sdk-api-name" id="url"><code>url</code></h4> - -<p>The URL of the content to load in the sidebar. This must be a local URL (typically, loaded from the "data" folder using <code>self.data.url()</code>).</p> - -<h3 id="Events">Events</h3> - -<h4 class="addon-sdk-api-name" id="attach"><code>attach</code></h4> - -<p>This event is emitted when a worker is attached to a sidebar, as a result of any of the following:</p> - -<ul> - <li>calling the sidebar's <a href="/en-US/Add-ons/SDK/Low-Level_APIs/ui_sidebar#show()"><code>show()</code></a> method, when the sidebar is not shown in the currently active window</li> - <li>changing the sidebar's <a href="/en-US/Add-ons/SDK/Low-Level_APIs/ui_sidebar#url"><code>url</code></a> property</li> - <li>the user switching the sidebar on using the "Sidebar" submenu in Firefox, when the sidebar is not shown in the currently active window</li> - <li>the user opening a new window from a window that has the sidebar showing</li> -</ul> - -<p>It is passed a <a href="/en-US/Add-ons/SDK/Low-Level_APIs/content_worker"><code>worker</code></a> as an argument, which defines <code>port.emit()</code> and <code>port.on()</code> methods that you can use to send messages to, and receive messages from, scripts loaded into the sidebar.</p> - -<p>This is the event you should listen to if your main add-on code needs to communicate with the scripts loaded into the sidebar, and the sidebar scripts start the conversation.</p> - -<p>See <a href="/en-US/Add-ons/SDK/Low-Level_APIs/ui_sidebar#Using_attach">Using attach</a> for an example.</p> - -<h4 class="addon-sdk-api-name" id="ready"><code>ready</code></h4> - -<p>This event is emitted after the DOM content for a sidebar has been loaded, as a result of any of:</p> - -<ul> - <li>calling the sidebar's <a href="/en-US/Add-ons/SDK/Low-Level_APIs/ui_sidebar#show()"><code>show()</code></a> method, when the sidebar is not shown in the currently active window</li> - <li>changing the sidebar's <a href="/en-US/Add-ons/SDK/Low-Level_APIs/ui_sidebar#url"><code>url</code></a> property</li> - <li>the user switching the sidebar on using the "Sidebar" submenu in Firefox, when the sidebar is not shown in the currently active window</li> - <li>the user opening a new window from a window that has the sidebar showing</li> -</ul> - -<p>It is passed a <a href="/en-US/Add-ons/SDK/Low-Level_APIs/content_worker"><code>worker</code></a> as an argument, which defines <code>port.emit()</code> and <code>port.on()</code> methods that you can use to send messages to, and receive messages from, scripts loaded into the sidebar.</p> - -<p>This is the event you should listen to if your main add-on code needs to communicate with the scripts loaded into the sidebar and the main add-on code starts the conversation.</p> - -<p>See <a href="/en-US/Add-ons/SDK/Low-Level_APIs/ui_sidebar#Using_ready">Using ready</a> for an example.</p> - -<h4 class="addon-sdk-api-name" id="detach"><code>detach</code></h4> - -<p>This event is emitted when a worker is detached from a sidebar, as a result of either of the following:</p> - -<ul> - <li>calling the sidebar's <a href="/en-US/Add-ons/SDK/Low-Level_APIs/ui_sidebar#hide()"><code>hide()</code></a> method, when the sidebar is being shown in the currently active window</li> - <li>the user switching the sidebar off using the "Sidebar" submenu in Firefox, when the sidebar is being shown in the currently active window</li> -</ul> - -<p>The <code>detach</code> listener receives a <a href="/en-US/Add-ons/SDK/Low-Level_APIs/content_worker"><code>worker</code></a> object as a parameter. This object is the same as the worker passed into the corresponding <code>attach</code> event. After <code>detach</code>, this worker can no longer be used to communicate with the scripts in that sidebar instance, because it has been unloaded.</p> - -<p>If you listen to <code>attach</code>, and in the listener take a reference to the worker object that's passed into it, so you can send it messages later on, then you should probably listen to <code>detach</code>, and in its handler, remove your reference to the worker.</p> - -<p>Here's an add-on that adds each worker to an array in the <code>attach</code> handler, and makes sure that its references are cleaned up by listening to <code>detach</code> and removing workers as they are detached:</p> - -<pre class="brush: js">var workerArray = []; - -function attachWorker(worker) { - workerArray.push(worker); -} - -function detachWorker(worker) { - var index = workerArray.indexOf(worker); - if(index != -1) { - workerArray.splice(index, 1); - } -} - -var sidebar = require("sdk/ui/sidebar").Sidebar({ - id: 'my-sidebar', - title: 'My Sidebar', - url: require("sdk/self").data.url("sidebar.html"), - onAttach: attachWorker, - onDetach: detachWorker -});</pre> - -<h4 class="addon-sdk-api-name" id="show"><code>show</code></h4> - -<p>This event is emitted when the sidebar is shown, as a result of any of the following:</p> - -<ul> - <li>calling the sidebar's <a href="/en-US/Add-ons/SDK/Low-Level_APIs/ui_sidebar#show()"><code>show()</code></a> method, when the sidebar is not shown in the currently active window</li> - <li>changing the sidebar's <a href="/en-US/Add-ons/SDK/Low-Level_APIs/ui_sidebar#url"><code>url</code></a> property</li> - <li>the user switching the sidebar on using the "Sidebar" submenu in Firefox, when the sidebar is not shown in the currently active window</li> - <li>the user opening a new window from a window that has the sidebar showing</li> -</ul> - -<h4 class="addon-sdk-api-name" id="hide"><code>hide</code></h4> - -<p>This event is emitted when the sidebar is hidden, as a result of either of the following:</p> - -<ul> - <li>calling the sidebar's <a href="/en-US/Add-ons/SDK/Low-Level_APIs/ui_sidebar#hide()"><code>hide()</code></a> method, when the sidebar is being shown in the currently active window</li> - <li>the user switching the sidebar off using the "Sidebar" submenu in Firefox, when the sidebar is being shown in the currently active window</li> -</ul> diff --git a/files/pt-br/mozilla/add-ons/sdk/low-level_apis/window_utils/index.html b/files/pt-br/mozilla/add-ons/sdk/low-level_apis/window_utils/index.html deleted file mode 100644 index 5ceef79058..0000000000 --- a/files/pt-br/mozilla/add-ons/sdk/low-level_apis/window_utils/index.html +++ /dev/null @@ -1,386 +0,0 @@ ---- -title: window/utils -slug: Mozilla/Add-ons/SDK/Low-Level_APIs/window_utils -translation_of: Archive/Add-ons/Add-on_SDK/Low-Level_APIs/window_utils ---- -<div class="note"> -<p>Unstable</p> -</div> - -<div class="note"> -<p>Note that this module includes functions that give you direct access to web content. These functions are not safe to call in multiprocess Firefox. See <a href="/en-US/Add-ons/SDK/Guides/Multiprocess_Firefox_and_the_SDK">Multiprocess Firefox and the SDK</a> for more details.</p> -</div> - -<p><span class="seoSummary">Functions for working with browser windows.</span></p> - -<h2 id="Usage">Usage</h2> - -<h3 id="Private_windows">Private windows</h3> - -<p>With this module your add-on will see private browser windows even if it has not explicitly opted into private browsing, so you need to take care not to store any user data derived from private browser windows.<br> - <br> - The exception is the windows() function which returns an array of currently opened windows. Private windows will not be included in this list if your add-on has not opted into private browsing.<br> - <br> - To learn more about private windows, how to opt into private browsing, and how to support private browsing, refer to the documentation for the private-browsing module.</p> - -<h2 id="Globals">Globals</h2> - -<h3 id="Functions">Functions</h3> - -<h4 class="addon-sdk-api-name" id="getMostRecentBrowserWindow()"><code>getMostRecentBrowserWindow()</code></h4> - -<p>Get the topmost browser window, as an nsIDOMWindow instance.</p> - -<h5 id="Returns">Returns</h5> - -<p><strong>nsIDOMWindow</strong>: the topmost browser window.</p> - -<h4 class="addon-sdk-api-name" id="getInnerId(window)"><code>getInnerId(window)</code></h4> - -<p>Returns the ID of the specified window's current inner window. This function wraps nsIDOMWindowUtils.currentInnerWindowID.</p> - -<h5 id="Parameters">Parameters</h5> - -<p><strong>window : nsIDOMWindow</strong><br> - The window whose inner window we are interested in.</p> - -<h5 id="Returns_2">Returns</h5> - -<p><strong>ID</strong>: the given window's ID.</p> - -<h4 class="addon-sdk-api-name" id="getOuterId(window)"><code>getOuterId(window)</code></h4> - -<p>Returns the ID of the specified window's outer window. This function wraps nsIDOMWindowUtils.outerWindowID.</p> - -<h5 class="addon-sdk-api-name" id="Parameters_2">Parameters</h5> - -<p><strong>window : nsIDOMWindow</strong><br> - The window whose outer window we are interested in.</p> - -<h5 id="Returns_3">Returns</h5> - -<p><strong>ID</strong>: the outer window's ID.</p> - -<h4 class="addon-sdk-api-name" id="getXULWindow(window)"><code>getXULWindow(window)</code></h4> - -<p>Returns the nsIXULWindow for the given nsIDOMWindow:</p> - -<pre class="brush: js">var { Ci } = require('chrome'); -var utils = require('sdk/window/utils'); -var active = utils.getMostRecentBrowserWindow(); -active instanceof Ci.nsIXULWindow // => false -utils.getXULWindow(active) instanceof Ci.nsIXULWindow // => true</pre> - -<h5 id="Parameters_3">Parameters</h5> - -<p><strong>window : nsIDOMWindow</strong></p> - -<h5 id="Returns_4">Returns</h5> - -<p><strong>nsIXULWindow</strong></p> - -<h4 class="addon-sdk-api-name" id="getBaseWindow(window)"><code>getBaseWindow(window)</code></h4> - -<p>Returns the nsIBaseWindow for the given nsIDOMWindow:</p> - -<pre class="brush: js">var { Ci } = require('chrome'); -var utils = require('sdk/window/utils'); -var active = utils.getMostRecentBrowserWindow(); -active instanceof Ci.nsIBaseWindow // => false -utils.getBaseWindow(active) instanceof Ci.nsIBaseWindow // => true</pre> - -<h5 id="Parameters_4">Parameters</h5> - -<p><strong>window : nsIDOMWindow</strong></p> - -<h5 id="Returns_5">Returns</h5> - -<p><strong>nsIBaseWindow</strong></p> - -<h4 class="addon-sdk-api-name" id="getToplevelWindow(window)"><code>getToplevelWindow(window)</code></h4> - -<p>Returns the toplevel nsIDOMWindow for the given child nsIDOMWindow:</p> - -<pre class="brush: js">var { Ci } = require('chrome'); -var utils = require('sdk/window/utils'); -var browserWindow = utils.getMostRecentBrowserWindow(); -var window = browserWindow.content; // `window` object for the current webpage -utils.getToplevelWindow(window) == browserWindow // => true</pre> - -<h5 id="Parameters_5">Parameters</h5> - -<p><strong>window : nsIDOMWindow</strong></p> - -<h5 id="Returns_6">Returns</h5> - -<p><strong>nsIDOMWindow</strong></p> - -<h4 class="addon-sdk-api-name" id="getWindowDocShell(window)"><code>getWindowDocShell(window)</code></h4> - -<p>Returns the nsIDocShell for the tabbrowser element.</p> - -<h5 id="Parameters_6">Parameters</h5> - -<p><strong>window : nsIDOMWindow</strong></p> - -<h5 id="Returns_7">Returns</h5> - -<p><strong>nsIDocShell</strong></p> - -<h4 class="addon-sdk-api-name" id="getWindowLoadingContext(window)"><code>getWindowLoadingContext(window)</code></h4> - -<p>Returns the nsILoadContext.</p> - -<h5 id="Parameters_7">Parameters</h5> - -<p><strong>window : nsIDOMWindow</strong></p> - -<h5 id="Returns_8">Returns</h5> - -<p><strong>nsILoadContext</strong></p> - -<h4 class="addon-sdk-api-name" id="open(uri_options)"><code>open(uri, options)</code></h4> - -<p>This function is used to open top level (application) windows. It takes the uri of the window document as its first argument and an optional hash of options as its second argument.</p> - -<pre class="brush: js">var { open } = require('sdk/window/utils'); -var window = open('data:text/html,Hello Window');</pre> - -<p>This function wraps <a href="/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIWindowWatcher">nsIWindowWatcher</a>.openWindow.</p> - -<h5 id="Parameters_8">Parameters</h5> - -<p><strong>uri : string</strong><br> - URI of the document to be loaded into the window. Only chrome, resource, and data schemes are accepted.</p> - -<p><strong>options : object</strong><br> - Options for the function, with the following properties:</p> - -<table class="standard-table"> - <thead> - <tr> - <th scope="col">Name</th> - <th scope="col">Type</th> - <th scope="col"> </th> - </tr> - </thead> - <tbody> - <tr> - <td>parent</td> - <td>nsIDOMWindow</td> - <td>Parent for the new window. Optional, defaults to null.</td> - </tr> - <tr> - <td>name</td> - <td>string</td> - <td>Name that is assigned to the window. Optional, defaults to null.</td> - </tr> - <tr> - <td>features</td> - <td>object</td> - <td> - <p>Map of features to set for the window, defined like this: { width: 10, height: 15, chrome: true }.</p> - - <p>See the window.open features documentation for more details.</p> - - <p>Optional, defaults to an empty map: {}.</p> - - <pre class="brush: js"> -var { open } = require('sdk/window/utils'); -var window = open('data:text/html,Hello Window', { - name: 'jetpack window', - features: { - width: 200, - height: 50, - popup: true - } -});</pre> - </td> - </tr> - <tr> - <td>args</td> - <td>object</td> - <td>Extra argument(s) to be attached to the new window as the window.arguments property.</td> - </tr> - </tbody> -</table> - -<h5 id="Returns_9"><br> - Returns</h5> - -<p><strong>nsIDOMWindow</strong></p> - -<h4 class="addon-sdk-api-name" id="openDialog(options)"><code>openDialog(options)</code></h4> - -<p>Opens a top level window and returns its nsIDOMWindow representation. This is the same as open, but you can supply more features. It wraps window.openDialog.</p> - -<h5 id="Parameters_9">Parameters</h5> - -<p><strong>options : object</strong><br> - Options for the function, with the following properties:</p> - -<table class="standard-table"> - <thead> - <tr> - <th scope="col">Name</th> - <th scope="col">Type</th> - <th scope="col"> </th> - </tr> - </thead> - <tbody> - <tr> - <td>url</td> - <td>string</td> - <td>URI of the document to be loaded into the window. Defaults to "chrome://browser/content/browser.xul".</td> - </tr> - <tr> - <td>name</td> - <td>string</td> - <td>Optional name that is assigned to the window. Defaults to "_blank".</td> - </tr> - <tr> - <td>features</td> - <td>string</td> - <td> - <p>Map of features to set for the window, defined like: { width: 10, height: 15, chrome: true }.</p> - - <p>For the set of features you can set, see the window.openDialog documentation.</p> - - <p>Optional, defaults to: 'chrome,all,dialog=no'.</p> - </td> - </tr> - <tr> - <td>args</td> - <td>object</td> - <td>Extra argument(s) to be attached to the new window as the window.arguments property.</td> - </tr> - </tbody> -</table> - -<h5 id="Returns_10">Returns</h5> - -<p><strong>nsIDOMWindow</strong></p> - -<h4 class="addon-sdk-api-name" id="windows()"><code>windows()</code></h4> - -<p>Returns an array of all currently opened windows. Note that these windows may still be loading.</p> - -<p>In order to see private windows in this list, your add-on must have <a href="/en-US/Add-ons/SDK/High-Level_APIs/private-browsing#Opting_into_private_browsing">opted into private browsing</a> and you must include the <code>includePrivate</code> key in the list of options:</p> - -<pre class="brush: js"> var allWindows = window_utils.windows(null, {includePrivate:true}); -</pre> - -<h5 id="Parameters_10">Parameters</h5> - -<p><strong>type : string</strong><br> - String identifying the type of window to return. This is passed directly into <a href="/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIWindowMediator#getEnumerator()"><code>nsIWindowMediator.getEnumerator()</code></a>, so its possible values are the same as those expected by that function. In particular:</p> - -<ul> - <li><code>null</code>: get all window types</li> - <li><code>navigator:browser</code>: get "normal" browser windows</li> - <li><code>devtools:scratchpad</code>: get <a href="/en-US/docs/Tools/Scratchpad">Scratchpad</a> windows</li> - <li><code>navigator:view-source</code>: get <a href="/en-US/docs/View_source">view source</a> windows</li> -</ul> - -<p>If you're not also passing options, you can omit this, and it's the same as passing <code>null</code>.</p> - -<p><strong>options : object</strong><br> - Options object containing the following property:</p> - -<table class="standard-table"> - <thead> - <tr> - <th scope="col">Name</th> - <th scope="col">Type</th> - <th scope="col"> </th> - </tr> - </thead> - <tbody> - <tr> - <td>includePrivate</td> - <td>boolean</td> - <td>Whether to include private windows. Defaults to false. The add-on must also have opted into private windows for this to have an effect.</td> - </tr> - </tbody> -</table> - -<h5 id="Returns_11">Returns</h5> - -<p><strong>Array</strong>: array of nsIDOMWindow instances.</p> - -<h4 class="addon-sdk-api-name" id="isDocumentLoaded(window)"><code>isDocumentLoaded(window)</code></h4> - -<p>Check if the given window's document is completely loaded. This means that its "load" event has been fired and all content is loaded, including the whole DOM document, images, and any other sub-resources.</p> - -<h5 id="Parameters_11">Parameters</h5> - -<p><strong>window : nsIDOMWindow</strong></p> - -<h5 id="Returns_12">Returns</h5> - -<p><strong>boolean</strong>: true if the document is completely loaded.</p> - -<h4 class="addon-sdk-api-name" id="isBrowser(window)"><code>isBrowser(window)</code></h4> - -<p>Returns true if the given window is a Firefox browser window: that is, its document has a "windowtype" of "chrome://browser/content/browser.xul".</p> - -<h5 id="Parameters_12">Parameters</h5> - -<p><strong>window : nsIDOMWindow</strong></p> - -<h5 id="Returns_13">Returns</h5> - -<p><strong>boolean</strong></p> - -<h4 class="addon-sdk-api-name" id="getWindowTitle(window)"><code>getWindowTitle(window)</code></h4> - -<p>Get the title of the document hosted by the given window</p> - -<h5 id="Parameters_13">Parameters</h5> - -<p><strong>window: nsIDOMWindow</strong></p> - -<h5 id="Returns_14">Returns</h5> - -<p><strong>string</strong>: this document's title.</p> - -<h4 class="addon-sdk-api-name" id="isXULBrowser(window)"><code>isXULBrowser(window)</code></h4> - -<p>Returns true if the given window is a XUL window.</p> - -<h5 id="Parameters_14">Parameters</h5> - -<p><strong>window : nsIDOMWindow</strong></p> - -<h5 id="Returns_15">Returns</h5> - -<p><strong>boolean</strong></p> - -<h4 class="addon-sdk-api-name" id="getFocusedWindow()"><code>getFocusedWindow()</code></h4> - -<p>Gets the child window within the topmost browser window that is focused. See nsIFocusManager for more details.</p> - -<h5 id="Returns_16">Returns</h5> - -<p><strong>nsIDOMWindow</strong></p> - -<h4 class="addon-sdk-api-name" id="getFocusedElement()"><code>getFocusedElement()</code></h4> - -<p>Get the element that is currently focused. This will always be an element within the document loaded in the focused window, or null if no element in that document is focused.</p> - -<h5 id="Returns_17">Returns</h5> - -<p><strong>nsIDOMElement</strong></p> - -<h4 class="addon-sdk-api-name" id="getFrames(window)"><code>getFrames(window)</code></h4> - -<p>Get the frames contained by the given window.</p> - -<h5 id="Parameters_15">Parameters</h5> - -<p><strong>window : nsIDOMWindow</strong></p> - -<h5 id="Returns_18">Returns</h5> - -<p><strong>array</strong>: array of frames.<br> - </p> diff --git a/files/pt-br/mozilla/add-ons/sdk/tutorials/abra_uma_página_web/index.html b/files/pt-br/mozilla/add-ons/sdk/tutorials/abra_uma_página_web/index.html deleted file mode 100644 index defcedcee2..0000000000 --- a/files/pt-br/mozilla/add-ons/sdk/tutorials/abra_uma_página_web/index.html +++ /dev/null @@ -1,51 +0,0 @@ ---- -title: Abra uma Página Web -slug: Mozilla/Add-ons/SDK/Tutorials/Abra_uma_Página_Web -tags: - - Add-on SDK - - Tab - - runScript - - tab.attach -translation_of: Archive/Add-ons/Add-on_SDK/Tutorials/Open_a_Web_Page ---- -<div class="note">Para seguir este tutorial você precisará ter <a href="https://developer.mozilla.org/en-US/Add-ons/SDK/Tutorials/Installation">instalado o SDK</a> e ter conhecimento básico <a href="https://developer.mozilla.org/en-US/Add-ons/SDK/Tutorials/Getting_Started_With_cfx">sobre cfx</a>.</div> - -<p>Para abrir uma página web, você pode usar o módulo <a href="/en-US/Add-ons/SDK/High-Level_APIs/tabs"><code>tabs</code></a>:</p> - -<pre class="brush: js">var tabs = require("sdk/tabs"); -tabs.open("http://www.example.com"); -</pre> - -<p>Esta função é <span class="short_text" id="result_box" lang="pt"><span class="hps">assíncrona</span></span>, então você não recebe imediatamente um objeto <a href="/en-US/Add-ons/SDK/High-Level_APIs/tabs#Tab"><code>tab</code></a> que você possa examinar. Faça isto, passe uma função de retorno para <code>open()</code>. A função de retorno é atribuída a propriedade <code>onReady</code>, e será passada a tab como argumento:</p> - -<pre class="brush: js">var tabs = require("sdk/tabs"); -tabs.open({ - url: "http://www.example.com", - onReady: function onReady(tab) { - console.log(tab.title); - } -}); -</pre> - -<p>Mesmo assim, você não consegue acesso direto a qualquer conteúdo hospedado na tab.</p> - -<p>Para acessar conteúdo da tab você precisa anexar um script à tab usando o <code>tab.attach()</code>. Este add-on carrega uma página, então anexa um script à página que adiciona uma borda vermelha nela:</p> - -<pre class="brush: js">var tabs = require("sdk/tabs"); -tabs.open({ - url: "http://www.example.com", - onReady: runScript -}); - -function runScript(tab) { - tab.attach({ - contentScript: "document.body.style.border = '5px solid red';" - }); -} -</pre> - -<h2 id="Aprendendo_Mais">Aprendendo Mais</h2> - -<p>Para aprender mais sobre uso de tabs no SDK, veja a referência da API <a href="/en-US/Add-ons/SDK/High-Level_APIs/tabs"><code>tabs</code></a>.</p> - -<p>Para aprender mais sobre execução de scripts em tabs, veja o tutorial sobre uso de <a href="/en-US/Add-ons/SDK/Tutorials/Modifying_the_Page_Hosted_by_a_Tab"><code>tab.attach()</code></a>.</p> diff --git a/files/pt-br/mozilla/add-ons/sdk/tutorials/adding_a_button_to_the_toolbar/index.html b/files/pt-br/mozilla/add-ons/sdk/tutorials/adding_a_button_to_the_toolbar/index.html deleted file mode 100644 index 83b2f61907..0000000000 --- a/files/pt-br/mozilla/add-ons/sdk/tutorials/adding_a_button_to_the_toolbar/index.html +++ /dev/null @@ -1,83 +0,0 @@ ---- -title: Adicionando um botão à barra de ferramentas -slug: Mozilla/Add-ons/SDK/Tutorials/Adding_a_Button_to_the_Toolbar -translation_of: Archive/Add-ons/Add-on_SDK/Tutorials/Adding_a_Button_to_the_Toolbar ---- -<div class="note"> -<p>Para seguir este tutorial você precisará ter <a href="https://developer.mozilla.org/en-US/Add-ons/SDK/Tutorials/Installation">instalado o SDK</a> e ter conhecimento <a href="https://developer.mozilla.org/en-US/Add-ons/SDK/Tutorials/Getting_Started_With_cfx">básico do cfx</a>.</p> - -<p>Este tutorial usa a API <a href="/en-US/Add-ons/SDK/Low-Level_APIs/ui_button_action">action button</a>, que está disponível somente do Firefox 29 em diante.</p> -</div> - -<p>Para adicionar um botão à barra de ferramentas, use os módulos <a href="/en-US/Add-ons/SDK/Low-Level_APIs/ui_button_action">action button</a> ou <a href="/en-US/Add-ons/SDK/Low-Level_APIs/ui_button_toggle">toggle button</a>.</p> - -<p>Crie um novo diretório, navegue até ele, e execute <code>cfx init</code>.</p> - -<p>Então salve estes três ícones no diretório "data":</p> - -<table class="standard-table"> - <tbody> - <tr> - <td><img alt="" src="https://mdn.mozillademos.org/files/7635/icon-16.png" style="height: 16px; width: 16px;"></td> - <td>icon-16.png</td> - </tr> - <tr> - <td><img alt="" src="https://mdn.mozillademos.org/files/7637/icon-32.png" style="height: 32px; width: 32px;"></td> - <td>icon-32.png</td> - </tr> - <tr> - <td><img alt="" src="https://mdn.mozillademos.org/files/7639/icon-64.png" style="height: 64px; width: 64px;"></td> - <td>icon-64.png</td> - </tr> - </tbody> -</table> - -<p>Então abra o arquivo chamado "main.js" no diretório "lib" e adicione o seguinte código a ele:</p> - -<pre class="brush: js">var buttons = require('sdk/ui/button/action'); -var tabs = require("sdk/tabs"); - -var button = buttons.ActionButton({ - id: "mozilla-link", - label: "Visit Mozilla", - icon: { - "16": "./icon-16.png", - "32": "./icon-32.png", - "64": "./icon-64.png" - }, - onClick: handleClick -}); - -function handleClick(state) { - tabs.open("https://www.mozilla.org/"); -}</pre> - -<p>Agora execute o add-on com <code>cfx run</code>. O botão é adicionado à barra de ferramentas no topo da janela do navegador:</p> - -<p><img alt="" src="https://mdn.mozillademos.org/files/7641/mozilla-button.png" style="display: block; height: 221px; margin-left: auto; margin-right: auto; width: 382px;">Você não pode configurar a localização inicial para o botão, mas o usuário pode mover ele usando as características de personalização do navegador. O <code>id</code> é obrigatório, e é usado para lembrar a posição do botão, então você não deve mudá-lo em versões subsequentes do add-on.</p> - -<p>Clicando no botão carrega <a href="https://www.mozilla.org/en-US/">https://www.mozilla.org/</a> em uma nova tab.</p> - -<h2 id="Especificando_o_ícone">Especificando o ícone</h2> - -<p>A propriedade ícone pode especificar um único ícone ou uma coleção de ícones em diferentes tamanhos, como o exemplo acima. Se você especificar uma coleção de ícones em diferentes tamanhos o navegador automaticamente escolherá o melhor para a resolução de tela em uso e coloca na interface de usuário do navegador que hospeda o botão. <a href="https://developer.mozilla.org/en-US/Add-ons/SDK/Low-Level_APIs/ui_button_action#ActionButton(options)">Leia mais sobre especificar múltiplos ícones</a>.</p> - -<p>O arquivo de ícone deve ser empacotado com seu add-on: ele não pode referenciar um arquivo remoto.</p> - -<p>Você pode mudar o ícone a qualquer hora configurando a propriedade <code>icon</code> do botão. Você pode mudar o ícone, e os outros atributos de estado, ou globalmente, para uma janela específica, ou para uma tab específica. <a href="https://developer.mozilla.org/en-US/Add-ons/SDK/Low-Level_APIs/ui_button_action#Updating_state">Leia mais sobre atualização de estado.</a></p> - -<h2 id="Anexando_um_painel">Anexando um painel</h2> - -<p>Se você precisar anexar um panel a um botão, use a API <a href="https://developer.mozilla.org/en-US/Add-ons/SDK/Low-Level_APIs/ui_button_toggle">toggle button</a>. É como a API do action button exceto que ele adiciona uma propriedade boleana <code>checked </code>que é alternada sempre que o botão é checado. Para anexar o painel, passe o método <a href="https://developer.mozilla.org/en-US/Add-ons/SDK/High-Level_APIs/panel#show(options)"><code>show()</code></a> do painel. Para mais detalhes sobre isso, veja a <a href="https://developer.mozilla.org/en-US/Add-ons/SDK/Low-Level_APIs/ui_button_toggle#Attaching_panels_to_buttons">documentação do toggle button</a>.</p> - -<h2 id="Mostrando_conteúdo_mais_rico">Mostrando conteúdo mais rico</h2> - -<p>Para criar conteúdo mais complexo para a interface do usuário do que é possível com apenas um botão, use a API <a href="https://developer.mozilla.org/en-US/Add-ons/SDK/Low-Level_APIs/ui_toolbar">toolbar</a>. Com a API toolbar você consegue uma faixa horizontal da interface do usuário. Você pode adicionar botões à barra de ferramentas e também <a href="https://developer.mozilla.org/en-US/Add-ons/SDK/Low-Level_APIs/ui_frame">frames</a>, que podem ter HTML, CSS, e JavaScript.</p> - -<h2 id="Aprendendo_mais">Aprendendo mais</h2> - -<ul> - <li><a href="/en-US/Add-ons/SDK/Low-Level_APIs/ui_button_action">Referência action button</a></li> - <li><a href="/en-US/Add-ons/SDK/Low-Level_APIs/ui_button_action">Referência </a><a href="/en-US/Add-ons/SDK/Low-Level_APIs/ui_button_toggle">toggle button</a></li> - <li><a href="/en-US/Add-ons/SDK/Low-Level_APIs/ui_button_action">Referência </a><a href="/en-US/Add-ons/SDK/Low-Level_APIs/ui_toolbar">toolbar</a></li> -</ul> diff --git a/files/pt-br/mozilla/add-ons/sdk/tutorials/adicionar_uma_item_de_menu_ao_firefox/index.html b/files/pt-br/mozilla/add-ons/sdk/tutorials/adicionar_uma_item_de_menu_ao_firefox/index.html deleted file mode 100644 index ebc4e41846..0000000000 --- a/files/pt-br/mozilla/add-ons/sdk/tutorials/adicionar_uma_item_de_menu_ao_firefox/index.html +++ /dev/null @@ -1,115 +0,0 @@ ---- -title: Adicionar um item de menu ao Firefox -slug: Mozilla/Add-ons/SDK/Tutorials/Adicionar_uma_item_de_menu_ao_Firefox -tags: - - Add-on SDK - - Menu Item -translation_of: Archive/Add-ons/Add-on_SDK/Tutorials/Add_a_Menu_Item_to_Firefox ---- -<div class="note"> -<p>Para seguir este tutorial você precisará ter <a href="https://developer.mozilla.org/en-US/Add-ons/SDK/Installation">instalado o SDK</a> e aprendido o <a href="https://developer.mozilla.org/en-US/Add-ons/SDK/Getting_Started_With_cfx">básico do cfx</a>.</p> -</div> - -<div class="note"> -<p>Se vocé estiver usando <a href="https://developer.mozilla.org/en-US/Add-ons/SDK/Tools/jpm">jpm</a> ao invés de cfx, o método para usar módulos de terceiros é diferente, e você deve ler a <a href="https://developer.mozilla.org/en-US/Add-ons/SDK/Tutorials/Using_third-party_modules_%28jpm%29">versão jpm</a> ao invés deste guia.</p> -</div> - -<p>O SDK não tem ainda uma API para adicionar novos itens de menu ao Firefox. Mas é extensível por design, então qualquer um pode construir e publicar módulos para desenvolvedores de add-on usar. Felizmente, Erik Vold escreveu um módulo <a href="https://github.com/mykmelez/menuitems-jplib"><code>menuitems</code></a> que nos permite adicionar itens de menu.</p> - -<p>Este tutorial tem dupla função. Ele descreve o método geral para usar um externo, módulo de terceiro em seu add-on, e ele descreve como adicionar um item de menu usando o módulo <code>menuitems</code> em especial.</p> - -<p>Primeiro, crie um novo add-on. Crie um diretório chamado "clickme" onde você quiser, navegue para ele e execute <code>cfx init</code>.</p> - -<pre>mkdir clickme -cd clickme -cfx init -</pre> - -<p>A estrutura de diretório de costume será criada:</p> - -<ul> - <li>clickme - <ul> - <li>data</li> - <li>lib - <ul> - <li>main.js</li> - </ul> - </li> - <li>package.json</li> - <li>tests - <ul> - <li>test-main.js</li> - </ul> - </li> - </ul> - </li> -</ul> - -<div> </div> - -<h2 id="Inslatando_menuitems">Inslatando menuitems</h2> - -<p>Crie um diretório em "clickme" chamado "packages". Baixe o pacote <code>menuitems</code> de <a href="https://github.com/mykmelez/menuitems-jplib/zipball/4d6ae5b410d79cc16c9c76920fbaa8a367e44ca7">https://github.com/mykmelez/menuitems-jplib</a> e extrai ele dentro do diretório "packages" que você criou:</p> - -<pre>mkdir packages -cd packages -tar -xf ../erikvold-menuitems-jplib-d80630c.zip -</pre> - -<h2 id="Dependências_de_Módulo">Dependências de Módulo</h2> - -<p>Se os módulos de terceiros dependem de módulos SDK, você pode usá-los imediatamente, mas se eles dependem de módulos de terceiros, você terá de instalar essas dependências também.</p> - -<p>No diretório principal do pacote (menuitems) você encontrará um arquivo chamado "package.json". Abra ele e procure por uma entrada chamada "dependencies". A entrada para o pacote <code>menuitems</code> é:</p> - -<pre>"dependencies": ["api-utils", "vold-utils"] -</pre> - -<p>Isso nos diz que nós precisamos instalar o pacote <code>vold-utils</code>, que nós podemos fazer baixando ele de <a href="https://github.com/mykmelez/vold-utils-jplib/zipball/a321447dc5d613df33023165854957c181dc3174">https://github.com/mykmelez/vold-utils-jplib </a>e adicionando ele ao diretório packages com <code>menuitems</code>. Veja também <a href="/en-US/docs/Mozilla/QA/Mozmill_tests/Shared_Modules/UtilsAPI">api-utils Docs</a>(UtilsAPI).</p> - -<h2 id="Usando_menuitems">Usando <code>menuitems</code></h2> - -<p>A documentação para o módulo <a href="https://github.com/mykmelez/menuitems-jplib/blob/master/docs/menuitems.md"><code>menuitems</code></a> nos diz para criar um item de menu usando <code>MenuItem()</code>. Das opções aceitas pelo <code>MenuItem()</code>, nós usaremos este conjunto mínimo:</p> - -<ul> - <li><code>id</code>: identificado para este item de menu</li> - <li><code>label</code>: texto para mostrar no item</li> - <li><code>command</code>: função chamada quando o usuário seleciona o item</li> - <li><code>menuid</code>: identificador para o elemento pai do item</li> - <li><code>insertbefore</code>: identificador para o item anterior àquele que nós queremos que o item apareça</li> -</ul> - -<div> -<div> -<pre class="brush: js">var menuitem = require("menuitems").Menuitem({ - id: "clickme", - menuid: "menu_ToolsPopup", - label: "Click Me!", - onCommand: function() { - console.log("clicked"); - }, - insertbefore: "menu_pageInfo" -});</pre> - -<div> </div> -</div> -</div> - -<p>Próximo, nós temos que declarar nossa dependência do pacote <code>menuitems</code>. No <code>package.json</code> de nosso add-on adicionamos a linha:</p> - -<pre>"dependencies": "menuitems" -</pre> - -<p>Observe que devido ao <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=663480">bug 663480</a>, se você adicionar uma linha <code>dependencies </code>ao <code>package.json</code>, e você usar qualquer módulo do SDK, então você deve também declarar sua dependência naquele pacote embutido, como isto:</p> - -<pre>"dependencies": ["menuitems", "addon-sdk"] -</pre> - -<p>Agora terminamos. Execute o add-on e você verá o novo item aparecer no menu de Ferramentas: selecione ele e você verá a <code>info: clicked </code>aparecer no console.</p> - -<h2 id="Cuidados">Cuidados</h2> - -<p>Módulos de terceiros são uma ótima forma de usar características não suportadas diretamente pelo SDK, mas porque módulos de terceiros usam APIs de nível baixo, eles podem quebrar quando forem lançadas novas versões do Firefox.</p> - -<p> </p> diff --git a/files/pt-br/mozilla/add-ons/sdk/tutorials/adicione_um_item_ao_menu_de_contexto/index.html b/files/pt-br/mozilla/add-ons/sdk/tutorials/adicione_um_item_ao_menu_de_contexto/index.html deleted file mode 100644 index d864cd3029..0000000000 --- a/files/pt-br/mozilla/add-ons/sdk/tutorials/adicione_um_item_ao_menu_de_contexto/index.html +++ /dev/null @@ -1,120 +0,0 @@ ---- -title: Adicione um Item ao Menu de Contexto -slug: Mozilla/Add-ons/SDK/Tutorials/Adicione_um_Item_ao_Menu_de_Contexto -tags: - - Add-on SDK - - Firefox - - Guide - - context-menu -translation_of: Archive/Add-ons/Add-on_SDK/Tutorials/Add_a_Context_Menu_Item ---- -<div class="note"> -<p>Para seguir este tutorial você precisará ter <a href="https://developer.mozilla.org/en-US/Add-ons/SDK/Installation">instalado o SDK</a> e ter conhecimento <a href="https://developer.mozilla.org/en-US/Add-ons/SDK/Getting_Started_With_cfx">básico sobre cfx</a>.</p> -</div> - -<p>Para adicionar itens e submenus ao menu de contexto do Firetox, use o módulo <a href="/en-US/Add-ons/SDK/High-Level_APIs/context-menu"><code>context-menu</code></a>.</p> - -<p>Aqui está um add-on que adiciona um novo item ao menu de contexto. O item é mostrado sempre que alguma coisa na página é selecionada. Quando é clicado, a seleção é enviada para o código principal do add-on, que apenas registra ele:</p> - -<pre class="brush: js">var contextMenu = require("sdk/context-menu"); - var menuItem = contextMenu.Item({ - label: "Log Selection", - context: contextMenu.SelectionContext(), - contentScript: 'self.on("click", function () {' + - ' var text = window.getSelection().toString();' + - ' self.postMessage(text);' + - '});', - onMessage: function (selectionText) { - console.log(selectionText); - } -});</pre> - -<p>Teste: execute o add-on, carregue uma página web, selecione algum texto e clique com o botão direito. Você verá o novo item aparecer:</p> - -<p><img src="https://mdn.mozillademos.org/files/6513/context-menu-selection.png" style="display: block; margin-left: auto; margin-right: auto;"></p> - -<p>Clique nele, e a seleção é <a href="https://developer.mozilla.org/en-US/Add-ons/SDK/Tutorials/Logging">registrada no console</a> (ou na shell, se você estiver executando uma instância do Firefox na linha de comando):</p> - -<pre>info: elephantine lizard -</pre> - -<h2 id="Detalhes">Detalhes</h2> - -<p>Tudo que este add-on faz é criar um item no menu de contexto. Você não precisa adicioná-lo: uma vez que você criou o item, ele é automaticamente adicionado no contexto correto. O construtor nesse caso possui quatro opções: <code>label</code>, <code>context</code>, <code>contentScript</code>, e <code>onMessage</code>.</p> - -<h3 id="label">label</h3> - -<p>O <code>label</code> é tão somente a string que será mostrada.</p> - -<h3 id="context">context</h3> - -<p>O <code>context</code> descreve a circunstância em que o item será mostrado. O módulo <code>context-menu</code> oferece uma série de contextos embutidos, incluindo este <code>SelectionContext()</code>, que significa: mostrar o item quando alguma coisa na página for selecionada.</p> - -<p>Se estes simples contextos não forem suficiente, você pode definir contextos mais sofisticados usando scripts.</p> - -<h3 id="contentScript">contentScript</h3> - -<p>Este anexa um script ao item. Nesse caso o script espera pelo clique do usuário no item, então envia uma mensagem para o add-on contendo do texto selecionado.</p> - -<h3 id="onMessage">onMessage</h3> - -<p>A propriedade <code>onMessage</code> oferece um modo para o código do add-on responder mensagens do script anexado ao item do menu de contexto. Nesse caso é apenas registrado o texto selecionado.</p> - -<p>Então:</p> - -<ol> - <li>O usuário clica no item</li> - <li>o conteúdo do script do evento <code>click</code> dispara, e o conteúdo do script recupera o texto selecionado e envia a mensagem para o add-on</li> - <li>o evento <code>message</code> do add-on dispara, e ao código manipulador da função é passado o texto selecionado, que é registrado</li> -</ol> - -<h2 id="Mais_opções">Mais opções</h2> - -<h3 id="Adicionando_uma_imagem">Adicionando uma imagem</h3> - -<p>Você pode adicionar uma imagem ao menu de contexto por meio da opção <code>image</code>. Isto é uma URL apontando para um ícone 16x16 que é mostrado do lado esquerdo do item do menu de contexto. Geralmente você armazenaria sua imagem no diretório "data" do seu add-on, e construiria a URL usando <code>self.data.url()</code>:</p> - -<pre class="brush: js">var self = require("sdk/self"); - -var contextMenu = require("sdk/context-menu"); -var menuItem = contextMenu.Item({ - label: "Log Selection", - context: contextMenu.SelectionContext(), - contentScript: 'self.on("click", function () {' + - ' var text = window.getSelection().toString();' + - ' self.postMessage(text);' + - '});', - image: self.data.url("icon-16.png"), - onMessage: function (selectionText) { - console.log(selectionText); - } -});</pre> - -<h3 id="Adicione_uma_tecla_de_atalho">Adicione uma tecla de atalho</h3> - -<div class="geckoVersionNote"> -<p>Novo no Firefox 35.</p> -</div> - -<p>A partir do Firefox 35 você pode especificar uma tecla de atalho usando a opção <code>accessKey</code>. Deve ser somente um caracter. Pressione a tecla selecionada na opção quando o menu de contexto estiver aberto:</p> - -<pre class="brush: js">var contextMenu = require("sdk/context-menu"); -var menuItem = contextMenu.Item({ - label: "Log Selection", - context: contextMenu.SelectionContext(), - contentScript: 'self.on("click", function () {' + - ' var text = window.getSelection().toString();' + - ' self.postMessage(text);' + - '});', - accessKey: "l", - onMessage: function (selectionText) { - console.log(selectionText); - } -}); -</pre> - -<p> </p> - -<h2 id="Aprendendo_mais">Aprendendo mais</h2> - -<p>Aprendendo mais sobre o módulo <code>context-menu</code>, veja a referência da API <a href="/en-US/Add-ons/SDK/High-Level_APIs/context-menu"><code>context-menu</code></a>.</p> diff --git a/files/pt-br/mozilla/add-ons/sdk/tutorials/captura_de_carregamento_da_pagina/index.html b/files/pt-br/mozilla/add-ons/sdk/tutorials/captura_de_carregamento_da_pagina/index.html deleted file mode 100644 index 1fa1ae81d6..0000000000 --- a/files/pt-br/mozilla/add-ons/sdk/tutorials/captura_de_carregamento_da_pagina/index.html +++ /dev/null @@ -1,28 +0,0 @@ ---- -title: Captura de carregamento da página -slug: Mozilla/Add-ons/SDK/Tutorials/captura_de_carregamento_da_pagina -translation_of: Archive/Add-ons/Add-on_SDK/Tutorials/Listen_for_Page_Load ---- -<div class="note"> - Para seguir esse tutorial você necessita ter <a href="/en-US/Add-ons/SDK/Tutorials/Installation">instalado o SDK</a> e aprendido <a href="/en-US/Add-ons/SDK/Tutorials/Getting_Started_With_cfx">o básico do <code>cfx</code></a>.</div> -<p>Você pode capturar notificações sobre novas páginas em carregamento usando o módulo <a href="/en-US/Add-ons/SDK/High-Level_APIs/tabs"><code>tabs</code></a>. <span id="result_box" lang="pt"><span class="hps">O</span> <span class="hps">seguinte complemento</span> captura o evento ready <span class="hps">da</span> aba <span class="hps">e</span> mostra no console <span class="hps">a</span> <span class="hps">URL</span> <span class="hps">da</span><span class="hps"> mesma, carregada pelo usuário</span><span>:</span></span></p> -<pre class="brush: js">require("sdk/tabs").on("ready", logURL); - -function logURL(tab) { - console.log(tab.url); -} -</pre> -<p><span id="result_box" lang="pt"><span class="hps">Você não</span> <span class="hps">tem acesso direto</span> <span class="hps">a qualquer</span> <span class="hps">conteúdo hospedado</span> <span class="hps">na guia</span><span>.</span></span></p> -<p><span id="result_box" lang="pt"><span class="hps">Para acessar o conteúdo</span> <span class="hps">da aba </span><span class="hps">você precisa anexar</span> <span class="hps">um script</span> <span class="hps">usando</span> <code>tab.attach()</code><span class="hps">.</span> <span class="hps">Este</span> <span class="hps">add</span><span>-on</span> <span class="hps">atribui</span> <span class="hps">um script para</span> <span class="hps">todas as</span> <span class="hps">abas abertas</span><span>.</span> <span class="hps">O</span> <span class="hps">script adiciona</span> <span class="hps">uma borda vermelha</span> <span class="hps">ao</span> <span class="hps">documento</span> <span class="hps">da aba</span><span>:</span></span></p> -<pre class="brush: js">require("sdk/tabs").on("ready", runScript); - -function runScript(tab) { - tab.attach({ - contentScript: "if (document.body) document.body.style.border = '5px solid red';" - }); -} -</pre> -<p><span id="result_box" lang="pt"><span class="hps">(Este exemplo é</span> <span class="hps">apenas para mostrar</span> <span class="hps">a idéia</span><span>:</span> <span class="hps">para implementar</span> <span class="hps">algo como isso,</span> <span class="hps">você deve usar</span> <a href="/en-US/Add-ons/SDK/High-Level_APIs/page-mod"><code>page-mod</code></a><span>,</span> <span class="hps">e especificar</span> <span class="hps">"*" como</span> <span class="hps">o match-pattern</span><span class="hps">.</span></span>)</p> -<h2 id="Aprendendo_Mais">Aprendendo Mais</h2> -<p>Para aprender mais sobre o trabalho com abas no SDK, veja a <a href="/en-US/Add-ons/SDK/High-Level_APIs/tabs">referência de tab da API</a>. <span id="result_box" lang="pt"><span class="hps">Você</span> <span class="hps">pode capturar </span><span class="hps">uma série de</span> <span class="hps">outros eventos</span> <span class="hps">da aba</span><span>, incluindo</span> <code>open</code><span class="hps">, <code>close </code></span><span class="hps">e <code>activate</code>.</span></span></p> -<p>Para ler mais sobre rodar scripts nas abas, veja o <a href="/en-US/Add-ons/SDK/Tutorials/Modifying_the_Page_Hosted_by_a_Tab">tutorial sobre como usar <code>tab.attach()</code></a>.</p> diff --git a/files/pt-br/mozilla/add-ons/sdk/tutorials/chrome_authority/index.html b/files/pt-br/mozilla/add-ons/sdk/tutorials/chrome_authority/index.html deleted file mode 100644 index 0e09ecdc02..0000000000 --- a/files/pt-br/mozilla/add-ons/sdk/tutorials/chrome_authority/index.html +++ /dev/null @@ -1,65 +0,0 @@ ---- -title: Autoridade Chrome -slug: Mozilla/Add-ons/SDK/Tutorials/Chrome_Authority -translation_of: Archive/Add-ons/Add-on_SDK/Tutorials/Chrome_Authority ---- -<div class="warning"> -<p>A API usada para ganhar acesso ao Chrome atualmente é uma característica experimental do SDK, e deve mudar em lançamentos futuros.</p> -</div> - -<h2 id="Usando_Autoridade_Chrome">Usando Autoridade Chrome</h2> - -<p>Os módulos de baixo-nível mais poderosos são executados com "chrome privileges", que nos dão acesso ao infame <a href="/en-US/docs/Components_object"><code>Objeto Components</code></a>, que concede acesso irrestrito ao host. A partir daí, <span id="result_box" lang="pt"><span class="hps">o módulo</span> <span class="hps">pode fazer praticamente</span> <span class="hps">qualquer coisa que o</span> <span class="hps">navegador</span> <span class="hps">é capaz.</span> <span class="hps">Para obter estes</span> <span class="hps">privilégios</span><span>, o módulo</span> <span class="hps">deve declarar</span> <span class="hps">sua intenção</span> <span class="hps">com</span> <span class="hps">uma declaração como</span> <span class="hps">a seguinte</span></span>:</p> - -<pre class="brush: js">var {Cc, Ci} = require("chrome");</pre> - -<p>O objeto retornado pelo <code>require("chrome")</code>, quando desempacotado com a característica <a href="/en-US/docs/Web/JavaScript/New_in_JavaScript/1.7#Destructuring_assignment_(Merge_into_own_page.2Fsection)">destructuring assignment</a> disponível no ambiente JS do Mozilla, fornecerá os redutores comuns dos <code>Components.*</code>:</p> - -<p><code><strong>Cc</strong></code></p> - -<p>Um redutor para <code>Components.classes</code>.</p> - -<p><code><strong>Ci</strong></code></p> - -<p>Um redutor para <code>Components.interfaces</code>.</p> - -<p><code><strong>Cu</strong></code></p> - -<p>Um redutor para <code>Components.utils</code>.</p> - -<p><code><strong>Cr</strong></code></p> - -<p>Um redutor para <code>Components.results</code>.</p> - -<p><code><strong>Cm</strong></code></p> - -<p>Um redutor para <code>Components.manager</code>.</p> - -<p><code><strong>components</strong></code></p> - -<p>Uma outra forma de chamar <code>Components</code> por si mesmo (note as letras minúsculas). A partir daí você pode acessar propriedade de uso menos frequente como <code>Components.stack</code> e <code>Components.isSuccessCode</code>.</p> - -<p>Nota: a declaração <code>require("chrome")</code> é o <strong>único</strong> modo para acessar as funcionalidades do chrome e da API <code>Components</code>. O objeto <code>Components</code> <strong>não</strong> deve ser acessado de módulos. A ferramenta SDK emitira um aviso se ela vir código em móduo que referencie o <code>Components</code> diretamente.</p> - -<p>Seu módulo deve evitar usar privilégios do chrome a menos que seja absolutamente necessário. Uso da Autoridade do Chrome deve receber revisão extra de segurança, e a maioria dos bugs nestes módulos são críticos a segurança.</p> - -<h2 id="Geração_do_Manifesto">Geração do Manifesto</h2> - -<p>O <strong>manifesto</strong> é uma lista, incluída no XPI gerado, que especifica quais módulos requisitação accesso <code>require()</code> para quais outros módulos. Ele também grava quais módulos requisitam acesso chrome. Esta lista é gerada pelo mapeamento de todos os módulos incluído pela declaração <code>require(XYZ)</code> e grava a string "XYZ" que eles referênciam.</p> - -<p>Quando a implementação do manifesto estiver completa o carregador do programa vai impedir os módulos de usar <code>require() </code>para solicitar módulos que não estão listados no manifesto. Também, evitará que os módulos consiga autoridade chrome a menos que o manifesto indique que eles pediram para ele.<span id="result_box" lang="pt"><span class="hps"> Isto irá assegurar que</span> <span class="hps">os revisores enxerguem</span> <span class="hps">as mesmas restrições</span> <span class="hps">de autoridade</span> <span class="hps">que são aplicadas</span> <span class="hps">sobre o</span> <span class="hps">código em execução, aumentando efetivamente o tempo gasto revendo o add-on. (até que</span> <span class="hps">este trabalho</span> <span class="hps">seja concluído,</span> <span class="hps">os módulos</span> <span class="hps">podem ser capazes de</span> <span class="hps">burlar</span> <span class="hps">essas restrições).</span></span></p> - -<p>O manifesto é construído com um mapeador baseado em expressão regular, não um análisador Javascript. Os desenvolvedores devem manter as declarações <code>require</code> simples, com uma única string estática, uma por linha de código. Se o mapeador falhar para enxergar a entrada <code>require</code>, o manifesto não incluirá aquela entrada, e (uma vez que a implementação esteja completa) o código em execução lança uma exceção.</p> - -<p>Por exemplo, nenhum dos códigos a seguir serão encontrados pelo mapeamento do manifesto, levando a uma exceção em tempo de execução, quando a chamada <code>require()</code> é proibida de importar os módulos chamados:</p> - -<pre class="brush: js">// todos estes falharão -var xhr = require("x"+"hr"); -var modname = "xpcom"; -var xpcom = require(modname); -var one = require("one"); var two = require("two"); -</pre> - -<p>A intenção é que os desenvolvedores usem a declaração <code>require() </code>para dois propósitos: declarar (ao revisores de segurança) qual a classificação dos poderes que os modulos querem usar, e controlar como estes poderes serão mapeados dentro do namespace do módulo local. Suas declarações devem então ser claras e fáceis de analisar. Um formato de manifesto futuro deve mover a porção de declaração para um arquivo separado, para permitir expressões mais granuladas de autorização.</p> - -<p>Comandos que constroem um manifesto, como "<code>jpm xpi</code>" ou "<code>jpm run</code>", mapearão todos os módulos incluídos pelo uso dos atalhos <code>Cc</code>/<code>Ci</code> (ou a forma expandida <code>Components.classes</code>). Emitirá um aviso se ele visualizar a forma expandida ou ver o uso e.g. "<code>Cc</code>" sem a entrada correspondente na declaração <code>require("chrome")</code>. Estes avisos servem para guiar os desenvolvedores para o usar o padrão correto. Todos os desenvolvedores de módulos devem reparar os avisos e corrigir seus códigos até que os avisos tenham desaparecido.</p> diff --git a/files/pt-br/mozilla/add-ons/sdk/tutorials/começando/index.html b/files/pt-br/mozilla/add-ons/sdk/tutorials/começando/index.html deleted file mode 100644 index 1294a58ffd..0000000000 --- a/files/pt-br/mozilla/add-ons/sdk/tutorials/começando/index.html +++ /dev/null @@ -1,206 +0,0 @@ ---- -title: Começando -slug: Mozilla/Add-ons/SDK/Tutorials/Começando -tags: - - Add-on SDK - - Tutorial -translation_of: Mozilla/Add-ons/SDK/Tutorials/Getting_Started_%28jpm%29 ---- -<p>Este tutorial percorre a criação de um add-on simples usando o SDK.</p> - -<h2 id="Pré-requisitos">Pré-requisitos</h2> - -<p>Para criar add-ons para Firefox usando SDK, você primeiro precisará seguir as instruções para <a href="/en-US/Add-ons/SDK/Tutorials/Installation">instalar e ativar o SDK</a>. Uma vez que você fez isso, você estará olhando para um prompt de comando.</p> - -<h2 id="Inicializando_um_add-on_vazio">Inicializando um add-on vazio</h2> - -<p>No prompt de comando, crie um novo diretório. O diretório não precisa estar no diretório principal do SDK: você pode criar ele em qualquer lugar que você quiser. Navegue para ele, digite cfx init, e tecle enter:</p> - -<pre>mkdir my-addon -cd my-addon -cfx init -</pre> - -<p>Você verá uma saída como esta:</p> - -<pre>* lib directory created -* data directory created -* test directory created -* doc directory created -* README.md written -* package.json written -* test/test-main.js written -* lib/main.js written -* doc/main.md written -Your sample add-on is now ready for testing: -try "cfx test" and then "cfx run". Have fun!" -</pre> - -<h2 id="Implementando_o_add-on">Implementando o add-on</h2> - -<p>Agora você pode escrever o código do add-on, que vai no arquivo "main.js" em diretório "lib". Esse arquivo foi criado para você no passo anterior. Abra ele e adicione o seguinte código:</p> - -<pre class="brush: js">var buttons = require('sdk/ui/button/action'); -var tabs = require("sdk/tabs"); - -var button = buttons.ActionButton({ - id: "mozilla-link", - label: "Visite Mozilla", - icon: { - "16": "./icon-16.png", - "32": "./icon-32.png", - "64": "./icon-64.png" - }, - onClick: handleClick -}); - -function handleClick(state) { - tabs.open("https://www.mozilla.org/"); -} -</pre> - -<p>Salve o arquivo.</p> - -<p>Próximo, salve estes ícones no diretório "data" de seu add-on:</p> - -<table class="standard-table"> - <tbody> - <tr> - <td><img alt="" src="https://mdn.mozillademos.org/files/7635/icon-16.png" style="height: 16px; width: 16px;"></td> - <td>icon-16.png</td> - </tr> - <tr> - <td><img alt="" src="https://mdn.mozillademos.org/files/7637/icon-32.png" style="height: 32px; width: 32px;"></td> - <td>icon-32.png</td> - </tr> - <tr> - <td><img alt="" src="https://mdn.mozillademos.org/files/7639/icon-64.png" style="height: 64px; width: 64px;"></td> - <td>icon-64.png</td> - </tr> - </tbody> -</table> - -<p>Volte ao prompt de comando, digite:</p> - -<pre>cfx run -</pre> - -<p>Este é o comando SDK para executar uma nova instância do Firefox com seu add-on instalado. Quando o Firefox inicia, no canto de cima do lado direito do navegador você verá um ícone com o logotipo do Firefox. Clique nele, e uma nova tab abrirá com o site <a href="https://www.mozilla.org/">https://www.mozilla.org/</a> carregado nela.</p> - -<p>Isso é tudo que esse add-on faz. Ele usa dois módulos SDK: o módulo <a href="https://developer.mozilla.org/en-US/Add-ons/SDK/Low-Level_APIs/ui_button_action">action button</a>, que permite a você adicionar botões ao navegador, e o módulo <a href="https://developer.mozilla.org/en-US/Add-ons/SDK/High-Level_APIs/tabs">tabs</a>, que permite a você realizar operações básicas com <em>tabs</em>. Nesse caso, nós criamos uma botão cujo ícone é o íncone do Firefox, e adicionamos um manipulador de clique que carrega a home page da Mozilla na nova tab.</p> - -<p><img alt="" src="https://mdn.mozillademos.org/files/7643/mozilla-button.png" style="display: block; height: 221px; margin-left: auto; margin-right: auto; width: 382px;">Tente editar esse arquivo. Por exemplo, nós poderíamos mudar a página que é carregada:</p> - -<pre class="brush: js">var buttons = require('sdk/ui/button/action'); -var tabs = require("sdk/tabs"); - -var button = buttons.ActionButton({ - id: "mozilla-link", - label: "Visit Mozilla", - icon: { - "16": "./icon-16.png", - "32": "./icon-32.png", - "64": "./icon-64.png" - }, - onClick: handleClick -}); - -function handleClick(state) { - tabs.open("https://developer.mozilla.org/"); -}</pre> - -<p>No promp de comando, execute novamente cfx run. Desta vez clicando levará você para <a href="https://developer.mozilla.org/">https://developer.mozilla.org/</a>.</p> - -<h2 id="Empacotando_o_add-on">Empacotando o add-on</h2> - -<p>Quando você termina o add-on e está preparado para distribui-lo, você precisa empacotá-lo como um arquivo XPI. Esse é um formato de arquivo instalável para add-ons de Firefox. Você pode distribuir arquivos XPI ou publicá-los em <a href="https://addons.mozilla.org" rel="noreferrer">https://addons.mozilla.org</a> assim outros usuários podem baixar e instalá-los.</p> - -<p>Para construir um XPI, apenas execute o comando cfx xpi do diretório do add-on:</p> - -<pre>cfx xpi -</pre> - -<p>Você deve ver uma mensagem como:</p> - -<pre>Exporting extension to my-addon.xpi. -</pre> - -<p>Para testar que funcionou, tente instalar o arquivo XPI em sua própria instalação do Firefox. Você pode fazer isso pressionando Ctrl+O (Cmd+O no Mac) de dentro do Firefox, ou selecionando o item "Abrir arquivo" do menu "Arquivo" do Firefox. Isso trará uma caixa de seleção; navegue até o arquivo "my-addon.xpi", abra-o e siga o prompt para instalar o add-on.</p> - -<h2 id="Resumo">Resumo</h2> - -<p>Neste tutorial nós construímos e empacotamos um add-on usando três comandos:</p> - -<ul> - <li><code>cfx init</code> para inicializar um modelo vazio do add-on</li> - <li><code>cfx run</code> para executar uma nova instância do Firefox com o add-on instalado, não nós testamos ele</li> - <li><code>cfx xpi</code> para empacotar o add-on dentro do arquivo XPI para distribuição</li> -</ul> - -<p>Esses são os três principais comandos que você usará quando desenvolver add-ons no SDK. Há uma abrangente <a href="https://developer.mozilla.org/en-US/Add-ons/SDK/Tools/cfx">documentação de referência</a> cobrindo todos os comandos que você pode usar e todas as opções que eles possuem.</p> - -<p>O próprio código do add-on usa dois módulos do SDK, <a href="/en-US/Add-ons/SDK/Low-Level_APIs/ui_button_action">action button</a> e <a href="/en-US/Add-ons/SDK/High-Level_APIs/tabs" rel="noreferrer">tabs</a>. Há documentação de referência para toda a API do SDK, de <a href="https://developer.mozilla.org/en-US/Add-ons/SDK/High-Level_APIs">alto</a> e <a href="https://developer.mozilla.org/en-US/Add-ons/SDK/Low-Level_APIs">baixo nível</a>.</p> - -<h2 id="O_que_vem_a_seguir">O que vem a seguir?</h2> - -<p>Para sentir algumas das coisas que você pode fazer com a API do SDK, tente trabalhar através de alguns dos <a href="/en-US/Add-ons/SDK/Tutorials" rel="noreferrer">tutorials</a>.</p> - -<h2 id="Técnicas_avançadas">Técnicas avançadas</h2> - -<h3 id="Sobreescrevendo_os_módulos_embutidos">Sobreescrevendo os módulos embutidos</h3> - -<p>Os módulos do SDK que você usa para implementar seu add-on estão embutidas no Firefox. Quando você executa ou empacota um add-on usando <code>cfx run</code> ou <code>cfx xpi</code>, o add-on usará as versões dos módulos na versão do Firefox que hospeda elas.</p> - -<p>Como um desenvolvedor de add-on, isso é normalmente o que você quer. Mas se você está desenvolvendo os módulos SDK por si mesmo, claro, não será. Nesse caso assumimos que você pegou o SDK de seu <a href="https://github.com/mozilla/addon-sdk">repositório GitHub</a> e executará o script <a href="https://developer.mozilla.org/en-US/Add-ons/SDK/Tutorials/Installation">bin/activate</a> desse diretório raiz de trabalho.</p> - -<p>Então quando você invoca <code>cfx run</code> ou <code>cfx xpi</code>, você passa a opçao "-o":</p> - -<pre>cfx run -o -</pre> - -<p>Isso instrui o cfx a usar a cópia local dos módulos do SDK, não aqueles existentes no Firefox.</p> - -<h3 id="Desenvolvendo_sem_cfx_run">Desenvolvendo sem cfx run</h3> - -<p>Porque <code>cfx run</code> reinicia o navegador cada vez que você invoca ele, ele pode ser um pouco pesado se você está fazendo mudanças frequentes em um add-on. Um modelo de desenvolvimento alternativo é usar o add-on <a href="https://addons.mozilla.org/en-US/firefox/addon/autoinstaller/">Extension Auto-Installer</a>: este escuta para novos arquivos XPI em uma porta específica e instala-os automaticamente. Dessa maneira você pode testar novas mudanças sem precisar reiniciar o navegador:</p> - -<ul> - <li>faça uma mudança em seu add-on</li> - <li>execute cfx xpi</li> - <li>posta o add-on para uma porta especificada</li> -</ul> - -<p>Você poderia até mesmo automatizar esse fluxo com um script simples. Por exemplo:</p> - -<pre>while true ; do cfx xpi ; wget --post-file=codesy.xpi http://localhost:8888/ ; sleep 5 ; done -</pre> - -<p>Note que o nível de registro definido para o console é diferente quando você usa esse método, comparado com o nível de registro usado quando um add-on está executando usando <code>cfx run</code>. Isso significa que se você quiser ver a saída de mensagens do <a href="https://developer.mozilla.org/en-US/Add-ons/SDK/Tutorials/Logging">console.log()</a>, você terá que ajustar uma configuração. Veja a documentação no <a href="https://developer.mozilla.org/en-US/Add-ons/SDK/Tools/console#Logging_Levels">nível de registros</a> para mais detalhes sobre isso.</p> - -<p>Um outro exemplo usando <a href="http://gruntjs.com/">grunt</a> e <a href="https://www.npmjs.com/package/grunt-shell">grunt-shell</a>:</p> - -<pre class="brush: js">module.exports = function(grunt) { - 'use strict'; - require('matchdep').filterDev('grunt-!(cli)').forEach(grunt.loadNpmTasks); - grunt.initConfig({ - shell: { - xpi: { - command: [ - 'cd pluginpath', - 'cfx xpi', - 'wget --post-file=pluginname.xpi http://localhost:8888/ || echo>/dev/null' - ].join('&&') - } - }, - watch: { - xpi: { - files: ['pluginpath/**'], - tasks: ['shell:xpi'] - } - } - }); - - grunt.loadNpmTasks('grunt-contrib-watch'); - grunt.loadNpmTasks('grunt-shell'); - grunt.registerTask('default', ['watch']); -};</pre> diff --git a/files/pt-br/mozilla/add-ons/sdk/tutorials/creating_event_targets/index.html b/files/pt-br/mozilla/add-ons/sdk/tutorials/creating_event_targets/index.html deleted file mode 100644 index d8fd6a7318..0000000000 --- a/files/pt-br/mozilla/add-ons/sdk/tutorials/creating_event_targets/index.html +++ /dev/null @@ -1,245 +0,0 @@ ---- -title: Criando Alvos de Eventos -slug: Mozilla/Add-ons/SDK/Tutorials/Creating_event_targets -translation_of: Archive/Add-ons/Add-on_SDK/Tutorials/Creating_event_targets ---- -<p><span>Este tutorial descreve o uso de APIS de baixo nível. Estas APIs estão ainda em desenvolvimento, e nós esperamos fazer mudanças incompatíveis nela em lançamentos futuros.</span></p> - -<p>O <a href="/en-US/Add-ons/SDK/Guides/Working_with_Events">guia de programação de eventos dirigidos com SDK</a> descreve como consumir eventos: isto é, como escutar eventos gerados pelo alvos de evento. Por exemplo, você pode escutar ao evento <a href="/en-US/Add-ons/SDK/High-Level_APIs/tabs#ready"><code>evento ready</code> do módulo tab</a> ou <a href="/en-US/Add-ons/SDK/High-Level_APIs/panel#show">o event<code> show do objeto Panel</code></a>.</p> - -<p>Com o SDK, também é simples implementar seus próprios alvos de eventos. Isto é especialmente útil se você quiser <a href="/en-US/Add-ons/SDK/Creating_Reusable_Modules">construir seus próprios módulos</a>, ou organizar seu add-on melhor ou permitir a outros desenvolvedores reusar seu código. Se você usa o framework de eventos do SDK para seus alvos de eventos, os usuários de seus módulos podem escutar pelos eventos usando a API de evento padrão do SDK.</p> - -<p>Neste tutorial nów criaremos parte de um módulo para acessar a <a href="https://developer.mozilla.org/en/Places">API Local</a> do navegador. Ele emitirá eventos quando o usuário adicionar e visitar um favorito, permitindo aos usuários escutar estes eventos usando a API de evento padrão do SDK.</p> - -<h2 id="Usando_a_API_Local">Usando a API Local</h2> - -<p>Primeiro, vamos escrever algun código usando a API Local que registra as URIs do favorito que o usuário adicinou.</p> - -<p>Crie uma novo diretório chamado "bookmarks", navegue até ele, e execute<code><a href="/en-US/Add-ons/SDK/Tools/jpm"> jpm init</a></code>, aceitando todos os padrões. Então abra o "index.js" e adicione o seguinte código:</p> - -<pre class="brush: js">var {Cc, Ci, Cu} = require("chrome"); -Cu.import("resource://gre/modules/XPCOMUtils.jsm", this); -var bookmarkService = Cc["@mozilla.org/browser/nav-bookmarks-service;1"] - .getService(Ci.nsINavBookmarksService); - -var bookmarkObserver = { - onItemAdded: function(aItemId, aFolder, aIndex) { - console.log("added ", bookmarkService.getBookmarkURI(aItemId).spec); - }, - onItemVisited: function(aItemId, aVisitID, time) { - console.log("visited ", bookmarkService.getBookmarkURI(aItemId).spec); - }, - QueryInterface: XPCOMUtils.generateQI([Ci.nsINavBookmarkObserver]) -}; - -exports.main = function() { - bookmarkService.addObserver(bookmarkObserver, false); -}; - -exports.onUnload = function() { - bookmarkService.removeObserver(bookmarkObserver); -} -</pre> - -<p>Tente executar este add-on, adicionando e visitando favoritos, e observando a saída no console.</p> - -<h2 id="Módulos_como_Alvos_de_Evento">Módulos como Alvos de Evento</h2> - -<p>Nós podemos adaptar esse código em módulos separados que expõe a interface de evento padrão do SDK.</p> - -<p>Para fazer isso nós usaremos o módulo <a href="/en-US/Add-ons/SDK/Low-Level_APIs/event_core"><code>event/core</code></a>.</p> - -<p>Crie um novo arquivo no "lib" chamado "bookmarks.js", e adicione o seguinte código:</p> - -<pre class="brush: js">var { emit, on, once, off } = require("sdk/event/core"); - -var {Cc, Ci, Cu} = require("chrome"); -Cu.import("resource://gre/modules/XPCOMUtils.jsm", this); -var bookmarkService = Cc["@mozilla.org/browser/nav-bookmarks-service;1"] - .getService(Ci.nsINavBookmarksService); - -var bookmarkObserver = { - onItemAdded: function(aItemId, aFolder, aIndex) { - emit(exports, "added", bookmarkService.getBookmarkURI(aItemId).spec); - }, - onItemVisited: function(aItemId, aVisitID, time) { - emit(exports, "visited", bookmarkService.getBookmarkURI(aItemId).spec); - }, - QueryInterface: XPCOMUtils.generateQI([Ci.nsINavBookmarkObserver]) -}; - -bookmarkService.addObserver(bookmarkObserver, false); - -exports.on = on.bind(null, exports); -exports.once = once.bind(null, exports); -exports.removeListener = function removeListener(type, listener) { - off(exports, type, listener); -}; -</pre> - -<p>Este código implementa um módulo que pode emitir eventos <code>added</code> e <code>visited</code>. Ele duplica o código anterior, mas com um pouco de mudanças:</p> - -<ul> - <li>importe <code>emit()</code>, <code>on()</code>, <code>once()</code>, e <code>off()</code> do <code>event/core</code></li> - <li>substitua as funções de escuta com chamadas para <code>emit()</code>, passando o tipo de evento apropriado</li> - <li>exporte sua própria API de evento. Este consiste de três funções: - <ul> - <li><code>on()</code>: inicia a escuta pelo evento ou um dado tipo</li> - <li><code>once()</code>: escuta pela ocorrência de um dado evento, e então para</li> - <li><code>removeListener()</code>: para a escuta por eventos de um dado tipo</li> - </ul> - </li> -</ul> - -<p>O <code>on()</code> e <code>once()</code> exporta delegação a uma função correspondente do <code>event/core</code>, e usa <code>bind()</code> para passar o objeto <code>exports</code> por si só como o argumento <code>target(alvo)</code> à função subjacente. A função <code>removeListener()</code> é implementada pela chamada da função subjacente <code>off()</code>.</p> - -<p>Nós podemos usar este módulo do mesmo modo que nós usamos qualquer outro módulo que emite eventos a nível de módulo, tais como <a href="/en-US/Add-ons/SDK/High-Level_APIs/tabs"><code>tabs</code></a>. Por exemplo, nós podemos adaptar o "index.js" como segue:</p> - -<pre class="brush: js">var bookmarks = require("./bookmarks"); - -function logAdded(uri) { - console.log("added: " + uri); -} - -function logVisited(uri) { - console.log("visited: " + uri); -} - -exports.main = function() { - bookmarks.on("added", logAdded); - bookmarks.on("visited", logVisited); -}; - -exports.onUnload = function() { - bookmarks.removeListener("added", logAdded); - bookmarks.removeListener("visited", logVisited); -} -</pre> - -<h2 id="Classes_como_Alvos_de_Eventos">Classes como Alvos de Eventos</h2> - -<p>Às vezes nós queremos emitir eventos à nível de objetos individuais, em vez de à nível de módulo.</p> - -<p>Para fazer isto, nós podemos herdar da classe <a href="/en-US/Add-ons/SDK/Low-Level_APIs/event_target"><code>EventTarget</code></a> do SDK. <code>EventTarget</code> fornece uma implementação das funções necessárias a adicionar e remover escutas: <code>on()</code>, <code>once()</code>, e <code>removeListener()</code>.</p> - -<p>Neste exemplo, nós poderíamos definir uma classe <code>BookmarkManager</code> que herda do <code>EventTarget</code> e emite eventos <code>added</code> e <code>visited</code>.</p> - -<p>Abra o "bookmarks.js" e substitua seu conteúdo com este código:</p> - -<pre class="brush: js">var { emit } = require("sdk/event/core"); -var { EventTarget } = require("sdk/event/target"); -var { Class } = require("sdk/core/heritage"); -var { merge } = require("sdk/util/object"); - -var {Cc, Ci, Cu} = require("chrome"); -Cu.import("resource://gre/modules/XPCOMUtils.jsm", this); -var bookmarkService = Cc["@mozilla.org/browser/nav-bookmarks-service;1"] - .getService(Ci.nsINavBookmarksService); - -function createObserver(target) { - var bookmarkObserver = { - onItemAdded: function(aItemId, aFolder, aIndex) { - emit(target, "added", bookmarkService.getBookmarkURI(aItemId).spec); - }, - onItemVisited: function(aItemId, aVisitID, time) { - emit(target, "visited", bookmarkService.getBookmarkURI(aItemId).spec); - }, - QueryInterface: XPCOMUtils.generateQI([Ci.nsINavBookmarkObserver]) - }; - bookmarkService.addObserver(bookmarkObserver, false); -} - -var BookmarkManager = Class({ - extends: EventTarget, - initialize: function initialize(options) { - EventTarget.prototype.initialize.call(this, options); - merge(this, options); - createObserver(this); - } -}); - -exports.BookmarkManager = BookmarkManager; -</pre> - -<p>O código para interagir com a API Local é o mesmo que aqui. Porém:</p> - -<ul> - <li>nós estamos agora importando de quatro módulos: - <ul> - <li><a href="/en-US/Add-ons/SDK/Low-Level_APIs/event_core"><code>event/core</code></a> nos dá <code>emit()</code>: note que nós não precisamos <code>on</code>, <code>once</code>, ou <code>off</code>, desde que nós usaremos <code>EventTarget</code> para adicionar e remover escutas</li> - <li><a href="/en-US/Add-ons/SDK/Low-Level_APIs/event_target"><code>event/target</code></a> nos dá <code>EventTarget</code>, que implementa a interface para adicionar e remover escutas</li> - <li><a href="/en-US/Add-ons/SDK/Low-Level_APIs/core_heritage"><code>core/heritage</code></a> nos dá <code>Class()</code>, que nós podemos usar para herdar do <code>EventTarget</code></li> - <li><a href="/en-US/Add-ons/SDK/Low-Level_APIs/util_object"><code>util/object</code></a> nos dá <code>merge()</code>, que apenas simplifica a configuração das propriedades do <code>BookmarkManager</code></li> - </ul> - </li> - <li>nós usamos classe para herdar do<code> EventTarget</code>. Em sua função <code>initialize()</code>, nós: - <ul> - <li><span class="short_text" id="result_box" lang="pt"><span class="hps">chamar o</span> <span class="hps">inicializador de</span> <span class="hps">classe base</span></span></li> - <li>use <code>merge()</code> para copiar qualquer opção fornecida dentro do novíssimo objeto criado</li> - <li>chama <code>createObserver()</code>, passando o novíssimo objeto criado como o alvo do evento</li> - </ul> - </li> - <li><code>createObserver()</code> é o mesmo do exemplo anterior, exceto que no <code>emit()</code> nós passamos o <code>BookmarkManager</code> criado como o alvo do evento</li> -</ul> - -<p>Para usar este alvo de evento nós podemos criar ele e chamar a funções <code>on()</code>, <code>once()</code>, e <code>removeListener()</code> que ele herdou:</p> - -<pre class="brush: js">var bookmarks = require("./bookmarks"); -var bookmarkManager = bookmarks.BookmarkManager({}); - -function logAdded(uri) { - console.log("added: " + uri); -} - -function logVisited(uri) { - console.log("visited: " + uri); -} - -exports.main = function() { - bookmarkManager.on("added", logAdded); - bookmarkManager.on("visited", logVisited); -}; - -exports.onUnload = function() { - bookmarkManager.removeListener("added", logAdded); - bookmarkManager.removeListener("visited", logVisited); -} -</pre> - -<h3 id="Implementando_uma_opção_onEvent">Implementando uma opção "onEvent"</h3> - -<p>Finalmente, a maioria dos alvos de eventos aceitam opções na forma "onEvent", onde "Event" é o nome do evento com a primeira letra em maiúsculo. Por exemplo, você pode escutar o <a href="/en-US/Add-ons/SDK/High-Level_APIs/panel#show"><code>evento show do objeto Panel</code></a> ou chamando:</p> - -<pre class="brush: js">myPanel.on("show", listenerFunction); -</pre> - -<p>ou passando a opção <code>onShow</code> para o construtor do Painel:</p> - -<pre class="brush: js">var myPanel = require("sdk/panel").Panel({ - onShow: listenerFunction, - contentURL: "https://en.wikipedia.org/w/index.php" -}); -</pre> - -<p>Se sua classe herda do <code>EventTarget</code>, opções como <code>this</code> são automaticamente manipuladas para você. Por exemplo, dada a implementação do <code>BookmarkManager</code> acima, seu "index.js" seria reescrito como isto:</p> - -<pre class="brush: js">var bookmarks = require("./bookmarks"); - -function logAdded(uri) { - console.log("added: " + uri); -} - -function logVisited(uri) { - console.log("visited: " + uri); -} - -var bookmarkManager = bookmarks.BookmarkManager({ - onAdded: logAdded, - onVisited: logVisited -}); - -exports.onUnload = function() { - bookmarkManager.removeListener("added", logAdded); - bookmarkManager.removeListener("visited", logVisited); -} -</pre> diff --git a/files/pt-br/mozilla/add-ons/sdk/tutorials/creating_reusable_modules/index.html b/files/pt-br/mozilla/add-ons/sdk/tutorials/creating_reusable_modules/index.html deleted file mode 100644 index 837583f9c8..0000000000 --- a/files/pt-br/mozilla/add-ons/sdk/tutorials/creating_reusable_modules/index.html +++ /dev/null @@ -1,253 +0,0 @@ ---- -title: Criando Módulos Reutilizáveis -slug: Mozilla/Add-ons/SDK/Tutorials/Creating_reusable_modules -tags: - - Add-on SDK -translation_of: Archive/Add-ons/Add-on_SDK/Tutorials/Creating_reusable_modules ---- -<div class="note">Para seguir este tutorial você precisa do <a href="https://developer.mozilla.org/en-US/Add-ons/SDK/Tutorials/Installation">SDK instalado</a> e conhecimento <a href="https://developer.mozilla.org/en-US/Add-ons/SDK/Tutorials/Getting_Started_With_cfx">básico de cfx</a>.</div> - -<p>Com o SDK você não precisa manter tudo em um único arquivo "main.js". Você pode separar seu código em módulos separados com interfaces claramente definidas entre eles. Você então importa e usa estes módulos de outras partes de seu add-on usando a declaração <code>require()</code>, da mesma forma que você importa os módulos core do SDK como <a href="/en-US/Add-ons/SDK/High-Level_APIs/page_mod"><code>page-mod</code></a> or <a href="/en-US/Add-ons/SDK/High-Level_APIs/panel"><code>panel</code></a>.</p> - -<p>Muitas vezes faz sentido estruturar um add-on muito grande ou complexo como uma coleção de módulos. Isso torna o desenho do add-on mais fácil de entender e fornece algum encapsulamento em que cada módulo exportará somente o que ele escolheu, então você pode mudar o módulo internamente sem quebrar seu usuário.</p> - -<p>Uma vez que você fez isso, você pode empacotar os módulos e distribui-los independentemente de seu add-on, tornando-os disponíveis para outros desenvolvedores de add-on e efetivamente extendendo o SDK.</p> - -<p>Neste tutorial faremos exatamente isso com o módulo que calcula hashes de arquivo.</p> - -<h2 id="Um_add-on_de_hashing">Um add-on de hashing</h2> - -<p>Uma função <em>hash</em> leva uma <em>string</em> de qualquer tamanho de bytes, e produz uma string curta e de tamanho fixo de bytes como saída. É um modo útil para criar um "fingerprint" que pode ser usado para identificar um arquivo. MD5 é uma função hash comumente usada: embora não seja considerada segura, ela trabalha bem desconsiderando o contexto da segurança.</p> - -<p>Aqui nós escreveremos um add-on que deixa o usuário escolher uma arquivo no disco e calcula seu hash. Para ambas operações nós usaremos as interfaces <a href="/en-US/docs/Mozilla/Tech/XPCOM">XPCOM</a>.</p> - -<h3 id="File_picker">File picker</h3> - -<p>Para deixar o usuário selecionar um arquivo nós usaremos o nsIFilePicker. A <a href="/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIFilePicker">documentação para esta interface</a> inclui um exemplo que nós podemos adaptar como este:</p> - -<pre class="brush: js">var {Cc, Ci} = require("chrome"); - -function promptForFile() { - const nsIFilePicker = Ci.nsIFilePicker; - - var fp = Cc["@mozilla.org/filepicker;1"] - .createInstance(nsIFilePicker); - - var window = require("sdk/window/utils").getMostRecentBrowserWindow(); - fp.init(window, "Select a file", nsIFilePicker.modeOpen); - fp.appendFilters(nsIFilePicker.filterAll | nsIFilePicker.filterText); - - var rv = fp.show(); - if (rv == nsIFilePicker.returnOK || rv == nsIFilePicker.returnReplace) { - var file = fp.file; - // Pega o caminho como string. Note que você normalmente não - // precisará trabalhar com strings de caminho. - var path = fp.file.path; - // Trabalhe com o retorno de nsILocalFile... - } - return path; -}</pre> - -<h3 id="Função_Hash">Função Hash</h3> - -<p>Firefox tem suporte embutido para funções hash, exposto via interface XPCOM nsICryptoHash. A <a href="/en-US/docs/XPCOM_Interface_Reference/nsICryptoHash">página da documentação para esta interface</a> inclui um exemplo de calculadora de hash MD5 do conteúdo do arquivo, dado seu caminho. Nós adaptamos como esta:</p> - -<pre class="brush: js">var {Cc, Ci} = require("chrome"); - -// retorna o código hexadecimal de dois dígitos para um byte -function toHexString(charCode) { - return ("0" + charCode.toString(16)).slice(-2); -} - -function md5File(path) { - var f = Cc["@mozilla.org/file/local;1"] - .createInstance(Ci.nsILocalFile); - f.initWithPath(path); - var istream = Cc["@mozilla.org/network/file-input-stream;1"] - .createInstance(Ci.nsIFileInputStream); - // abrindo para leitura - istream.init(f, 0x01, 0444, 0); - var ch = Cc["@mozilla.org/security/hash;1"] - .createInstance(Ci.nsICryptoHash); - // nós queremos usar o algoritmo MD5 - ch.init(ch.MD5); - // isto diz para updateFromStream ler o arquivo todo - const PR_UINT32_MAX = 0xffffffff; - ch.updateFromStream(istream, PR_UINT32_MAX); - // passe false aqui para conseguir os dados binários de volta - var hash = ch.finish(false); - - // converte o hash binário para hex string. - var s = Array.from(hash, (c, i) => toHexString(hash.charCodeAt(i))).join(""); - return s; -}</pre> - -<h3 id="Colocando_tudo_junto">Colocando tudo junto</h3> - -<p>O add-on completo adiciona um botão ao Firfox: quando o usuário clica no botão, nós pedimos lhe para selecionar um arquivo, e registramos o hash no console:</p> - -<pre class="brush: js">var {Cc, Ci} = require("chrome"); - -// retorna o código hexadecimal de dois dígitos para um byte -function toHexString(charCode) { - return ("0" + charCode.toString(16)).slice(-2); -} - -function md5File(path) { - var f = Cc["@mozilla.org/file/local;1"] - .createInstance(Ci.nsILocalFile); - f.initWithPath(path); - var istream = Cc["@mozilla.org/network/file-input-stream;1"] - .createInstance(Ci.nsIFileInputStream); - // abrindo para leitura - istream.init(f, 0x01, 0444, 0); - var ch = Cc["@mozilla.org/security/hash;1"] - .createInstance(Ci.nsICryptoHash); - // nós queremos usar o algoritmo MD5 - ch.init(ch.MD5); - // isto diz para updateFromStream ler o arquivo todo - const PR_UINT32_MAX = 0xffffffff; - ch.updateFromStream(istream, PR_UINT32_MAX); - // passe false aqui para conseguir os dados binários de volta - var hash = ch.finish(false); - - // converte o hash binário para hex string. - var s = Array.from(hash, (c, i) => toHexString(hash.charCodeAt(i))).join(""); - return s; -} - -function promptForFile() { - var window = require("sdk/window/utils").getMostRecentBrowserWindow(); - const nsIFilePicker = Ci.nsIFilePicker; - - var fp = Cc["@mozilla.org/filepicker;1"] - .createInstance(nsIFilePicker); - fp.init(window, "Select a file", nsIFilePicker.modeOpen); - fp.appendFilters(nsIFilePicker.filterAll | nsIFilePicker.filterText); - - var rv = fp.show(); - if (rv == nsIFilePicker.returnOK || rv == nsIFilePicker.returnReplace) { - var file = fp.file; - // Pega o caminho como string. Note que você normalmente não - // precisará trabalhar com strings de caminho. - var path = fp.file.path; - // Trabalhe com o retorno de nsILocalFile... - } - return path; -} - -require("sdk/ui/button/action").ActionButton({ - id: "show-panel", - label: "Show Panel", - icon: { - "16": "./icon-16.png" - }, - onClick: function() { - console.log(md5File(promptForFile())); - } -}); -</pre> - -<p>Isso funciona, mas main.js está agora ficando mais longo e sua lógica mais difícil de entender. This works , but main.js is now getting longer and its logic is harder to understand. Vamos levar os códigos do "file picker" e do "hashing code" para módulos separados.</p> - -<h2 id="Criando_módulos_separados">Criando módulos separados</h2> - -<h3 id="filepicker.js">filepicker.js</h3> - -<p>Primeiro criamos um novo arquivo no diretório "lib" chamado "filepicker.js". Copiamos o código do seletor de arquivos, e adicionamos a seguinte linha de código no fim dele:</p> - -<pre class="brush: js">exports.promptForFile = promptForFile; -</pre> - -<p>Isso define a interface pública do novo módulo.</p> - -<p>Então "filepicker.js" deve parecer com isto:</p> - -<pre class="brush: js">var {Cc, Ci} = require("chrome"); - -function promptForFile() { - var window = require("sdk/window/utils").getMostRecentBrowserWindow(); - const nsIFilePicker = Ci.nsIFilePicker; - - var fp = Cc["@mozilla.org/filepicker;1"] - .createInstance(nsIFilePicker); - fp.init(window, "Select a file", nsIFilePicker.modeOpen); - fp.appendFilters(nsIFilePicker.filterAll | nsIFilePicker.filterText); - - var rv = fp.show(); - if (rv == nsIFilePicker.returnOK || rv == nsIFilePicker.returnReplace) { - var file = fp.file; - // Get the path as string. Note that you usually won't - // need to work with the string paths. - var path = fp.file.path; - // work with returned nsILocalFile... - } - return path; -} - -exports.promptForFile = promptForFile; -</pre> - -<h3 id="md5.js">md5.js</h3> - -<p>Próximo, crie um outro arquivo no "lib", chamado "md5.js". Copie o código do hashing, e adicione esta linha ao seu fim:</p> - -<pre class="brush: js">exports.hashFile = md5File;</pre> - -<p>O arquivo completo parece com isto:</p> - -<pre class="brush: js">var {Cc, Ci} = require("chrome"); - -//retorna o código hexadecimal de dois dígitos para um byte -function toHexString(charCode) { - return ("0" + charCode.toString(16)).slice(-2); -} - -function md5File(path) { - var f = Cc["@mozilla.org/file/local;1"] - .createInstance(Ci.nsILocalFile); - f.initWithPath(path); - var istream = Cc["@mozilla.org/network/file-input-stream;1"] - .createInstance(Ci.nsIFileInputStream); - // abrindo para leitura - istream.init(f, 0x01, 0444, 0); - var ch = Cc["@mozilla.org/security/hash;1"] - .createInstance(Ci.nsICryptoHash); - // nós queremos usar o algoritmo MD5 - ch.init(ch.MD5); - // isto diz para updateFromStream ler o arquivo todo - const PR_UINT32_MAX = 0xffffffff; - ch.updateFromStream(istream, PR_UINT32_MAX); - // passe false aqui para conseguir os dados binários de volta - var hash = ch.finish(false); - - // converte o hash binário para hex string. - var s = Array.from(hash, (c, i) => toHexString(hash.charCodeAt(i))).join(""); - return s; -} - -exports.hashFile = md5File;</pre> - -<h3 id="main.js">main.js</h3> - -<p>Finalmente, atualizamos o main.js para importar estes dois módulos e usá-los:</p> - -<pre class="brush: js">var filepicker = require("./filepicker.js"); -var md5 = require("./md5.js"); - -require("sdk/ui/button/action").ActionButton({ - id: "show-panel", - label: "Show Panel", - icon: { - "16": "./icon-16.png" - }, - onClick: function() { - console.log(md5.hashFile(filepicker.promptForFile())); - } -});</pre> - -<p>Você pode distribuir estes módulos para outros desenvolvedores, também. Eles podem copia-los em algum lugar do add-on, e inclui-los usando <code>require()</code> do mesmo modo.</p> - -<h3 id="Aprendendo_Mais">Aprendendo Mais</h3> - -<p>Para ver alguns módulos que as pessoas já desenvolveram, veja a página <a href="https://github.com/mozilla/addon-sdk/wiki/Community-developed-modules">community-developed</a>. Para aprender como usar módulos de terceiros em seu próprio código, veja o tutorial<a href="/en-US/Add-ons/SDK/Tutorials/Add_a_Menu_Item_to_Firefox"> adicionando itens de menu</a>.</p> diff --git a/files/pt-br/mozilla/add-ons/sdk/tutorials/getting_started_(jpm)/index.html b/files/pt-br/mozilla/add-ons/sdk/tutorials/getting_started_(jpm)/index.html deleted file mode 100644 index 9190e825ab..0000000000 --- a/files/pt-br/mozilla/add-ons/sdk/tutorials/getting_started_(jpm)/index.html +++ /dev/null @@ -1,155 +0,0 @@ ---- -title: Começando (jpm) -slug: Mozilla/Add-ons/SDK/Tutorials/Getting_Started_(jpm) -tags: - - Add-on SDK - - JPM -translation_of: Archive/Add-ons/Add-on_SDK/Tutorials/Getting_Started_(jpm) ---- -<div class="note"> -<p>O Add-on SDK inclui uma ferramenta de linha de comando que você usa para inicializar, executar, testar, e empacotar add-ons. A ferramenta de linha de comando atual é chamada de jpm, e é baseada no <a href="http://nodejs.org/">Node.js</a>. Ela substitui a ferramenta antiga cfx.</p> - -<p>Você pode usar o jpm do Firefox 38 em diante.</p> - -<p>Este artigo descreve como desenvolver usando jpm.</p> -</div> - -<p>Este tutorial ensina a criação de uma add-on simples usando o SDK.</p> - -<h2 id="Pré-requisitos"><span class="short_text" id="result_box" lang="pt"><span class="hps">Pré-requisitos</span></span></h2> - -<p>Para criar add-ons para Firefox usando o SDK, você precisará:</p> - -<ul> - <li>Firefox versão 38 ou anteriores. Se você precisar trabalhar com versões anteriores do Firefox, você precisará usar a ferramenta cfx. Veja as instruções em <a href="/en-US/Add-ons/SDK/Tutorials/Getting_started">getting started with cfx</a>.</li> - <li>a ferramenta de linha de comando jpm. Veja instruções para <a href="https://developer.mozilla.org/en-US/Add-ons/SDK/Tools/jpm#Installation">instalação do jpm</a>. Uma vez que você fez isso, <span class="short_text" id="result_box" lang="pt"><span class="hps">você vai</span> <span class="hps">estar a olhar para</span> <span class="hps">um prompt de comando</span><span>.</span></span></li> -</ul> - -<h2 id="Inicializando_um_add-on_vazio">Inicializando um add-on vazio</h2> - -<p>No promp de comando, crie um novo diretório. Navegue até ele, digite <code>jpm init</code>, e tecle enter:</p> - -<pre>mkdir my-addon -cd my-addon -jpm init -</pre> - -<p>Você será instado à fornecer algumas informações para seu add-on: isso será usado para criar o arquivo <a href="/en-US/Add-ons/SDK/Tools/package_json">package.json</a> do seu add-on. Por enquanto, apenas pressione enter para aceitar o padrão para cada propriedade. Para mais informação sobre <code>jpm init</code>, veja o <a href="/en-US/Add-ons/SDK/Tools/jpm#Command_reference">jpm command reference</a>.</p> - -<p>Uma vez que você forneceu um valor ou aceitou o padrão para estas propriedades, será apresentado a você o conteúdo completo do "package.json" e instado a aceitá-lo.</p> - -<h2 id="Implementando_o_add-on">Implementando o add-on</h2> - -<p>Agora você pode escrever o código do add-on. A menos que você mudou o valor de entrada ("main" no package.json), ele vai no arquivo "index.js" na raiz de seu add-on. Este arquivo foi criado para você no passo anterior. Abra-o e adicione o seguinte código:</p> - -<pre class="brush: js">var buttons = require('sdk/ui/button/action'); -var tabs = require("sdk/tabs"); - -var button = buttons.ActionButton({ - id: "mozilla-link", - label: "Visit Mozilla", - icon: { - "16": "./icon-16.png", - "32": "./icon-32.png", - "64": "./icon-64.png" - }, - onClick: handleClick -}); - -function handleClick(state) { - tabs.open("http://www.mozilla.org/"); -} -</pre> - -<div class="note"> -<p>Note que os "pontos de entrada" padrões para "index.js" no jpm, signifca que seu arquivo principal é "index.js", e é encontrado diretamente na raiz do seu add-on.</p> - -<p>No cfx, o ponto de entrada padrão para "main.js", e é localizado no diretório "lib" na raiz no add-on.</p> -</div> - -<p>Salve o arquivo.</p> - -<p>Próximo, crie um diretório chamado "data" na raiz do add-on, e salve estes três ícones no diretório "data":</p> - -<table class="standard-table"> - <tbody> - <tr> - <td><img alt="" src="https://mdn.mozillademos.org/files/7635/icon-16.png" style="height: 16px; width: 16px;"></td> - <td>icon-16.png</td> - </tr> - <tr> - <td><img alt="" src="https://mdn.mozillademos.org/files/7637/icon-32.png" style="height: 32px; width: 32px;"></td> - <td>icon-32.png</td> - </tr> - <tr> - <td><img alt="" src="https://mdn.mozillademos.org/files/7639/icon-64.png" style="height: 64px; width: 64px;"></td> - <td>icon-64.png</td> - </tr> - </tbody> -</table> - -<p>Volte ao promp de comando, digite:</p> - -<pre>jpm run</pre> - -<p>Este é o comando jpm para executar uma nova instância do Firefox com seu add-on instalado.</p> - -<p>Quando o Firefox lança, no canto superior direito do navegador você verá um ícone com o logotipo do Firefox. Clique no ícone, e uma nova tab abrirá com o site <a href="http://www.mozilla.org/" rel="noreferrer">http://www.mozilla.org/</a> carregado.</p> - -<p>Isso é tudo que este add-on faz. Ele usa dois módulos SDK: o módulo <a href="/en-US/Add-ons/SDK/Low-Level_APIs/ui_button_action">action button</a>, que lhe permite adicionar botões ao navegador, e o módulo tab, que lhe permite executar operações básicas com o módulo <a href="/en-US/Add-ons/SDK/High-Level_APIs/tabs" rel="noreferrer">tabs</a>. Neste caso, nós criamos um botão cujo ícone é o ícone do Firefox, e adicionamos um manipulado de click que carrega a página do Mozilla na nova tab.</p> - -<p><img alt="" src="https://mdn.mozillademos.org/files/7643/mozilla-button.png" style="display: block; height: 221px; margin-left: auto; margin-right: auto; width: 382px;">Tente editar este arquivo. Por exemplo, nós poderíamos mudar a página que está sendo carregada:</p> - -<pre class="brush: js">var buttons = require('sdk/ui/button/action'); -var tabs = require("sdk/tabs"); - -var button = buttons.ActionButton({ - id: "mozilla-link", - label: "Visit Mozilla", - icon: { - "16": "./icon-16.png", - "32": "./icon-32.png", - "64": "./icon-64.png" - }, - onClick: handleClick -}); - -function handleClick(state) { - tabs.open("https://developer.mozilla.org/"); -}</pre> - -<p>No promp de comando, execute <code>jpm run</code> novamente. Desta vez clicando lhe levará para <a href="https://developer.mozilla.org/">https://developer.mozilla.org/</a>.</p> - -<h2 id="Empacotando_o_add-on">Empacotando o add-on</h2> - -<p>Quando você terminou o add-on e estiver preparado para distribui-lo, você precisará empacotá-lo como um arquivo XPI. Esta é a forma instalável dos add-ons do Firefox. Você pode distribuir os arquivos XPI por si mesmo ou publicá-los em <a href="https://addons.mozilla.org" rel="noreferrer">https://addons.mozilla.org</a> então outros usuários podem baixar eles.</p> - -<p>Para construir um XPI, apenas execute o comando <code>jpm xpi</code> do diretório do add-on:</p> - -<pre>jpm xpi -</pre> - -<p>Você deveria ver uma mensagem como:</p> - -<pre>JPM info Successfully created xpi at /path/to/getting-started/@getting-started.xpi -</pre> - -<p>Para testar que isso funciona, tente instalar o arquivo XPI em sua própria instalação do Firefox. Você pode fazer isso pressionando a combinação de teclas Ctrl+O (Cmd+O no Mac) de dentro do Firefox, ou selecionando o menu "Open" do menu "Arquivo" do Firefox. Isso trará uma caixa de diálogo de seleção de arquivo: navegue para o arquivo "@getting-started.xpi", abra-o e siga o prompt para instalar o add-on.</p> - -<h2 id="Resumo">Resumo</h2> - -<p>Neste tutorial nós construímos e empacotamos um add-on usando três comandos:</p> - -<ul> - <li><code>jpm init</code> para inicializar um modelo de add-on vazio</li> - <li><code>jpm run</code> para executar uma nova instância do Firefox com o add-on instalado, então nós testamos ele</li> - <li><code>jpm xpi</code> para empacotar o add-on em um arquivo XPI para distribuição</li> -</ul> - -<p>Há três comandos principais que você usará quando desenvolvendo add-ons com SDK. Há documentação abrangente no <a href="/en-US/Add-ons/SDK/Tools/jpm" rel="noreferrer">reference documentation</a> cobrindo todos os comandos que você pode usar e todas as opções que eles levam.</p> - -<p>O código do add-on por si usa dois módulos SDK, <a href="/en-US/Add-ons/SDK/Low-Level_APIs/ui_button_action">action button</a> e <a href="/en-US/Add-ons/SDK/High-Level_APIs/tabs" rel="noreferrer">tabs</a>. Há documentação de referência para todas as APIS do SDK tanto as de <a href="/en-US/Add-ons/SDK/High-Level_APIs" rel="noreferrer">alto nível</a> quanto as de <a href="/en-US/Add-ons/SDK/Low-Level_APIs" rel="noreferrer">baixo nível</a>.</p> - -<h2 id="O_que_vem_agora">O que vem agora?</h2> - -<p>Para ter uma ideia das coisas que você pode fazer com as APIs do SDK, tente trabalhar com alguns dos <a href="/en-US/Add-ons/SDK/Tutorials" rel="noreferrer">tutoriais</a>.</p> diff --git a/files/pt-br/mozilla/add-ons/sdk/tutorials/index.html b/files/pt-br/mozilla/add-ons/sdk/tutorials/index.html deleted file mode 100644 index 6d5484bc46..0000000000 --- a/files/pt-br/mozilla/add-ons/sdk/tutorials/index.html +++ /dev/null @@ -1,144 +0,0 @@ ---- -title: Tutoriais -slug: Mozilla/Add-ons/SDK/Tutorials -tags: - - Add-on SDK -translation_of: Archive/Add-ons/Add-on_SDK/Tutorials ---- -<p>Esta página lista artigos úteis e práticos sobre como executar tarefas específicas usando o SDK.</p> - -<hr> -<h3 id="Começando">Começando</h3> - -<div class="column-container"> -<div class="column-half"> -<dl> - <dt><a href="/en-US/Add-ons/SDK/Tutorials/Installation">Instalação</a></dt> - <dd>Download, instalar, e inicializar o SDK no Windows, OS X e Linux.</dd> -</dl> - -<dl> - <dt><a href="/en-US/Add-ons/SDK/Tutorials/Troubleshooting">Solução de problemas </a></dt> - <dd>Algumas dicas para resolver problemas comuns e conseguir mais ajuda.</dd> -</dl> -</div> - -<div class="column-half"> -<dl> - <dt><a href="https://developer.mozilla.org/pt-BR/docs/Mozilla/Add-ons/SDK/Tutorials/Come%C3%A7ando">Começando </a></dt> - <dd>Criação passo-a-passo de um add-on simples com o SDK.</dd> -</dl> -</div> -</div> - -<hr> -<h3 id="Criando_interfaces_de_usuário"><a name="create-user-interfaces">Criando interfaces de usuário</a></h3> - -<div class="column-container"> -<div class="column-half"> -<dl> - <dt><a href="https://developer.mozilla.org/pt-BR/docs/Mozilla/Add-ons/SDK/Tutorials/Adding_a_Button_to_the_Toolbar">Adicionando um botão de barra de ferramenta</a></dt> - <dd>Anexe um botão à barra de ferramentas de add-on do Firefox.</dd> - <dt><a href="https://developer.mozilla.org/pt-BR/docs/Mozilla/Add-ons/SDK/Tutorials/Adicionar_uma_item_de_menu_ao_Firefox">Adicione um item de menu ao Firefox</a></dt> - <dd>Adicione itens ao menu principal do Firefox.</dd> -</dl> -</div> - -<div class="column-half"> -<dl> - <dt><a href="https://developer.mozilla.org/pt-BR/docs/Mozilla/Add-ons/SDK/Tutorials/Mostrar_um_Popup">Mostre um popup</a></dt> - <dd>Mostre um diálogo popup implementado com HTML e JavaScript.</dd> - <dt><a href="https://developer.mozilla.org/pt-BR/docs/Mozilla/Add-ons/SDK/Tutorials/Adicione_um_Item_ao_Menu_de_Contexto">Adicione um item ao menu de contexto</a></dt> - <dd>Adicione itens ao menu de contexto do Firefox.</dd> -</dl> -</div> -</div> - -<hr> -<h3 id="Interagindo_com_o_navegador"><a name="interact-with-the-browser">Interagindo com o navegador</a></h3> - -<div class="column-container"> -<div class="column-half"> -<dl> - <dt><a href="https://developer.mozilla.org/pt-BR/docs/Mozilla/Add-ons/SDK/Tutorials/Abra_uma_P%C3%A1gina_Web">Abra uma página</a></dt> - <dd>Abra uma página web em um novo navegador ou janela usando o módulo tabs, e acesse seu conteúdo.</dd> - <dt><a href="https://developer.mozilla.org/pt-BR/docs/Mozilla/Add-ons/SDK/Tutorials/captura_de_carregamento_da_pagina">Observando páginas carregadas</a></dt> - <dd>Use o módulo tabs para conseguir notificação quando novas páginas são carregadas, e acesse seu conteúdo.</dd> -</dl> -</div> - -<div class="column-half"> -<dl> - <dt><a href="https://developer.mozilla.org/pt-BR/docs/Mozilla/Add-ons/SDK/Tutorials/Lista_de_Tabs_Abertas">Capturando a lista de tabs abertas</a></dt> - <dd>Use o módulo tab para interagir pelas tabs atualmente abertas, e acesse seu conteúdo.</dd> -</dl> -</div> -</div> - -<hr> -<h3 id="Modificando_páginas_web"><a name="modify-web-pages">Modificando páginas web</a></h3> - -<div class="column-container"> -<div class="column-half"> -<dl> - <dt><a href="/en-US/Add-ons/SDK/Tutorials/Modifying_Web_Pages_Based_on_URL">Modificar páginas web baseado na URL</a></dt> - <dd>Crie um filtro para páginas web baseado em sua URL: sempre que uma página web cuja URL combinar com o filtro carregado, executa um script espeficado nela.</dd> -</dl> -</div> - -<div class="column-half"> -<dl> - <dt><a href="/en-US/Add-ons/SDK/Tutorials/Modifying_the_Page_Hosted_by_a_Tab">Modificar a página web ativa</a></dt> - <dd>Carrega dinamicamente um script dentro da página web ativa atualmente.</dd> -</dl> -</div> -</div> - -<hr> -<h3 id="Técnicas_de_desenvolvimento"><a name="development-techniques">Técnicas de desenvolvimento</a></h3> - -<div class="column-container"> -<div class="column-half"> -<dl> - <dt><a href="/en-US/Add-ons/SDK/Tutorials/Logging">Restro de log</a></dt> - <dd>Registra mensagens para o console para propósito de diagnóstico.</dd> - <dt><a href="/en-US/Add-ons/SDK/Tutorials/Creating_reusable_modules">Criando módulos reutilizáveis</a></dt> - <dd>Estruture seu add-on em módulos separados deixando mais fácil o desenvolvimento, depuração e manutenção. Crie pacotes reutilizáveis contendo seus módulos, assim outros desenvolvedores de add-on podem usá-los também.</dd> - <dt><a href="/en-US/Add-ons/SDK/Tutorials/Unit_testing">Teste de unidade </a></dt> - <dd>Escrevendo e executando teste de unidade usando framework de teste do SDK.</dd> - <dt><a href="/en-US/Add-ons/SDK/Tutorials/Chrome_authority">Chrome authority </a></dt> - <dd>Conseguindo acesso ao objeto Components, permitindo a seu add-on carregar e usar qualquer objeto XPCOM.</dd> - <dt><a href="/en-US/Add-ons/SDK/Tutorials/Creating_event_targets">Criando event targets </a></dt> - <dd>Permite aos objeto que você define emitir seus próprios eventos.</dd> -</dl> -</div> - -<div class="column-half"> -<dl> - <dt><a href="/en-US/Add-ons/SDK/Tutorials/Listening_for_load_and_unload">Observando load e unload </a></dt> - <dd>Receba notificações quando seu add-on é caregado ou descarregado pelo Firefox, e passa argumentos do seu add-on a partir da linha de comando.</dd> - <dt><a href="/en-US/Add-ons/SDK/Tutorials/Add_a_Menu_Item_to_Firefox">Usando módulos de terceiros</a></dt> - <dd>Instale e use módulos adicionais que não são fornecidos com o SDK.</dd> - <dt><a href="/en-US/Add-ons/SDK/Tutorials/l10n">Localização </a></dt> - <dd>Escrever código localizável.</dd> - <dt><a href="/en-US/Add-ons/SDK/Tutorials/Mobile_development">Desenvolvimento mobile</a></dt> - <dd>Develop add-ons for Firefox Mobile on Android.</dd> - <dt><a href="/en-US/Add-ons/Add-on_Debugger">Depuração do Add-on</a></dt> - <dd>Depure o JavaScript do seu add-on.</dd> -</dl> -</div> -</div> - -<hr> -<h3 id="Colocando_tudo_junto"><a name="putting-it-together">Colocando tudo junto</a></h3> - -<div class="column-container"> -<div class="column-half"> -<dl> - <dt><a href="/en-US/Add-ons/SDK/Tutorials/Annotator">Add-on Annotator</a></dt> - <dd>Um guia para um add-on relativamente complexo.</dd> -</dl> -</div> -</div> - -<p> </p> diff --git a/files/pt-br/mozilla/add-ons/sdk/tutorials/l10n/index.html b/files/pt-br/mozilla/add-ons/sdk/tutorials/l10n/index.html deleted file mode 100644 index 4a762bda9b..0000000000 --- a/files/pt-br/mozilla/add-ons/sdk/tutorials/l10n/index.html +++ /dev/null @@ -1,380 +0,0 @@ ---- -title: Localização -slug: Mozilla/Add-ons/SDK/Tutorials/l10n -tags: - - Add-on SDK - - Localização -translation_of: Archive/Add-ons/Add-on_SDK/Tutorials/l10n ---- -<p>O SDK suporta localização de strings que aparecem no:</p> - -<ul> - <li><a href="/en-US/Add-ons/SDK/Tutorials/l10n#Using_Localized_Strings_in_JavaScript">o código JavaScript principal do seu add-on</a></li> - <li><a href="/en-US/Add-ons/SDK/Tutorials/l10n#Using_Localized_Strings_in_HTML">arquivos HTML empacotados com seu add-on</a></li> - <li><a href="/en-US/Add-ons/SDK/Tutorials/l10n#Using_Localized_Strings_in_Preferences">os campos <code>title</code> e <code>description</code> das preferências do seu add-on's</a>.</li> -</ul> - -<p>Ele, ainda, não suporta localização de conteúdo CSS ou Scripts.</p> - -<h2 id="Strings_de_Localização">Strings de Localização</h2> - -<p>Strings traduzidas são mantidas em um diretório chamado "locale" no diretório principal do seu add-on, um arquivo para cada locale. Os arquivos:</p> - -<ul> - <li>use o formato <a href="http://en.wikipedia.org/wiki/.properties"><code>.properties</code></a></li> - <li>são chamados "xx-YY.properties", onde "xx-YY" é o nome da<a href="https://wiki.mozilla.org/L10n:Locale_Codes"> localidade</a> em questão</li> - <li>contém uma entrada para cada string que você quer localizar, consistindo de um identificador para a string e sua tradução para aquela localidade, no formado <code>identificador=tradução</code>.</li> - <li>precisa usar UTF-8 sem codificação BOM</li> -</ul> - -<p>Suponha que seu add-on contém uma única string localizável, representada em Inglês como "Hello!", e você quer suprir com localizações US English e Francês.</p> - -<p>Você adiciona dois arquivos ao diretório "locale":</p> - -<pre>my-addon/ - data - lib - locale/ - en-US.properties - fr-FR.properties -</pre> - -<p>"en-US.properties" contém isto:</p> - -<pre>hello_id= Hello! -</pre> - -<p>"fr-FR.properties" contém isto:</p> - -<pre>hello_id= Bonjour ! -</pre> - -<p>Agora que sempre que em seu código JavaScript ou HTML pedir ao sistema de localização pela tradução do identificador <code>hello_id</code>, ele pegará a tradução correta para a localidade atual.</p> - -<h2 id="Usando_Strings_de_Localização_no_HTML">Usando Strings de Localização no HTML</h2> - -<div class="note"> -<p>Este exemplo usa a API <a href="https://developer.mozilla.org/en-US/Add-ons/SDK/Low-Level_APIs/ui_button_action">action button</a>, que está disponível somente do Firefox 29 em diante.</p> -</div> - -<p>Para referenciar uma string localizada do HTML, adicione um atributo <code>data-l10n-id</code> à tag HTML onde você quiser que a string localizada apareça, e atribua o identificador a ele:</p> - -<pre class="brush: html"><html> - <body> - <h1 data-l10n-id="hello_id"></h1> - </body> -</html> -</pre> - -<p>Então você pode usar o arquivo HTML para construir sua interface, por exemplo dentro de um painel:</p> - -<pre class="brush: js">var button = require("sdk/ui/button/action").ActionButton({ - id: "localized-hello", - label: "Localized hello", - icon: "./icon-16.png", - onClick: function() { - hello.show(); - } -}); - -var hello = require("sdk/panel").Panel({ - height: 75, - width: 150, - contentURL: require("sdk/self").data.url("my-panel.html") -});</pre> - -<p>Dados os arquivos locale para "en-US" e "fr-FR" que fornece uma tradução para o <code>hello_id</code>, o painel agora mostrará o "Hello!" ou "Bonjour !", de acordo com a localidade atual:</p> - -<p><img alt="" src="https://mdn.mozillademos.org/files/7663/bonjour.png" style="height: 160px; width: 255px;"><img alt="" src="https://mdn.mozillademos.org/files/7665/hello.png" style="height: 160px; width: 255px;"></p> - -<p>A tradução é inserida dentro do nó que tem o atributo<code> data-l10n-id</code>. Qualquer conteúdo anteriormente existente é substituído.</p> - -<p>A string é inserida como texto, então você não pode inserir HTML usando declarações como:</p> - -<pre>hello_id= <blink>Hello!</blink> -</pre> - -<h3 id="Localizando_Atributos_de_Elementos">Localizando Atributos de Elementos</h3> - -<div class="geckoVersionNote">Esta característica é nova no Firefox 39</div> - -<p><br> - Você pode localizar certos atributos de elementos com um l10n-id configurando seu valor com o l10-id.attributeName no arquivo da propriedade como isto:</p> - -<pre>hello_id.accesskey= H</pre> - -<p>Os seguintes atributos são suportados:</p> - -<ul> - <li><strong>accesskey</strong></li> - <li><strong>alt</strong></li> - <li><strong>label</strong></li> - <li><strong>title</strong></li> - <li><strong>placeholder</strong></li> -</ul> - -<p><span id="result_box" lang="pt"><span class="hps">Além disso, a</span> <span class="hps">localização do</span>s atributos <span class="hps">ARIA</span> <span class="hps">aria</span><span>-label,</span> <span class="hps">aria</span><span class="atn">-</span><span>valuetext</span> <span class="hps">e</span> <span class="hps">aria</span><span class="atn">-</span><span>moz</span><span class="atn">-</span><span>dica</span> <span class="hps">são suportados</span> <span class="hps">com os mesmos</span> apelidos que <span class="hps">no</span> <span class="hps">Firefox</span> <span class="hps">OS</span><span>:</span></span></p> - -<ul> - <li><strong>ariaLabel</strong></li> - <li><strong>ariaValueText</strong></li> - <li><strong>ariaMozHint</strong></li> -</ul> - -<h2 id="Usando_Strings_de_Localização_no_JavaScript">Usando Strings de Localização no JavaScript</h2> - -<p>Para referenciar Strings de Localização do código principal do seu add-on, você faz isso:</p> - -<pre class="brush: js">var _ = require("sdk/l10n").get; -console.log(_("hello_id!"));</pre> - -<p><span>A atribuição de "_" em particular não é requerida, mas é uma convenção da ferramente <a href="https://www.gnu.org/software/gettext/gettext.html">gettext </a>e torna possível trabalhar com ferramentas existentes que esperam "_" para indicar Strings de Localização.</span></p> - -<ol> - <li>Importe o módulo <code>l10n</code>, atribua sua função <code>get</code> o "<code>_</code>" (underscore).</li> - <li>Envolva todas as referências a Strings de Localização com uma função <code>_()</code>.</li> -</ol> - -<p>Se você executar ela você verá a saída esperada para a localidade atual:</p> - -<pre>info: Hello! -</pre> - -<pre>info: Bonjour ! -</pre> - -<p>Observe que você não pode <code>require()</code> módulos nos scripts de conteúdo, você ainda não pode referenciar strings de localização nos scripts de conteúdo.</p> - -<h3 id="Plurais">Plurais</h3> - -<p>O módulo <code>l10n</code> suporta formas plurais. Diferentes línguas tem diferentes regras para formação de plurais. Por exemplo, Inglês tem duas formas: uma forma singular para "one", e uma forma plural para "everything else, including zero":</p> - -<pre>one tomato -no tomatoes -two tomatoes -</pre> - -<p>Mas a Russa tem diferentes formas para números terminados em 1 (exceto 11), números terminados em 2-4 (exceto 12-14) e outros números:</p> - -<pre>один помидор // one tomato -два помидора // two tomatoes -пять помидоров // five tomatoes -</pre> - -<p>O SDK usa dados do <a href="http://cldr.unicode.org/index">Unicode CLDR</a> para descrever as diferentes formas de plural usadas pelas diferentes línguas.</p> - -<h4 id="Formas_Plurais_do_Unicode_CLDR">Formas Plurais do Unicode CLDR</h4> - -<p>O projeto Unicode CLDR define um esquema que descreve a regras de plural de uma língua em particular. Neste esquema uma língua mapeia cada abrangência distinta de números para um ou mais formas, identificado pelas categorias: <em>zero, one, two, few, many, </em>e <em>other</em>.</p> - -<p>Inglês tem duas formas, que podem ser descritas pelo mapeamento "1" para "one" e "everything else" para "other":</p> - -<pre>one → n is 1; -other → everything else -</pre> - -<p>A Russa usa quatro formas, que podem ser descritas como se segue:</p> - -<pre>one → n mod 10 is 1 and n mod 100 is not 11; -few → n mod 10 in 2..4 and n mod 100 not in 12..14; -many → n mod 10 is 0 or n mod 10 in 5..9 or n mod 100 in 11..14; -other → everything else -</pre> - -<p>As regras de plural para todas as línguas podem ser encontrada na página de <a href="http://unicode.org/repos/cldr-tmp/trunk/diff/supplemental/language_plural_rules.html">Regras para Plural das Línguas</a> do CLDR (embora esta tabela esteja desatualizada se comparada com a <a href="http://unicode.org/repos/cldr/trunk/common/supplemental/plurals.xml">CLDR XML source</a>).</p> - -<h4 id="Formas_Plurais_no_SDK">Formas Plurais no SDK</h4> - -<p>No código, você fornece uma parâmetro extra ao lado do identificador, descrevendo quantos itens há:</p> - -<pre class="brush: js">var _ = require("sdk/l10n").get; -console.log(_("tomato_id")); -console.log(_("tomato_id", 1)); -console.log(_("tomato_id", 2)); -console.log(_("tomato_id", 5)); -console.log(_("tomato_id", .5));</pre> - -<p>No arquivo <code>.properties</code> para cada língua você pode definir uma localização diferente para cada forma de plural possível naquela língua, usando palavras reservadas do CLDR. Então no Inglês nós teríamos duas localizações de plural (observe que a categoria "other" <strong>não</strong> leva palavra reservada do CLDR:</p> - -<pre># en-US translations -tomato_id[one]= %d tomato -tomato_id= %d tomatoes -</pre> - -<p>Na Russa nós teríamos quatro localizações de plural:</p> - -<pre># ru-RU translations -tomato_id[one]= %d помидор -tomato_id[few]= %d помидора -tomato_id[many]= %d помидоров -tomato_id= %d помидоры -</pre> - -<p>O módulo de localização por si só entende as definições CLDR para cada língua, permitindo a ele mapear, por exemplo, "2" no código e "few" no arquivo <code>ru-RU.properties</code>. Então ele pega e retorna a localização apropriada para a contagem fornecida.</p> - -<h3 id="Placeholders">Placeholders</h3> - -<p>O módulo <code>l10n</code> suporta placeholders, permitindo a você inserir uma string que não deveria ser localizada em uma que é. Os seguintes arquivos "en-US" e "fr-FR" ".properties" estão incluídos placeholders:</p> - -<pre># en-US translations -hello_id= Hello <strong>%s</strong>! -</pre> - -<pre># fr-FR translations -hello_id= Bonjour <strong>%s</strong> ! -</pre> - -<p>Para usar placeholders, forneça uma string placeholder depois do identificador:</p> - -<pre class="brush: js">var _ = require("sdk/l10n").get; -console.log(_("hello_id", "Bob")); -console.log(_("hello_id", "Alice"));</pre> - -<p>Na localidade Inglês "en-US", isto nos é dado:</p> - -<pre>info: Hello Bob! -info: Hello Alice! -</pre> - -<p>No "fr-FR" nós conseguimos:</p> - -<pre>info: Bonjour Bob ! -info: Bonjour Alice ! -</pre> - -<h3 id="Ordenando_Placeholders">Ordenando Placeholders</h3> - -<p>Quando strings localizáveis podem levar dois ou mais placeholders, tradutores podem definir a ordem em que placeholders são inseridos, sem afetar o código.</p> - -<p>Primeiramente, isto é importante porque diferentes línguas tem regras diferentes para ordernar palavras. Mesmo dentro de uma mesma língua, embora traduzida, tradutores deve ter liberdade para definir a ordem.</p> - -<p>Por exemplo, suponha que nós queremos incluir uma string de localização designando a cidade de uma pessoa. Há dois placeholders: o nome da pessoa e o nome da cidade em que ela reside:</p> - -<pre class="brush: js">var _ = require("sdk/l10n").get; -console.log(_("home_town_id", "Bob", "London"));</pre> - -<p>An English translator might want to choose between the following:</p> - -<pre>"<town_name> is <person_name>'s home town." -</pre> - -<pre>"<person_name>'s home town is <town_name>" -</pre> - -<p>Para escolher a primeira opção, o arquivo<code> .properties</code> pode ordenar o placeholders como:</p> - -<pre>home_town_id= %2s is %1s's home town. -</pre> - -<p>Isso nos dá a seguinte saída:</p> - -<pre>info: London is Bob's home town. -</pre> - -<h2 id="Usando_Strings_de_localização_em_Preferências">Usando Strings de localização em Preferências</h2> - -<p>Pela inclusão de uma estrutura <a href="/en-US/Add-ons/SDK/High-Level_APIs/simple-prefs"><code>"preferences"</code> no arquivo "package.json" do seu add-on</a>, você pode definir preferências para seu add-on que o usuário pode ver e editar usando o <a href="https://support.mozilla.org/en-US/kb/Using%20extensions%20with%20Firefox#w_how-to-change-extension-settings">gerenciador de add-ons </a>do Firefox.</p> - -<p>Preferências tem um campo <code>title</code> obrigatório e um campo <code>description</code> opcional. Há strings que aparecem ao lado da preferência no gerenciador de Add-on, para ajudar a explicar ao usuário o que a preferência significa.</p> - -<ul> - <li> - <p>Para fornecer formas localizadas do title da preferência, inclua uma entrada no arquivo "properties" cujo identificador seja o nome da preferência seguido por <code>_title</code>, e cujo valor é o título da localidade.</p> - </li> - <li> - <p>Para fornecer forma localizada da descrição da preferência, inclui uma entrada em seu arquivo "properties" cujo identificador é o nome da preferência seguido por <code>_description</code>, e cujo valor é a descrição da localidade.</p> - </li> -</ul> - -<p>Por exemplo, suponha que seu "package.json" defina uma única preferência:</p> - -<pre>{ - "preferences": [ - { - "type": "string", - "name": "monster_name", - "value": "Gerald", - "title": "Name" - } - ], - "name": "monster-builder", - "license": "MPL 2.0", - "author": "me", - "version": "0.1", - "fullName": "Monster Builder", - "id": "monster-builder@me.org", - "description": "Build your own monster" -} -</pre> - -<p>Em seu arquivo "en-US.properties", inclua estes dois itens:</p> - -<pre>monster_name_title= Name -monster_name_description= What is the monster's name? -</pre> - -<p>Em seu arquivo "fr-FR.properties", inclui a tradução francesa:</p> - -<pre>monster_name_title= Nom -monster_name_description= Quel est le nom du monstre ? -</pre> - -<p>Agora quando o local do navegador estiver configurado para "en-US", os usuários verão este Gerenciador de Add-on:</p> - -<p><img alt="" src="https://mdn.mozillademos.org/files/6525/preference-us.png" style="height: 77px; width: 571px;"></p> - -<p>Quando o local do navegador estiver configurado para "fr-FR", eles verão isto:</p> - -<p><img alt="" src="https://mdn.mozillademos.org/files/6523/preference-french.png"></p> - -<p>Os tipos de preferência de <code>menulist</code> e <code>radio</code> tem opções. O atributo <code>label</code> de cada opção é mostrado para o usuário. Se o arquivo de local tem uma entrada com o valor do atributo <code>label</code> prefixado com "{name}_options." como sua chave, onde {name} é o nome da preferência, seu valor é usado como rótulo por localização.</p> - -<h2 id="Usando_identificadores">Usando identificadores</h2> - -<p>Se o sistema de localização não pode encontrar uma entrada para um identificador em particular usando a localidade atual, então ele apenas retorna o identificador por si mesmo.</p> - -<p>Isto tem a bonita propriedade que você pode escrever add-on localizável, inteiramente funcional sem ter que escrever qualquer arquivo local. Você pode usar somente a linguagem padrão como seu identificador, e subsequentemente fornecer arquivos <code>.properties</code> para todos os locais adicionais que você quiser suportar.</p> - -<p>Por exemplo, no caso acima você poderia usar "Hello!" como o identificador, e apenas ter um arquivo <code>.properties</code> para a localidade "fr-FR":</p> - -<pre>Hello!= Bonjour ! -</pre> - -<p>Então quando a localidade é "en-US", o sistema falharia ao encontrar o arquivo <code>.properties</code> file, e retornaria "Hello!".</p> - -<p>Porém, essa técnica torna difícil manter um add-on que tem muitas localizações, porque você estará usando a língua padrão tanto para strings de interface quanto chaves de tradução. Isto significa que se você quiser mudar o nome de uma string na língua padrão, ou consertar a digitação, então você quebrará todos os seus arquivos de tradução.</p> - -<h2 id="Locale_Updater">Locale Updater</h2> - -<p>O addon <a href="https://github.com/downloads/ochameau/locale-updater/locale-updater.xpi">locale updater</a> torna fácil atualizar arquivos de localidade. Uma vez que você o instalou, abra o Gerenciador de Add-on, e você verá um novo botão rotulado "Update l10n" próximo a cada add-on que você instalou:</p> - -<p><img alt="" src="https://mdn.mozillademos.org/files/6515/locale-updater.png"></p> - -<p>Clique no botão e você será instado a enviar um arquivo <code>.properties</code> para aquele add-on. Se você fornecer um novo arquivo, o locale do add-on será atualizado com o novo arquivo.</p> - -<h2 id="Limitações">Limitações</h2> - -<p>A localização atual suportada é o primeiro passo ao inteiro suporte, e contem uma série de limitações.</p> - -<ul> - <li> - <p>Não há suporte para scripts de conteúdo ou arquivos CSS: no momento, você pode localizar strings que aparecem nos arquivos JavaScript que podem <code>require()</code> módulos SDK e em HTML.</p> - </li> - <li> - <p>A configuração dos arquivos de localidade é global por um add-on. Isto significa que um módulo não pode sobreescrever uma tradução mais geral: então um módulo <code>informal.js</code> não pode especificar que "hello_id" ocorrendo em seu código deveria ser traduzida para "Hi!".</p> - </li> - <li> - <p>A ferramenta SDK compila os arquivos de localidade em um formato JSON quando produzindo um XPI. Isso significa que traduções não podem localizar um add-on dando o XPI sozinho, mas deve ser dado acesso ao fonte do add-on.</p> - </li> - <li> - <p>O desenvolvedor deve manualmente montar o conjunto de strings localizáveis compõe os arquivos de localidade.</p> - </li> -</ul> - -<h2 id="Veja_também_-_para_desenvolvedores_que_localização_em_add-on_que_não_são_do_SDK">Veja também - para desenvolvedores que localização em add-on que não são do SDK</h2> - -<ul> - <li>Como colocar localização em páginas html, arquivos xul, e arquivos js/jsm do add-on bootstrapped: <a href="/en-US/Add-ons/Bootstrapped_extensions#Localization_%28L10n%29">Bootstrapped Extensions :: Localization (L10n)</a></li> - <li>XUL School Localization Tutorial: <a href="/en-US/docs/Mozilla/Tech/XUL/Tutorial/Localization">DTD/Entities method</a> and <a href="/en-US/docs/Mozilla/Tech/XUL/Tutorial/Property_Files">Properties method</a></li> - <li><a href="/en-US/docs/Mozilla/Localization/Localizing_an_extension">Localizing an extension</a></li> -</ul> diff --git a/files/pt-br/mozilla/add-ons/sdk/tutorials/lista_de_tabs_abertas/index.html b/files/pt-br/mozilla/add-ons/sdk/tutorials/lista_de_tabs_abertas/index.html deleted file mode 100644 index d3d537037d..0000000000 --- a/files/pt-br/mozilla/add-ons/sdk/tutorials/lista_de_tabs_abertas/index.html +++ /dev/null @@ -1,67 +0,0 @@ ---- -title: Lista de Tabs Abertas -slug: Mozilla/Add-ons/SDK/Tutorials/Lista_de_Tabs_Abertas -tags: - - Add-on SDK - - Listando tabs abertas -translation_of: Archive/Add-ons/Add-on_SDK/Tutorials/List_Open_Tabs ---- -<div class="note"> -<p>Para seguir este tutorial você precisará ter <a href="https://developer.mozilla.org/en-US/Add-ons/SDK/Tutorials/Installation">instalado o SDK </a>e ter conhecimento <a href="https://developer.mozilla.org/en-US/Add-ons/SDK/Tutorials/Getting_Started_With_cfx">básico sobre cfx</a>.</p> - -<p>Este tutorial usa a API <a href="https://developer.mozilla.org/en-US/Add-ons/SDK/Low-Level_APIs/ui_button_action">action button</a>, que está disponível somente do Firefox 29 em diante.</p> -</div> - -<p>Para listar as tabs abertas, você pode iterar sobre o objeto <a href="/en-US/Add-ons/SDK/High-Level_APIs/tabs"><code>tabs</code></a>.</p> - -<p>O add-on a seguir adiciona um <a href="/en-US/Add-ons/SDK/Low-Level_APIs/ui_button_action">action button</a> que registra as URLs abertas nas tabs quando clicado:</p> - -<pre class="brush: js">require("sdk/ui/button/action").ActionButton({ - id: "list-tabs", - label: "List Tabs", - icon: "./icon-16.png", - onClick: listTabs -}); - -function listTabs() { - var tabs = require("sdk/tabs"); - for (let tab of tabs) - console.log(tab.url); -} -</pre> - -<p>Note que para fazer isso funcionar você precisa salvar um ícone para o botão no diretório "data" do seu add-on como "icon-15.png": você pode baixar o ícone daqui: <img alt="" src="https://mdn.mozillademos.org/files/7649/icon-16.png" style="height: 16px; width: 16px;">.</p> - -<p>Se você executar o add-on, carregar um grupo de tabs, e clicar no botão, você verá a saída no linha de comando do <a href="/en-US/Add-ons/SDK/Tutorials/Logging">console</a> que parece com isto:</p> - -<pre>info: http://www.mozilla.org/en-US/about/ -info: http://www.bbc.co.uk/ -</pre> - -<p>Você não consegue acesso direto a qualquer conteúdo hospedado na tab. Para acessar o conteúdo da tab você precisa anexar um script à tab usando <code>tab.attach()</code>. Este add-on anexa um script a todas as tabs abertas. O script adiciona uma borda vermelha ao documento da tab:</p> - -<pre class="brush: js">require("sdk/ui/button/action").ActionButton({ - id: "list-tabs", - label: "List Tabs", - icon: "./icon-16.png", - onClick: listTabs -}); - -function listTabs() { - var tabs = require("sdk/tabs"); - for (let tab of tabs) - runScript(tab); -} - -function runScript(tab) { - tab.attach({ - contentScript: "document.body.style.border = '5px solid red';" - }); -} -</pre> - -<h2 id="Aprendendo_Mais">Aprendendo Mais</h2> - -<p>Para aprender mais sobre como trabalhar com tabs no SDK, veja a referência da API <a href="/en-US/Add-ons/SDK/High-Level_APIs/tabs"><code>tabs</code></a>.</p> - -<p>Para aprender mais sobre execução de scripts em tabs, veja o tutorial sobre uso do <a href="/en-US/Add-ons/SDK/High-Level_APIs/tabs#attach(options)"><code>tab.attach()</code></a>.</p> diff --git a/files/pt-br/mozilla/add-ons/sdk/tutorials/listening_for_load_and_unload/index.html b/files/pt-br/mozilla/add-ons/sdk/tutorials/listening_for_load_and_unload/index.html deleted file mode 100644 index 5e3818036f..0000000000 --- a/files/pt-br/mozilla/add-ons/sdk/tutorials/listening_for_load_and_unload/index.html +++ /dev/null @@ -1,60 +0,0 @@ ---- -title: Capturando Load e Unload -slug: Mozilla/Add-ons/SDK/Tutorials/Listening_for_load_and_unload -translation_of: Archive/Add-ons/Add-on_SDK/Tutorials/Listening_for_load_and_unload ---- -<div class="note"> -<p><span>Para seguir este tutorial você precisará ter conhecimento <a href="/en-US/docs/Mozilla/Add-ons/SDK/Tutorials/Getting_Started_%28jpm%29">básico de <code>jpm</code></a>. </span></p> -</div> - -<p>Se seu add-on exporta uma função chamada <code>main()</code>, então aquela função será chamada sempre que o add-on for carregado, e será passada uma string descrevendo a razão de ele ter sido carregado bem como qualquer argumento passado para ele. Se seu add-on exporta uma função chamada <code>onUnload()</code>, então esta função será chamada quando o add-on for descarregado, e será passada uma string descrevendo a razão da descarga.</p> - -<p>Você não tem que usar <code>exports.main()</code> ou <code>exports.onUnload()</code>. Você pode colocar o código do seu add-on no nível superior ao invés de envolver ele em uma atribuição de função para <code>exports.main()</code>. Ele será carregado nas mesmas circunstâncias, mas você não conseguirá acesso às razões da carga ou descarga dele bem como de seus argumentos.</p> - -<h2 id="exports.main()">exports.main()</h2> - -<p>O código <code>main.js</code> do seu add-on é executado assim que ele é carregado. Ele é carregado quando ele é instalado, habilitado ou quando inicia o Firefox.</p> - -<p>Se seu add-on exporta uma função chamada <code>main()</code>, aquela função será chamada imediatamente depois que o <code>main.js </code>esteja completamente avaliado, e depois de todas as declarações <code>require()</code> de nível superior serem executadas (então geralmente depois de todas módulos dependentes serem carregados).</p> - -<div> -<div> -<pre><span class="brush: js">exports.main = function (options, callbacks) {};</span></pre> -</div> -</div> - -<p><code>options</code> é um objeto descrevendo os parâmetros com os quais seu add-on foi carregado</p> - -<h3 id="options.loadReason">options.loadReason</h3> - -<p><code>options.loadReason</code> é uma das seguintes strings descrevendo a razão de seu add-on ter sido carregado:</p> - -<pre>install -enable -startup -upgrade -downgrade -</pre> - -<h2 id="exports.onUnload()">exports.onUnload()</h2> - -<p>Se seu add-on exporta uma função chamada <code>onUnload()</code>, aquela função será chamando quando o add-on for descarregado.</p> - -<div> -<div> -<pre><span class="brush: js">exports.onUnload = function (reason) {};</span></pre> -</div> -</div> - -<h3 id="reason">reason</h3> - -<p><code>reason</code> é uma das seguintes strings descrevendo a razão do add-on ter sido descarregado:</p> - -<pre>uninstall -disable -shutdown -upgrade -downgrade -</pre> - -<p>Devido ao <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=627432">bug 627432</a>, sua captura de descarga (<code style="font-size: 14px;">onUnload</code>) nunca será chamada com <code style="font-size: 14px;">uninstall</code>: ela somente é chamada com <code style="font-size: 14px;">disable</code>. Veja no comentário particular sobre este <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=627432#c12">bug</a>.</p> diff --git a/files/pt-br/mozilla/add-ons/sdk/tutorials/logging/index.html b/files/pt-br/mozilla/add-ons/sdk/tutorials/logging/index.html deleted file mode 100644 index 088d694408..0000000000 --- a/files/pt-br/mozilla/add-ons/sdk/tutorials/logging/index.html +++ /dev/null @@ -1,55 +0,0 @@ ---- -title: Logging -slug: Mozilla/Add-ons/SDK/Tutorials/Logging -tags: - - Add-on SDK - - console -translation_of: Archive/Add-ons/Add-on_SDK/Tutorials/Logging ---- -<div class="note">Para seguir este tutorial você precisa do <a href="https://developer.mozilla.org/en-US/Add-ons/SDK/Tutorials/Installation">SDK instalado</a> e <a href="https://developer.mozilla.org/en-US/Add-ons/SDK/Tutorials/Getting_Started_With_cfx">conhecimento básico de cfx</a>.</div> - -<p>O objeto DOM <a href="https://developer.mozilla.org/en/DOM/console"><code>console</code></a> é útil para depuração do JavaScript. Porque os objetos DOM não estão disponíveis para o código principal do add-on, o SDK fornece seu próprio objeto global <code>console</code> com a maiorira dos mesmos métodos do do <code>console </code>DOM, incluindo métodos para registrar erros, avisos, ou mensagens informativas. Você não tem que usar <code>require()</code> qualquer coisa para conseguir acesso ao console. Ele está disponível para você.</p> - -<p>O método <code>console.log()</code> imprime mensagens informativas:</p> - -<pre class="brush: js">console.log("Hello World"); -</pre> - -<p>Tente:</p> - -<ul> - <li>crie um novo diretório, e navegue até ele</li> - <li>execute <code>cfx init</code></li> - <li>abra "lib/main.js" e adicione a linha acima</li> - <li>execute <code>cfx run</code>, então <code>cfx run</code> novamente</li> -</ul> - -<p>O Firefox iniciará, e a linha a seguir aparecerá na janela de comando que você usou para executar <code>cfx run</code>:</p> - -<pre>info: Hello World! -</pre> - -<h2 id="console_em_Scripts_de_Conteúdo"><code>console</code> em Scripts de Conteúdo</h2> - -<p>Você pode usar console em <a href="/en-US/Add-ons/SDK/Guides/Content_Scripts">scripts de conteúdo</a> assim como no código principal do seu add-on. O add-on a seguir registra o conteúdo do HTML de toda a tab que o usuário carregar, chamando <code>console.log()</code> dentro do script de conteúdo:</p> - -<pre class="brush: js">require("sdk/tabs").on("ready", function(tab) { - tab.attach({ - contentScript: "console.log(document.body.innerHTML);" - }); -}); -</pre> - -<h2 id="Saída_do_console">Saída do <code>console</code></h2> - -<p>Se você estiver executando seu add-on da linha de comando (por exemplo, executando<code> cfx run</code> ou <code>cfx test</code>) então as mensagens do console aparece no shell de comando usado.</p> - -<p>Se você instalou o add-on no Firefox então as mensagens aparecerão no <a href="/en-US/docs/Tools/Browser_Console">Console do Navegador</a> do Firefox.</p> - -<p>Mas note que <strong>por padrão, chamadas à <code>console.log()</code> não resultarão em qualquer saída no Console de Erro por qualquer add-on instalado</strong>: isso inclui add-ons instalados usando o Add-on Builder ou usando ferramentas como <a href="https://addons.mozilla.org/en-US/firefox/addon/autoinstaller/">Extension Auto-installer</a>.</p> - -<p>Veja <a href="/en-US/Add-ons/SDK/Tools/console#Logging_Levels">"Logging Levels"</a> na documentação de referência para mais informações.</p> - -<h2 id="Aprendendo_Mais">Aprendendo Mais</h2> - -<p>Para a API completa do <code>console</code>, veja sua <a href="/en-US/Add-ons/SDK/Tools/console">referência da API</a>.</p> diff --git a/files/pt-br/mozilla/add-ons/sdk/tutorials/modifying_the_page_hosted_by_a_tab/index.html b/files/pt-br/mozilla/add-ons/sdk/tutorials/modifying_the_page_hosted_by_a_tab/index.html deleted file mode 100644 index 6b8f02c265..0000000000 --- a/files/pt-br/mozilla/add-ons/sdk/tutorials/modifying_the_page_hosted_by_a_tab/index.html +++ /dev/null @@ -1,137 +0,0 @@ ---- -title: Modificando a Página Aberta em uma Tab -slug: Mozilla/Add-ons/SDK/Tutorials/Modifying_the_Page_Hosted_by_a_Tab -tags: - - Add-on SDK -translation_of: Archive/Add-ons/Add-on_SDK/Tutorials/Modifying_the_Page_Hosted_by_a_Tab ---- -<div class="note"> -<p>Para seguir este tutorial, você precisará ter <a href="https://developer.mozilla.org/en-US/Add-ons/SDK/Tutorials/Installation">instalado add-on SDK</a> e ter conhecimento <a href="https://developer.mozilla.org/en-US/Add-ons/SDK/Tutorials/Getting_Started_(jpm)">básico jpm</a> (Firefox 38 em diante) ou <a href="https://developer.mozilla.org/en-US/Add-ons/SDK/Tutorials/Getting_Started_With_cfx">básico do cfx</a> .</p> - -<p>Este tutorial usa a API <a href="https://developer.mozilla.org/en-US/Add-ons/SDK/Low-Level_APIs/ui_button_action">action button</a>, que está disponível a partir do Firefox 29 em diante.</p> -</div> - -<p>Para modificar uma página armazenada em uma tab em particular, carregue um ou mais <em>scripts de conteúdo</em> dentro dela usando o método attach() do objeto <a href="/en-US/Add-ons/SDK/High-Level_APIs/tabs">tab</a>. A tarefa desses scripts é interagir com o conteúdo web.</p> - -<p>Aqui está um exemplo simples:</p> - -<pre class="brush: js">var button = require("sdk/ui/button/action").ActionButton({ - id: "style-tab", - label: "Style Tab", - icon: "./icon-16.png", - onClick: function() { - require("sdk/tabs").activeTab.attach({ - contentScript: 'document.body.style.border = "5px solid red";' - }); - } -});</pre> - -<p>Execute esse exemplo, salve o ícone chamado "icon-16.png" no diretório "data" do add-on. Você To run this example, save an icon file named "icon-16.png" in add-on's "data" directory. Você pode baixar este ícone: <img alt="" src="https://mdn.mozillademos.org/files/7661/icon-16.png" style="height: 16px; width: 16px;">.</p> - -<p>This add-on creates a button with Mozilla favicon as an icon. It has a click handler which fetches the active tab and loads a script into the page hosted by the active tab. The script is specified using the <code>contentScript</code> option, and just draws a red border around the page.</p> - -<p>Then open any web page in the browser window, and click the button . You should see a red border appear around the page, like this:</p> - -<p><img alt="" src="https://mdn.mozillademos.org/files/6531/tabattach-bbc.png" style="display: block; margin-left: auto; margin-right: auto;"></p> - -<h2 id="Mantendo_o_script_de_conteúdo_em_arquivo_separado">Mantendo o script de conteúdo em arquivo separado</h2> - -<p>No exemplo acima, nós passamos o script de conteúdo como uma string.</p> - -<p>A menos que o script seja extremamente simples, o melhor é manter o script em um arquivo separado no diretório <code>data</code> do add-on. Isso deixa o código mais fácil para manter, depurar, e revisar. Faça isto, forneça a opção <code>contentScriptFile</code> não <code>contentScript</code>, cujo valor é uma URL apontando para um ou mais arquivos de script de conteúdo.</p> - -<p>Por exemplo, se nós salvarmos o script acima no diretório data do add-on em um arquivo chamado my-script.js:</p> - -<pre class="brush: js">var self = require("sdk/self"); - -var button = require("sdk/ui/button/action").ActionButton({ - id: "style-tab", - label: "Style Tab", - icon: "./icon-16.png", - onClick: function() { - require("sdk/tabs").activeTab.attach({ - contentScriptFile: self.data.url("my-script.js") - }); - } -}); -</pre> - -<p>Você pode carregar mais de um script, e os scripts podem interagir diretamente um com o outro. Então você pode carregar o <a href="http://jquery.com/">jQuery</a>, e então seu script de conteúdo pode usá-lo.</p> - -<h2 id="Carregue_vários_arquivos_de_script_de_conteúdo">Carregue vários arquivos de script de conteúdo</h2> - -<p>O dado atribuído ao <code>contentScriptFile</code> pode ser um array. Os scripts serão carregados na mesma ordem em que estiverem no array.</p> - -<p>No exemplo a seguir, nós carregaremos dois scripts, <code>first.js</code> & <code>second.js</code>. Ambos serão executados no mesmo contexto, então tudo publicamente definido no <code>first.js</code> será acessível do <code>second.js</code>.</p> - -<pre class="brush: js">// lib/main.js - -var self = require("sdk/self"); -var tabs = require("sdk/tabs"); - -require("sdk/ui/button/action").ActionButton({ - id: "load-several", - label: "load several scripts", - icon: "./icon-16.png", - onClick: function () { - tabs.activeTab.attach({ - contentScriptFile: [self.data.url('first.js'), - self.data.url('second.js')] - }); - } -}); -</pre> - -<h2 id="Comunicando_com_o_script_de_conteúdo">Comunicando com o script de conteúdo</h2> - -<p>O script do seu add-on e os scripts de conteúdo não podem acessar diretamente as variáveis ou funções um do outro, mas eles podem trocar mensagens.</p> - -<p>Para enviar mensagens de um lado para o outro, são usados o emitente de chamadas <code>port.emit()</code> e o recebendor <code>port.on()</code>.</p> - -<ul> - <li>No script de conteúdo, <code>port</code> é uma propriedade global do objeto <code>self</code>.</li> - <li>No script do add-on, <code>tab.attach()</code> retorna um objeto <a href="/en-US/Add-ons/SDK/Low-Level_APIs/content_worker">worker</a> contendo a propriedade <code>port</code> que você usa para enviar mensagens ao script de conteúdo.</li> -</ul> - -<p>Vamos reescrever o exemplo acima para passar mensagens de um add-on para o script de conteúdo.</p> - -<p>O script de conteúdo agora precisa parecer com isto:</p> - -<pre class="brush: js">// "self" é um objeto global no script de conteúdo -// Espera por um "drawBorder" -self.port.on("drawBorder", function(color) { - document.body.style.border = "5px solid " + color; -}); -</pre> - -<p>No script do add-on, nós enviaremos ao script de conteúdo uma mensagem "drawBorder" usando o objeto retornado de <code>attach()</code>:</p> - -<pre class="brush: js">var self = require("sdk/self"); -var tabs = require("sdk/tabs"); - -var button = require("sdk/ui/button/action").ActionButton({ - id: "style-tab", - label: "Style Tab", - icon: "./icon-16.png", - onClick: function() { - var worker = tabs.activeTab.attach({ - contentScriptFile: self.data.url("my-script.js") - }); - worker.port.emit("drawBorder", "red"); - } -}); -</pre> - -<p>A mensagem <code>drawBorder</code> não é uma mensagem embutida, é uma que este add-on definiu na chamada de <code>port.emit()</code>.</p> - -<h2 id="Injetando_CSS">Injetando CSS</h2> - -<p>Diferente da API <a href="/en-US/Add-ons/SDK/High-Level_APIs/page-mod"><code>page-mod</code></a>, <code>tab.attach()</code> não permite a você injetar CSS diretamente na página.</p> - -<p>Para modificar o estilo de uma página, você tem que usar JavaScript, como no exemplo acima.</p> - -<h2 id="Aprendendo_Mais">Aprendendo Mais</h2> - -<p>Para aprender mais sobre como trabalhar com tabs no SDK, veja o tutorial <a href="/en-US/Add-ons/SDK/Tutorials/Open_a_Web_Page">Abrindo uma Página da Web</a>, O tutorial <a href="/en-US/Add-ons/SDK/Tutorials/List_Open_Tabs">Lista de Tabs Abertas</a>, e a referência da API <a href="/en-US/Add-ons/SDK/High-Level_APIs/tabs"><code>tabs</code></a>.</p> - -<p>Para aprender mais sobre scripts de conteúdo, veja o guia de <a href="/en-US/Add-ons/SDK/Guides/Content_Scripts">scripts de conteúdo</a>.</p> diff --git a/files/pt-br/mozilla/add-ons/sdk/tutorials/modifying_web_pages_based_on_url/index.html b/files/pt-br/mozilla/add-ons/sdk/tutorials/modifying_web_pages_based_on_url/index.html deleted file mode 100644 index 4e846d75c7..0000000000 --- a/files/pt-br/mozilla/add-ons/sdk/tutorials/modifying_web_pages_based_on_url/index.html +++ /dev/null @@ -1,228 +0,0 @@ ---- -title: Modificando Página Web Baseado na URL -slug: Mozilla/Add-ons/SDK/Tutorials/Modifying_Web_Pages_Based_on_URL -tags: - - Add-on SDK - - content scripts -translation_of: Archive/Add-ons/Add-on_SDK/Tutorials/Modifying_Web_Pages_Based_on_URL ---- -<div class="note">Para seguir este tutorial, você precisará <a href="https://developer.mozilla.org/en-US/Add-ons/SDK/Tutorials/Installation">instalar o SDK</a> e ter conhecimento <a href="https://developer.mozilla.org/en-US/Add-ons/SDK/Tutorials/Getting_Started_(jpm)">básico de jpm</a> (Firefox 38 em diante) ou <a href="https://developer.mozilla.org/en-US/Add-ons/SDK/Tutorials/Getting_Started_With_cfx">básico de cfx</a>.</div> - -<p>Para modificar qualquer página que combine com um padrão particular (por exemplo, "http://example.org/") a medida que elas são carregadas, use o módulo <a href="/en-US/Add-ons/SDK/High-Level_APIs/page-mod"><code>page-mod</code></a>.</p> - -<p>Para criar um page-mod, você precisa de duas coisas:</p> - -<ul> - <li>Um ou mais <em>content scripts</em>(script de conteúdo) para executar cuja tarefa é interagir com o conteúdo web.</li> - <li>Um ou mais <em>patterns(padrões)</em> para combinar com URLs que você quer modificar.</li> -</ul> - -<p>Um trecho simples de códingo onde o script de conteúdo é fornecido com a opção <code>contentScript</code> e o padrão de busca da URL é dado pela opção <code>include</code> como a seguir:</p> - -<pre class="brush: js">// Importe a API page-mod -var pageMod = require("sdk/page-mod"); - -// Crie um page-mod -// Ele executará um script toda vez que uma URL ".org" é carregada -// O script substitui o conteúdo da página por uma mensagem -pageMod.PageMod({ - include: "*.org", - contentScript: 'document.body.innerHTML = ' + - ' "<h1>Page matches ruleset</h1>";' -}); -</pre> - -<p>Faça o seguinte:</p> - -<ul> - <li>Crie um novo diretório navegue para ele.</li> - <li>Execute <code>jpm init </code>ou <code>cfx init</code></li> - <li><code>Abra o arquivo index.js</code> e adicione o código acima (<code>lib/main.js se estiver usando</code> <code>cfx</code>)</li> - <li>Execute <code>jpm run </code>ou<code> cfx run</code>.</li> - <li>Abra no navegador o site <a href="http://www.ietf.org">ietf.org</a>.</li> -</ul> - -<p>Abaixo é o que você deve ver.</p> - -<p><img alt="" src="https://mdn.mozillademos.org/files/6537/pagemod-ietf.png" style="display: block; margin-left: auto; margin-right: auto;"></p> - -<h2 id="Especificando_o_Padão_a_Combinar">Especificando o Padão a Combinar</h2> - -<p>O padrão de combinação usa a síntaxe <a href="/en-US/Add-ons/SDK/Low-Level_APIs/util_match-pattern"><code>match-pattern</code></a>. Você pode passar uma única string como padrão a combinar ou um array.</p> - -<h2 id="Mantendo_o_Conteúdo_do_Script_em_um_Arquivo_Separado">Mantendo o Conteúdo do Script em um Arquivo Separado</h2> - -<p>No exemplo acima, nós fornecemos o script de conteúdo como uma string.</p> - -<p>A menos que o script seja extremamente simples, é melhor manter o script em um arquivo separado. Isso torna o código mais fácil para manter, depurar, e revisar. Para fazer isso, você precisa:</p> - -<ul> - <li>Salvar o script no diretório "<code>data</code>" do add-on.</li> - <li>Use a opção <code>contentScriptFile</code> ao invés de <code>contentScript</code> e passe para ela a URL do script que pode ser obtida usando <code>self.data.url("my-script.js")</code>. A partir do Firefox 34, você pode usar <code>"./my-script.js"</code>.</li> -</ul> - -<p>Por exemplo, se você salvar o script acima no diretório data do add-on em um arquivo chamado <code>my-script.js</code>:</p> - -<pre class="brush: js">// Importe a API page-mod -var pageMod = require("sdk/page-mod"); -// Importe a API self -var self = require("sdk/self"); - -// Crie um page-mod -// Ele executará um script toda vez que uma URL ".org" é carregada -// O script substitui o conteúdo da página por uma mensagem -pageMod.PageMod({ - include: "*.org", - contentScriptFile: self.data.url("my-script.js") -});</pre> - -<p>Ou a partir do Firefox 34:</p> - -<pre class="brush: js">// Importe a API page-mod -var pageMod = require("sdk/page-mod"); - -// Crie um page-mod -// Ele executará um script toda vez que uma URL ".org" é carregada -// O script substitui o conteúdo da página por uma mensagem -pageMod.PageMod({ - include: "*.org", - contentScriptFile: "./my-script.js" -});</pre> - -<h2 id="Carregando_Múltiplos_Scripts_de_Conteúdo">Carregando Múltiplos Scripts de Conteúdo</h2> - -<p>Você pode carregar mais do que um script, e eles podem interagir um com o outro.</p> - -<p>Por exmeplo, você poderia reescrever o <code>my-script.js</code> para usar o jQuery.</p> - -<pre class="brush: js">$("body").html("<h1>Page matches ruleset</h1>"); -</pre> - -<p>Então baixe o jQuery para o diretório <code>data</code> do add-on, e carregue o script e o jQuery juntos (tenha certeza de carregar o jQuery primeiro).</p> - -<pre class="brush: js">// Importe a API page-mod -var pageMod = require("sdk/page-mod"); -// Importe a API self -var self = require("sdk/self"); - -// Crie um page-mod -// Ele executará um script toda vez que uma URL ".org" é carregada -// O script substitui o conteúdo da página por uma mensagem -pageMod.PageMod({ - include: "*.org", - contentScriptFile: [self.data.url("jquery-1.7.min.js"), self.data.url("my-script.js")] -}); -</pre> - -<p>Você pode usar ambos <code>contentScript</code> e <code>contentScriptFile</code> no mesmo page-mod. Se você fizer isto, o script carregado usando <code>contentScriptFile</code> são carregados primeiro.</p> - -<pre class="brush: js">// Importe a API page-mod -var pageMod = require("sdk/page-mod"); -// Importe a API self -var self = require("sdk/self"); - -// Crie um page-mod -// Ele executará um script toda vez que uma URL ".org" é carregada -// O script substitui o conteúdo da página por uma mensagem -pageMod.PageMod({ - include: "*.org", - contentScriptFile: self.data.url("jquery-1.7.min.js"), - contentScript: '$("body").html("<h1>Page matches ruleset</h1>");' -}); -</pre> - -<p>Note, porém, que você não pode carregar um script de um site web. O script deve ser carregado do <code>data</code>.</p> - -<h2 id="Comunicando_com_o_Script_de_Conteúdo">Comunicando com o Script de Conteúdo</h2> - -<p>Seu script do add-on e o script de conteúdo não podem acessar diretamente a variável de um ou outro ou chamar função dos outros, mas eles podem enviar mensagens um para o outro.</p> - -<p>Para enviar mensagens de um lado para o outro, use o emitente de chamadas <code>port.emit()</code> e receba respostas usando <code>port.on()</code>.</p> - -<ul> - <li>No script de conteúdo, <code>port</code> é uma propriedade do objeto global <code>self</code>.</li> - <li>No script do add-on, você precisa capturar evento no <code>onAttach</code> event passando um objeto <a href="/en-US/Add-ons/SDK/Low-Level_APIs/content_worker">worker</a> que contém a <code>port</code>.</li> -</ul> - -<p>Vamos reescrever o exemplo acima para passar uma mensagem do add-on para o script de conteúdo. A mensagem conterá o novo conteúdo para inserir dentro do documento</p> - -<p>O script de conteúdo agora precisa parecer com isto:</p> - -<pre class="brush: js">// "self" é um objeto global no script de conteúdo -// Espera pelas mensagens, e substitui o conteúdo do -// documento com a mensagem recebida -self.port.on("replacePage", function(message) { - document.body.innerHTML = "<h1>" + message + "</h1>"; -}); -</pre> - -<p>No script do add-on, nós enviaremos ao script de conteúdo uma mensagem dentro do <code>onAttach</code>.</p> - -<pre class="brush: js">// Importe a API page-mod -var pageMod = require("sdk/page-mod"); -// Importe a API self -var self = require("sdk/self"); - -// Crie um page-mod -// Ele executará um script toda vez que uma URL ".org" é carregada -// O script substitui o conteúdo da página por uma mensagem -pageMod.PageMod({ - include: "*.org", - contentScriptFile: self.data.url("my-script.js"), - // Envia ao script de conteúdo uma mensagem dentro de onAttach - onAttach: function(worker) { - worker.port.emit("replacePage", "Page matches ruleset"); - } -}); -</pre> - -<p>A mensagem <code>replacePage</code> não é uma mensagem embutida: é uma mensagem definida pelo add-on na chamada do <code>port.emit()</code>.</p> - -<div> -<h2 id="Injetando_CSS">Injetando CSS</h2> - -<p><strong>Note que a característica descrita nesta seção é experimental no momento. Nós devemos provavelmente continuar suportando essa característica, mas os detalhes da API devem mudar.</strong></p> - -<p>Em vez de injetar JavaScript na página, você pode injetar CSS definindo a opção do <code>contentStyle</code> do mod-page.</p> - -<pre class="brush: js">var pageMod = require("sdk/page-mod").PageMod({ - include: "*", - contentStyle: "body {" + - " border: 5px solid green;" + - "}" -}); -</pre> - -<p>Como com o <code>contentScript</code>, há uma opção correspondente para <code>contentStyleFile</code> que leva uma URL de um arquivo CSS situado no diretório "data"; é uma boa prática usar essa opção ao invés de <code>contentStyle</code> se o CSS é muito complexo.</p> - -<pre class="brush: js">var pageMod = require("sdk/page-mod").PageMod({ - include: "*", - contentStyleFile: require("sdk/self").data.url("my-style.css") -}); -</pre> - -<p>Ou, a partir do Firefox 34, você pode usar a versão mais simples:</p> - -<pre class="brush: js">var pageMod = require("sdk/page-mod").PageMod({ - include: "*", - contentStyleFile: "./my-style.css" -});</pre> -</div> - -<h2 id="Aprendendo_mais">Aprendendo mais</h2> - -<p>Para aprender mais sobre o <code>page-mod</code>, veja a referência da API<a href="/en-US/Add-ons/SDK/High-Level_APIs/page-mod"> page</a>. Em particular, o construtor <code>PageMod</code> leva várias opções adicionais para controlar seu comportamento:</p> - -<ul> - <li> - <p>Por padrão, script de conteúdo não são anexados a qualuqer tab que já esteja aberta quando o page-mod é criado, e são anexados à iframes bem como documentos superiores. Para controlar esse comportamento use a opção <code>attachTo</code>.</p> - </li> - <li> - <p>Defina valores somente leitura acessíveis ao script de conteúdo usando a opção<code> contentScriptOptions</code>.</p> - </li> - <li> - <p>Por padrão, o script de conteúdo são anexados depois de todo o (DOM, JS, CSS, imagens) para a página ter sido carregado, no momento o evento <a href="/en-US/docs/Web/API/GlobalEventHandlers.onload">window.onload</a> dispara. Para controlar esse comportamento, use a opção <code>contentScriptWhen</code>.</p> - </li> -</ul> - -<p>Para aprender mais sobre o script de conteúdo,, veja o guia <a href="/en-US/Add-ons/SDK/Guides/Content_Scripts">content scripts</a>.</p> diff --git a/files/pt-br/mozilla/add-ons/sdk/tutorials/mostrar_um_popup/index.html b/files/pt-br/mozilla/add-ons/sdk/tutorials/mostrar_um_popup/index.html deleted file mode 100644 index b66c9fb06a..0000000000 --- a/files/pt-br/mozilla/add-ons/sdk/tutorials/mostrar_um_popup/index.html +++ /dev/null @@ -1,165 +0,0 @@ ---- -title: Mostrar um Popup -slug: Mozilla/Add-ons/SDK/Tutorials/Mostrar_um_Popup -tags: - - Add-on SDK - - Painel -translation_of: Archive/Add-ons/Add-on_SDK/Tutorials/Display_a_Popup ---- -<div class="note"> -<p>Para seguir este tutorial você precisará ter <a href="https://developer.mozilla.org/en-US/Add-ons/SDK/Installation">instalado o SDK</a> e ter conhecimento <a href="https://developer.mozilla.org/en-US/Add-ons/SDK/Getting_Started_With_cfx">básico sobre cfx</a>.</p> - -<p>Este tutorial usa a API <a href="https://developer.mozilla.org/en-US/Add-ons/SDK/Low-Level_APIs/ui_button_action">action button</a>, que está disponível somente do Firefox 29 em diante.</p> -</div> - -<p>Para mostrar um popup de diálogo, use o módulo <a href="/en-US/Add-ons/SDK/High-Level_APIs/panel"><code>panel</code></a>. Um painel de conteúdo é definido usando HTML. Você pode executar scripts no painel: embora o script em execução no painel não pode acessar diretamente o código de seu add-on, você pode trocar mensagens entre o script do painel e o código do add-on.</p> - -<p>Neste tutorial nós criaremos um add-on que adiciona um <a href="/en-US/Add-ons/SDK/Low-Level_APIs/ui_button_action">action button </a>à barra de ferramentas que mostra um painel quando clicado. O painel contém apenas um elemento <code><textarea>:</code>quando o usuário aperta a tecla <code>return</code>, o conteúdo da <code><textarea> </code>é enviado ao código principal do add-on. O código principal do add-on <a href="https://developer.mozilla.org/en-US/Add-ons/SDK/Tutorials/Logging">repassa a mensagem ao console</a>. </p> - -<p><img alt="" src="https://mdn.mozillademos.org/files/7647/panel.png" style="display: block; margin-left: auto; margin-right: auto;">O add-on consiste em seis arquivos:</p> - -<ul> - <li><code>main.js</code>: o código principal do addon, que cria o botão e o painel</li> - <li><code>get-text.js</code>: o conteúdo do script que interage com o conteúdo do painel</li> - <li><code>text-entry.html</code>: o conteúdo do painel em si, especificado como HTML</li> - <li><code>icon-16.png</code>, <code>icon-32.png</code>, and <code>icon-64.png</code>: ícone para o botão em três tamanhos diferentes</li> -</ul> - -<p>O "main.js" se parece com isso:</p> - -<pre class="brush: js">var data = require("sdk/self").data; -// Constrói um painel, carrega seu conteúdo do arquivo -// "text-entry.html" no diretório "data", e carrega o script "get-text.js" -// para ele. -var text_entry = require("sdk/panel").Panel({ - contentURL: data.url("text-entry.html"), - contentScriptFile: data.url("get-text.js") -}); - -// Cria um botão -require("sdk/ui/button/action").ActionButton({ - id: "show-panel", - label: "Show Panel", - icon: { - "16": "./icon-16.png", - "32": "./icon-32.png", - "64": "./icon-64.png" - }, - onClick: handleClick -}); - -//Mostra o painel quando o usuário clica no botão -function handleClick(state) { - text_entry.show(); -} - -//Quando o painel é mostrado ele gera um evento chamado -//"show": nós esperaremos por este evento e quando ele ocorrer -//enviamos nosso próprio evento "show" para o script do painel, -//então o script pode preparar o painel para mostrar. -text_entry.on("show", function() { - text_entry.port.emit("show"); -}); - -//Espera pela mensagem chamada "text-entered" vinda do -//script do conteúdo. A carga útil da mensagem é o texto -//digitado pelo usuário. -//Nesta implementação nós passaremos o texto para o console. -text_entry.port.on("text-entered", function (text) { - console.log(text); - text_entry.hide(); -});</pre> - -<p>O conteúdo do script "get-text.js" parece com isto:</p> - -<div> -<pre class="brush: js">//Quando o usuário digita return, envia a mensagem "text-entered" -// para o main.js. -//A carga útil da mensagem é o conteúdo da caixa de edição. -var textArea = document.getElementById("edit-box"); -textArea.addEventListener('keyup', function onkeyup(event) { - if (event.keyCode == 13) { - // Remove a nova linha. - text = textArea.value.replace(/(\r\n|\n|\r)/gm,""); - self.port.emit("text-entered", text); - textArea.value = ''; - } -}, false); -//Espera pelo evento "show" vim do -//código principal do add-on. O que significa que o -//painel sobre será mostrado. -// -//Configura o foco para a área de texto então o usuário pode -//começar a digitar. -self.port.on("show", function onShow() { - textArea.focus(); -});</pre> - -<div> </div> -</div> - -<p>Finalmente, o arquivo "text-entry.html" define o elemento <code><textarea></code>:</p> - -<div> -<div> -<pre class="brush: html"><html> -<head> - <style type="text/css" media="all"> - textarea { - margin: 10px; - } - body { - background-color: gray; - } - </style> - </head> -<body> - <textarea rows="13" cols="33" id="edit-box"></textarea> - </body> -</html></pre> - -<div> </div> -</div> -</div> - -<p>Finalmente, salve estes três ícones no diretório "data":</p> - -<table class="standard-table"> - <tbody> - <tr> - <td><img alt="" src="https://mdn.mozillademos.org/files/7635/icon-16.png" style="height: 16px; width: 16px;"></td> - <td>icon-16.png</td> - </tr> - <tr> - <td><img alt="" src="https://mdn.mozillademos.org/files/7637/icon-32.png" style="height: 32px; width: 32px;"></td> - <td>icon-32.png</td> - </tr> - <tr> - <td><img alt="" src="https://mdn.mozillademos.org/files/7639/icon-64.png" style="height: 64px; width: 64px;"></td> - <td>icon-64.png</td> - </tr> - </tbody> -</table> - -<p>Teste: o "main.js" está salveo no diretório <code>lib</code> do add-on, e os outros cinco arquivos vão no diretório data do add-on:</p> - -<pre>my-addon/ - data/ - get-text.js - icon-16.png - icon-32.png - icon-64.png - text-entry.html - lib/ - main.js -</pre> - -<p>Execute o add-on, clique no botão, e você deverá ver o painel. Digite algum texto e pressione "return" e você deverá ver a saída no console.</p> - -<p>Do Firefox 30 em diante, se você usar o <a href="/en-US/Add-ons/SDK/Low-Level_APIs/ui_button_toggle">toggle button</a>, você pode <a href="https://developer.mozilla.org/en-US/Add-ons/SDK/Low-Level_APIs/ui_button_toggle#Attaching_panels_to_buttons">anexar o painel ao botão</a>.</p> - -<h2 id="Aprendendo_Mais">Aprendendo Mais</h2> - -<p>Para aprender mais sobre o módulo <code>panel</code>, veja a referência da API <a href="/en-US/Add-ons/SDK/High-Level_APIs/panel"><code>panel</code></a>.</p> - -<p>Para aprender mais sobre buttons, veja referência da API <a href="/en-US/Add-ons/SDK/Low-Level_APIs/ui_button_action">action button</a> e <a href="/en-US/Add-ons/SDK/Low-Level_APIs/ui_button_toggle">toggle button</a>.</p> diff --git a/files/pt-br/mozilla/add-ons/sdk/tutorials/unit_testing/index.html b/files/pt-br/mozilla/add-ons/sdk/tutorials/unit_testing/index.html deleted file mode 100644 index 2e65659ed5..0000000000 --- a/files/pt-br/mozilla/add-ons/sdk/tutorials/unit_testing/index.html +++ /dev/null @@ -1,127 +0,0 @@ ---- -title: Teste de unidade -slug: Mozilla/Add-ons/SDK/Tutorials/Unit_testing -tags: - - Add-on SDK - - JPM -translation_of: Archive/Add-ons/Add-on_SDK/Tutorials/Unit_testing ---- -<div class="note"> -<p><span>Para seguir este tutorial você precisará ter conhecimento básico de<a href="/en-US/docs/Mozilla/Add-ons/SDK/Tutorials/Getting_Started_%28jpm%29"> <code>jpm</code></a> e ter seguido o tutorial de <a href="/en-US/Add-ons/SDK/Tutorials/Using_third-party_modules_(jpm)">criação de módulos reutilizáveis</a>.</span></p> -</div> - -<div class="note"> -<p>Se você está migrando código de teste do cfx para o <a href="/en-US/Add-ons/SDK/Tools/jpm">jpm</a>, veja o guia de migração do cfx, em particular a seção <a href="/en-US/Add-ons/SDK/Tools/cfx_to_jpm#Requiring_modules_from_test_code">loading modules from test code</a>.</p> -</div> - -<p>O SDK fornece um framework para ajudar a criar e executar testes de unidade para seu código. Para demonstrar como ele funciona nós escreveremos um teste de unidade para um módulo simples de codificação <a href="http://en.wikipedia.org/wiki/Base64">Base64</a>.</p> - -<h2 id="Um_módulo_simples_Base64">Um módulo simples Base64</h2> - -<p>Em uma página web, você pode executar uma codificação Base64 e decodificação usando as funções <code>btoa()</code> e <code>atob()</code>. Infelizmente essas funções pertencem ao objeto <code>window</code>: uma vez que o objeto não está disponível no código principal do add-on, <code>atob()</code> e <code>btoa()</code> não estão disponíveis de qualquer forma. Então nós criaremos um módulo <code>base64</code> para exibir estas funções da plataforma.</p> - -<p>Para começar, crie um novo diretório, navegue para ele, e execute o <code>jpm init</code>. Agora crie um novo arquivo chamado "base64.js", e de lhe o seguinte conteúdo:</p> - -<pre class="brush: js">const { atob, btoa } = require("chrome").Cu.import("resource://gre/modules/Services.jsm", {}); - -exports.atob = a => atob(a); -exports.btoa = b => btoa(b); -</pre> - -<p>Este código exporta duas funções, que chamamos <code>btoa()</code> and <code>atob()</code>. Para mostrar o módulo em uso, edit o arquivo "index.js" como segue:</p> - -<pre class="brush: js">var base64 = require("./base64"); - -var button = require("sdk/ui/button/action").ActionButton({ - id: "base64", - label: "base64", - icon: "./icon-16.png", - onClick: function() { - encoded = base64.btoa("hello"); - console.log(encoded); - decoded = base64.atob(encoded); - console.log(decoded); - } -});</pre> - -<p>Para executar esse exemplo você também terá que ter um ícone chamado "icon-16.png" salvo no diretório data do add-on. Você pode baixar este ícone: <img alt="" src="https://mdn.mozillademos.org/files/7661/icon-16.png" style="height: 16px; width: 16px;">.</p> - -<p>Agora o "index.js" importa o módulo base64 e chama suas duas funções exportadas. Se nós executarmos o add-on e clicarmos no botão, nós devemos ver a seguinte saída:</p> - -<pre>info: aGVsbG8= -info: hello -</pre> - -<h2 id="Testando_o_módulo_Base64">Testando o módulo Base64</h2> - -<p>Navegue para o diretório <code>test</code> e delete o arquivo <code>test-index.js</code>. Em seu lugar crie um arquivo chamado <code>test-base64.js</code> com o seguinte conteúdo:</p> - -<pre class="brush: js">var base64 = require("../base64"); - -exports["test atob"] = function(assert) { - assert.ok(base64.atob("aGVsbG8=") == "hello", "atob works"); -} - -exports["test btoa"] = function(assert) { - assert.ok(base64.btoa("hello") == "aGVsbG8=", "btoa works"); -} - -exports["test empty string"] = function(assert) { - assert.throws(function() { - base64.atob(); - }, - "empty string check works"); -} - -require("sdk/test").run(exports); -</pre> - -<div class="note"> -<p>Note que com o jpm nós devemos dar o caminho exato do módulo base64.js.</p> -</div> - -<p>Esse arquivo: exporta três funções, cada qual espera receber um único argumento que é o objeto <code>assert</code>. <code>assert</code> é fornecida pelo módulo <a href="/en-US/Add-ons/SDK/Low-Level_APIs/test_assert"><code>test/assert</code></a> e implementa o <a href="http://wiki.commonjs.org/wiki/Unit_Testing/1.1">CommonJS Unit Testing specification</a>.</p> - -<ul> - <li> - <p>As duas primeiras funções chamam <code>atob()</code> e <code>btoa()</code> e usa o <a href="/en-US/Add-ons/SDK/Low-Level_APIs/test_assert#ok(guard.2C_message)"><code>assert.ok()</code></a> para checar que a saída é a esperada</p> - </li> - <li> - <p>A segunda função testo código de manipulação de erro do módulo passando uma string vazia para o <code>atob()</code> e usando <a href="/en-US/Add-ons/SDK/Low-Level_APIs/test_assert#throws(block.2C_error.2C_message)"><code>assert.throws()</code></a> para checar que a exceção esperada foi lançada.</p> - </li> -</ul> - -<p>Neste ponto seu add-on deve parecer com isto:</p> - -<pre> /base64 - /data - icon-16.png - package.json - README.md - index.js - base64.js - /test - test-base64.js -</pre> - -<p>Agora execute o <code>jpm --verbose test</code> da pasta principal do add-on. Você deve ver algo como isto:</p> - -<pre>console.info: jpm-utest: executing './test/test-base64.test atob' -console.info: jpm-utest: pass: atob works -console.info: jpm-utest: executing './test/test-base64.test btoa' -console.info: jpm-utest: pass: btoa works -console.info: jpm-utest: executing './test/test-base64.test empty string' -console.info: jpm-utest: pass: empty string check works - -3 of 3 tests passed. -All tests passed!</pre> - -<p>O que aconteceu aqui é que o <code>jpm test</code>:</p> - -<ul> - <li>procura no diretório <code>test</code> o seu pacote</li> - <li>carrega qualquer módulo cujo nome começa com a palavra <code>test- </code>(Note o hífen depois de<span> "test" no nome do módulo. <code>jpm test</code> incluirá um módulo chamado "test-myCode.js", mas excluirá módulos chamados "test_myCode.js" ou "testMyCode.js".)</span></li> - <li>chama cada função exportada cujo nome começa com "test", passando um objeto <a href="/en-US/Add-ons/SDK/Low-Level_APIs/test_assert#Assert"><code>assert</code></a> como seu único argumento.</li> -</ul> - -<p>Obviamente, você não tem que passar a opção<code> --verbose</code> para o jpm se você não quiser; fazendo assim torna a saída mais fácil de ler.</p> diff --git a/files/pt-br/mozilla/add-ons/temas/background/index.html b/files/pt-br/mozilla/add-ons/temas/background/index.html deleted file mode 100644 index 856e419f31..0000000000 --- a/files/pt-br/mozilla/add-ons/temas/background/index.html +++ /dev/null @@ -1,110 +0,0 @@ ---- -title: Temas de fundo -slug: Mozilla/Add-ons/Temas/Background -tags: - - Aparência do Firefox - - Complementos - - Firefox - - Personalização - - Tema -translation_of: Mozilla/Add-ons/Themes/Lightweight_themes ---- -<h2 id="Como_criar_o_seu_próprio_tema">Como criar o seu próprio tema</h2> - -<div class="primary auto" id="getting-started"> -<p>Os temas são feitos de arquivos gráficos de imagens, para o cabeçalho, semelhantes ao utilizado como aparência padrão de fundo do Firefox UI.</p> - -<p>Acabou seu projeto? Você pode <a href="https://addons.mozilla.org/pt-BR/developers/theme/submit">enviá-lo agora mesmo!</a></p> - -<h3 id="Criando_um_tema_Imagem_de_Cabeçalho">Criando um tema: Imagem de Cabeçalho</h3> - -<p>A imagem do cabeçalho é mostrada no topo da janela do navegador, aninhada atrás da barra de ferramentas, barra de endereço, barra de pesquisa e barra de abas. Ela é <strong>ancorada no canto superior direito</strong> da janela do navegador.</p> - -<p class="screenshot"><img alt="" src="https://mdn.mozillademos.org/files/9929/header-step.jpg" style="height: 215px; width: 1059px;"></p> - -<ul> - <li><a href="https://addons.cdn.mozilla.net/static/img/docs/themes/header.jpg">Veja um exemplo de tema de cabeçalho aqui.</a></li> -</ul> - -<h4 id="Requisitos_de_Imagem">Requisitos de Imagem</h4> - -<ul> - <li>As dimensões devem ser <strong>3000px de largura </strong>x<strong> 200px de altura</strong></li> - <li>Nos formatos de arquivo PNG ou JPG</li> - <li>A imagem não deve ter tamanho maior que 300KB</li> -</ul> - -<h4 id="Dicas">Dicas</h4> - -<ul> - <li>Imagens sutis, de baixo contraste e gradientes funcionam melhor; imagens altamente detalhadas podem competir com a UI do navegador.</li> - <li>O Firefox pode revelar mais da parte inferior da imagem, se outra barra de ferramentas ou elemento da UI for adicionado ao topo da janela.</li> - <li>O lado superior direito da imagem (na tela) deve ter a informação mais importante — à medida que a largura da janela é ampliada, o navegador revela mais do lado esquerdo da imagem.</li> -</ul> - -<h4 id="Recursos_de_Editores_de_Imagem_Em_Linha">Recursos de Editores de Imagem Em Linha</h4> - -<ul> - <li><a href="http://www.pixlr.com">Pixlr</a> — Este aplicativo oferece ferramentas profissionais e fáceis de usar, para criação e edição de imagens com o navegador.</li> - <li><a href="http://www.photoshop.com">Photoshop</a> — Ajuste, gire e retoque fotos com o Photoshop® Express, um editor de fotos <em>online</em> e gratuito.</li> -</ul> - -<h3 id="Criando_um_tema_Imagem_de_Rodapé">Criando um tema: Imagem de Rodapé</h3> - -<p>Em versões antigas do Firefox, ou em versões recentes com certas extensões instaladas, a imagem de rodapé é mostrada como o fundo da parte inferior da janela do navegador, atrás de extensões e barras de pesquisa. Ela é ancorada no canto inferior esquerdo da janela do navegador. Imagens de rodapé são opcionais.</p> - -<p class="screenshot"><img alt="" src="https://mdn.mozillademos.org/files/9935/footer-step.jpg" style="height: 56px; width: 1249px;"></p> - -<ul> - <li><a href="https://addons.cdn.mozilla.net/static/img/docs/themes/footer.jpg">Veja um exemplo de tema de rodapé aqui.</a></li> -</ul> - -<h4 id="Requisitos_de_Imagem_2">Requisitos de Imagem</h4> - -<ul> - <li>As dimensões devem ser <strong>3000px de largura x 100px de altura</strong></li> - <li>Nos formatos de arquivo PNG, ou JPG</li> - <li>A imagem não deve ter tamanho maior que 300KB</li> -</ul> - -<h4 id="Dicas_2">Dicas</h4> - -<ul> - <li>Imagens sutis, de baixo contraste e gradientes funcionam melhor; imagens altamente detalhadas competem com a UI do navegador.</li> - <li>O Firefox pode revelar mais da porção superior da imagem, se a barra de pesquisa está aberta, ou se uma extensão adiciona mais altura à parte inferior da janela.</li> - <li>O lado esquerdo da imagem deve ter a informação mais importante — à medida que a largura da janela for ampliada, o navegador revela mais do lado direito da imagem.</li> -</ul> - -<h3 id="Submentendo_as_Imagens_de_seus_Temas">Submentendo as Imagens de seus Temas</h3> - -<p>Para enviar suas imagens, vá para a página de <a href="https://addons.mozilla.org/developers/theme/submit">Submissão de Temas</a>:</p> - -<ol class="itemized"> - <li><strong>Nomeie seu tema</strong> — aplique um nome único ao seu tema. Nomes duplos não são permitidos, então, talvez, você precise tentar algumas vezes, até encontrar um nome único disponível.</li> - <li><strong>Escolha uma categoria e as etiquetas</strong> — selecione uma categoria e insira algumas etiquetas para melhor descrever o seu tema. Tenha em mente que o revisor poderá rejeitá-lo se, obviamente, a categoria e/ou etiquetas não estiverem relacionadas a ele corretamente.</li> - <li><strong>Descreva o seu tema</strong> — escreva uma descrição curta do seu tema. Tenha em mente que o revisor poderá rejeitá-lo, se essa descrição não for uma representação exata dele.</li> - <li><strong>Selecione uma licença para seu tema</strong> — decida sobre uma licença de direitos autorais para seu trabalho. <a href="http://creativecommons.org/licenses/">Leia mais sobre os tipos de licenças Creative Commons.</a> - <ul> - <li><strong>Importante:</strong> Por favor, certifique-se que você tem o direito de usar a imagem em seu tema!</li> - </ul> - </li> - <li><strong>Envie suas imagems</strong> — certifique-se que elas têm menos de 300KB de tamanho e estão no formato JPG, ou PNG!</li> - <li><strong>Seleciona a cor do texto e abas</strong> — você pode escolher a cor ("de fundo") da aba e a cor do texto que melhor combinam com sua imagem de cabeçalho.</li> - <li><strong>Visualize seu tema</strong> — tudo pronto para você experimentar o seu tema! Simplesmente passe o cursor sobre a imagem acima do botão "Enviar tema" e veja como ele fica, instantaneamente: )</li> - <li><strong>Envie seu tema</strong> — se tudo parece certo, clique no botão Enviar tema e pronto! Você pode ver todos os temas que escreveu na sua página de perfil. - <ul> - <li><strong>Dica:</strong> para garantir que o seu tema será aprovado para a galeria, certifique-se que ele está em conformidade com as diretrizes de conteúdo e termos de serviço!</li> - </ul> - </li> -</ol> - -<p class="screenshot"><img alt="" src="https://mdn.mozillademos.org/files/9933/submission-step.jpg" style="height: 1800px; width: 785px;"></p> - -<p class="call-to-submit"><a class="button prominent" href="https://addons.mozilla.org/en-US/developers/theme/submit">ENVIE SEu TemA AGORA</a></p> - -<p class="call-to-submit"> </p> - -<h2 class="call-to-submit" id="Mais_Tutoriais">Mais Tutoriais</h2> - -<p><a href="http://vanillaorchidstutorials.blogspot.com/2015/11/mozilla-themes-focal-point-sizing.html">Mozilla Themes Focal Point on Sizing</a> - Um tutorial sobre os temas, com foco em dimensões, por VanillaOrchids.</p> -</div> diff --git a/files/pt-br/mozilla/add-ons/temas/index.html b/files/pt-br/mozilla/add-ons/temas/index.html deleted file mode 100644 index 7f38f0f3e4..0000000000 --- a/files/pt-br/mozilla/add-ons/temas/index.html +++ /dev/null @@ -1,55 +0,0 @@ ---- -title: Temas -slug: Mozilla/Add-ons/Temas -tags: - - Add-ons - - Aparência & Comportamento - - Complementos - - Mozilla-Firefox - - Temas -translation_of: Mozilla/Add-ons/Themes ---- -<p>Os temas são as capas, ou coberturas, dos diferentes aplicativos Mozilla. Eles permitem que se altere a aparência da interface de acordo com o seu gosto. Um tema pode, simplesmente, mudar as cores da interface de utilização, ou pode mudar cada parte da sua aparência. A documentação sobre temas está desatualizada, mas estamos na esperança de obter alguma ajuda para atualizá-la, em breve.</p> - -<div class="column-container"> -<div class="column-half"> -<h2 class="Documentation" id="Documentation" name="Documentation">Documentação</h2> - -<dl> - <dt><a href="/en-US/docs/Building_a_Theme" title="Building a Theme">Construindo um tema</a></dt> - <dd>Um tutorial para construir um tema simples no Firefox. <strong>Obs: Conteúdo Obsoleto</strong></dd> - <dt><a href="/en-US/docs/Themes/Common_Firefox_Theme_Issues_and_Solutions" title="Themes/Common_Firefox_Theme_Issues_and_Solutions">Problemas Comuns e Suas Soluções</a></dt> - <dd>Alguns problemas comuns, que ocorrem quando os editores AMO inspecionam os temas e como corrigí-los.</dd> - <dt><a href="/pt-BR/Add-ons/Temas/Temas_leves" title="Themes/Lightweight themes">Temas leves</a></dt> - <dd>Construindo temas leves para Firefox</dd> - <dt><a href="/en-US/docs/Creating_a_Skin_for_SeaMonkey_2.x" title="Creating_a_Skin_for_SeaMonkey_2.x">Criando uma capa para o SeaMonkey 2</a></dt> - <dd>Uma introdução para criar novos temas para o SeaMonkey 2.</dd> - <dt><a href="/en-US/docs/Making_Sure_Your_Theme_Works_with_RTL_Locales" title="Making_Sure_Your_Theme_Works_with_RTL_Locales">Assegurando-se de que o Seu Tema Funciona Com Escritas RTL</a></dt> - <dd>Como ter certeza de que o seu tema vai aparecer certinho para Hebreus, Árabes, Persas e Paquistaneses.</dd> - <dt><a href="/en-US/docs/Theme_Packaging" title="Theme_Packaging">Acondicionando Temas</a></dt> - <dd>Como Empacotar Temas para Firefox e Thunderbird.</dd> - <dt><a href="http://www.tudobom.de/articles/yatt/" title="http://www.tudobom.de/articles/yatt/">Outro Tutorial</a></dt> - <dd>Outro tutorial no construção de temas para Mozilla.</dd> - <dt><a href="/en-US/Mozilla/Add-ons/Themes/Obsolete">Documentos Obsoletos</a></dt> - <dd>Esses documentos são muito velhos e nunca serão atualizados, mas nós os mantemos, para o caso de serem fonte de informações úteis às pessoas <span class="short_text" id="result_box" lang="pt"><span class="hps">atualizar</span> <span class="hps">a documentação</span> <span class="hps">Tema</span></span></dd> -</dl> -</div> - -<div class="column-half"> -<h2 id="Buscando_Ajuda">Buscando Ajuda</h2> - -<ul> - <li><a href="http://forums.mozillazine.org/viewforum.php?f=18">Forum MozillaZine Themes</a></li> -</ul> - -<h2 class="Tools" id="Tools" name="Tools">Ferramentas</h2> - -<ul> - <li><a href="/en-US/docs/DOM_Inspector" title="DOM_Inspector">Inspetor DOM</a></li> - <li><a class="link-https" href="https://addons.mozilla.org/en-US/firefox/addon/inspectorwidget/">Inspetor Widget</a></li> - <li><a class="link-https" href="https://addons.mozilla.org/en-us/firefox/addon/force-rtl/">Force RTL</a>: Teste de compatibilidade RTL</li> -</ul> -</div> -</div> - -<p> </p> diff --git a/files/pt-br/mozilla/add-ons/temas/using_the_amo_theme_generator/index.html b/files/pt-br/mozilla/add-ons/temas/using_the_amo_theme_generator/index.html deleted file mode 100644 index a63eb7b624..0000000000 --- a/files/pt-br/mozilla/add-ons/temas/using_the_amo_theme_generator/index.html +++ /dev/null @@ -1,137 +0,0 @@ ---- -title: Usando o Gerador de Temas AMO -slug: Mozilla/Add-ons/Temas/Using_the_AMO_theme_generator -tags: - - AMO - - Extensões - - Firefox - - Gerador de Temas - - Guía - - Mozilla - - Tema - - Temas - - Tutorial - - extensão -translation_of: Mozilla/Add-ons/Themes/Using_the_AMO_theme_generator ---- -<p>{{AddonSidebar}}</p> - -<p>O gerador de temas na <a href="https://addons.mozilla.org/">addons.mozilla.org</a> (AMO) guia você pelo processo da criação de um tema para o Firefox. Uma vez que você já tenha definido as cores e a imagem para o seu tema, o gerador submeterá seu trabalho à AMO. Você pode publicar os temas na AMO, ou gerenciar a sua distribuição.</p> - -<h2 id="Comece">Comece</h2> - -<div class="note"> -<p>Você precisa entrar em sua conta no Firefox para acessar o Gerador de Temas.</p> -</div> - -<p>Se você preferir publicar o seu tema na <a href="https://addons.mozilla.org/">addons.mozilla.org</a> (AMO), comece pela <a href="https://addons.mozilla.org/en-US/developers/addon/submit/wizard-listed">listed Theme Generator page</a> </p> - -<p>Por outro lado, se você escolher distribuí-lo, vá para a <a href="https://addons.mozilla.org/en-US/developers/addon/submit/wizard-unlisted">unlisted Theme Generator Page</a>. Para mais informações sobre distribuição, visite <a href="/en-US/docs/Mozilla/Add-ons/Distribution">Signing and distributing your add-on</a>.</p> - -<div class="blockIndicator note"> -<p><strong>Nota:</strong> Você pode gerar um tema mais elaborado, por exemplo, que use múltiplas imagens, criando um tema estático. Para começar os Temas Estáticos, dê uma olhada em: <a href="/en-US/docs/Mozilla/Add-ons/Themes/Theme_concepts">Theme concepts.</a></p> -</div> - -<p>Para usar o Gerador de Temas AMO, preencha os campos com as informações sobre o seu tema novo.</p> - -<p><img alt="" src="https://mdn.mozillademos.org/files/16282/new_theme.png" style="border: 1px solid black; display: block; height: 1058px; margin: 0px auto; width: 988px;"></p> - -<p>Comece dando um nome ao seu novo tema.</p> - -<p><span class="tlid-translation translation" lang="pt"><span title="">Ao escolher uma imagem para o cabeçalho</span></span>, ela deverá ter:</p> - -<ul> - <li>200 pixels de altura</li> - <li>No máximo 6.9MB</li> - <li>O formato pode ser: PNG, JPG, APNG, SVG or GIF (Não use gifs animados.)</li> - <li>A imagem será alinhada <span class="tlid-translation translation" lang="pt"><span title="">à extremidade direita do cabeçalho</span></span> .</li> -</ul> - -<p>Nos exemplos acima, a imagem desaparece em uma cor sólida, mantendo seu tamanho.</p> - -<p>Os valores das cores podem ser inseridos em hex, rgb, ou rgba. Você também pode usar o seletor de cores para escolher as que preferir em seu tema:</p> - -<p><img alt="" src="https://mdn.mozillademos.org/files/16503/theme_colors.png" style="border: 1px solid black; display: block; margin: 0px auto;"></p> - -<p>À medida que você for escolhendo as cores, elas vão sendo exibidas no exemplo abaixo do seletor, assim você pode brincar com elas, até encontrar a combinação exata para a sua criação. O bloco maior representa a intensidade da cor, o deslizante arco-íris permite que você selecione a tonalidade e o deslizante mais à direita define a sua opacidade.</p> - -<p>Uma vez que o campo de entrada de cor perder o foco, seu formato será convertido para rgba. Os componentes da cor em RGB (red, green, blue = vermelha, verde, azul) podem variar de 0 a 255, enquanto o "a" em RGBA significa alfa e controla a opacidade da cor. Os valores válidos para alfa variam entre 0 e 1 e o valor padrão é 1.0, ou, completamente opaco.</p> - -<div class="note"> -<p>Você pode usar a <a href="https://color.firefox.com">Firefox Color extension</a> para antever a sua criação.</p> -</div> - -<p>As cores na imagem a seguir mostram como você pode definí-las para o seu tema. Todas, menos a <strong>Área de fundo do cabeçalho</strong> e a<strong> Área de texto e ícones do cabeçalho</strong>, são opcionais:</p> - -<p><img alt="" src="https://mdn.mozillademos.org/files/16507/theme_colors_labeled.png" style="display: block; height: 350px; margin: 0px auto; width: 720px;"></p> - -<dl> - <dt>O Fundo da área do cabeçalho</dt> - <dd>A cor de fundo da área de cabeçalho, exibida na área não coberta, ou visível através da imagem de cabeça.<strong> Manifest field</strong>: <em>accentcolor</em>.</dd> - <dt>Área de texto e ícones do cabeçalho</dt> - <dd>As cores do texto e dos ícones na região do cabeçalho, com exceção da aba ativa. <strong>Manifest field</strong>: <em>textcolor</em>.</dd> - <dt>Área de fundo da barra de ferramentas (opcional)</dt> - <dd>A cor de fundo da barra de navegação, a barra de favoritos e a aba selecionada. <strong>Manifest field</strong>: <em>toolbar</em>.</dd> - <dt>Área de texto e ícones da barra de ferramentas (opcional)</dt> - <dd>A cor do texto e dos ícones na barra de ferramentas e a aba ativa.<strong> Manifest field</strong>: <em>toolbar_text</em>.</dd> - <dt>Área de fundo dos campos da barra de ferramentas (opcional)</dt> - <dd>A cor de fundo para os campos na barra de ferramentas, tais como a barra de pesquisa de URL. <strong>Manifest field</strong>: <em>toolbar_field</em>.</dd> - <dt>Campo da área de texto na barra de ferramentas (opcional)</dt> - <dd>A cor do texto para os campos na barra de ferramentas, tais como a barra de pesquisa de URL. <strong>Manifest field</strong>: <em>toolbar_field_text</em>.</dd> -</dl> - -<p>Ao fornecer as informações, você verá uma prévia do seu tema no navegador, na parte final do formulário.</p> - -<p>Quando completar as informações necessárias, clique no botão <strong>Finish Theme</strong> para continuar.</p> - -<div class="note"> -<p>Temas submetidos para sua própria distribuição serão sancionadas imediatamente e um arquivo XPI gerado poderá ser baixado.</p> -</div> - -<h2 id="Enviando_seu_tema">Enviando seu tema</h2> - -<p>Se você estiver publicando o seu tema na <a href="https://addons.mozilla.org/">addons.mozilla.org</a> (AMO), a segunda página do criador de temas pedirá que você o descreva. Você, então, deverá fornecer as seguintes informações:</p> - -<dl> - <dt>Nome</dt> - <dd>Este é o nome que será exibido na AMO e pode ser diferente do nome mostrado quando o seu tema for instalado no Firefox.</dd> - <dt>Add-on URL</dt> - <dd>Este é o endereço a partir do qual o seu tema pode ser baixado. Você pode editar a parte final do valor (após <span>https://addons.mozilla.org</span>/), mas, por favor, use, apenas, letras, números, subtraços e traços no seu URL.</dd> - <dt>Resumo (necessário)</dt> - <dd>Descreva seu tema. Você dispõe de 250 caracteres para fazê-lo.</dd> - <dt>Selecione uma categoria (necessária)</dt> - <dd>Selecionar uma categoria exata para o seu tema ajuda as pessoas a encontrá-lo na AMO. As seguintes categorias estão disponíveis: - <ul> - <li>Abstrato</li> - <li>Causas</li> - <li>Moda</li> - <li>Filme e TV</li> - <li>Firefox</li> - <li>Foxkeh</li> - <li>Férias</li> - <li>Música</li> - <li>Natureza</li> - <li>Outra</li> - <li>Cenário</li> - <li>Estação do ano</li> - <li>Esportes</li> - <li><em>Websites</em></li> - </ul> - </dd> - <dt>Email de suporte</dt> - <dd>O endereço de <em>email</em> pelo qual as pessoas podem contactar você, caso elas tenham algum problema com o seu tema.</dd> - <dt><em>Website</em> de suporte</dt> - <dd>A URL para o sítio a partir do qual você oferece suporte ao seu tema.</dd> - <dt>Licença (necessária)</dt> - <dd>A licença sob a qual o seu tema será publicado vai depender das escolhas que você fizer ao responder as seguintes perguntas: - <ul> - <li>Outras pessoas podem compartilhar o seu tema, desde que mantenham a sua autoria?</li> - <li>As pessoas poderão fazer uso comercial do seu tema?</li> - <li>As pessoas poderão criar trabalhos inspirados em seu tema?</li> - </ul> - </dd> -</dl> - -<p>Uma vez que você tiver preenchido todas as informações requeridas, poderá completar o processo de envio ao clicar no botão <strong>Submit Version</strong>. Você verá alguma coisa que se pareça com isto:</p> - -<p><img alt="" src="https://mdn.mozillademos.org/files/16284/theme_after_submit.png" style="border: 1px solid black; display: block; height: 382px; margin: 0px auto; width: 695px;"></p> diff --git a/files/pt-br/mozilla/bugzilla/index.html b/files/pt-br/mozilla/bugzilla/index.html deleted file mode 100644 index 1d55ba55a0..0000000000 --- a/files/pt-br/mozilla/bugzilla/index.html +++ /dev/null @@ -1,55 +0,0 @@ ---- -title: Bugzilla -slug: Mozilla/Bugzilla -tags: - - Bugzilla - - Developing Mozilla - - NeedsTranslation - - QA - - Tools - - TopicStub -translation_of: Mozilla/Bugzilla ---- -<p><a class="link-https" href="https://bugzilla.mozilla.org/">bugzilla.mozilla.org</a> (geralmente abreviado b.m.o) <span id="result_box" lang="pt"><span>é o sistema de rastreamento de erros do Mozilla.org,</span></span> <span id="result_box" lang="pt"><span>um banco de dados para registrar erros</span></span> <span id="result_box" lang="pt"><span>e solicitações de aprimoramento para o Firefox, Thunderbird, SeaMonkey, Camino e outros projetos do mozilla.org.</span></span></p> - -<div class="row topicpage-table"> -<div class="section"> -<h2 class="Documentation" id="Documentation" name="Documentation">Documentação sobre B.M.O.</h2> - -<dl> - <dt><a href="/en-US/docs/What_to_do_and_what_not_to_do_in_Bugzilla" title="en/What_to_do_and_what_not_to_do_in_Bugzilla">O que fazer e o que não fazer no Bugzilla</a></dt> - <dd><span id="result_box" lang="pt"><span>Dicas sobre como usar o Bugzilla, bem como coisas que você deve evitar.</span></span></dd> - <dt><a class="link-https" href="https://bugzilla.mozilla.org/page.cgi?id=etiquette.html">Etiqueta Bugzilla</a></dt> - <dd><span id="result_box" lang="pt"><span class="alt-edited">Um guia de etiqueta;</span></span> <span id="result_box" lang="pt"><span>este guia irá ajudá-lo a entender a melhor forma de conduta no b.m.o.</span></span> <span id="result_box" lang="pt"><span>e como usar maneiras adequadas e civilidade ajudará a garantir que seu problema seja resolvido</span></span> o quanto antes.</dd> - <dt><a href="http://www.mozilla.org/quality/help/beginning-duplicate-finding.html" title="http://www.mozilla.org/quality/help/beginning-duplicate-finding.html">Como saber se um erro já foi relatado</a></dt> - <dd><span id="result_box" lang="pt"><span>É útil (mas não obrigatório) para verificar se o problema que você está reportando já foi rastreado.</span> <span>Este guia irá ajudá-lo a fazê-lo.</span></span></dd> - <dt><a href="/en-US/docs/Mozilla/QA" title="/en-US/docs/Mozilla/QA">Garantia da qualidade</a></dt> - <dd><span id="result_box" lang="pt"><span>Documentação sobre garantia de qualidade na Mozilla.</span></span></dd> - <dt><a href="/en-US/docs/Mozilla/QA/Bug_writing_guidelines" title="/en-US/docs/Mozilla/QA/Bug_writing_guidelines">Instruções de escritas de erros</a></dt> - <dd><span id="result_box" lang="pt"><span>Um guia para descrever bem, e de forma compreensível,</span></span> um <span id="result_box" lang="pt"><span>erro que será facilmente acompanhado pela equipe de desenvolvimento.</span></span></dd> - <dt><a href="/en-US/docs/Developer_Guide/How_to_Submit_a_Patch" title="/en-US/docs/Developer_Guide/How_to_Submit_a_Patch">Como enviar uma correção</a></dt> - <dd><span id="result_box" lang="pt"><span>Se você corrigiu um erro ou implementou um novo recurso, </span></span> você precisará enviar para revisão <span id="result_box" lang="pt"><span>para que ele possa se tornar parte do produto.</span></span> <span id="result_box" lang="pt"><span>Este guia irá ensinar-lhe como!</span></span></dd> -</dl> - -<p><span class="alllinks"><a href="/en-US/docs/tag/Bugzilla" title="/en-US/docs/tag/CSS">Veja tudo...</a></span></p> -</div> - -<div class="section"> -<h2 id="Outros_materiais">Outros materiais</h2> - -<ul> - <li><a class="external" href="http://www.bugzilla.org/about/">Uma introdução ao Bugzilla</a></li> - <li><a class="external" href="http://blog.johnath.com/2010/02/04/bugzilla-for-humans">Bugzilla para humanos</a></li> - <li><a class="external" href="https://bugzilla.mozilla.org/page.cgi?id=quicksearch.html">Página de ajuda do Bugzilla QuickSearch</a>. <span id="result_box" lang="pt"><span>QuickSearch é uma maneira rápida, fácil e muito eficaz de consultar rapidamente o bugzilla.</span></span></li> - <li><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Bugzilla/Testopia" title="https://developer.mozilla.org/en-US/docs/Mozilla/Bugzilla/Testopia">Testopia</a> - <span id="result_box" lang="pt"><span>extensão para gerenciamento de casos de teste</span></span></li> - <li><a class="external" href="http://www.bugzilla.org">bugzilla.org</a> - o site do projeto</li> - <li>{{ interwiki('wikipedia', 'Bugzilla', 'wikipedia:Bugzilla') }} - <span id="result_box" lang="pt"><span>descrição geral do Bugzilla </span></span> <span id="result_box" lang="pt"><span>(não específico para projetos Mozilla)</span></span></li> -</ul> - -<h2 class="Tools" id="Tools" name="Tools">Ferramentas</h2> - -<ul> - <li><a href="http://harthur.github.io/bugzilla-todos/" title="http://harthur.github.io/bugzilla-todos/">Bugzilla Todos</a> lista erros e correções para revisões e verifiações.</li> -</ul> -</div> -</div> diff --git a/files/pt-br/mozilla/bugzilla/testopia/index.html b/files/pt-br/mozilla/bugzilla/testopia/index.html deleted file mode 100644 index 5b92d38e16..0000000000 --- a/files/pt-br/mozilla/bugzilla/testopia/index.html +++ /dev/null @@ -1,168 +0,0 @@ ---- -title: Testopia -slug: Mozilla/Bugzilla/Testopia -tags: - - Casos de Testes - - Testador - - Testopia -translation_of: Mozilla/Bugzilla/Testopia ---- -<p>Testopia é uma extensão do gerenciamento de casos de teste para Bugzilla. Ele é projetado para ser uma ferramenta genérica para rastrear casos de teste, permitindo a organizações de controle para integrar relatórios de erros com seus casos de teste e resultados da execução. Embora tenha sido concebido com testes de software em mente, ele pode ser usado para rastrear os testes em praticamente qualquer coisa no processo de engenharia.</p> - -<h2 id="Testopia_3.0_(ainda_não_lançado)">Testopia 3.0 (ainda não lançado)</h2> - -<p>Se você atualizou para Bugzilla 5.0, provavelmente notou que o Testopia 2.5 <em>não </em>é compatível com essa versão. Apesar de o Bugzilla 5.0 já ter sido lançado alguns meses atrás, nós não planejamos lançar uma correção para o Testopia imediatamente, porque atualmente está sob trabalho pesado para fazê-lo uma extensão totalmente autônoma, o que significa que todos os scripts tr_*.cgi que estiverem atualmente no diretório bugzilla/root estão sendo movidos para extensions/Testopia/lib/. Isso <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=743652">não é uma tarefa trivial</a>, requer tempo (começou em Agosto/2014), e nós decidimos que não era uma boa ideia lançar um código feito pela metade, que ainda precisa de teste para garantir que não regredimos em nada.</p> - -<p>A boa notícia é que o <a href="https://github.com/bugzilla/extensions-Testopia">código atual no repósitório git</a><em> </em>já funciona com o Bugzilla 5.0, e então, se você já atualizou para o 5.0, e não se importa em ter uma extensão ainda em produção na sua máquina, você pode decidir puxar o código do repositório. Isso também nos daria feedback antecipado caso você encontre regressões.</p> - -<p>Se você encontrar bugs no código disponível do git, por favor <a href="https://bugzilla.mozilla.org/enter_bug.cgi?product=Testopia&component=General">nos reporte</a> para que possamos arrumar os mais críticos a tempo do Testopia 3.0. Não pergunte quando planejamos lançar o 3.0, pois nós ainda não sabemos. "Assim que possível" é nossa melhor resposta.</p> - -<h2 id="Testopia_2.5">Testopia 2.5</h2> - -<p>Esta versão suporta Bugzilla 4.2 e a melhor notícia é que ele não requer um patch para o Bugzilla. Se você estiver atualizando, por favor reverter ligação da versão existente antes de instalar. Uma nova instalação requer apenas que você descompacte o arquivo .tar em seu Bugzilla no diretório raiz e executar checksetup. Os agradecimentos vão para LpSolit da equipe Bugzilla por seu trabalho no sentido de tornar isso possível.</p> - -<h2 id="Testopia_2.4">Testopia 2.4</h2> - -<p>Essa versão suporta Bugzilla 3.6.</p> - -<p><strong>NOTÍCIA IMPORTANTE:</strong> Se você estiver atualizando em um caso sensível sistema de arquivos é necessário remover a pasta testopia existente no diretório de extensões. Se você fez modificações no código fonte testopia, você precisará fundi-los para a nova pasta Testopia (capital T). Se você estiver em Windows ou outro sistema de arquivos caso insensível primeiro você deve renomear a pasta (testopia de idade, por exemplo) e só em seguida, descompactar o arquivo tar. Você pode, então, mesclar suas alterações antes de apagar a versão antiga.</p> - -<p><strong>USUÁRIOS DE API TOMEM NOTA: Os parâmetros posicionais são agora obsoletos. Todos os parâmetros devem agora ser enviados em um hash (struct, dict, hashmap ou qualquer idioma de sua escolha chama-chave, pares de valores). Apesar de todas as tentativas serem feitas para fornecer suporte contínuo para parâmetros posicionais, por favor, esteja ciente de que algumas chamadas de API podem falhar até que você faça essa alteração. Além disso, as versões futuras pode remover esse suporte completamente.</strong></p> - -<p>Como sempre guardar backup de sua instalação antes de tentar instalar ou atualizar.</p> - -<h2 id="Pontos_de_Integração">Pontos de Integração</h2> - -<ul> - <li style="margin-bottom: 0in;">Testopia integra com produtos Bugzilla, componentes, versões e marcas para permitir uma interface de gerenciamento única para objetos de alto nível.</li> - <li style="margin-bottom: 0in;">Testopia permite aos usuários acessar uma ferramenta e usa as permissões do grupo Bugzilla para limitar o acesso à modificação de objetos de teste.</li> - <li style="margin-bottom: 0in;">Testopia permite aos usuários anexar bugs para testar casos resultados de execução da gestão centralizada do processo de engenharia de software.</li> -</ul> - -<h2 id="Recursos_para_Versão_2.4_(Bugzilla_3.6.x)" style="margin-top: 0in; margin-bottom: 0in;">Recursos para Versão 2.4 (Bugzilla 3.6.x)</h2> - -<ul> - <li>Suporte Bugzilla 3.6</li> -</ul> - -<h2 id="Recursos_para_Versão_2.3_(Bugzilla_3.4.x)" style="margin-top: 0in; margin-bottom: 0in;">Recursos para Versão 2.3 (Bugzilla 3.4.x)</h2> - -<ul> - <li>Apoio à exportação XML e importação de planos de teste e crianças</li> - <li>Apoio CSV exportação de casos de teste e resultados.</li> - <li>Novos relatórios: pior criminoso e caso roll-up</li> - <li>Definir prioridades em caso indidual-runs</li> - <li>Novas opções de clones</li> - <li>Utiliza a mais recente biblioteca Extjs 3.0</li> - <li>Converte Testopia em uma extensão Bugzilla verdade</li> - <li>Numerosas correções de bugs</li> -</ul> - -<h2 id="Recursos_para_Versão_2.2_(Bugzilla_3.2_and_3.0.x)" style="margin-top: 0in; margin-bottom: 0in;">Recursos para Versão 2.2 (Bugzilla 3.2 and 3.0.x)</h2> - -<p>Esta versão é principalmente um bug corrigir lançamento e fazer Testopia compatível com o Bugzilla 3.2 e 3.0.6 Bugzilla. Por favor, não se esqueça de fazer o download do pacote correto com base na sua versão Bugzilla.</p> - -<p>Para instalar faça o seguinte (veja o <a href="http://wiki.mozilla.org/Testopia:README">README</a> para mais detalhes de instalação):</p> - -<ol> - <li>Descompacte o arquivo tar Testopia 2.2 dentro do seu diretório Bugzilla.</li> - <li>Remendar os arquivos Bugzilla.</li> -</ol> - -<p>Em sistemas Linux ele deve ser algo como:</p> - -<p style="border: 1px solid red; padding: 3px; width: 250px;"><code><strong>patch -p0 -i extensions/testopia/patch-3.6</strong></code></p> - -<ol> - <li>Execute checksetup.pl</li> -</ol> - -<p>Para atualizar uma instalação existente Testopia você siga os mesmos passos só você precisa primeiro reverter o antigo patch antes untarring os arquivos. Se estiver atualizando o Bugzilla, ao mesmo tempo, isso deve ser feito antes que tão bem .</p> - -<p><code><strong>patch -p0 -R -i extensions/testopia/patch-<version></strong></code></p> - -<p>Onde <versão> representa a versão do patch de ter aplicado (versão Bugzilla).</p> - -<h2 id="Requirements">Requirements</h2> - -<p>Como nosso desenvolvimento avançou, nós decidimos tentar manter a par da última versão estável do Bugzilla (atualmente 4.4). Isto dá-nos uma base de código estável para trabalhar. Desenvolvimento de plugins ou extensões para qualquer software é como tentar acertar um alvo em movimento. Esta decisão permite que nos concentremos nosso tempo mais no lançamento de novos recursos e muitas vezes precoce, em vez de voltar a portabilidade. No entanto, isso significa que a maioria das principais características não vai ser adaptadas para versões anteriores a menos e até que tenhamos tempo para fazer isso. Qualquer pessoa que queira ajudar neste esforço é mais do que bem-vindo.</p> - -<ul> - <li> - <p style="margin-bottom: 0in;">Bugzilla 4.x</p> - </li> - <li> - <p style="margin-bottom: 0in;">Mysql 5.0 or PostgreSQL 8.3</p> - </li> - <li> - <p style="margin-bottom: 0in;">Mozilla compatible browser ;-)</p> - </li> - <li> - <p style="margin-bottom: 0in;">Módulos Adicionais Perl: Text::CSV XML::Schema Validator XML::Schema::Parser (for importer) e JSON 2.10</p> - </li> -</ul> - -<h2 id="TUDO">TUDO</h2> - -<ul> - <li> - <p style="margin-bottom: 0in;">Preferência do Usuário</p> - </li> - <li> - <p style="margin-bottom: 0in;">Notificações de Email</p> - </li> - <li> - <p style="margin-bottom: 0in;">Mais relatórios</p> - </li> -</ul> - -<p>Veja o <a href="http://wiki.mozilla.org/Testopia:Roadmap">Roadmap</a> e <a href="https://bugzilla.mozilla.org/buglist.cgi?query_format=advanced&short_desc_type=allwordssubstr&short_desc=&product=Testopia&long_desc_type=substring&long_desc=&bug_file_loc_type=allwordssubstr&bug_file_loc=&status_whiteboard_type=allwordssubstr&status_whiteboard=&keywords_type=allwords&keywords=&bug_status=UNCONFIRMED&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&emailassigned_to1=1&emailtype1=exact&email1=&emailassigned_to2=1&emailreporter2=1&emailqa_contact2=1&emailtype2=exact&email2=&bugidtype=include&bug_id=&votes=&chfieldfrom=&chfieldto=Now&chfieldvalue=&cmdtype=doit&order=Reuse+same+sort+as+last+time&field0-0-0=noop&type0-0-0=noop&value0-0-0=">Bug List</a> para mais detalhes.</p> - -<h2 id="Links">Links</h2> - -<ul> - <li> - <p style="margin-bottom: 0in;"><a href="http://wiki.mozilla.org/Testopia:FAQ">FAQ</a></p> - </li> - <li> - <p style="margin-bottom: 0in;"><a href="http://wiki.mozilla.org/Testopia">Wiki</a></p> - </li> - <li> - <p style="margin-bottom: 0in;"><a href="http://landfill.mozilla.org/testopia2/testopia/doc/Manual.pdf">Docs</a></p> - </li> - <li> - <p style="margin-bottom: 0in;"><a href="https://bugzilla.mozilla.org/buglist.cgi?query_format=advanced&product=Testopia&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&bug_status=UNCONFIRMED">Bugs</a> (Por favor leia <a href="https://wiki.mozilla.org/Testopia:Bug_Reporting_Guide">Bug Reporting Guide)</a></p> - </li> - <li> - <p style="margin-bottom: 0in;">Official Testopia <a href="http://testopia.blogspot.com/">Blog</a></p> - </li> - <li> - <p style="margin-bottom: 0in;">IRC: <a href="irc://irc.mozilla.org/testopia">#testopia</a> or <a href="irc://irc.mozilla.org/mozwebtools">#mozwebtools </a></p> - </li> - <li> - <p style="margin-bottom: 0in;">Ajuda usuário (Inglês) <a href="mailto:support-webtools@lists.mozilla.org">support-webtools@lists.mozilla.org</a></p> - </li> - <li> - <p style="margin-bottom: 0in;">Desenvolvedores <a href="mailto:dev-apps-webtools@lists.mozilla.org">dev-apps-webtools@lists.mozilla.org</a></p> - </li> -</ul> - -<h2 id="Downloads">Downloads</h2> - -<ul> - <li> - <p style="margin-bottom: 0in;"><a href="https://ftp.mozilla.org/pub/mozilla.org/webtools/testopia/testopia-2.5-BUGZILLA-4.2.tar.gz">Download 2.5 (Bugzilla 4.2)</a></p> - </li> - <li> - <p style="margin-bottom: 0in;"><a href="ftp://ftp.mozilla.org/pub/mozilla.org/webtools/testopia/testopia-2.4-BUGZILLA-3.6.tar.gz">Download 2.4 (Bugzilla 3.6 and 4.0)</a></p> - </li> - <li> - <p style="margin-bottom: 0in;"><a href="ftp://ftp.mozilla.org/pub/mozilla.org/webtools/testopia/">Archived Versions</a></p> - </li> -</ul> - -<h2 id="Desenvolvedores">Desenvolvedores</h2> - -<p>Greg Hendricks<br> - Vance Baarda (Ex-Desenvolvedor)<br> - Ed Fuentetaja (Ex-Desenvolvedor)</p> diff --git a/files/pt-br/mozilla/chrome_registration/index.html b/files/pt-br/mozilla/chrome_registration/index.html deleted file mode 100644 index 1ccfc7f277..0000000000 --- a/files/pt-br/mozilla/chrome_registration/index.html +++ /dev/null @@ -1,347 +0,0 @@ ---- -title: Chrome registration -slug: Mozilla/Chrome_Registration -translation_of: Mozilla/Chrome_Registration ---- -<h2 id="What_is_Chrome.3F" name="What_is_Chrome.3F">What is chrome?</h2> - -<p><a href="/en/Chrome" title="en/Chrome">Chrome</a> is the set of user interface elements of the application window that are outside the window's content area. Toolbars, menu bars, progress bars, and window title bars are all examples of elements that are typically part of the chrome.</p> - -<p>Mozilla locates and reads the root <code>chrome.manifest</code> file for extensions and themes.</p> - -<div class="note"> -<p><strong>Note:</strong> With {{Gecko("1.9.2")}} and older, Mozilla reads <code>chrome/*.manifest</code> files from applications. Starting with {{Gecko("2.0")}}, the root <code>chrome.manifest</code> is the only manifest used; you can add <a href="/en/Chrome_Registration#manifest" title="en/Chrome Registration#manifest"><code>manifest</code></a> commands to that file to load secondary manifests.</p> -</div> - -<h2 id="Chrome_Providers" name="Chrome_Providers">Chrome providers</h2> - -<p>A supplier of chrome for a given window type (e.g., for the browser window) is called a chrome provider. The providers work together to supply a complete set of chrome for a particular window, from the images on the toolbar buttons to the files that describe the text, content, and appearance of the window itself.</p> - -<p>There are three basic types of chrome providers:</p> - -<dl> - <dt>Content</dt> - <dd>The main source file for a window description comes from the content provider, and it can be any file type viewable from within Mozilla. It will typically be a XUL file, since XUL is designed for describing the contents of windows and dialogs. The JavaScript files that define the user interface are also contained within the content packages, as well as most XBL binding files.</dd> - <dt>Locale</dt> - <dd>Localizable applications keep all their localized information in locale providers. This allows translators to plug in a different chrome package to translate an application without altering the rest of the source code. The two main types of localizable files are DTD files and Java-style properties files.</dd> - <dt>Skin</dt> - <dd>A skin provider is responsible for providing a complete set of files that describe the visual appearance of the chrome. Typically a skin provider will provide CSS files and images.</dd> -</dl> - -<div class="note"> -<p><strong>Note:</strong> Scripts (including those found in <a href="/en/XBL" title="en/XBL">XBL</a>) loaded from skin packages will not execute.</p> -</div> - -<h2 id="The_Chrome_Registry" name="The_Chrome_Registry">The chrome registry</h2> - -<p>The Gecko runtime maintains a service known as the chrome registry that provides mappings from chrome package names to the physical location of chrome packages on disk.</p> - -<p>This chrome registry is configurable and persistent, and thus a user can install different chrome providers, and select a preferred skin and locale. This is accomplished through xpinstall and the extension manager.</p> - -<p>In order to inform the chrome registry of the available chrome, a text manifest is used: this manifest is "chrome.manifest" in the root of an extension, or theme, or XULRunner application.</p> - -<p>The plaintext chrome manifests are in a simple line-based format. Each line is parsed individually; if the line is parsable the chrome registry takes the action identified by that line, otherwise the chrome registry ignores that line (and prints a warning message in the runtime error console).</p> - -<pre class="eval" style="white-space: pre-wrap;">locale packagename localename path/to/files -skin packagename skinname path/to/files -</pre> - -<div class="note"> -<p><strong>Note:</strong> The characters @ # ; : ? / are not allowed in the packagename.</p> -</div> - -<p></p><div class="warning">Firefox 2, Thunderbird 2, and SeaMonkey 1.1 will not find the chrome when <code>packagename</code> is mixed case. If the above example had a <code>packagename</code> of <strong>C</strong>amel<strong>C</strong>ase<strong>P</strong>ackage, you would get an error message similar to "No chrome registered for chrome://<strong>c</strong>amel<strong>c</strong>ase<strong>p</strong>ackage/path/to/files". Firefox 3, Thunderbird 3, and SeaMonkey 2 support mixed case. Bug resolved in Mozilla 1.9; see {{bug(132183)}}.</div><p></p> - -<h2 id="Manifest_Instructions" name="Manifest_Instructions">Manifest instructions</h2> - -<h3 id="comments" name="comments">comments</h3> - -<p>A line is a comment if it begins with the character '#'; any other character in the line is ignored.</p> - -<pre class="eval" style="white-space: pre-wrap;"># this line is a comment - you can put whatever you want here -</pre> - -<h3 id="manifest" name="manifest">manifest</h3> - -<p>{{ gecko_minversion_inline("2.0b4") }}</p> - -<pre>manifest <em>subdirectory/foo.manifest [flags]</em> -</pre> - -<p>This will load a secondary manifest file. This can be useful for separating component and chrome registration instructions, or separate platform-specific registration data.</p> - -<h3 id="binary-component">binary-component</h3> - -<p>{{ gecko_minversion_inline("2.0b2") }}</p> - -<pre>binary-component <em>components/mycomponent.dll [flags]</em> -</pre> - -<p>Instructs Mozilla to register and use a binary component. It should be combined with the abi flag, since binary components are ABI-specific. <a href="/en/XPCOM/XPCOM_changes_in_Gecko_2.0" title="en/XPCOM/XPCOM changes in Gecko 2.0">Prior to Firefox 4</a>, files in the components directory were registered automatically.</p> - -<h3 id="interfaces">interfaces</h3> - -<p>{{ gecko_minversion_inline("2.0b2") }}</p> - -<pre>interfaces <em>component/mycomponent.xpt [flags]</em> -</pre> - -<p>Instructs Mozilla to load interface information from a typelib file produced by XPIDL. <a href="/en/XPCOM/XPCOM_changes_in_Gecko_2.0" title="en/XPCOM/XPCOM changes in Gecko 2.0">Prior to Firefox 4</a>, files in the components directory were registered automatically.</p> - -<h3 id="component">component</h3> - -<p>{{ gecko_minversion_inline("2.0b2") }}</p> - -<pre>component <em>{00000000-0000-0000-0000-000000000000} components/mycomponent.js [flags]</em> -</pre> - -<p>Informs Mozilla about a component CID implemented by an XPCOM component implemented in JavaScript (or another scripting language, if applicable). The ClassID {0000...} must match the ClassID implemented by the component. To generate a unique ClassID, use a UUID generator program or site.</p> - -<h3 id="contract">contract</h3> - -<p>{{ gecko_minversion_inline("2.0b2") }}</p> - -<pre>contract <em>@foobar/mycontract;1 <em>{00000000-0000-0000-0000-000000000000} [flags]</em></em> -</pre> - -<p>Maps a contract ID (a readable string) to the ClassID for a specific implementation. Typically a contract ID will be paired with a component entry immediately preceding.</p> - -<h3 id="category">category</h3> - -<p>{{ gecko_minversion_inline("2.0b2") }}</p> - -<pre>category <em>category entry-name value [flags]</em> -</pre> - -<p>Registers an entry in the <a href="/en/XPCOM_Interface_Reference/nsICategoryManager" title="en/XPCOM Interface Reference/nsICategoryManager">category manager</a>. The specific format and meaning of category entries depend on the category.</p> - -<h3 id="content" name="content" style="min-height: 0;">content</h3> - -<p>A content package is registered with the line</p> - -<pre>content <em>packagename</em> <em>uri/to/files/</em> <em>[flags]</em> -</pre> - -<p>This will register a location to use when resolving the URI <code>chrome://<em>packagename</em>/content/...</code>. The URI may be absolute or relative to the location of the manifest file. Note: it must end with a '/'.</p> - -<h3 id="locale" name="locale">locale</h3> - -<p>A locale package is registered with the line</p> - -<pre class="eval" style="white-space: pre-wrap;">locale <em>packagename</em> <em>localename</em> <em>uri/to/files/</em> <em>[flags]</em> -</pre> - -<p>This will register a locale package when resolving the URI chrome://<em>packagename</em>/locale/... . The <em>localename</em> is usually a plain language identifier "en" or a language-country identifier "en-US". If more than one locale is registered for a package, the chrome registry will select the best-fit locale using the user's preferences.</p> - -<h3 id="skin" name="skin">skin</h3> - -<p>A skin package is registered with the line</p> - -<pre class="eval" style="white-space: pre-wrap;">skin <em>packagename</em> <em>skinname</em> <em>uri/to/files/</em> <em>[flags]</em> -</pre> - -<p>This will register a skin package when resolving the URI <a class="external" rel="freelink">chrome://packagename/skin/</a>... . The <em>skinname</em> is an opaque string identifying an installed skin. If more than one skin is registered for a package, the chrome registry will select the best-fit skin using the user's preferences.</p> - -<h3 id="style" name="style">style</h3> - -<p>Style overlays (custom CSS which will be applied to a chrome page) are registered with the following syntax:</p> - -<pre class="eval" style="white-space: pre-wrap;">style chrome://<em>URI-to-style</em> chrome://<em>stylesheet-URI</em> <em>[flags]</em> -</pre> - -<div class="note"><strong>Note:</strong> Only stylesheets at chrome URIs can be applied in this way.</div> - -<h3 id="override" name="override">override</h3> - -<p>In some cases an extension or embedder may wish to override a chrome file provided by the application or XULRunner. In order to allow for this, the chrome registration manifest allows for "override" instructions:</p> - -<pre class="eval" style="white-space: pre-wrap;">override chrome://<em>package</em>/<em>type</em>/<em>original-uri.whatever</em> <em>new-resolved-URI</em> <em>[flags]</em> -</pre> - -<p>Note: overrides are not recursive (so overriding <a class="external" rel="freelink">chrome://foo/content/bar/</a> with <a class="external" rel="freelink">file:///home/john/blah/</a> will not usually do what you want or expect it to do). Also, the path inside overridden files is relative to the overridden path, not the original one (this can be annoying and/or useful in CSS files, for example).</p> - -<div class="note"> -<p><strong>Note:</strong> There was a bug in {{Gecko("1.8.1.5")}} (Firefox 2.0.0.5) and earlier where you could not use a relative URL for the <em>new-resolved-URI</em> parameter. You needed to provide an absolute URL. See {{ Bug(323455) }}.</p> -</div> - -<h3 id="resource" name="resource">resource</h3> - -<p>{{ Fx_minversion_inline("3") }}</p> - -<p>Aliases can be created using the <code>resource</code> instruction:</p> - -<pre class="eval" style="white-space: pre-wrap;">resource <em>aliasname</em> <em>uri/to/files/</em> <em>[flags]</em> -</pre> - -<p>This will create a mapping for <code>resource://<aliasname><span style="font-family: Verdana,Tahoma,sans-serif;">/</span></code> URIs to the path given.</p> - -<div class="note"> -<p><strong>Note:</strong> There are no security restrictions preventing web content from including content at resource: URIs, so take care what you make visible there.</p> -</div> - -<h2 id="Manifest_Flags" name="Manifest_Flags">Manifest flags</h2> - -<p>Manifest lines can have multiple, space-delimited flags added at the end of the registration line. These flags mark special attributes of chrome in that package, or limit the conditions under which the line is used.</p> - -<h3 id="application" name="application">application</h3> - -<p>Extensions may install into multiple applications. There may be chrome registration lines which only apply to one particular application. The flag</p> - -<pre class="eval" style="white-space: pre-wrap;">application=<em>app-ID</em> -</pre> - -<p>indicates that the instruction should only be applied if the extension is installed into the application identified by <em>app-ID</em>. Multiple application flags may be included on a single line, in which case the line is applied if any of the flags match.</p> - -<p>This example shows how a different overlay can be used for different applications:</p> - -<pre style="white-space: pre-wrap;">overlay chrome://browser/content/browser.xul chrome://myaddon/content/ffOverlay.xul application={ec8030f7-c20a-464f-9b0e-13a3a9e97384} -overlay chrome://messenger/content/mailWindowOverlay.xul chrome://myaddon/content/tbOverlay.xul application={3550f703-e582-4d05-9a08-453d09bdfdc6} -overlay chrome://songbird/content/xul/layoutBaseOverlay.xul chrome://myaddon/content/sbOverlay.xul application=songbird@songbirdnest.com -</pre> - -<h3 id="appversion" name="appversion">appversion</h3> - -<p>Extensions may install into multiple versions of an application. There may be chrome registration lines which only apply to a particular application version. The flag</p> - -<pre class="eval" style="white-space: pre-wrap;">appversion=<em>version</em> -appversion<<em>version</em> -appversion<=<em>version</em> -appversion><em>version</em> -appversion>=<em>version</em> -</pre> - -<p>indicates that the instruction should only be applied if the extension is installed into the application version identified. Multiple <code>appversion</code> flags may be included on a single line, in which case the line is applied if any of the flags match. The version string must conform to the <a href="/en/Toolkit_version_format" title="en/Toolkit_version_format">Toolkit version format</a>.</p> - -<div class="note"> -<p><strong>Note:</strong> Versions of Gecko before {{Gecko("1.8.0.13")}} and {{Gecko("1.8.1.5")}} contained a bug where if you use the comparisons <, > or =, the version string had be two or more characters long. If not, you would get a message in the error console that the <code>appversion</code> flag was not recognized. See {{ Bug(380398) }}.</p> -</div> - -<h3 id="platformversion" name="platformversion">platformversion</h3> - -<p>{{ gecko_minversion_inline("8.0") }} When supporting more then one application, it is often more convenient for an extension to specify which Gecko version it is compatible with. This is particularly true for binary components. If there are chrome registration lines which only apply to a particular Gecko version, the flag</p> - -<pre class="eval" style="white-space: pre-wrap;">platformversion=<em>version</em> -platformversion<<em>version</em> -platformversion<=<em>version</em> -platformversion><em>version</em> -platformversion>=<em>version</em> -</pre> - -<p>indicates that the instruction should only be applied if the extension is installed into an application using the Gecko version identified. Multiple <code>platformversion</code> flags may be included on a single line, in which case the line is applied if any of the flags match.</p> - -<h3 id="contentaccessible" name="contentaccessible">contentaccessible</h3> - -<p>{{ Fx_minversion_inline("3") }} Chrome resources can no longer be referenced from within <img>, <script>, or other elements contained in, or added to, content that was loaded from an untrusted source. This restriction applies to both elements defined by the untrusted source and to elements added by trusted extensions. If such references need to be explicitly allowed, set the <code>contentaccessible</code> flag to <code>yes</code> to obtain the behavior found in older versions of Firefox. <span class="comment">See {{ bug("436989") }}.</span></p> - -<p>The <code>contentaccessible</code> flag applies only to content packages: it is not recognized for locale or skin registration. However, the matching locale and skin packages will also be exposed to content.</p> - -<p><strong>n.b.:</strong> Because older versions of Firefox do not understand the <code>contentaccessible</code> flag, any extension designed to work with both Firefox 3 and older versions of Firefox will need to provide a fallback. For example:</p> - -<pre style="white-space: pre-wrap;">content packagename chrome/path/ -content packagename chrome/path/ contentaccessible=yes -</pre> - -<h3 id="os" name="os">os</h3> - -<p>{{ Fx_minversion_inline("3") }} Extensions (or themes) may offer different features depending on the operating system on which Firefox is running. The value is compared to the value of <a href="/en/OS_TARGET" title="en/OS_TARGET">OS_TARGET</a> for the platform.</p> - -<pre class="eval" style="white-space: pre-wrap;">os=WINNT -os=Darwin -</pre> - -<p>See <a href="/en/OS_TARGET" title="en/OS_TARGET">OS_TARGET</a> for a more complete list of os names. The os name is case insensitive.</p> - -<h3 id="osversion" name="osversion">osversion</h3> - -<p>{{ Fx_minversion_inline("3") }} An extension or theme may need to operate differently depending on which version of an operating system is running. For example, a theme may wish to adopt a different look on Mac OS X 10.5 than 10.4:</p> - -<pre class="eval" style="white-space: pre-wrap;">osversion>=10.5 -</pre> - -<h3 id="platform_.28Platform-specific_packages.29" name="platform_.28Platform-specific_packages.29">abi</h3> - -<p>{{ Fx_minversion_inline("4") }} If a component is only compatible with a particular ABI, it can specify which ABI/OS by using this directive. The value is taken from the <a href="/en/XPCOM_Interface_Reference/nsIXULRuntime" title="https://developer.mozilla.org/en/nsIXULRuntime">nsIXULRuntime</a> OS and XPCOMABI values (concatenated with an underscore). For example:</p> - -<pre>binary-component component/myLib.dll abi=WINNT_<code>x86-MSVC -</code>binary-component component/myLib.so abi=Linux_<code>x86-gcc3 </code> -</pre> - -<p>See <a href="/en/XPCOM_ABI" title="en/XPCOM ABI">XPCOM ABI</a> for more details.</p> - -<h3 id="platform_.28Platform-specific_packages.29" name="platform_.28Platform-specific_packages.29">platform (Platform-specific packages)</h3> - -<p>Some packages are marked with a special flag indicating that they are platform specific. Some parts of content, skin, and locales may be different based on the platform being run. These packages contain three different sets of files, for Windows and OS/2, Macintosh, and Unix-like platforms. For example, the order of the "OK" and "Cancel" buttons in a dialog is different, as well as the names of some items.</p> - -<p>The "platform" modifier is only parsed for content registration; it is not recognized for locale or skin registration. However, it applies to content, locale, and skin parts of the package, when specified.</p> - -<p>To indicate that a package is platform-specific, add the "platform" modifier to the "content" line after the path, for example:</p> - -<pre class="eval" style="white-space: pre-wrap;">content global-platform jar:toolkit.jar!/toolkit/content/global-platform/ platform -</pre> - -<p>Once that is specified in your manifest you then ensure that under the directory global-platform are subdirectories <code>win</code> (Windows/OS2), <code>mac</code> (OS9/OSX), or <code>unix</code> (Everything Else). Anything residing outside of these subdirectories will be ignored.</p> - -<h3 id="xpcnativewrappers" name="xpcnativewrappers">xpcnativewrappers</h3> - -<p>Chrome packages can decide whether to use the <a href="/en/XPCNativeWrapper" title="en/XPCNativeWrapper">XPCNativeWrapper</a> security mechanism to automatically protect their code against malicious content that they might access. See <a href="/en/Safely_accessing_content_DOM_from_chrome" title="en/Safely_accessing_content_DOM_from_chrome">Safely accessing content DOM from chrome</a> for details.</p> - -<p>This flag is enabled by default since Firefox 1.5. Disabling it manually was possible by specifying <code>xpcnativewrappers=no</code> until Firefox 4.</p> - -<div class="note"> -<p><strong>Note:</strong> Support for this flag has been removed in {{Gecko("2.0")}}. You can no longer disable <code>XPCNativeWrapper</code>s. To update your add-on to work without this flag:</p> - -<ul> - <li>If your add-on depends upon XBL bindings attached to content objects (that is, it needs to be able to call functions or get and set properties created by the XBL binding), you'll need to use the object's <a href="/en/wrappedJSObject" title="en/wrappedJSObject"><code>wrappedJSObject</code></a> property to obtain a wrapped object.</li> - <li>If you need to call functions or access properties defined by the content -- for example, if your add-on wants to add a button to the page that calls a JavaScript function defined by the page.</li> -</ul> -</div> - -<p>The <code>xpcnativewrappers</code> flag applies only to content packages; it is not recognized for locale or skin registration.</p> - -<h2 id="Example_Chrome_Manifest" name="Example_Chrome_Manifest">Example chrome manifest</h2> - -<pre class="eval" style="white-space: pre-wrap;">content necko jar:comm.jar!/content/necko/ -locale necko en-US jar:en-US.jar!/locale/en-US/necko/ -content xbl-marquee jar:comm.jar!/content/xbl-marquee/ -content pipnss jar:pipnss.jar!/content/pipnss/ -locale pipnss en-US jar:en-US.jar!/locale/en-US/pipnss/ -# Firefox-only -overlay <a class="external" rel="freelink">chrome://browser/content/pageInfo.xul</a> <a class="external" rel="freelink">chrome://pippki/content/PageInfoOverlay.xul</a> application={ec8030f7-c20a-464f-9b0e-13a3a9e97384} -# SeaMonkey-only -overlay <a class="external" rel="freelink">chrome://navigator/content/pageInfo.xul</a> <a class="external" rel="freelink">chrome://pippki/content/PageInfoOverlay.xul</a> application={92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a} -overlay <a class="external" rel="freelink">chrome://communicator/content/pref/preftree.xul</a> <a class="external" rel="freelink">chrome://pippki/content/PrefOverlay.xul</a> -content pippki jar:pippki.jar!/content/pippki/ -locale pippki en-US jar:en-US.jar!/locale/en-US/pippki/ -content global-platform jar:toolkit.jar!/content/global-platform/ platform -skin global classic/1.0 jar:classic.jar!/skin/classic/global/ -override <a class="external" rel="freelink">chrome://global/content/netError.xhtml</a> jar:embedder.jar!/global/content/netError.xhtml -content inspector jar:inspector.jar!/content/inspector/ -</pre> - -<h2 id="Instructions_supported_in_bootstrapped_add_ons" name="Instructions_supported_in_bootstrapped_add_ons">Instructions supported in bootstrapped add-ons</h2> - -<p>The following instructions are supported in <a href="/en/Extensions/Bootstrapped_extensions" title="en/Extensions/Bootstrapped extensions">Bootstrapped extensions</a>:</p> - -<ul> - <li><code>manifest</code></li> - <li><code>content</code></li> - <li><code>locale</code></li> - <li><code>skin</code></li> - <li><code>override</code></li> -</ul> - -<h2 id="Debugging_a_Chrome_Manifest_file" name="Debugging_a_Chrome_Manifest_file">Debugging a chrome manifest file</h2> - -<p>The <a class="link-https" href="https://addons.mozilla.org/firefox/addon/chrome-list">Chrome List</a> extension (for Firefox 3.6 and older) shows all registered chrome. This is very helpful when trying to write a <code>chrome.manifest</code> file as you can inspect where the files are being mapped from (jar files, local directory, etc.)</p> - -<h2 id="Old-style_contents.rdf_manifests" name="Old-style_contents.rdf_manifests">Old-style contents.rdf manifests</h2> - -<p>Before the plaintext manifests were introduced (which happened in Firefox 1.5, Toolkit 1.8), RDF manifests named "contents.rdf" were used to register chrome. This format is deprecated; however, SeaMonkey versions before version 2 do not support the plaintext manifest format yet, so <code>contents.rdf</code> manifests are required for extensions that wish to maintain backwards compatibility with Firefox 1.0 or the suite.</p> - -<p>{{ gecko_minversion_note("1.9.2", "The <code>contents.rdf</code> manifest format is no longer supported at all starting with Gecko 1.9.2; add-ons already installed using this format will continue to work but can no longer be installed. Be sure to remove your add-on and reinstall it to ensure that it installs correctly after updating it to use a plaintext manifest.") }}</p> - -<h2 id="Official_References_for_Toolkit_API" name="Official_References_for_Toolkit_API">Official references for <a href="/en/Toolkit_API" title="en/Toolkit_API">Toolkit API</a></h2> - -<p>{{ page("en-US/docs/Toolkit_API/Official_References") }}</p> - -<p>{{ languages( { "fr": "fr/Enregistrement_chrome", "ja": "ja/Chrome_Registration", "pl": "pl/Rejestracja_Chrome" ,"zh-cn":"zh-cn/Chrome_Registration"} ) }}</p> diff --git a/files/pt-br/mozilla/connect/index.html b/files/pt-br/mozilla/connect/index.html deleted file mode 100644 index 366129db72..0000000000 --- a/files/pt-br/mozilla/connect/index.html +++ /dev/null @@ -1,126 +0,0 @@ ---- -title: Conecte-se ao Mozilla -slug: Mozilla/Connect -tags: - - Landing -translation_of: Mozilla/Connect ---- -<div class="summary"> -<p>Capacite-se, inspire-se e colabore para fazer a Web a primeira plataforma usada para criar experiências com todos os dispositivos conectados.</p> -</div> - -<div> -<div class="column-container dev-program-callouts dev-program-block dev-program-first dev-program-column-wrapper"> -<div class="dev-program-callout"> -<div class="callout-link-container"> -<h2 id="Hacks_blog">Hacks blog</h2> - -<p>Um recurso fundamental para pessoas que estão desenvolvendo para a Open Web, o blog Mozilla Hacks oferece notícias e discussões das últimas tecnologias Web e novidades do navegador.</p> - -<div class="callout-link-wrapper"><a class="callout-link ignore-external" href="https://hacks.mozilla.org/" style="white-space: normal;">Leia agora </a></div> -</div> -</div> - -<div class="dev-program-callout"> -<div class="callout-link-container"> -<h2 id="Canais_de_feedback">Canais de feedback</h2> - -<p>Você tem uma <a href="http://mzl.la/devtools">grande ideia de Ferramentas para Desenvolvedores</a>? Deixe-nos saber e ajudar-lhe a moldar essas novas funcionalidades.</p> - -<p>Construindo algo e precisa de ajuda? Faça sua pergunta no Stack Overflow!<br> - <span class="smaller"><strong>{{anch("Developer discussions", "Search the Q&A below")}}</strong></span></p> - -<div class="callout-link-wrapper"><a class="callout-link ignore-external" href="http://stackoverflow.com/r/mozilla" style="white-space: normal;">Mozilla Q&A on Stack Overflow </a></div> -</div> -</div> - -<div class="dev-program-callout"> -<div class="callout-link-container"> -<h2 id="Junte-se_à_MDN">Junte-se à MDN</h2> - -<p>Junte-se à MDN! Você será capaz de <a href="/en-US/docs/MDN/Contribute"> editar documentações</a> aqui, crie um perfil para mostrar o seu trabalho, e tenha acesso a novos recursos ao longo do tempo a medida que forem lançadas.</p> - -<div class="callout-link-wrapper"><a class="callout-link" href="/profile/edit" style="white-space: normal;">Cadastre-se ou Entre </a></div> -</div> -</div> -</div> - -<div class="dev-program-explanation dev-program-block"> -<h2 id="Conectar_com_a_Mozilla">Conectar com a Mozilla</h2> - -<p>Os desenvolvedores estão criando o futuro através da construção de serviços e aplicativos para pessoas de todo o mundo. O objetivo de Relações com Desenvolvedores da Mozilla é ajudar os desenvolvedores a usar tecnologias web abertas e padronizadas para ter sucesso em alcançar seus objetivos. Além da documentação aqui na MDN, oferecemos ajuda e outros recursos para atingir esse objetivo, através de vários canais. Nós convidamos você a se conectar, aprender e compartilhar seu próprio conhecimento.</p> - -<p>Estamos oferecendo ajuda através do <a href="http://stackoverflow.com/r/mozilla">Q&A no Stack Overflow</a>, para resolver problemas e desafios que possa ter técnicas específicas. Temos também uma newsletter mantê-lo informado sobre os últimos acontecimentos na cena web em torno de aplicativos da web e muito mais. <a href="https://marketplace.firefox.com/developers/#newsletter-signup">Assine a newsletter Apps & Hacks</a>.</p> - -<p>Se você compartilhar a <a href="https://www.mozilla.org/en-US/mission/">missão</a> e os <a href="https://www.mozilla.org/en-US/about/manifesto/">principios</a> da Mozilla, e querer ajudar a espalhar eles para mais desenvolvedores, confira as maneiras que você pode se envolver com a <a href="https://wiki.mozilla.org/Engagement/Developer_Engagement/Technical_Evangelism/Get_Involved">técnica de evangelismo</a>, e junte-se ao nosso <a href="https://lists.mozilla.org/listinfo/evangelism">grupo de discussão evangelismo Mozilla</a>.</p> - -<p>Temos um monte de planos e ideias para de forma iterativa expandir nossas ofertas de relações com desenvolvedores, e nós queremos que você envolvidas como nós fazê-lo! Então, <a href="http://stackoverflow.com/r/mozilla">siga as tags no Stack Overflow</a>, <a href="https://hacks.mozilla.org/">assine o blog Hacks</a>, <a href="https://marketplace.firefox.com/developers/#newsletter-signup">subscrever a newsletter</a>, <a href="/profile/edit">e se inscrever para uma conta</a>!</p> - -<h2 id="Junte-se_à_Mozilla" style="line-height: 30px;"><strong>Junte-se à Mozilla</strong></h2> - -<p>Se você quiser ir além de conexão com a Mozilla, você pode se juntar e ajudar a concretizar a <a href="https://www.mozilla.org/mission/">nossa missão de construir uma Internet melhor</a>. Como um desenvolvedor, você tem habilidades para contribuir em muitas áreas, bem como a oportunidade de aprimorar suas habilidades. Mozilla é um projeto open source, por isso, "o padrão para abrir." Você pode "ver a fonte" e contribuir para os nossos projetos de desenvolvimento de software, como o navegador Firefox para desktop e Android, o Firefox OS, e próprios sites da Mozilla. Você pode tornar-se parte de uma comunidade internacional e obter o reconhecimento por seus esforços. Aqui estão algumas das vantagens de contribuir com o projeto Mozilla.</p> - -<h3 id="Oportunidade_de_aprender_algo_novo"><strong>Oportunidade de aprender algo novo </strong></h3> - -<div> -<p>Ao escrever código para um projeto open source, você pode enfrentar problemas que você não tenha encontrado antes, que apresentam oportunidades de aprendizagem para você. Você pode experimentar novas ferramentas e técnicas em um projeto open source. Por exemplo, se você nunca fez qualquer teste de unidade, e não pode obter permissão do seu chefe para fazê-lo em seu trabalho regular, a escrever algum código para um projeto open source seria um excelente lugar para experimentá-lo. Contribuindo para o código aberto dá-lhe a oportunidade de colaborar com e conhecer muitas pessoas ao redor do mundo que têm interesses semelhantes. Além disso, uma organização de código aberto como o Mozilla tem muitos contribuintes que podem ajudá-lo a resolver problemas que você encontrar. Se você está apenas começando a contribuir, você pode procurar por alguns bugs "orientados", um colaborador experiente se oferece para ajudar um recém-chegado à corrigi-los.</p> - -<h3 id="O_que_posso_obter_contribuindo"><strong>O que posso obter contribuindo?</strong></h3> - -<p>Explorar muitas coisas e obter reconhecimento na comunidade -- estes são os benefícios intangíveis de contribuir para a Mozilla. Embora não possamos garantir benefícios tangíveis específicos, muitos contribuintes de valor recebem ferramentas da Mozilla de graça e convites para eventos relacionados à Mozilla, e são os primeiros na fila a serem considerado para estágios. Além disso, sua experiência em contribuir para um projeto open source pode ajudá-lo a encontrar um emprego. Mais e mais empregadores de desenvolvedores estão olhando para contribuições em código aberto. Eles gostam de ver que você está blogando e contribuindo para listas de discussão, e eles gostariam de vê-lo listado como um contribuidor em um projeto open source. Também pode ajudar com a seção de experiência de trabalho do seu currículo.</p> - -<h3 id="Como_eu_posso_contribuir_com_a_Mozilla"><strong>Como eu posso contribuir com a Mozilla?</strong></h3> - -<p>Há muitos projetos de área para a qual você pode contribuir para a Mozilla. Você pode encontrar, uma lista completa, visite a página atual Mozilla <a href="https://www.mozilla.org/contribute">Veja a página do contribuinte</a>. Algumas áreas que podem lhe interessar como um desenvolvedor incluem:</p> - -<ul> - <li><a href="http://www.whatcanidoformozilla.org/">Codificação</a></li> - <li><a href="http://www.whatcanidoformozilla.org/">Desenvolvimento Web</a></li> - <li><a href="/en-US/Firefox_OS/Developing_Gaia">Firefox OS</a></li> - <li><a href="https://quality.mozilla.org/teams/">QA</a></li> - <li><a href="https://wiki.mozilla.org/Marketplace/Contributing/Addons">Complementos</a></li> - <li><a href="https://wiki.mozilla.org/Marketplace/Contributing/Apps">Aplicativos</a></li> - <li><a href="/en-US/docs/MDN/Getting_started">Documentação do Desenvolvedor (Aqui no MDN)</a></li> -</ul> -</div> -</div> - -<div class="column-container dev-program-block"> -<div class="column-half" id="Developer_discussions"> -<h2 id="QA_no_Stack_Overflow_Veja_Todo_o_QA...">Q&A no Stack Overflow <a class="heading-link" href="http://stackoverflow.com/r/mozilla">Veja Todo o Q&A...</a></h2> - -<p>Nós temos Q&A para discutir desafios e questões ao desenvolver, em particular para Firefox OS e para Web Aberta nos dispositivos moveis. Está disponível no Stack Overflow nesta URL <a href="http://stackoverflow.com/r/mozilla">http://stackoverflow.com/r/mozilla</a>.</p> - -<div class="stack-form">Stack form</div> - -<h3 id="Últimos_Tópicos_QA">Últimos Tópicos Q&A</h3> -</div> - -<div class="column-half dev-program-hacks dev-program-block"> </div> -</div> - -<p class="dev-program-block"><img alt="Developers at a Firefox OS workshop in Madrid." src="https://mdn.mozillademos.org/files/6611/PhonesUp.jpg" style="display: block; height: 359px; margin: 0px auto; max-width: 100%; width: 720px;"></p> - -<div class="column-container dev-program-block"> -<div class="column-7 dev-program-events"> -<h2 id="Onde_está_a_Mozilla">Onde está a Mozilla?</h2> - -<p><a class="heading-link" href="https://developer.mozilla.org/en/events">Veja os participantes e detalhes na nossa Pagina de Eventos...</a></p> -</div> - -<div class="column-5"> -<h2 id="Outros_Recursos">Outros Recursos</h2> - -<ul class="no-bullets"> - <li><a href="http://www.youtube.com/user/mozhacks">Mozilla Hacks no YouTube</a> - - <ul> - <li><a href="http://www.youtube.com/playlist?list=PLo3w8EB99pqIHIUUv08hBCHq1OgPKhdo0">Videos do Firefox OS</a></li> - <li><a href="http://www.youtube.com/playlist?list=PLo3w8EB99pqLZNY22xKbTEzMfYo9PXAlm">Videos de Ferramentas de Desenvolvimento Firefox</a></li> - </ul> - </li> - <li><a href="https://twitter.com/mozhacks">@mozhacks no Twitter</a></li> -</ul> -</div> -</div> -</div> diff --git a/files/pt-br/mozilla/firefox/building_firefox_with_rust_code/index.html b/files/pt-br/mozilla/firefox/building_firefox_with_rust_code/index.html deleted file mode 100644 index 7f50b8a9c2..0000000000 --- a/files/pt-br/mozilla/firefox/building_firefox_with_rust_code/index.html +++ /dev/null @@ -1,34 +0,0 @@ ---- -title: Building Firefox with Rust code -slug: Mozilla/Firefox/Building_Firefox_with_Rust_code -translation_of: Archive/Mozilla/Firefox/Building_Firefox_with_Rust_code ---- -<div>{{FirefoxSidebar}}</div><p>Em maio de 2015, foi lançada a primeira versão 1.0 estável da <a href="http://www.rust-lang.org/">linguagem de programação Rust</a>, e vários experimentos para escrever partes do Gecko em Rust iniciaram. Esta página é um simples guia para pessoas trabalhando nesta área.</p> - -<h2 id="Adicionando_código_Rust">Adicionando código Rust</h2> - -<p>O suporte básico para buildar códigos em Rust foi lançado no <a class="bz_bug_link - bz_status_RESOLVED bz_closed" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1161339" title="RESOLVED FIXED - Support rust files in moz.build SOURCES">bug 1161339</a>. Se você possui <em>rustc</em> no seu path, você pode adicionar arquivos .rs ao SOURCES em moz.build. Então adicione</p> - -<pre>ac_add_options --enable-rust</pre> - -<p>ao seu <a href="/en-US/docs/Configuring_Build_Options">mozconfig</a> e provavelmente funcionará.</p> - -<p>A biblioteca padrão do Rust utiliza armazenamento thread-local, que não é suportado no MacOS X 2.6, então se você está buildando em um Mac, você também precisará disso:</p> - -<pre>ac_add_options --enable-macos-target=10.7</pre> - -<p>Alternativamente, você pode compilar com um conjunto de ferramentas costumizadas com -<code>-disable-elf-tls</code>. Veja <a class="bz_bug_link - bz_status_NEW " href="https://bugzilla.mozilla.org/show_bug.cgi?id=1164109" title="NEW - rust code fails to link on macosx because of thread-local storage">bug 1164109</a> para detalhes.</p> - -<p>Graças as limitações do <em>cargo</em> e do sistema de build do Firefox, atualmente nós buildamos uma biblioteca estática stand-alone para cada arquivo rust listado em SOURCES. Você precisa portanto listar apenas os arquivos rust de alto nível. Tudo precisa ser um único <em>crate</em>, como uma compilação manual unificada. O compilador rust irá pesquisar por módulos interiores pelo nome do arquivo-fonte, mas referências <em>crate</em> externas não serão resolvidas.</p> - -<p>Veja o <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1135640">bug 1135640</a> ('oxidation') para monitoramento global.</p> - -<h2 id="Testando_código_Rust">Testando código Rust</h2> - -<p>There's a simple linkage teste unitários in the tree. Você pode utilizá-lo para verificar se Rust está habilitado e funcionando com your build setup.</p> - -<pre>./mach gtest rust.*</pre> - -<p>Look for the <strong>rust.CallFromCpp</strong> test to pass, along with any others.</p> diff --git a/files/pt-br/mozilla/firefox/developer_edition/index.html b/files/pt-br/mozilla/firefox/developer_edition/index.html deleted file mode 100644 index 5ae8204f4c..0000000000 --- a/files/pt-br/mozilla/firefox/developer_edition/index.html +++ /dev/null @@ -1,57 +0,0 @@ ---- -title: Edição do Programador -slug: Mozilla/Firefox/Developer_Edition -tags: - - Firefox - - Iniciante - - Landing -translation_of: Mozilla/Firefox/Developer_Edition ---- -<div>{{FirefoxSidebar}}</div> - -<p style="text-align: center;"><img alt="" src="https://mdn.mozillademos.org/files/9143/firefox-dev-ed_logo-only_1024.png" style="display: block; height: 256px; margin-left: auto; margin-right: auto; width: 256px;">Uma versão do Firefox sob medida para desenvolvedores web.</p> - -<p><a href="https://www.mozilla.org/pt-BR/firefox/developer/" style="width: 250px; display: block; margin-left: auto; margin-right: auto; padding: 10px; text-align: center; border-radius: 4px; background-color: #81BC2E; white-space: nowrap; color: white; text-shadow: 0px 1px 0px rgba(0, 0, 0, 0.25); box-shadow: 0px 1px 0px 0px rgba(0, 0, 0, 0.2), 0px -1px 0px 0px rgba(0, 0, 0, 0.3) inset;">Download Firefox Developer Edition</a></p> - -<hr> -<div class="column-container"> -<div class="column-half"> -<h3 id="Os_recursos_mais_recentes_do_Firefox"><strong>Os recursos mais recentes do Firefox</strong></h3> - -<p>O Firefox Developer Edition substitui o canal Aurora no <a href="https://wiki.mozilla.org/Release_Management/Release_Process">Processo de lançamento do Firefox</a>. Como no Aurora, os recursos vão para o Developer Edition a cada seis semanas, depois de serem estabilizados no Nightly builds.</p> - -<p>Ao usar o Developer Edition, você ganha acesso a ferramentas e recursos da plataforma pelo menos 12 semanas antes de chegar ao principal canal de lançamento do Firefox.</p> - -<p><a href="/en-US/Firefox/Releases/69">Descubra o que há de novo na Edição do Programador.</a></p> -</div> - -<div class="column-half"> -<h3 id="Um_tema_distinto"><strong>Um tema distinto</strong></h3> - -<p>Incluindo acesso mais rápido às ferramentas de desenvolvimento.</p> - -<h3 id="Ferramentas_de_desenvolvimento_experimentais"><strong>Ferramentas de desenvolvimento experimentais</strong></h3> - -<p><span id="result_box" lang="pt"><span>Vamos</span> <span>incluir ferramentas</span> <span>experimentais</span> <span>que ainda não</span> <span class="alt-edited">estão prontas para liberação</span><span>.</span></span></p> - -<p>Por exemplo, o Developer Edition inclui o <a href="/en-US/docs/Tools/Valence">Valence add-on</a>, <span class="short_text" id="result_box" lang="pt"><span>que permite que você</span> <span>conecte o</span></span> <a href="/en-US/docs/Tools">Firefox developer tools</a> a<span id="result_box" lang="pt"> <span>outros navegadores como o</span> <span>Chrome</span> <span>no Android e</span> o <span>Safari</span> <span>no iOS</span></span>.</p> -</div> -</div> - -<div class="column-container"> -<div class="column-half"> -<h3 id="Um_perfil_separado"><strong>Um perfil separado</strong></h3> - -<p>Firefox Developer Edition utiliza um perfil separado de outras versões do Firefox instalado em sua máquina. Isto significa que você pode facilmente executar o Developer Edition ao lado de seu lançamento ou versão beta do Firefox.</p> - -<div class="note"> -<p><strong>Note:</strong> <span id="result_box" lang="pt"><span>Isto significa que a</span> <span>primeira vez que você</span> <span>iniciar o</span> <span>Developer Edition</span><span>, você verá</span> <span>um navegador</span> <span>completamente</span> <span class="alt-edited">não personalizado</span><span>,</span> <span>sem complementos</span><span>, bookmarks</span> <span>ou histórico</span></span>. Você pode <a href="https://support.mozilla.org/en-US/kb/how-do-i-set-up-firefox-sync">usar Firefox Sync</a> <span id="result_box" lang="pt"><span>se você quer</span> <span>unificar</span> <span>suas</span> <span>configurações entre o</span> <span>Developer Edition</span> <span>e</span> <span>outras edições do</span> <span>Firefox</span></span>.</p> -</div> -</div> - -<div class="column-half"> -<h3 id="Set_up_para_desenvolvedores_web"><strong>Set up para desenvolvedores web</strong></h3> - -<p>Nós definimos valores de preferência padrões adaptados para desenvolvedores web. Por exemplo, {{glossary("Chrome")}} e depuração remota são ativadas por padrão.</p> -</div> -</div> diff --git a/files/pt-br/mozilla/firefox/developer_edition/revertendo/index.html b/files/pt-br/mozilla/firefox/developer_edition/revertendo/index.html deleted file mode 100644 index de8ce406d8..0000000000 --- a/files/pt-br/mozilla/firefox/developer_edition/revertendo/index.html +++ /dev/null @@ -1,25 +0,0 @@ ---- -title: Revertendo -slug: Mozilla/Firefox/Developer_Edition/Revertendo -translation_of: Mozilla/Firefox/Developer_Edition/Reverting ---- -<div>{{FirefoxSidebar}}</div><h2 id="Revertendo_tema_no_Developer_Edition">Revertendo tema no Developer Edition</h2> - -<p><br> - Se você quiser usar o Developer Edition, mas prefere usar o tema 'Australis' usado no Firefox e Firefox Beta, você poderá alternar para o tema normal do Firefox: basta abrir o painel "Personalizar", clicar em "Temas", e selecionar o tema rotulado como "Padrão":</p> - -<p>{{EmbedYouTube("oiHt8T1Liyk")}}</p> - -<p>Alternativamente, digite "about:addons" na barra de localização, selecione "Aparência", e alterne os temas.</p> - -<h2 id="Revertendo_para_Firefox_Aurora">Revertendo para Firefox Aurora</h2> - -<p><br> - Se você quiser todos os recursos pré-Beta do Firefox Developer Edition, mas não quer nenhuma outra alteração, você pode reverter para algo como o antigo Firefox Aurora. Isso também irá restaurar seu perfil de pré-atualização e os dados da sessão. Este é um processo de 2 etapas, e você precisa seguir os passos nesta ordem:</p> - -<ol> - <li>Abra a página de Preferências do Developer Edition, e desmarque a opção "Permitir que o Firefox Developer Edition e Firefox execute ao mesmo tempo". Será solicitado a reinicialização do navegador.</li> - <li>Depois de reinicializar, você poderá reverter o tema do developer edition como descrito em "Revertendo tema no Developer Edition" acima.</li> -</ol> - -<p>{{EmbedYouTube("8rEJn_hATE8")}}</p> diff --git a/files/pt-br/mozilla/firefox/multiple_profiles/index.html b/files/pt-br/mozilla/firefox/multiple_profiles/index.html deleted file mode 100644 index 54bdf6b45a..0000000000 --- a/files/pt-br/mozilla/firefox/multiple_profiles/index.html +++ /dev/null @@ -1,244 +0,0 @@ ---- -title: Vários perfis no Firefox -slug: Mozilla/Firefox/Multiple_profiles -tags: - - Firefox - - Guía - - Iniciante - - Intro - - Perfis - - QA -translation_of: Mozilla/Firefox/Multiple_profiles ---- -<div>{{FirefoxSidebar}}</div> - -<p class="summary">Um perfil no Firefox é a coleção de configurações, personalizações, complementos e outras personalizações que um usuário fez ou instalou em sua cópia do Firefox. Você pode encontrar <a href="https://support.mozilla.org/kb/Profiles">detalhes sobre perfis</a> no site de suporte ao usuário final da Mozilla.</p> - -<h2 id="Motivos_para_ter_vários_perfis">Motivos para ter vários perfis</h2> - -<p>O usuário casual pode querer ter perfis diferentes para trabalho e uso pessoal ou para membros da família diferentes. Ter perfis diferentes ajudaria a separar a vida profissional e pessoal ou permitir que cada membro da família tenha seu próprio conjunto de favoritos, configurações e complementos.</p> - -<p>Os desenvolvedores web podem querer um perfil secundário para testar sites, aplicativos ou outros projetos em diferentes canais do Firefox. Por exemplo, você pode querer ter algumas extensões instaladas para desenvolvimento Web, mas não para navegação na Web de propósito geral. Ao usar o canal Nightly, você pode encontrar alguns complementos que se tornaram temporariamente incompatíveis com novas alterações da API, até que o desenvolvedor do complemento tenha a chance de atualizá-los. Você pode remover esses complementos do seu perfil para uso noturno, mantendo-os para uso com outros perfis.</p> - -<p>Para colaboradores de QA, teste e triagem de bugs, você pode querer ter várias versões de desenvolvimento do Firefox instaladas, cada uma com seu próprio perfil. Criar novos perfis para testes pode impedir que você perca suas preferências, favoritos e histórico. Demora pouco tempo para configurar um novo perfil e, uma vez concluído, todas as suas versões do Firefox serão atualizadas separadamente e poderão ser executadas simultaneamente.</p> - -<h2 id="Canais_disponíveis_de_desenvolvimento_do_navegador">Canais disponíveis de desenvolvimento do navegador</h2> - -<p>Há quatro canais do navegador disponíveis, cada um em um nível diferente de estabilidade e desenvolvimento. Os quatro canais são <a href="https://www.mozilla.org/firefox/new//en-US/docs/">Release</a>, <a href="https://www.mozilla.org/firefox/beta//en-US/docs/">Beta</a>, <a href="https://www.mozilla.org/firefox/aurora/">Developer Edition</a> e <a href="https://nightly.mozilla.org/">Nightly</a>. O canal Release é recomendado para a maioria dos usuários, já que é o canal de "lançamento oficial". No entanto, para os mais aventureiros, você pode experimentar um dos outros três canais para ver o que está por vir no Firefox e brincar com recursos emergentes. O canal Beta contém os recursos que devem estar na próxima versão do Firefox e estão em fase final de testes. Aurora contém recursos experimentais, que ainda não são de qualidade beta. Nightly contém o código mais recente dos desenvolvedores do Firefox e é o canal menos estável.</p> - -<h2 id="Ferramentas_de_terceiros">Ferramentas de terceiros</h2> - -<p>Além do Gerenciador de Perfis integrado e do Gerenciador de Perfis externo, existem algumas ferramentas de terceiros que facilitam o trabalho com vários perfis.</p> - -<div class="note"> -<p>Essa lista não é exaustiva. Por favor, adicione a esta lista quaisquer ferramentas úteis que você descobrir!</p> -</div> - -<h3 id="Mac_OS_X">Mac OS X</h3> - -<ul> - <li><a href="http://davemartorana.com/multifirefox/">Multifirefox</a> por Dave Martorana</li> -</ul> - -<h2 id="Gerenciamento_de_perfis">Gerenciamento de perfis</h2> - -<h3 id="Determinando_o_perfil_enquanto_o_Firefox_está_em_execução">Determinando o perfil enquanto o Firefox está em execução</h3> - -<p>Para determinar o perfil de uma instância do Firefox em execução no Windows, macOS ou Linux,</p> - -<ol> - <li>Digite about:profiles ma barra de pesquisa de URL do navegador.</li> - <li>A página apresenta uma lista de todos os seus perfis, cada um começando com "Perfil: " seguido por seu nome.</li> - <li>O que está sendo usado por esta instância do Firefox incluirá o texto em negrito "<strong>Este é o perfil em uso</strong>". Por exemplo, se você encontrar este texto sob a entrada de "Perfil: Suzie", então você está usando um perfile chamado <em>Suzie</em>.</li> -</ol> - -<h3 id="Iniciando_o_Firefox_no_perfil_desejado">Iniciando o Firefox no perfil desejado</h3> - -<p id="You_cannot_change_the_profile_while_Firefox_is_running._Although_it_is_possible_in_some_cases_to_have_multiple_instances_of_Firefox_running_in_different_profiles_to_avoid_confusion_you_should_first_exitquitterminate_all_running_instances_of_Firefox_FirefoxDeveloperEdition_or_Nightly._Then_follow_the_instructions_below_applicable_to_your_operating_system."><strong>Você não pode mudar o perfile enquanto o Firefox está em execução.</strong> Apesar de ser possível em alguns casos ter várias instâncias do Firefox em execução em diferentes perfis, para evitar confusão, você deve primeiro sair/terminar todas as instâncias em execução de <em>Firefox</em>, <em>FirefoxDeveloperEdition</em> ou <em>Nightly</em>. Então, siga as instruções abaixo, aplicáveis ao seu sistema operacional.</p> - -<h4 id="Windows">Windows</h4> - -<h5 id="Windows_XP">Windows XP</h5> - -<ol> - <li>Clique no botão de Iniciar.</li> - <li>Clique "Executar".</li> - <li> - <p>Digite <code>firefox --ProfileManager</code>.</p> - </li> -</ol> - -<h5 id="Windows_Vista7">Windows Vista/7</h5> - -<ol> - <li>Clique no botão de Iniciar.</li> - <li>Clique na barra de pesquisa na parte inferior.</li> - <li> - <p>Digite <code>firefox --ProfileManager</code>.</p> - </li> -</ol> - -<h5 id="Windows_88.1">Windows 8/8.1</h5> - -<ol> - <li>Pressione "Windows + R" em seu teclado.</li> - <li>Digite <code>firefox --ProfileManager</code>.</li> -</ol> - -<p>Se a janela do Gerenciador de Perfis não abrir, o Firefox pode estar sendo executado em segundo plano, mesmo que não esteja visível. Feche todas as instâncias do Firefox ou reinicie o computador e tente novamente.</p> - -<h4 id="Linux">Linux</h4> - -<p>Se o Firefox já estiver incluído na sua distribuição Linux, ou se você tiver instalado o Firefox com o gerenciador de pacotes da sua distribuição Linux:</p> - -<ol> - <li>No topo da janela do Firefox, clique no menu Arquivo e selecione Sair.</li> - <li>No Terminal, execute <code>firefox --ProfileManager</code></li> -</ol> - -<p>Se a janela do Gerenciador de Perfis não abrir, o Firefox pode estar sendo executado em segundo plano, mesmo que não esteja visível. Feche todas as instâncias do Firefox ou reinicie o computador e tente novamente.</p> - -<h4 id="macOS">macOS</h4> - -<ol> - <li>Execute o aplicativo <em>Terminal</em>, que é encontrado em Aplicativos/Utilitários.</li> - <li>Digite ou cole no caminho para o Firefox, seguido por <code>.app/Contents/MacOS/firefox</code>. Por exemplo, se o Firefox está instalado no local recomendado, você digitaria <code>/Applications/Firefox.app/Contents/MacOS/firefox</code>.</li> - <li>Se você tiver o caminho para o seu perfil desejado à mão, insira um caractere de espaço, seguido por <code>-profile</code> seguido por outro caractere de espaço, seguido pelo caminho completo para a pasta de perfil na qual você deseja iniciar. Isto irá iniciar o Firefox imediatamente. Caso contrário, insira um caractere de espaço seguido de <code>--profilemanager</code>. Isso apresentará a janela do Gerenciador de Perfis na qual você pode fazer sua seleção.</li> - <li>Pressione <em>enter.</em></li> -</ol> - -<p>Aqui está um exemplo completo do comando Terminal a partir dos passos 2-3:</p> - -<pre>/Applications/Firefox.app/Contents/macOS/firefox -profile /Users/Suzie/Library/Application\ Support/Firefox/Profiles/r99d1z7c.default</pre> - -<p>Se você quiser fazer isso com frequência e de forma mais fácil, você pode querer criar um aplicativo <em>Automatizador</em>, como explicado <a href="http://sonnygill.net/mac/mac-multiple-firefox-profiles/">neste tutorial</a>.</p> - -<h3 id="Criando_um_perfil">Criando um perfil</h3> - -<h4 id="Criando_um_perfil_através_do_Gerenciador_de_Perfis">Criando um perfil através do Gerenciador de Perfis</h4> - -<p>Essas instruções devem ser as mesmas para todos os sistemas operacionais.</p> - -<ol> - <li>Para iniciar o Assistente de novo perfil, clique em "Novo perfil..." no Gerenciador de Perfis.</li> - <li>Clique em Próximo e insira o nome do perfil. Use um nome de perfil que seja descritivo, como seu nome pessoal. Este nome não é exposto à Internet.</li> - <li>Você também pode escolher onde armazenar o perfil no seu computador. Para selecionar o local de armazenamento, clique em Pasta....</li> - <li>Se você escolher o local da pasta para o perfil, selecione uma pasta nova ou vazia. Se você escolher uma pasta que não esteja vazia e depois remover o perfil e escolher a opção \"Excluir arquivos\", tudo dentro dessa pasta será excluído.</li> - <li>Para criar o novo perfil, clique Concluir.</li> -</ol> - -<h4 id="Criando_um_perfil_através_do_navegador_Firefox">Criando um perfil através do navegador Firefox</h4> - -<p>Você pode criar um novo perfil do Firefox diretamente no navegador.</p> - -<ol> - <li>Digite about:profiles na barra de pesquisa de URL do navegador</li> - <li>Na página, clique no botão Criar um novo perfil</li> - <li>Leia a introdução e clique em Próximo</li> - <li>Digite um nome de perfil para seu novo Perfil. Use um nome de perfil que é descritivo, tal como seu nome pessoal. Esse nome não é exposto para a Internet.</li> - <li>Opcionalmente, para alterar onde o perfil armazenará seu computador, clique em Pasta...</li> - <li>Para criar um novo perfil, clique Concluir.</li> -</ol> - -<h3 id="Excluindo_um_perfil">Excluindo um perfil</h3> - -<ol> - <li>No Gerenciador de perfil, selecione o perfil para remover e clique Excluir perfil....</li> - <li>Confirme que você deseja excluir o perfil: - <ul> - <li>"Não excluir arquivos" remove o perfil do Gerenciador de perfil, mas retém os arquivos de dados do perfil no seu computador na pasta de armazenamento, para que suas informações não sejam perdidas. "Não excluir arquivos" é a opção preferida, porque salva a pasta do perfil antigo, permitindo recuperar os arquivos para um novo perfil.</li> - <li>"Excluir arquivos" remove o perfil e seus arquivos, incluindo os favoritos, configurações, senhas, etc.<br> - <br> - {{ warning("Se você usar a opção \"Excluir arquivos\", a pasta de perfil e os arquivos serão excluídos. Essa ação não podem ser desfeitas.") }}</li> - <li>"Cancelar" interrompe a exclusão de perfil.</li> - </ul> - </li> -</ol> - -<h3 id="Renomeando_um_perfil">Renomeando um perfil</h3> - -<ol> - <li>No Gerenciador de perfil, selecione o perfil que você deseja renomear e clique em "Renomear perfil".</li> - <li>Insira um novo nome para o perfile e clique em OK.</li> -</ol> - -<div class="note"> -<p>Nota: A pasta contendo os arquivos para o perfil não é renomeada.</p> -</div> - -<h2 id="Opções">Opções</h2> - -<h3 id="Trabalhar_desconectado">Trabalhar desconectado</h3> - -<p>A escolha desta opção carrega o perfil selecionado e inicia o Firefox desconectado. Você pode visualizar páginas web visualizadas anteriormente e experimentar seu perfil.</p> - -<h3 id="Não_perguntar_na_inicialização">Não perguntar na inicialização</h3> - -<p>Se você tiver vários perfis, o Firefox solicitará que o perfil seja usado toda vez que você iniciar o Firefox. Selecione essa opção para permitir que o Firefox carregue o perfil selecionado, sem solicitar a inicialização.</p> - -<div class="note"> -<p>Nota: Para acessar outros perfis após selecionar esta opção, você deve iniciar o Gerenciador de perfis primeiro.</p> -</div> - -<h2 id="Usando_os_perfis">Usando os perfis</h2> - -<h3 id="Windows_2">Windows</h3> - -<p>Se você deseja que o gerenciador de perfil seja exibido toda vez que iniciar o Firefox, para poder escolher um perfil, será necessário editar o "Destino" do ícone de inicialização. Para fazer isso:</p> - -<ol> - <li>Clique com o botão direito o ícone e escolha "Propriedades".</li> - <li>Quando a caixa de diálogo de propriedades for exibida, você verá um campo de texto "Destino" que poderá editar e deverá mostrar o caminho atual do arquivo.</li> - <li>Após fechar as aspas, adicione <code>-ProfileManager</code>.</li> - <li>Clique Ok.</li> -</ol> - -<p>Agora, sempre que você clicar duas vezes nesse ícone, o Gerenciador de perfis deverá aparecer, permitindo que você escolha o perfil que deseja usar.</p> - -<p>Se você quiser que ícones individuais iniciem perfis específicos, será necessário editar o "Destino" de cada ícone. Para fazer isso:</p> - -<ol> - <li>Clique com botão direito no ícone e escolha "Propriedades".</li> - <li>Quando a caixa de diálogo de propriedades for exibida, você verá um campo de texto "Destino" que poderá editar e deverá mostrar o caminho atual do arquivo.</li> - <li>Para definir permanentemente um perfil específico, adicione <code>-p NOME_DO_PERFIL</code> ao caminho de destino, mas fora das aspas, substituindo "NOME_DO_PERFIL" com o nome de perfil que você escolher.</li> - <li>Se você também quiser permitir que várias instâncias do Firefox sejam executadas ao mesmo tempo, adicione <code>-no-remote</code> após o nome do perfil.</li> - <li>Quando terminar, clique em Ok. Faça isso para cada ícone para o qual você gostaria de ter um perfil específico. Uma vez feito, cada um deve iniciar automaticamente com o perfil especificado.</li> -</ol> - -<h3 id="Linux_2">Linux</h3> - -<p>Não existe uma maneira extremamente direta de criar lançadores de aplicativos personalizados no Gnome 3 como havia no Gnome 2. O tutorial a seguir ajudará você a progredir no geral: <a href="https://blog.randell.ph/how-to-create-custom-application-launchers-in-gnome-3/">Gnome 3 Iniciador de aplicativos personalizado</a>. Depois de chegar ao ponto de adicionar um novo item, você pode ter a caixa de diálogo de perfil sempre exibida ou definir o inicializador para iniciar um perfil específico.</p> - -<p>Se você deseja que o gerenciador de perfil seja exibido toda vez que iniciar o Firefox, para poder escolher um perfil, será necessário definir a linha de comando para o seu novo iniciador.</p> - -<ol> - <li>Defina o campo de texto "command" para direcionar o arquivo executável, provavelmente "/usr/bin/firefox", e adicione o parâmetro <code>-p</code>.</li> -</ol> - -<p>Se você quiser que ícones individuais iniciem perfis específicos, você precisará definir a linha de comando para o seu novo lançador. Para fazer isso:</p> - -<ol> - <li>Defina o campo de texto "command" para direcionar o arquivo executável, provavelmente "/usr/bin/firefox", e adicione o parâmetro <code>-p NOME_DO_PERFIL</code>, substituindo "NOME_DO_PERFIL" com o perfil específico.</li> - <li>Repita conforme necessário, para cada perfil adicional que você deseja definir.</li> - <li>Se você também quiser permitir que várias instâncias do Firefox sejam executadas ao mesmo tempo, adicione "-no-remote" após o nome do perfil.</li> -</ol> - -<h3 id="Mac_OS_X_2">Mac OS X</h3> - -<p>Você pode encontrar um tutorial útil para configurar lançadores personalizados aqui: <a href="https://spf13.com/post/managing-multiple-firefox-profiles-in-os-x/">Gerenciando vários perfis do Firefox no OSX</a>. Observe que é melhor seguir todas as etapas na seção "Criando os scripts", incluindo a etapa "editar Info.plist". Deixe de fora o nome do perfil se quiser que o seletor de perfis seja exibido toda vez que você iniciar.</p> - -<h2 id="Configurando_vários_perfis_para_diferentes_canais_do_Firefox">Configurando vários perfis para diferentes canais do Firefox</h2> - -<p>Esta seção será especialmente útil se você for um desenvolvedor, quiser trabalhar com vários canais e cada um tiver seu iniciador separado.</p> - -<h3 id="Windows_3">Windows</h3> - -<p>No Windows, as compilações Developer e Nightly têm seu próprio diretório na pasta "Programas", para que você não precise se preocupar com onde armazenar os arquivos baixados. No entanto, todos os três tentarão usar o mesmo perfil por padrão. Você não vai querer manter esse comportamento, porque os diferentes canais têm diferentes níveis de recursos. Para definir cada ativador, siga as instruções do Windows no <a href="#Windows">Windows Launcher</a>.</p> - -<h3 id="Linux_3">Linux</h3> - -<p>No Linux, as coisas não são configuradas automaticamente. Você provavelmente obterá uma solicitação para fazer o download de um arquivo tar.bz2 para extrair. Extraia os arquivos para um novo diretório e use as instruções do novo lançador aqui. A única mudança que você precisará fazer é o caminho do comando. Você desejará configurá-lo para o diretório em que extraiu o arquivo tar.bz2 do canal Firefox e o arquivo executável "firefox" localizado nesse diretório. Os demais métodos de atribuição de perfil permanecerão os mesmos. Você desejará, com certeza, adicionar a parte <code>-no-remote</code> ao final do campo de comando, para poder executar várias instâncias ao mesmo tempo.</p> - -<h3 id="Mac_OS_X_3">Mac OS X</h3> - -<p>Você pode encontrar um tutorial útil para configurar lançadores personalizados aqui: <a href="https://spf13.com/post/managing-multiple-firefox-profiles-in-os-x/">Gerenciando vários perfis do Firefox no OSX</a>. Observe que é melhor seguir todas as etapas na seção "Criando os scripts", incluindo a etapa "editar Info.plist". Além disso, você desejará alterar o caminho no script do shell para apontar para o arquivo .app correto para o canal do Firefox que você deseja segmentar.</p> diff --git a/files/pt-br/mozilla/firefox/multiprocess_firefox/index.html b/files/pt-br/mozilla/firefox/multiprocess_firefox/index.html deleted file mode 100644 index 2dd2134e60..0000000000 --- a/files/pt-br/mozilla/firefox/multiprocess_firefox/index.html +++ /dev/null @@ -1,75 +0,0 @@ ---- -title: Multiprocess Firefox -slug: Mozilla/Firefox/Multiprocess_Firefox -tags: - - Português (do Brasil) tags -translation_of: Mozilla/Firefox/Multiprocess_Firefox ---- -<div>{{FirefoxSidebar}}</div><p>In current versions of desktop Firefox, the entire browser runs in a single operating system process. In particular, the JavaScript that runs the browser UI (also known as "chrome code") runs in the same process as the code in web pages (also known as "content" or "web content").<br> - <br> - Future versions of Firefox will run the browser UI in a separate process from web content. In the first iteration of this architecture all browser tabs will run in the same process, and the browser UI will run in a different process. In future iterations, we expect every browser tab to run in its own process. The project that's delivering multiprocess Firefox is called Electrolysis, sometimes abbreviated to e10s.</p> - -<p>Normal web pages are unaffected by multiprocess Firefox. People working on Firefox itself and Firefox add-on developers will be affected if their code relies on being able to access web content directly.</p> - -<p>Instead of accessing content directly, chrome JavaScript will have to use the <a href="/en-US/Firefox/Multiprocess_Firefox/The_message_manager">message manager</a> to access content. To help ease the transition we've implemented <a href="/en-US/Firefox/Multiprocess_Firefox/Cross_Process_Object_Wrappers">Cross Process Object Wrappers</a> and some <a href="/en-US/Firefox/Multiprocess_Firefox/Limitations_of_chrome_scripts#Compatibility_shims">compatibility shims for add-on developers</a>. If you're an add-on developer wondering whether you are affected, see the <a href="/en-US/Add-ons/Working_with_multiprocess_Firefox">guide to working with multiprocess Firefox</a>.</p> - -<p>Multiprocess Firefox is currently enabled by default in <a class="external external-icon" href="https://nightly.mozilla.org/">Nightly</a> builds. As a visual indicator that you're running multiprocess Firefox, the titles of remote tabs are underlined.</p> - -<hr> -<div class="column-container"> -<div class="column-half"> -<dl> - <dt><a href="/en-US/Firefox/Multiprocess_Firefox/Technical_overview">Technical overview</a></dt> - <dd>A very high-level view of how multiprocess Firefox is implemented.</dd> - <dt><a href="/en-US/Firefox/Multiprocess_Firefox/Glossary">Glossary</a></dt> - <dd>A reference for the jargon used in multiprocess Firefox.</dd> - <dt><a href="/en-US/Firefox/Multiprocess_Firefox/The_message_manager">The message manager</a></dt> - <dd>How to communicate between chrome and content.</dd> - <dt><a href="/en-US/Firefox/Multiprocess_Firefox/Message_Manager_Interfaces">Message Manager interfaces</a></dt> - <dd>Includes links to the API reference for the message manager interfaces.</dd> - <dt><a href="/en-US/Firefox/Multiprocess_Firefox/Frame_script_environment">Frame script environment</a></dt> - <dd>The environment frame scripts run in, and especially how it differs from the environment for chrome code.</dd> -</dl> -</div> - -<div class="column-half"> -<dl> - <dt><a href="/en-US/Firefox/Multiprocess_Firefox/Motivation">Motivation</a></dt> - <dd>Why we're implementing multiprocess Firefox: performance, security, and stability.</dd> - <dt><a href="/en-US/Add-ons/Working_with_multiprocess_Firefox">Add-on migration guide</a></dt> - <dd>If you're an add-on developer, find out if you're affected and how to update your code.</dd> - <dt><a href="/en-US/Firefox/Multiprocess_Firefox/Cross_Process_Object_Wrappers">Cross Process Object Wrappers</a></dt> - <dd>Cross Process Object Wrappers are a migration aid, giving chrome code synchronous access to content.</dd> - <dt><a href="/en-US/Firefox/Multiprocess_Firefox/Debugging_frame_scripts">Debugging frame scripts</a></dt> - <dd>Using the Browser Content Toolbox to debug frame scripts.</dd> -</dl> -</div> -</div> - -<hr> -<div class="column-container"> -<div class="column-half"> -<dl> - <dt><a href="/en-US/Firefox/Multiprocess_Firefox/Limitations_of_chrome_scripts">Limitations of chrome scripts</a></dt> - <dd>Practices that will no longer work in chrome code, and how to fix them.</dd> -</dl> -</div> - -<div class="column-half"> -<dl> - <dt><a href="/en-US/Firefox/Multiprocess_Firefox/Limitations_of_frame_scripts">Limitations of frame scripts</a></dt> - <dd>Practices that will not work inside frame scripts, and what to do instead.</dd> -</dl> -</div> -</div> - -<hr> -<h2 id="Contact_us">Contact us</h2> - -<p>Find out more about the project, get involved, or ask us your questions.</p> - -<ul> - <li><strong>Electrolysis project page</strong>: <a href="https://wiki.mozilla.org/Electrolysis">https://wiki.mozilla.org/Electrolysis</a></li> - <li><strong>IRC</strong>: #e10s on <a href="https://wiki.mozilla.org/IRC">irc.mozilla.org</a></li> - <li><strong>Mailing list</strong>: <a href="https://groups.google.com/forum/#!forum/mozilla.dev.tech.electrolysis">dev.tech.electrolysis</a></li> -</ul> diff --git a/files/pt-br/mozilla/firefox/multiprocess_firefox/motivacao/index.html b/files/pt-br/mozilla/firefox/multiprocess_firefox/motivacao/index.html deleted file mode 100644 index 8b3745c16c..0000000000 --- a/files/pt-br/mozilla/firefox/multiprocess_firefox/motivacao/index.html +++ /dev/null @@ -1,44 +0,0 @@ ---- -title: Motivação para o Multiprocesso do Firefox -slug: Mozilla/Firefox/Multiprocess_Firefox/Motivacao -translation_of: Mozilla/Firefox/Multiprocess_Firefox/Motivation ---- -<div>{{FirefoxSidebar}}</div><p>Existem três principais razões para fazer o Firefox executar conteúdo em processos separados: desempenho, segurança e estabilidade.</p> - -<h2 id="Performance">Performance</h2> - -<p>A maioria dos trabalhos de performances na Mozilla nos últimos dois anos tem se concentrado na capacidade de resposta do navegador. O objetivo é reduzir "<a href="/en-US/docs/Glossary/Jank"> jank</a>" - esses momentos em que o navegador parece congelar brevemente ao carregar uma página grande, digitando uma forma, Ou rolagem. A capacidade de resposta tende a importar muito mais do que o rendimento na web hoje. Grande parte deste trabalho foi feito como parte do <a href="https://wiki.mozilla.org/Performance/Snappy"> projeto Snappy</a>. Os principais focos foram:</p> - -<ul> - <li>Moving long-running actions to a separate thread so that the main thread can continue to respond to the user.</li> - <li>Doing I/O asynchronously or on other threads so that the main thread isn’t blocked waiting for the disk.</li> - <li>Breaking long-running code into shorter pieces and running the event loop in between. Incremental garbage collection is an example of this.</li> -</ul> - -<p>Much of the low-hanging fruit in these areas has already been picked. The remaining issues are difficult to fix. For example, JavaScript execution and layout happen on the main thread, and they block the event loop. Running these components on a separate thread is difficult because they access data, like the DOM, that are not thread-safe. As an alternative, we’ve considered allowing the event loop to run in the middle of JavaScript execution, but doing so would break a lot of assumptions made by other parts of Firefox (not to mention add-ons).</p> - -<p>Running web content in a separate process is a nice alternative to these approaches. Like the threaded approach, Firefox is able to run its event loop while JavaScript and layout are running in a content process. But unlike threading, the UI code has no access to content DOM or or other content data structures, so there is no need for locking or thread-safety. The downside, of course, is that any code in the Firefox UI process that needs to access content data must do so explicitly through message passing.</p> - -<p>We feel this tradeoff makes sense for a few reasons:</p> - -<ul> - <li>It’s not all that common for Firefox code to access content DOM.</li> - <li>Code that is shared with Firefox OS already uses message passing.</li> - <li>In the multiprocess model, Firefox code that fails to use message passing to access content will fail in an obvious, consistent way. In the threaded model, code that accesses content without proper locking will fail in subtle ways that are difficult to debug.</li> -</ul> - -<h2 id="Security">Security</h2> - -<p>Right now, if someone discovers an exploitable bug in Firefox, they’re able to take over users’ computers. There are a lot of techniques to mitigate this problem, but one of the most powerful is <a href="http://en.wikipedia.org/wiki/Sandbox_%28computer_security%29">sandboxing</a>. Technically, sandboxing doesn’t require multiple processes. However, a sandbox that covered single-process Firefox wouldn’t be very useful. Sandboxes are only able to prevent processes from performing actions that a well-behaved process would never do. Unfortunately, a well-behaved Firefox process (especially one with add-ons installed) needs access to much of the network and file system. Consequently, a sandbox for single-process Firefox couldn’t restrict much.</p> - -<p>In multiprocess Firefox, content processes will be sandboxed. A well-behaved content process won’t access the filesystem directly; it will have to ask the main process to perform the request. At that time, the main process can verify that the request is safe and that it makes sense. Consequently, the sandbox for content processes can be quite restrictive. Our hope is that this arrangement will make it much harder to craft exploitable security holes for Firefox.</p> - -<h2 id="Stability">Stability</h2> - -<p>Currently, a crash in the code running a web page will take down the entire browser. With multiprocess Firefox, only the content process that crashed will be killed.</p> - -<div class="note"> -<p>This page incorporates a lot of content from Bill McCloskey's blog post on multiprocess Firefox: <a href="http://billmccloskey.wordpress.com/2013/12/05/multiprocess-firefox/">http://billmccloskey.wordpress.com/2013/12/05/multiprocess-firefox/</a></p> -</div> - -<p> </p> diff --git a/files/pt-br/mozilla/firefox/multiprocess_firefox/which_uris_load_where/index.html b/files/pt-br/mozilla/firefox/multiprocess_firefox/which_uris_load_where/index.html deleted file mode 100644 index 708c6b49f0..0000000000 --- a/files/pt-br/mozilla/firefox/multiprocess_firefox/which_uris_load_where/index.html +++ /dev/null @@ -1,59 +0,0 @@ ---- -title: Aonde cada URI carrega -slug: Mozilla/Firefox/Multiprocess_Firefox/Which_URIs_load_where -translation_of: Mozilla/Firefox/Multiprocess_Firefox/Which_URIs_load_where ---- -<div>{{FirefoxSidebar}}</div><p>Com base inicialmente no esquema URI da página, o navegador pode decidir se carregar uma página no processo chrome ou um processo de conteúdo. Para alguns esquemas, você pode alterar o comportamento padrão.</p> - -<table class="standard-table"> - <thead> - <tr> - <th scope="col">Esquema</th> - <th scope="col">Comportamento</th> - </tr> - </thead> - <tbody> - <tr> - <td><code>about:</code></td> - <td> - <p>Por padrão, as páginas <code> about: </code> são sempre carregadas no processo chrome. No entanto, quando você registra uma nova página <code> about:</code> você pode alterar esse padrão.</p> - - <p>Duas novas flags são definidas em <code><a href="https://dxr.mozilla.org/mozilla-central/source/netwerk/protocol/about/nsIAboutModule.idl">nsIAboutModule</a></code>:</p> - - <ul> - <li><code>URI_CAN_LOAD_IN_CHILD</code>: A página será carregada no mesmo processo que carregou o <code> <a href="pt-BR/docs/Mozilla/Tech/XUL/Navegador"> navegador</a></code>.</li> - <li><code>URI_MUST_LOAD_IN_CHILD</code>: A página sempre será carregada em um processo filho.</li> - </ul> - - <p>Para usar um destes flags, retorne em sua implementação o <code>getURIFlags</code> no <a href="/en-US/docs/Custom_about:_URLs">código que registra o <code>about:</code> URI</a>.</p> - - <p>Se você usar essas flags, você deve registrar a página sobre um framescript para cada guia. Se você não configurar o multiprocesso Compatível com o verdadeiro no seu <code>install.rdf</code>, então serão usados os padrões. Mas os padrões dos e10s serão obsoletos em breve. Leia mais aqui - <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1257201">Erro 1257201</a>.</p> - </td> - </tr> - <tr> - <td><code>chrome:</code></td> - <td> - <p>Por padrão, as páginas <code>chrome:</code> são sempre carregadas no processo chrome. No entanto, quando você registra uma nova página <code>chrome</code>, você pode alterar esse padrão.</p> - - <p>Duas novas flags são definidas no <a href="/en-US/docs/Chrome Registration">file chrome.manifest</a>:</p> - - <ul> - <li>remoteenabled: a página será carregada no mesmo processo que carregou o<code> <a href="pt-BR/docs/Mozilla/Tech/XUL/Navegador"> navegador</a></code>.</li> - <li>remoterequired: a página sempre será carregada em um processo filho.</li> - </ul> - </td> - </tr> - <tr> - <td><code>file:</code></td> - <td> - <p>Sempre carregado em um processo de conteúdo.</p> - - <p><strong>Nota:</strong> Isso não significa que o <code>file:</code> URIs podem ser usado livremente em código de processos de conteúdo. O Sandboxing pode incluir listas predefinidas de diretórios particulares e futuras alterações podem restringir os <code>files:</code> URIs a um processo de conteúdo separado, isolado do conteúdo da Web normal. Veja <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1187099">bug 1187099 </a> como isso pode afetar os addons tentando carregar arquivos no diretório do perfil.</p> - </td> - </tr> - <tr> - <td><code>resource:</code></td> - <td>Sempre carregado em um processo de conteúdo.</td> - </tr> - </tbody> -</table> diff --git a/files/pt-br/mozilla/firefox/performance_best_practices_for_firefox_fe_engineers/index.html b/files/pt-br/mozilla/firefox/performance_best_practices_for_firefox_fe_engineers/index.html deleted file mode 100644 index 53e23e5f98..0000000000 --- a/files/pt-br/mozilla/firefox/performance_best_practices_for_firefox_fe_engineers/index.html +++ /dev/null @@ -1,328 +0,0 @@ ---- -title: Performance best practices for Firefox front-end engineers -slug: Mozilla/Firefox/Performance_best_practices_for_Firefox_fe_engineers -translation_of: Mozilla/Firefox/Performance_best_practices_for_Firefox_fe_engineers ---- -<div>{{FirefoxSidebar}}</div> - -<p>This guide will help Firefox developers working on front-end code produce code which is as performant as possible—not just on its own, but in terms of its impact on other parts of Firefox. Always keep in mind the side effects your changes may have, from blocking other tasks, to interfering with other user interface elements.</p> - -<h2 id="Avoid_the_main_thread_where_possible">Avoid the main thread where possible</h2> - -<p>The main thread is where we process user events and do painting. It's also important to note that most of our JavaScript runs on the main thread, so it's easy for script to cause delays in event processing or painting. That means that the more code we can get off of the main thread, the more that thread can respond to user events, paint, and generally be responsive to the user.</p> - -<p>You might want to consider using a {{domxref("Worker")}} if you need to do some computation that can be done off of the main thread. If you need more elevated privileges than a standard worker allows, consider using a {{domxref("ChromeWorker")}}, which is a Firefox-only API which lets you create workers with more elevated privileges.</p> - -<h2 id="Use_requestIdleCallback">Use requestIdleCallback()</h2> - -<p>If you simply cannot avoid doing some kind of long job on the main thread, try to break it up into smaller pieces that you can run when the browser has a free moment to spare, and the user isn't doing anything. You can do that using {{domxref("Window.requestIdleCallback", "requestIdleCallback()")}} and the <a href="/en-US/docs/Web/API/Background_Tasks_API">Cooperative Scheduling of Background Tasks API</a>, and doing it only when we have a free second where presumably the user isn’t doing something.</p> - -<p>See also the blog post <a href="https://hacks.mozilla.org/2016/11/cooperative-scheduling-with-requestidlecallback/">Collective scheduling with requestIdleCallback</a>.</p> - -<p>As of {{bug(1353206)}}, you can also schedule idle events in non-DOM contexts by using <code>Services.tm.idleDispatchToMainThread.</code> See the <code>nsIThreadManager.idl</code> file for more details.</p> - -<h2 id="Hide_your_panels">Hide your panels</h2> - -<p>If you’re adding a new XUL {{XULElem("popup")}} or {{XULElem("panel")}} to a document, set the {{XULAttr("hidden")}} attribute to <code>true</code> by default. By doing so, you cause the binding applied on demand rather than at load time, which makes initial construction of the XUL document faster.</p> - -<h2 id="Get_familiar_with_the_pipeline_that_gets_pixels_to_the_screen">Get familiar with the pipeline that gets pixels to the screen</h2> - -<p>Learn how pixels you draw make their way to the screen. Knowing the path they will take through the various layers of the browser engine will help you optimize your code to avoid pitfalls.</p> - -<p>The rendering process goes through the following steps:<img alt="This is the pipeline that a browser uses to get pixels to the screen." src="https://mdn.mozillademos.org/files/14995/pasted%20image%200.png" style="height: 167px; width: 1093px;"></p> - -<div class="note"> -<p>The above image is used under <a href="https://creativecommons.org/licenses/by/3.0/">Creative Commons Attribution 3.0</a>, courtesy of <a href="https://developers.google.com/web/fundamentals/performance/rendering/avoid-large-complex-layouts-and-layout-thrashing">this page</a> from our friends at Google, which itself is well worth the read.</p> -</div> - -<div class="note"> -<p>For a very down-to-earth explanation of the Style, Layout, Paint and Composite steps of the pipeline, <a href="https://hacks.mozilla.org/2017/08/inside-a-super-fast-css-engine-quantum-css-aka-stylo/">this Hacks blog post</a> does a great job of explaining it.</p> -</div> - -<p>To achieve a 60 FPS frame rate, all of the above has to happen in 16 milliseconds or less, every frame.</p> - -<p>Note that {{domxref("Window.requestAnimationFrame", "requestAnimationFrame()")}} lets you queue up JavaScript to <strong>run right before the style flush occurs</strong>. This allows you to put all of your DOM writes (most importantly, anything that could change the size or position of things in the DOM) just before the style and layout steps of the pipeline, combining all the style and layout calculations into a single batch so it all happens once, in a single frame tick, instead of across multiple frames. See {{anch("Detecting and avoiding synchronous reflow")}} below for more information.</p> - -<p>This also means that {{domxref("Window.requestAnimationFrame", "requestAnimationFrame()")}} is <strong>not a good place</strong> to put queries for layout or style information.</p> - -<h2 id="Detecting_and_avoiding_synchronous_style_flushes">Detecting and avoiding synchronous style flushes</h2> - -<h3 id="What_are_style_flushes">What are style flushes?</h3> - -<p>When CSS is applied to a document (HTML or XUL, it doesn’t matter), the browser does calculations to figure out which CSS styles will apply to each element. This happens the first time the page loads and the CSS is initially applied, but can happen again if JavaScript modifies the DOM.</p> - -<p>JavaScript code might, for example, change DOM node attributes (either directly or by adding or removing classes from elements), and can also add, remove, or delete DOM nodes. Because styles are normally scoped to the entire document, the cost of doing these style calculations is proportional to the number of DOM nodes in the document (and the number of styles being applied).</p> - -<p>It is expected that over time, script will update the DOM, requiring us to recalculate styles. Normally, the changes to the DOM just result in the standard style calculation occurring immediately after the JavaScript has finished running during the 16ms window, inside the "Style" step. That's the ideal scenario.</p> - -<p>However, it's possible for script to do things that force multiple style calculations (or <strong>style flushes</strong>) to occur synchronously during the JavaScript part of the 16 ms window. The more of them there are, the more likely they'll exceed the 16ms frame budget. If that happens, some of them will be postponed until the next frame (or possibly multiple frames, if necessary), this skipping of frames is called <strong>jank</strong>.</p> - -<p>Generally speaking, you force a synchronous style flush any time you query for style information after the DOM has changed within the same frame tick. Depending on whether or not <a href="https://gist.github.com/paulirish/5d52fb081b3570c81e3a">the style information you’re asking for has something to do with size or position</a>, you may also cause a layout recalculation (also referred to as <strong>layout flush</strong> or <strong>reflow</strong>), which is also an expensive step (see {{anch("Detecting and avoiding synchronous reflow")}} below).</p> - -<p>To avoid this: avoid reading style information if you can. If you <em>must</em> read style information, do so at the very beginning of the frame, before any changes have been made to the DOM since the last time a style flush occurred.</p> - -<p>Historically, there hasn't been an easy way of doing this - however, {{bug(1434376)}} has recently landed some ChromeOnly helpers to the window binding to make this simpler.</p> - -<p>If you want to queue up some JavaScript to run after the next "natural" style and layout flush, try:</p> - -<pre class="brush: js">// Suppose we want to get the computed "display" style of some node without -// causing a style flush. We could do it this way: -async function nodeIsDisplayNone(node) { - let display = await window.promiseDocumentFlushed(() => { - // Do _not_ under any circumstances write to the DOM in one of these - // callbacks! - return window.getComputedStyle(node).display; - }); - - return display == "none"; -} -</pre> - -<div class="note"> -<p>See {{anch("Detecting and avoiding synchronous reflow")}} for a more advanced example of getting layout information, and then setting it safely, without causing flushes.</p> -</div> - -<p><code>promiseDocumentFlushed</code> is only available to priviledged script, and should be called on the inner window of a top-level frame. Calling it on the outer window of a subframe is not supported, and calling it from within the inner window of a subframe might cause the callback to fire even though a style and layout flush will still be required. These gotchas should be fixed by {{bug(1441173)}}.</p> - -<p>For now, it is up to you as the consumer of this API to not accidentally write to the DOM within the <code>promiseDocumentFlushed</code> callback. Doing so might cause flushes to occur for other <code>promiseDocumentFlushed</code> callbacks that are scheduled to fire in the same tick of the refresh driver. {{bug(1441168)}} tracks work to make it impossible to modify the DOM within a <code>promiseDocumentFlushed</code> callback.</p> - -<h3 id="Writing_tests_to_ensure_you_don’t_add_more_synchronous_style_flushes">Writing tests to ensure you don’t add more synchronous style flushes</h3> - -<p>Unlike reflow, there isn’t a “observer” mechanism for style recalculations. However, as of Firefox 49, the {{ifattribute("nsIDOMWindowUtils", "elementsRestyled")}} attribute records a count of how many style calculations have occurred for a particular DOM window.</p> - -<p>It should be possible to write a test that gets the <code>nsIDOMWindowUtils</code> for a browser window, records the number of styleFlushes, then <strong>synchronously calls the function</strong> that you want to test, and immediately after checks the styleFlushes attribute again. If the value went up, your code caused synchronous style flushes to occur.</p> - -<p>Note that your test and function <em>must be called synchronously</em> in order for this test to be accurate. If you ever go back to the event loop (by yielding, waiting for an event, etc), style flushes unrelated to your code are likely to run, and your test will give you a false positive.</p> - -<h2 id="Detecting_and_avoiding_synchronous_reflow">Detecting and avoiding synchronous reflow</h2> - -<div class="note"> -<p>This is also sometimes called “sync layout”, "sync layout flushes" or “sync layout calculations”</p> -</div> - -<p><strong>Sync reflow</strong> is a term bandied about a lot, and has negative connotations. It's not unusual for an engineer to have only the vaguest sense of what it is—and to only know to avoid it. This section will attempt to demystify things.</p> - -<p>The first time a document (XUL or HTML) loads, we parse the markup, and then apply styles. Once the styles have been calculated, we then need to calculate where things are going to be placed on the page. This layout step can be seen in the “16ms” pipeline graphic above, and occurs just before we paint things to be composited for the user to see.</p> - -<p>It is expected that over time, script will update the DOM, requiring us to recalculate styles, and then update layout. Normally, however, the changes to the DOM just result in the standard style calculation that occurs immediately after the JavaScript has finished running during the 16ms window.</p> - -<h3 id="Interruptible_reflow">Interruptible reflow</h3> - -<p>Since <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=67752">the early days</a>, Gecko has had the notion of interruptible reflow. This is a special type of <strong>content-only</strong> reflow that checks at particular points whether or not it should be interrupted (usually to respond to user events).</p> - -<p>Because <strong>interruptible reflows can only be interrupted when laying out content, and not chrome UI</strong>, the rest of this section is offered only as context.</p> - -<p>When an interruptible reflow is interrupted, what really happens is that certain layout operations can be skipped in order to paint and process user events sooner.</p> - -<p>When an interruptible reflow is interrupted, the best-case scenario is that all layout is skipped, and the layout operation ends.</p> - -<p>The worst-case scenario is that none of the layout can be skipped despite being interrupted, and the entire layout calculation occurs.</p> - -<p>Reflows that are triggered "naturally" by the 16ms tick are all considered interruptible. Despite not actually being interuptible when laying out chrome UI, striving for interruptible layout is always good practice because uninterruptible layout has the potential to be much worse (see next section).</p> - -<p><strong>To repeat, only interruptible reflows in web content can be interrupted.</strong></p> - -<h3 id="Uninterruptible_reflow">Uninterruptible reflow</h3> - -<p>Uninterruptible reflow is what we want to <strong>avoid at all costs</strong>. Uninterruptible reflow occurs when some DOM node’s styles have changed such that the size or position of one or more nodes in the document will need to be updated, and then <strong>JavaScript asks for the size or position of anything</strong>. Since everything is pending a reflow, the answer isn't available, so everything stalls until the reflow is complete and the script can be given an answer. Flushing layout also means that styles must be flushed to calculate the most up-to-date state of things, so it's a double-whammy.</p> - -<p>Here’s a simple example, cribbed from <a href="http://paulrouget.com/e/fxoshud">this blog post by Paul Rouget</a>:</p> - -<pre class="brush: js">div1.style.margin = "200px"; // Line 1 -var height1 = div1.clientHeight; // Line 2 -div2.classList.add("foobar"); // Line 3 -var height2 = div2.clientHeight; // Line 4 -doSomething(height1, height2); // Line 5</pre> - -<p>At line 1, we’re setting some style information on a DOM node that’s going to result in a reflow - but (at just line 1) it’s okay, because that reflow will happen after the style calculation.</p> - -<p>Note line 2 though - we’re asking for the height of some DOM node. This means that Gecko needs to synchronously calculate layout (and styles) using an uninterruptible reflow in order to answer the question that JavaScript is asking (“What is the <code>clientHeight</code> of <code>div1</code>?”).</p> - -<p>It’s possible for our example to avoid this synchronous, uninterruptible reflow by moving lines 2 and 4 above line 1. Assuming there weren’t any style changes requiring size or position recalculation above line 1, the <code>clientHeight</code> information should be cached since the last reflow, and will not result in a new layout calculation.</p> - -<p>If you can avoid querying for the size or position of things in JavaScript, that’s the safest option—especially because it’s always possible that something earlier in this tick of JavaScript execution caused a style change in the DOM without you knowing it.</p> - -<p>Note that given the same changes to the DOM of a chrome UI document, a single synchronous uninterruptible reflow is no more computationally expensive than an interruptible reflow triggered by the 16ms tick. It is, however, advantageous to strive for reflow to only occur in the one place (the layout step of the 16ms tick) as opposed to multiple times during the 16ms tick (which has a higher probability of running through the 16ms budget).</p> - -<h3 id="How_do_I_avoid_triggering_uninterruptible_reflow">How do I avoid triggering uninterruptible reflow?</h3> - -<p>Here's a <a href="https://gist.github.com/paulirish/5d52fb081b3570c81e3a">list of things that JavaScript can ask for that can cause uninterruptible reflow</a>, to help you think about the problem. Note that some items in the list may be browser-specific or subject to change, and that an item not occurring explicitly in the list doesn't mean it doesn't cause reflow. For instance, at time of writing accessing <code>event.rangeOffset</code> <a href="https://searchfox.org/mozilla-central/rev/6bfadf95b4a6aaa8bb3b2a166d6c3545983e179a/dom/events/UIEvent.cpp#215-226">triggers reflow</a> in Gecko, and does not occur in the earlier link. If you're unsure whether something causes reflow, check!</p> - -<p>Note how abundant the properties in that first list are. This means that when enumerating properties on DOM objects (e.g. elements/nodes, events, windows, etc.) <strong>accessing the value of each enumerated property will almost certainly (accidentally) cause uninterruptible reflow</strong>, because a lot of DOM objects have one or even several properties that do so.</p> - -<p>If you require size or position information, you have a few options.</p> - -<p>{{bug(1434376)}} has recently landed a helper in the window binding to make it easier for priviledged code to queue up JavaScript to run when we know that the DOM is not dirty, and size, position, and style information is cheap to query for.</p> - -<p>Here's an example:</p> - -<pre class="brush: js">async function matchWidth(elem, otherElem) { - let width = await window.promiseDocumentFlushed(() => { - // Do _not_ under any circumstances write to the DOM in one of these - // callbacks! - return elem.clientWidth; - }); - - requestAnimationFrame(() => { - otherElem.style.width = `${width}px`; - }); -}</pre> - -<p>Please see the section on <code>promiseDocumentFlushed</code> in {{anch("Detecting and avoiding synchronous style flushes")}} for more information on how to use the API.</p> - -<p>Note that queries for size and position information are only expensive if the DOM has been written to. Otherwise, we're doing a cheap look-up of cached information. If we work hard to move all DOM writes into <code>requestAnimationFrame()</code>, then we can be sure that all size and position queries are cheap.</p> - -<p>It's also possible (though less infallible than <code>promiseDocumentFlushed</code>) to queue JavaScript to run very soon after the frame has been painted, where the likelihood is highest that the DOM has not been written to, and layout and style information queries are still cheap. This can be done by using a <code>setTimeout</code> or dispatching a runnable inside a <code>requestAnimationFrame</code> callback, for example:</p> - -<pre class="brush: js">requestAnimationFrame(() => { - setTimeout(() => { - // This code will be run ASAP after Style and Layout information have - // been calculated and the paint has occurred. Unless something else - // has dirtied the DOM very early, querying for style and layout information - // here should be cheap. - }, 0); -}); - -// Or, if you are running in privileged JavaScript and want to avoid the timer overhead, -// you could also use: - -requestAnimationFrame(() => { - Services.tm.dispatchToMainThread(() => { - // Same-ish as above. - }); -});</pre> - -<div class="note"> -<p>This also implies that<strong> </strong><em>querying for size and position information</em> in <code>requestAnimationFrame()</code> has a high probability of causing a synchronous reflow.</p> -</div> - -<h3 id="Other_useful_methods">Other useful methods</h3> - -<p>Below you'll find some suggestions for other methods which may come in handy when you need to do things without incurring synchronous reflow. These methods generally return the most-recently-calculated value for the requested value, which means the value may no longer be current, but may still be "close enough" for your needs. Unless you need precisely accurate information, they can be valuable tools in your performance toolbox.</p> - -<h4 id="nsIDOMWindowUtils.getBoundsWithoutFlushing">nsIDOMWindowUtils.getBoundsWithoutFlushing()</h4> - -<p><code>getBoundsWithoutFlushing()</code> does exactly what its name suggests: it allows you to get the bounds rectangle for a DOM node contained in a window without flushing layout. This means that the information you get is potentially out-of-date, but allows you to avoid a sync reflow. If you can make do with information that may not be quite current, this can be helpful.</p> - -<h4 id="nsIDOMWindowUtils.getRootBounds">nsIDOMWindowUtils.getRootBounds()</h4> - -<p>Like <code>getBoundsWithoutFlushing()</code>, <code>getRootBounds()</code> lets you get the dimensions of the window without risking a synchronous reflow.</p> - -<h4 id="nsIDOMWindowUtils.getScrollXY">nsIDOMWindowUtils.getScrollXY()</h4> - -<p>Returns the window's scroll offsets without taking the chance of causing a sync reflow.</p> - -<h3 id="Writing_tests_to_ensure_you_don’t_add_more_unintentional_reflow">Writing tests to ensure you don’t add more unintentional reflow</h3> - -<p>The interface {{source("docshell/base/nsIReflowObserver.idl", "nsIReflowObserver")}} lets us detect both interruptible and uninterruptible reflows. A number of tests have been written that exercise various functions of the browser (<a href="http://searchfox.org/mozilla-central/rev/78cefe75fb43195e7f5aee1d8042b8d8fc79fc70/browser/base/content/test/general/browser_tabopen_reflows.js">opening tabs</a>, <a href="http://searchfox.org/mozilla-central/source/browser/base/content/test/general/browser_windowopen_reflows.js">opening windows</a>) and ensure that we don’t add new uninterruptible reflows accidentally while those actions occur.</p> - -<p>You should add tests like this for your feature if you happen to be touching the DOM.</p> - -<h3 id="Detecting_over-painting_with_paint_flashing">Detecting over-painting with paint flashing</h3> - -<p>Painting is, in general, cheaper than both style calculation and layout calculation; still, the more you can avoid, the better. Generally speaking, the larger an area that needs to be repainted, the longer it takes. Similarly, the more things that need to be repainted, the longer it takes.</p> - -<p>Our graphics team has added a handy feature to help you detect when and where paints are occurring. This feature is called “paint flashing,” and it can be activated for both web content and the browser chrome. Paint flashing tints each region being painted with a randomly selected color so that it’s more easy to see what on the screen is being painted.</p> - -<ul> - <li>You can activate paint flashing for browser chrome by setting <code>nglayout.debug.paint_flashing_chrome</code> to <code>true</code>.</li> - <li>You can activate paint flashing for web content by setting <code>nglayout.debug.paint_flashing</code> to <code>true</code>.</li> -</ul> - -<p>After enabling these, exercise your function and see what’s painting. See a lot of flashing / colors? That means a lot of painting is going on. The worst case is called <strong>over-painting</strong>. This is when you draw multiple times over the same space. Unless transparency is involved, all but the last painting will be overwritten, becoming unnecessary. If you can find ways to avoid doing this, you can save substantial time.</p> - -<p>Keep in mind that painting occurs on the main thread. Remember, too, that the goal is to have as little happen on the main thread as possible. That means that finding and removing (when possible) over-painting is a good place to start reducing your burden on the main thread, which will in turn improve performance.</p> - -<p>Perhaps you’re animating something that requires a repaint? For example, transitioning the {{cssxref("background-color")}} of a DOM node from red to blue will result in a repaint for every frame of the animation, and paint flashing will reveal that. Consider using a different animation that can be accelerated by the GPU. These GPU-accelerated animations occur off of the main thread, and have a much higher probability of running at 60 FPS (see the section below called {{anch("Use the compositor for animations")}} for further details).</p> - -<p>Perhaps you’re touching some DOM nodes in such a way that unexpected repaints are occurring in an area that don’t need it. Best to investigate and try to remove those as best you can. Sometimes, our graphics layer invalidates regions in ways that might not be clear to you, and a section outside of the thing that just repainted will also repaint. Sometimes this can be addressed by ensuring that the thing changing is on its own layer (though this comes at a memory cost). You can put something on its own layer by setting its {{cssxref("z-index")}}, or by setting the {{cssxref("will-change")}} on the node, though this should be used sparingly.</p> - -<p>If you’re unsure why something is repainting, consider talking to our always helpful graphics team in the <a href="https://chat.mozilla.org/#/room/#gfx:mozilla.org">gfx room</a> on <a href="https://wiki.mozilla.org/Matrix">Matrix</a>, and they can probably advise you. Note that a significant number of the graphics team members are in the US Eastern Time zone (UTC-5 or UTC-4 during Daylight Saving Time), so let that information guide your timing when you ask questions in the <a href="https://chat.mozilla.org/#/room/#gfx:mozilla.org">gfx room</a> .</p> - -<h2 id="Adding_nodes_using_DocumentFragments">Adding nodes using DocumentFragments</h2> - -<p>Sometimes you need to add several DOM nodes as part of an existing DOM tree. For example, when using XUL {{XULElem("menupopup")}}s, you often have script which dynamically inserts {{XULElem("menuitem")}}s. Inserting items into the DOM has a cost. If you're adding a number of children to a DOM node in a loop, it's often more efficient to batch them into a single insertion by creating a {{domxref("DocumentFragment")}}, adding the new nodes to that, then inserting the <code>DocumentFragment</code> as a child of the desired node.</p> - -<p>A <code>DocumentFragment</code> is maintained in memory outside the DOM itself, so changes don't cause reflow. The API is straightforward:</p> - -<ol> - <li>Create the <code>DocumentFragment</code> by calling {{domxref("Document.createDocumentFragment()")}}.</li> - <li>Create each child element (by calling {{domxref("Document.createElement()")}} for example), and add each one to the fragment by calling {{domxref("Node.appendChild", "DocumentFragment.appendChild()")}}.</li> - <li>Once the fragment is populated, append the fragment to the DOM by calling {{domxref("Node.appendChild", "appendChild()")}} on the parent element for the new elements.</li> -</ol> - -<p>This example has been cribbed from <a href="https://davidwalsh.name/documentfragment">davidwalsh’s blog post</a>:</p> - -<pre class="brush: js">// Create the fragment - -var frag = document.createDocumentFragment(); - -// Create numerous list items, add to fragment - -for(var x = 0; x < 10; x++) { - var li = document.createElement("li"); - li.innerHTML = "List item " + x; - frag.appendChild(li); -} - -// Mass-add the fragment nodes to the list - -listNode.appendChild(frag); -</pre> - -<p>The above is strictly cheaper than individually adding each node to the DOM.</p> - -<h2 id="The_Gecko_profiler_add-on_is_your_friend">The Gecko profiler add-on is your friend</h2> - -<p>The Gecko profiler is your best friend when diagnosing performance problems and looking for bottlenecks. There’s plenty of excellent documentation on MDN about the Gecko profiler:</p> - -<ul> - <li><a href="/en-US/docs/Mozilla/Performance/Reporting_a_Performance_Problem">Basic instructions for gathering and sharing a performance profile</a></li> - <li><a href="/en-US/docs/Mozilla/Performance/Profiling_with_the_Built-in_Profiler">Advanced profile analysis</a></li> -</ul> - -<h2 id="Don’t_guess—measure.">Don’t guess—measure.</h2> - -<p>If you’re working on a performance improvement, this should go without saying: ensure that what you care about is actually improving by measuring before and after.</p> - -<p>Landing a speculative performance enhancement is the same thing as landing speculative bug fixes—these things need to be tested. Even if that means instrumenting a function with a {{jsxref("Date.now()")}} recording at the entrance, and another <code>Date.now()</code> at the exit points in order to measure processing time changes.</p> - -<p>Prove to yourself that you’ve actually improved something by measuring before and after.</p> - -<h3 id="Use_the_performance_API">Use the performance API</h3> - -<p>The <a href="/en-US/docs/Web/API/Performance_API">performance API</a> is very useful for taking high-resolution measurements. This is usually much better than using your own hand-rolled timers to measure how long things take. You access the API through {{domxref("Window.performance")}}.</p> - -<p>Also, the Gecko profiler back-end is in the process of being modified to expose things like markers (from {{domxref("Performance.mark", "window.performance.mark()")}}).</p> - -<h2 id="Use_the_compositor_for_animations">Use the compositor for animations</h2> - -<p>Performing animations on the main thread should be treated as <strong>deprecated</strong>. Avoid doing it. Instead, animate using {{domxref("Element.animate()")}}. See the article <a href="https://hacks.mozilla.org/2016/08/animating-like-you-just-dont-care-with-element-animate/">Animating like you just don't care</a> for more information on how to do this.</p> - -<h2 id="Explicitly_define_start_and_end_animation_values">Explicitly define start and end animation values</h2> - -<p>Some optimizations in the animation code of Gecko are based on an expectation that the <code>from</code> (0%) and the <code>to</code> (100%) values will be explicitly defined in the <code>@keyframes</code> definition. Even though these values may be inferred through the use of initial values or the cascade, the offscreen animation optimizations are dependent on the explicit definition. See <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1419096#c18">this comment</a> and a few previous comments on that bug for more information.</p> - -<h2 id="Use_IndexedDB_for_storage">Use IndexedDB for storage</h2> - -<p><a href="en-US/docs/Web/HTML/Using_the_application_cache">AppCache</a> and <a href="/en-US/docs/Web/API/Storage/LocalStorage">LocalStorage</a> are synchronous storage APIs that will block the main thread when you use them. Avoid them at all costs!</p> - -<p><a href="/en-US/docs/Web/API/IndexedDB_API/Using_IndexedDB">IndexedDB</a> is preferable, as the API is asynchronous (all disk operations occur off of the main thread), and can be accessed from web workers.</p> - -<p>IndexedDB is also arguably better than storing and retrieving JSON from a file—particularly if the JSON encoding or decoding is occurring on the main thread. IndexedDB will do JavaScript object serialization and deserialization for you using the <a href="/en-US/docs/Web/API/Web_Workers_API/Structured_clone_algorithm">structured clone algorithm</a>, meaning that you can stash <a href="/en-US/docs/Web/API/Web_Workers_API/Structured_clone_algorithm#Supported_types">things like maps, sets, dates, blobs, and more</a>, without having to do conversions for JSON compatibility.</p> - -<p>A Promise-based wrapper for IndexedDB, <a href="http://searchfox.org/mozilla-central/source/toolkit/modules/IndexedDB.jsm">IndexedDB.jsm</a>, is available for chrome code.</p> - -<h2 id="Test_on_weak_hardware">Test on weak hardware</h2> - -<p>For the folks paid to work on Firefox, we tend to have pretty powerful hardware for development. This is great, because it reduces build times, and means we can do our work faster.</p> - -<p>We should remind ourselves that the majority of our user base is unlikely to have similar hardware. Look at the <a href="https://metrics.mozilla.com/firefox-hardware-survey/">Firefox Hardware Report</a> to get a sense of what our users are working with. Test on slower machines to make it more obvious to yourself if what you’ve written impacts the performance of the browser.</p> - -<h2 id="Consider_loading_scripts_with_the_subscript_loader_asynchronously">Consider loading scripts with the subscript loader asynchronously</h2> - -<p>If you've ever used the subscript loader, you might not know that it can load scripts asynchronously, and return a Promise once they're loaded. For example:</p> - -<pre class="brush: js">Services.scriptloader.loadSubScriptWithOptions(myScriptURL, { async: true }).then(() => { - console.log("Script at " + myScriptURL + " loaded asynchronously!"); -});</pre> diff --git a/files/pt-br/mozilla/firefox/privacidade/index.html b/files/pt-br/mozilla/firefox/privacidade/index.html deleted file mode 100644 index dd6979435e..0000000000 --- a/files/pt-br/mozilla/firefox/privacidade/index.html +++ /dev/null @@ -1,16 +0,0 @@ ---- -title: Privacidade -slug: Mozilla/Firefox/Privacidade -translation_of: Mozilla/Firefox/Privacy ---- -<div>{{FirefoxSidebar}}</div><ul> - <li><a href="/pt-BR/Firefox/Privacidade/Proteção_de_rastreamento">Proteção de rastreamento</a></li> -</ul> - -<div style="display: none;" class="pcl_tooltip_box">Image already added -<div class="arrow border"> </div> - -<div class="arrow"> </div> -</div> - -<div style="display: none;" class="pcl_global_mask"> </div> diff --git a/files/pt-br/mozilla/firefox/privacidade/proteção_de_rastreamento/index.html b/files/pt-br/mozilla/firefox/privacidade/proteção_de_rastreamento/index.html deleted file mode 100644 index 438c240001..0000000000 --- a/files/pt-br/mozilla/firefox/privacidade/proteção_de_rastreamento/index.html +++ /dev/null @@ -1,84 +0,0 @@ ---- -title: Proteção de rastreamento -slug: Mozilla/Firefox/Privacidade/Proteção_de_rastreamento -translation_of: Mozilla/Firefox/Privacy/Tracking_Protection ---- -<div>{{FirefoxSidebar}}</div> - -<h2 id="O_que_é_proteção_de_rastreamento">O que é proteção de rastreamento?</h2> - -<p><span id="result_box" lang="pt"><span>Começando na versão 42, o Firefox Desktop e o Firefox para Android incluem proteção de rastreamento embutida.</span> <span>Nas janelas de Navegação Privada (guias, no Firefox para Android), o Firefox bloqueará o conteúdo carregado de domínios que acompanham os usuários em todos os sites.</span></span></p> - -<p><span id="result_box" lang="pt"><span>Alguns conteúdos bloqueados fazem parte do layout da página e os usuários podem notar problemas de layout onde o Firefox bloqueou essas cargas.</span> <span>Às vezes, os usuários não percebem nada, mas a grade da página pode funcionar de modo que outros elementos da página se deslizem para preencher os buracos deixados pelos elementos bloqueados.</span></span></p> - -<p><span id="result_box" lang="pt"><span>Quando o Firefox bloqueia o conteúdo, ele registrará uma mensagem no Console da Web como este:</span></span></p> - -<pre>The resource at "http://some/url" was blocked because tracking protection is enabled.</pre> - -<p><span id="result_box" lang="pt"><span>Note que, com o Firefox para Android, você pode acessar a saída do console usando o depurador remoto.</span></span></p> - -<p><span id="result_box" lang="pt"><span>A interface do usuário do Firefox indicará aos usuários quando o conteúdo foi bloqueado e habilitá-los a desbloqueá-lo para a sessão atual se eles escolherem.</span> <span>Os usuários também poderão desativar a proteção de rastreamento inteiramente se eles escolherem.</span></span></p> - -<h2 id="Como_o_Firefox_escolhe_o_que_bloquear">Como o Firefox escolhe o que bloquear?</h2> - -<p><span id="result_box" lang="pt"><span>O conteúdo é bloqueado com base no domínio do qual ele deve ser carregado.</span></span></p> - -<p><span id="result_box" lang="pt"><span>O Firefox enviará uma lista de sites que foram identificados como envolvidos no rastreamento de sites de usuários.</span> <span>Quando a proteção de rastreamento é ativada, o Firefox bloqueará o conteúdo de sites na lista.</span></span></p> - -<p><span id="result_box" lang="pt"><span>Os sites que rastreiam usuários são mais comuns os sites de publicidade e análise de terceiros.</span></span></p> - -<h2 id="O_que_isso_significa_para_o_seu_site">O que isso significa para o seu site?</h2> - -<p><span id="result_box" lang="pt"><span>Mais obviamente, isso significa que quando a proteção de rastreamento está habilitada:</span></span></p> - -<ul> - <li><span id="result_box" lang="pt"><span>O conteúdo veiculado a partir de rastreadores de terceiros não será visível para usuários</span></span></li> - <li><span id="result_box" lang="pt"><span>Seu site não poderá usar serviços de publicidade ou analítica de terceiros que se envolvam em rastreamento</span></span></li> -</ul> - -<p><span id="result_box" lang="pt"><span>Mais sutilmente, se outras partes do seu site dependerem de rastreadores sendo carregados, essas partes também serão quebradas quando a proteção de rastreamento estiver ativada.</span> <span>Por exemplo, se o seu site incluir um retorno de chamada que é executado quando o conteúdo de um site de rastreamento é carregado, o retorno de chamada não será executado.</span></span></p> - -<p><span id="result_box" lang="pt"><span>Por exemplo, você não deve usar o Google Analytics da seguinte maneira:</span></span></p> - -<pre class="brush:html example-bad"><a href="http://www.example.com" onclick="trackLink('http://www.example.com', event);">Visit example.com</a> -<script> -function trackLink(url,event) { - event.preventDefault(); - ga('send', 'event', 'outbound', 'click', url, { - 'transport': 'beacon', - 'hitCallback': function() { - document.location = url; - } - }); -} -</script></pre> - -<p><span id="result_box" lang="pt"><span>Em vez disso, você deve considerar verificar quando o objeto "ga", para o Google Analytics, foi inicializado ou não:</span></span></p> - -<pre class="brush:html example-good"><a href="http://www.example.com" onclick="trackLink('http://www.example.com', event);">Visit example.com</a> -<script> -function trackLink(url,event) { - event.preventDefault(); - if (window.ga && <span class="pl-smi">ga</span>.loaded) { - ga('send', 'event', 'outbound', 'click', url, { - 'transport': 'beacon', - 'hitCallback': function() { document.location = url; } - }); - } else { - document.location = url; - } -} -</script> -</pre> - -<p><span id="result_box" lang="pt"><span>Mais informações sobre esta técnica estão disponíveis em</span></span> <a href="https://hacks.mozilla.org/2016/01/google-analytics-privacy-and-event-tracking/">Google Analytics, Privacy, and Event Tracking</a>.</p> - -<p><span id="result_box" lang="pt"><span>Observe que, dependendo de um terceiro dessa maneira, não é uma boa prática, pois isso significa que seu site pode ser quebrado se o terceiro estiver lento ou não disponível, ou se o rastreador estiver bloqueado por um complemento.</span></span></p> - -<div class="pcl_tooltip_box" style="display: none;">Image already added -<div class="arrow border"> </div> - -<div class="arrow"> </div> -</div> - -<div class="pcl_global_mask" style="display: none;"> </div> diff --git a/files/pt-br/mozilla/firefox/privacy/storage_access_policy/errors/cookieblockedtracker/index.html b/files/pt-br/mozilla/firefox/privacy/storage_access_policy/errors/cookieblockedtracker/index.html deleted file mode 100644 index 0813b1fd2c..0000000000 --- a/files/pt-br/mozilla/firefox/privacy/storage_access_policy/errors/cookieblockedtracker/index.html +++ /dev/null @@ -1,44 +0,0 @@ ---- -title: 'Bloquado: Solicitações de acesso de armazenamento de rastreadores' -slug: Mozilla/Firefox/Privacy/Storage_access_policy/Errors/CookieBlockedTracker -tags: - - Armazenamento - - Cookies - - Erros - - Política de acesso a armazenamento - - Rastreamento -translation_of: Mozilla/Firefox/Privacy/Storage_access_policy/Errors/CookieBlockedTracker ---- -<div>{{FirefoxSidebar}}</div> - -<h2 id="Mensagem">Mensagem</h2> - -<p>Firefox:</p> - -<pre class="syntaxbox"><span class="message-body-wrapper"><span class="message-flex-body"><span class="devtools-monospace message-body"><span class="objectBox objectBox-string">O pedido para acessar cookies ou armazenamento em "X" foi bloqueado porque veio de um rastreador e o bloqueio de conteúdo está ativado.</span></span></span></span> -</pre> - -<h2 id="Oque_deu_errado">Oque deu errado?</h2> - -<p>A requisição para accessar os cookies ou armazenamento foi bloqueada por que o navegador identificou <span class="tlid-translation translation" lang="pt"><span title="">como proveniente de um rastreador e o bloqueio de conteúdo está ativado</span></span>.</p> - -<p>A permissão pode ser modificada ou removida por:</p> - -<ul> - <li>Indo a <em>Preferências > </em>Bloqueio de Conteúdo e - - <ul> - <li>adicionando uma exceção com o botão <em>Gerenciar Exceções</em>…</li> - <li>escolhendo o Bloqueio de conteúdo personalizado e desmarcar a caixa de seleção Rastreador</li> - </ul> - </li> -</ul> - -<p>se a resolução que foi bloqueada não precisar de autenticação, você consegue resolver a aviso de erro adicinando um atributo <code>crossorigin="anonymous"</code> para o elemento relevante.</p> - -<h2 id="Veja_também">Veja também</h2> - -<ul> - <li><a href="https://support.mozilla.org">Bloqueio de conteúdo</a> em <a href="https://support.mozilla.org">support.mozilla.org</a></li> - <li><a href="/en-US/docs/Web/HTML/CORS_settings_attributes">O atributo <code>crossorigin</code></a></li> -</ul> diff --git a/files/pt-br/mozilla/firefox/privacy/storage_access_policy/errors/index.html b/files/pt-br/mozilla/firefox/privacy/storage_access_policy/errors/index.html deleted file mode 100644 index a1e1f54a75..0000000000 --- a/files/pt-br/mozilla/firefox/privacy/storage_access_policy/errors/index.html +++ /dev/null @@ -1,24 +0,0 @@ ---- -title: Errors -slug: Mozilla/Firefox/Privacy/Storage_access_policy/Errors -tags: - - Cookies - - Errors - - NeedsTranslation - - Storage - - TopicStub - - storage access policy -translation_of: Mozilla/Firefox/Privacy/Storage_access_policy/Errors ---- -<div>{{FirefoxSidebar}}</div> - -<p>This page lists the errors that can be raised due to Firefox's anti-tracking functionality, governed by the <a href="/en-US/docs/Mozilla/Firefox/Privacy/Storage_access_policy">Storage access policy</a>. You can find further information about them by clicking on the links below:</p> - -<p>A request to access cookies or storage was blocked because</p> - -<ul> - <li><a href="/en-US/docs/Mozilla/Firefox/Privacy/Storage_access_policy/Errors/CookieBlockedByPermission">of custom cookie permission</a></li> - <li><a href="/en-US/docs/Mozilla/Firefox/Privacy/Storage_access_policy/Errors/CookieBlockedTracker">it came from a tracker and content blocking is enabled</a></li> - <li><a href="/en-US/docs/Mozilla/Firefox/Privacy/Storage_access_policy/Errors/CookieBlockedAll">we are blocking all storage access requests</a></li> - <li><a href="/en-US/docs/Mozilla/Firefox/Privacy/Storage_access_policy/Errors/CookieBlockedForeign">we are blocking all third-party storage access requests and content blocking is enabled</a></li> -</ul> diff --git a/files/pt-br/mozilla/firefox/privacy/storage_access_policy/index.html b/files/pt-br/mozilla/firefox/privacy/storage_access_policy/index.html deleted file mode 100644 index c86f213323..0000000000 --- a/files/pt-br/mozilla/firefox/privacy/storage_access_policy/index.html +++ /dev/null @@ -1,263 +0,0 @@ ---- -title: 'Storage access policy: Block cookies from trackers' -slug: Mozilla/Firefox/Privacy/Storage_access_policy -tags: - - NeedsTranslation - - Privacy - - TopicStub - - storage access policy - - tracking protection -translation_of: Mozilla/Firefox/Privacy/Storage_access_policy ---- -<div>{{FirefoxSidebar}}</div> - -<p class="summary">Firefox includes a new storage access policy that blocks cookies and other site data from third-party tracking resources. This policy is designed as an alternative to the <a href="/en-US/docs/Mozilla/Cookies_Preferences">older cookie policies</a>, which have been available in Firefox for many years. This policy protects against cross-site tracking while minimizing the site breakage associated with traditional cookie blocking. This article explains how the policy works and how you can test it.</p> - -<h2 id="Testing_in_Firefox">Testing in Firefox</h2> - -<p>This cookie policy has been available in Firefox since version 63. This documentation describes the policy that we intend to ship to Firefox Release users, but may not match what is implemented in the current Release version of Firefox. That's because we document new aspects of the policy as soon as they land in <a href="https://www.mozilla.org/en-US/firefox/channel/desktop/#nightly">Firefox Nightly</a>, our pre-release channel. Firefox Nightly may also contain experimental features that we don't yet plan to ship to Release users; experimental features will not be included in this documentation, but may nevertheless impact the functionality of domains classified as trackers.</p> - -<p>We recommend sites test with <a href="https://www.mozilla.org/en-US/firefox/channel/desktop/#nightly">Firefox Nightly</a>, as this includes the newest version of our protections. As described above, note that Nightly may include additional protections that end up getting removed or changed before they reach our Release users. We’ll keep this page updated with the newest information as we strengthen our protections.</p> - -<p>These protections are on by default in Nightly. The cookie policy can be enabled in other versions of Firefox through the <a href="https://support.mozilla.org/en-US/kb/content-blocking">Content Blocking settings</a> (these steps will vary by version; the linked documentation includes a dropdown to select the appropriate Firefox version).</p> - -<h3 id="Report_Broken_Sites">Report Broken Sites</h3> - -<p>If you find a website broken as a result of this change, file a bug under the Tracking Protection component within the Firefox product on <a href="https://bugzilla.mozilla.org/enter_bug.cgi?assigned_to=nobody%40mozilla.org&blocked=1480137&bug_file_loc=http%3A%2F%2F&bug_ignored=0&bug_severity=normal&bug_status=NEW&cf_fx_iteration=---&cf_fx_points=---&cf_platform_rel=---&cf_status_firefox62=---&cf_status_firefox63=---&cf_status_firefox64=---&cf_status_firefox_esr60=---&cf_status_geckoview62=---&cf_tracking_firefox62=---&cf_tracking_firefox63=---&cf_tracking_firefox64=---&cf_tracking_firefox_esr60=---&cf_tracking_firefox_relnote=---&cf_tracking_geckoview62=---&component=Tracking%20Protection&contenttypemethod=list&contenttypeselection=text%2Fplain&defined_groups=1&flag_type-203=X&flag_type-37=X&flag_type-41=X&flag_type-5=X&flag_type-607=X&flag_type-721=X&flag_type-737=X&flag_type-748=X&flag_type-787=X&flag_type-799=X&flag_type-800=X&flag_type-803=X&flag_type-835=X&flag_type-846=X&flag_type-855=X&flag_type-864=X&flag_type-914=X&flag_type-916=X&flag_type-929=X&flag_type-930=X&flag_type-933=X&form_name=enter_bug&maketemplate=Remember%20values%20as%20bookmarkable%20template&op_sys=Unspecified&priority=--&product=Firefox&rep_platform=Unspecified&target_milestone=---&version=unspecified">Bugzilla</a>. Alternatively you can report broken sites directly in Firefox by clicking "Report a Problem" in the Content Blocking section of the <a href="https://support.mozilla.org/en-US/kb/control-center-site-privacy-and-security-firefox">Control Center</a> (this shortcut may not be available in all versions of Firefox).</p> - -<h2 id="Tracking_protection_explained">Tracking protection explained</h2> - -<p>How does Firefox determine which resources are tracking resources?</p> - -<p>Firefox uses the Tracking Protection list to determine which resources are tracking resources. The Tracking Protection list is <a href="https://github.com/disconnectme/disconnect-tracking-protection/issues">maintained by Disconnect</a>. When the list is applied in Firefox, we make two important changes:</p> - -<ul> - <li>First, we only use the "Basic Protection" version of the list, which <a href="https://github.com/mozilla-services/shavar-prod-lists#blacklist">excludes some categories of trackers</a>. In the future, we may expand our protections to use the "Strict Protection" version of the list.</li> - <li>Second, Firefox uses an additional "<a href="https://github.com/mozilla-services/shavar-prod-lists/blob/master/disconnect-entitylist.json">entity list</a>", which prevents <a href="https://github.com/mozilla-services/shavar-prod-lists#entity-list">domains from being classified as trackers when they are loaded on a top-level site owned by the same organization</a>.</li> -</ul> - -<p>Firefox uses the built-in <a href="https://support.mozilla.org/en-US/kb/tracking-protection">Tracking Protection</a> URL classifier to determine which resources match the tracking protection list. Domains are matched against the list in accordance with the <a href="https://developers.google.com/safe-browsing/v4/urls-hashing#suffixprefix-expressions">SafeBrowsing v4 specification</a>. Specifically, we check the exact hostname of the resource against the list, as well as the last four hostnames formed by starting with the last five components and successively removing the leading component. Consider the following examples:</p> - -<table class="standard-table"> - <thead> - <tr> - <th scope="col">Hostname on the list</th> - <th scope="col">Hostname of resource</th> - <th scope="col">Matched</th> - </tr> - </thead> - <tbody> - <tr> - <td><code>example.com</code></td> - <td><code>example.com</code></td> - <td>Yes</td> - </tr> - <tr> - <td><code>example.com</code></td> - <td><code>a.b.example.com</code></td> - <td>Yes</td> - </tr> - <tr> - <td><code>blah.example.com</code></td> - <td><code>example.com</code></td> - <td>No</td> - </tr> - <tr> - <td><code>a.b.example.com</code></td> - <td><code>c.d.example.com</code></td> - <td>No</td> - </tr> - <tr> - <td><code>blah.example.com</code></td> - <td><code>foo.blah.example.com</code></td> - <td>Yes</td> - </tr> - </tbody> -</table> - -<h2 id="What_does_the_storage_access_policy_block">What does the storage access policy block?</h2> - -<p>The storage access policy blocks resources identified as trackers from accessing their cookies and other site storage when they are loaded in a third-party context. This prevents those resources from retrieving tracking identifiers stored in cookies or site storage and using them to identify users across visits to multiple first parties. Specifically, Firefox does this by imposing the following restrictions:</p> - -<p>Cookies:</p> - -<ul> - <li>Block {{httpheader("Cookie")}} request headers and ignore {{httpheader("Set-Cookie")}} response headers.</li> - <li>Return an empty string for calls to {{domxref("Document.cookie")}} and ignore requests to set cookies via <code>Document.cookie</code>.</li> -</ul> - -<p>DOM Storage:</p> - -<ul> - <li><a href="/en-US/docs/Web/API/Web_Storage_API">localStorage</a>: <code><a href="/en-US/docs/Web/API/Window/localStorage">Window.localStorage</a></code> is <code>null</code>. Thus, attempts to read and write using this object will throw a <code>TypeError</code> exception.</li> - <li><a href="/en-US/docs/Web/API/Web_Storage_API">sessionStorage</a>: read and write attempts are permitted.</li> - <li><a href="/en-US/docs/Web/API/IndexedDB_API">IndexedDB</a>: read and write attempts throw a <code>SecurityError</code> exception.</li> -</ul> - -<p>Messaging and Workers:</p> - -<ul> - <li><a href="/en-US/docs/Web/API/Broadcast_Channel_API">Broadcast Channel</a>: attempts to create a new {{domxref("BroadcastChannel")}} will throw a <code>SecurityError</code> exception.</li> - <li><a href="/en-US/docs/Web/API/Web_Workers_API">Shared Worker</a>: attempts to create a new {{domxref("SharedWorker")}} will throw a <code>SecurityError</code> exception.</li> - <li><a href="/en-US/docs/Web/API/Service_Worker_API">Service Worker</a>: attempts to create a new {{domxref("ServiceWorker")}} will throw a <code>SecurityError</code> exception.</li> -</ul> - -<p>DOM Cache:</p> - -<ul> - <li>Calls to {{domxref("CacheStorage")}} will always reject with a <code>SecurityError</code>.</li> -</ul> - -<p>Browser caches:</p> - -<ul> - <li>The <a href="/en-US/docs/Mozilla/HTTP_cache">HTTP cache</a> and the Image cache are partitioned for tracking resources, such that each top-level origin will have a separate partition and tracking resources on different top-level origins will be cached separate from each other.</li> -</ul> - -<p>Network connections:</p> - -<ul> - <li><a href="https://wiki.mozilla.org/Security/Server_Side_TLS#Session_Resumption">TLS sessions</a> will not be resumed using a session ticket when an HTTPS connection is made to an embedded third-party resource that is classified as a tracker.</li> - <li><a href="https://developer.mozilla.org/en-US/docs/Web/HTTP/Connection_management_in_HTTP_1.x#Persistent_connections">HTTP connection reuse</a> by domains classified as trackers is limited to requests that occur under the same top-level origin. For example, a request for content from tracker.example on news.example will not reuse an HTTP connection with a request for content from tracker.example on shopping.example or with requests that occur when tracker.example is visited directly (i.e., as a first party).</li> -</ul> - -<h3 id="What_is_not_blocked_by_the_policy">What is not blocked by the policy?</h3> - -<ol> - <li>This policy does not currently restrict third-party storage access for resources that are not classified as tracking resources. We may choose to apply additional restrictions to third-party storage access in the future.</li> - <li>The restrictions applied by the policy will not prevent third-party scripts classified as tracking resources from accessing storage in the main context of the page. These scripts can continue to use storage scoped to the top-level origin.</li> - <li>Origins classified as trackers will have access to their own storage when they are loaded in a first-party context.</li> - <li>Cross-origin resources loaded from the same eTLD+1 as the top-level context will still have access to their storage.</li> - <li>Origins normally classified as trackers will <a href="https://github.com/mozilla-services/shavar-prod-lists#entity-list">not be blocked if the top-level page origin is determined to be from the same organization as them</a>.</li> -</ol> - -<h2 id="Storage_access_grants">Storage access grants</h2> - -<p>In order to improve web compatibility and permit third-party integrations that require storage access, Firefox will grant storage access scoped to the first party for a particular third-party origin as described in this section. Currently, Firefox includes some web compatibility heuristics that grant storage access to third-party resources classified as trackers when a user interacts with those third parties. We do this when we expect that not granting access would cause the web page to break. We also support an initial implementation of the <a href="https://developer.mozilla.org/en-US/docs/Web/API/Storage_Access_API">Storage Access API</a>, through which embedded {{htmlelement("iframe")}}s can request storage access by calling {{domxref("Document.requestStorageAccess()")}}. Although both of these approaches provide the same level of storage access, we recommend third parties switch to using the Storage Access API in order to guarantee their access to storage.</p> - -<h3 id="Automatic_storage_access_upon_interaction">Automatic storage access upon interaction</h3> - -<p>In order to improve web compatibility, Firefox currently includes some heuristics to grant storage access automatically to third parties that receive user interaction. These heuristics are intended to allow some third-party integrations that are common on the web to continue to function. They are intended to be temporary and will be removed in a future version of Firefox. They should not be relied upon for current and future web development.</p> - -<p>Third-party storage access may be granted to resources that have been classified as tracking resources when a user gesture triggers a pop-up window that has <a href="/en-US/docs/Web/API/Window/opener">opener access</a> to the originating document. When that occurs, there are two possible ways a third-party origin can be granted access:</p> - -<ul> - <li>The origin of the resource that is initially loaded in the pop-up window is granted storage access on the opener document if that origin has received user interaction as a first party within the past 30 days.</li> - <li>After the initial resource is loaded in the pop-up window, the window may go through a series of redirects to other hosts. If a user interacts with the pop-up window following a redirect, the origin of the content loaded in the pop-up window is given storage access on the opener document.</li> -</ul> - -<h3 id="Scope_of_storage_access">Scope of storage access</h3> - -<p>When storage access is granted, it is scoped to the origin of the opener document or subdomains of that origin. Access that is granted on the subdomain of an origin does not extend to the top-level origin. As an example, if a resource from <code>tracker.example</code> is granted storage access on <code>foo.example.com</code>, then <code>tracker.example</code> will be able to access its cookies on <code>bar.foo.example.com</code> but not <code>example.com</code>. Instead, if <code>tracker.example</code> were granted access on <code>example.com</code> it would be able to access its storage on <code>bar.foo.example.com</code>, <code>foo.example.com</code>, and <code>example.com</code>.</p> - -<p>When storage access is granted to <code>tracker.example</code> on <code>example.com</code>, all resources loaded from <code>tracker.example</code> on any top-level document loaded from <code>example.com</code> are immediately given storage access. This includes all resources loaded in the main context of the page, embedded <code><iframe></code>s, and resources loaded within embedded <code><iframe></code>s. Storage access is not extended to other resources loaded on <code>example.com</code> (e.g. <code>other-tracker.example</code>), nor to other first parties on which <code>tracker.example</code> is embedded (e.g. <code>example.org</code>).</p> - -<p>Storage access grants extend into the first level of nested contexts, but no further. This means that <code><iframe></code>s embedded in the main context of the page and loaded from a domain classified as a tracker will have full access to all storage locations accessible through JavaScript. Similarly, requests for resources loaded in <code><iframe></code>s embedded in the main context of the page will have access to HTTP cookies. However, further nested contexts, including but not limited to those from the origin classified as a tracker, will not be granted storage access.</p> - -<p>Consider the following embedding scenarios on a top-level page loaded from <code>example.com</code> on which <code>tracker.example</code> has been granted storage access.</p> - -<table class="standard-table"> - <thead> - <tr> - <th scope="col">Embedding</th> - <th scope="col">tracker.example resource storage access</th> - </tr> - </thead> - <tbody> - <tr> - <td>An image is loaded from <code>tracker.example</code> and embedded in the main context of <code>example.com</code>.</td> - <td>HTTP: Yes<br> - JS: N/A</td> - </tr> - <tr> - <td><code>example.com</code> embeds an <code><iframe></code> from <code>example.org</code>. That <code><iframe></code> goes on to load an image from <code>tracker.example</code>.</td> - <td>HTTP: Yes<br> - JS: N/A</td> - </tr> - <tr> - <td><code>example.com</code> embeds an <code><iframe></code> from <code>example.org</code>. That <code><iframe></code> goes on to embed an <code><iframe></code> from <code>tracker.example</code>.</td> - <td>HTTP: Yes<br> - JS: No</td> - </tr> - <tr> - <td><code>example.com</code> embeds an <code><iframe></code> from <code>tracker.example</code>.</td> - <td>HTTP: Yes<br> - JS: Yes</td> - </tr> - <tr> - <td><code>example.com</code> embeds an <code><iframe></code> from <code>example.com</code> (same origin). The nested <code><iframe></code> embeds an <code><iframe></code> from <code>tracker.example</code>.</td> - <td>HTTP: Yes<br> - JS: No</td> - </tr> - </tbody> -</table> - -<h3 id="Storage_access_expiration">Storage access expiration</h3> - -<p>The storage access grant expires after 30 days. Domains classified as tracking resources may be granted third-party storage access on multiple first parties, and the storage permission for each party expires independently. The above heuristics will also serve to extend the lifetime of a third-party storage permission on origins that have already been granted access. Each time the heuristic is activated, or a success call to the Storage Access API is made, the pre-existing storage access expiration will be extended by 30 days, counting from the time the previous access was granted.</p> - -<p>Please note that in the future we expect to make changes to how long storage access will remain valid for. As mentioned before, the way to know that you will be able to use storage as a third-party going forward will be using the Storage Access API.</p> - -<h2 id="Debugging">Debugging</h2> - -<p>We encourage site owners to test their sites, particularly those that rely on third-party content integrations. We’ve added several new features to Firefox to make testing easier.</p> - -<h3 id="Developer_Tools_notifications">Developer Tools notifications</h3> - -<p>The <a href="/en-US/docs/Tools/Network_Monitor">Network Monitor</a> in Firefox Developer Tools now includes an indicator for all resource requests that have been classified as tracking resources. This indicator is shown as a shield icon in the domain column. In the sample image below, <code>trackertest.org</code> is classified as a tracking resource, while the request to example.com is not.</p> - -<p><img alt="network requests in Firefox devtools indicating which ones are tracking resources with a small shield icon" src="https://mdn.mozillademos.org/files/16181/Screen_Shot_2018-09-21_at_10.34.22_AM.png" style="border-style: solid; border-width: 1px; display: block; height: 57px; margin: 0px auto; width: 600px;"></p> - -<h3 id="Adding_custom_domains_to_the_Tracking_Protection_list">Adding custom domains to the Tracking Protection list</h3> - -<p>Curious how things will work if a third-party domain on your site were classified as a tracker? We’ve added a preference that allows you to add custom domains to the Tracking Protection URL classifier. To do so:</p> - -<ol> - <li>Type <code>about:config</code> in your address bar. If you are presented with a page that warns you "This may void your warranty!", click "I accept the risk!"</li> - <li>Right click on the next page and click "New" > "String".</li> - <li>For the preference name enter "urlclassifier.trackingAnnotationTable.testEntries".</li> - <li>For the preference value enter comma separated origins that you’d like to have classified as trackers. E.g. "example.net,example.org".</li> -</ol> - -<div class="warning"> -<p><strong>Warning</strong>: Be sure to remove these entries after you have finished testing.</p> -</div> - -<h2 id="FAQ">FAQ</h2> - -<p>This cookie policy has the potential to lead to site breakage, but has been designed to allow common third-party integrations to continue to work while preventing cross-site tracking. In this section we describe the functionality you can expect in different integration scenarios.</p> - -<h3 id="Will_this_storage_access_policy_block_ads_from_displaying_on_my_website">Will this storage access policy block ads from displaying on my website?</h3> - -<p>No — this feature only restricts access to cookies and site data that can be used to track users across websites. Blocking tracking identifiers does not prevent the display of advertisements.</p> - -<h3 id="I_use_a_third-party_analytics_service_that_is_classified_as_a_tracker._Will_I_still_receive_analytics_data">I use a third-party analytics service that is classified as a tracker. Will I still receive analytics data?</h3> - -<p>This depends on how the third-party analytics service is implemented. Third-party analytics providers will no longer be able to user their third-party storage to collect data. This means that providers using cookies which are scoped to their third-party domain, or local storage and other site data stored under their origin, will no longer have access to those identifiers across other websites.</p> - -<p>If these services are embedded into the main context of the page, they can continue to use first-party cookies and site storage to track users across page visits on that specific first-party domain.</p> - -<h3 id="I_use_third-party_services_for_social_login_like_and_share_button_integration._Will_my_users_still_be_able_to_make_use_of_these_services">I use third-party services for social login, like, and share button integration. Will my users still be able to make use of these services?</h3> - -<p>This depends on how the social integration is implemented. We expect that many of the popular social integrations will continue to function as they do under Firefox’s current cookie policy with some minor differences in the user experience.</p> - -<p>A social content provider that is classified as a tracker will not have access to their third-party cookies when the user first visits a new first party. Thus, the user may appear logged out to the service despite being logged in when they visit the provider’s website directly. Depending on the type of integration, the user may have to take some action to interact with the social content provider before the provider is given access to their cookies. For example:</p> - -<ul> - <li>For social login, the user may have to click a login button on the first party.</li> - <li>For social like or share buttons, the user will have to first interact with the button in a logged-out state. Once they do, many social content providers will prompt them to log in.</li> -</ul> - -<p>After these interactions, the provider will receive third-party storage access if they prompt the user in a way that is captured by the storage access activation heuristics described above. These providers should consider switching to explicitly request storage access through the Storage Access API as soon as possible. An <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1469714">initial implementation of this API</a> is currently available in Nightly.</p> - - - -<h3 id="I_use_third-party_pixels_and_other_tools_to_measure_the_effectiveness_of_my_ad_campaigns._Will_I_still_be_able_to_measure_the_conversion_rate_of_my_ads">I use third-party pixels and other tools to measure the effectiveness of my ad campaigns. Will I still be able to measure the conversion rate of my ads?</h3> - -<p>This depends on how the third party has implemented the measurement tool, but generally ad conversion measurement will be more difficult. Consider the following examples:</p> - -<ol> - <li>You run an ad on a social media website that is seen several times by a user, but never clicked. That user later visits your website, which includes a conversion tracking tag from the same social media website. This type of conversion is often referred to as a “view-through conversion.” Since the social media website does not have access to their third-party storage, they will not recognize the user as the same user that saw the advertisements on their website and the conversion will not be tracked. We expect that most view-through conversion tracking techniques will no longer work, including those offered by display networks.</li> - <li>You run an ad on a display network or social media website that is clicked by a user. That user lands on your website, which includes a conversion tracking tag from the same website that displayed your ad. This type of conversion is often referred to as a “click-through conversion.” Since the social media site or display network will not have access to their third-party storage, they will not recognize the user as the same user that saw the advertisements on their website and the conversion will not be tracked. We expect that this version of click-through conversion will no longer work.</li> - <li>You run an ad that appears on a social media website. A user clicks on your advertisement and is taken to a landing page that contains a conversion tracking tag from the third-party network. On the social media website, the network annotates the advertisement landing page URL with a query parameter that signals that the visit was the result of a click on an advertisement. On your website, the display network’s tag checks the URL query parameters and saves any ad tracking parameters to first-party storage. If a user later completes a conversion event, the network’s tag checks first-party storage to determine which click (or clicks) was responsible for the visit. We expect that click-through conversion implemented in this way will continue to work.</li> -</ol> diff --git a/files/pt-br/mozilla/firefox_para_android/index.html b/files/pt-br/mozilla/firefox_para_android/index.html deleted file mode 100644 index 1091ee1cd3..0000000000 --- a/files/pt-br/mozilla/firefox_para_android/index.html +++ /dev/null @@ -1,50 +0,0 @@ ---- -title: Firefox para Android -slug: Mozilla/Firefox_para_Android -tags: - - Android - - Fennec - - Firefox - - Mobile -translation_of: Mozilla/Firefox_for_Android ---- -<p>Para mais e mais pessoas, os <span id="result_box" lang="pt"><span class="hps">dispositivos móveis</span> <span class="hps">são a principal forma</span><span>,</span> <span class="hps">ou mesmo</span> <span class="hps">a única maneira</span><span>,</span> <span class="hps">para</span> <span class="hps">acessar a web.</span> </span><a class="link-https" href="https://www.mozilla.org/en-US/mobile/"> Firefox para Android </a><span id="result_box" lang="pt"><span class="alt-edited">(codinome Fennec) é um navegador aberta, hackeável, baseada em padrões</span></span>, tal como a versão Firefox para desktop.</p> -<p>Firefox para Android <span id="result_box" lang="pt"><span class="alt-edited">constrói a sua interface do usuario a parti de widgets nativos do Android em vez da XUL: isso melhora muito o desempenho, especialmente o tempo de incialização, e o consumo de memória.</span></span></p> -<h2 id="Contribuindo_com_o_Firefox_para_Android">Contribuindo com o Firefox para Android</h2> -<p><span id="result_box" lang="pt"><span class="hps">O principal</span> <span class="hps">ponto de partida</span> <span class="hps">para obter informações sobre</span> <span class="hps">o projeto Firefox para Android em si</span></span> é a <a class="link-https" href="https://wiki.mozilla.org/Mobile/Get_Involved">página "<span id="result_box" lang="pt"><span>Envolva-se</span></span>"</a>.</p> -<p><span id="result_box" lang="pt"><span class="hps">Você pode</span> <span class="hps">ajudar a criar</span> <span class="hps">e melhorar</span> o <span class="hps">Firefox</span> <span class="hps">para</span> <span class="hps">Android:</span> </span></p> -<ul> - <li>Ajude-nos com o <a href="https://developer.mozilla.org/en-US/docs/Mozilla/Firefox_for_Android/Compatibility_Testing" title="https://developer-new.mozilla.org/en-US/docs/Mozilla/Firefox_for_Android/Compatibility_Testing">teste de compatibilidade</a></li> - <li>Inscreva-se para a <a href="https://mail.mozilla.org/listinfo/mobile-firefox-dev">lista de discursão mobile-firefox-dev</a></li> - <li><span id="result_box" lang="pt"><span class="hps alt-edited">Contate a equipe</span> </span>através do <a class="link-irc" href="irc://irc.mozilla.org/#mobile">IRC</a></li> - <li><span id="result_box" lang="pt"><span class="hps">Junte-se</span> <span class="hps">a nossa</span> </span><a class="link-https" href="https://wiki.mozilla.org/Mobile/Notes">reunião de desenvolvimento de Quarta-feira</a></li> - <li><span id="result_box" lang="pt"><span class="hps">Mantenha-se atualizado</span> <span class="hps">com as notícias</span> <span class="hps">do projeto no</span></span> <a class="external" href="http://planet.firefox.com/mobile/">Planet Firefox Mobile</a>, <a href="http://fennecnightly.tumblr.com/">Tumblr</a> e <a class="link-https" href="https://twitter.com/FennecNightly" title="https://twitter.com/#!/mozmobile">Twitter</a></li> - <li><a href="https://wiki.mozilla.org/Mobile/Fennec/Android" title="https://wiki.mozilla.org/Mobile/Fennec/Android">Construa e hackei o Firefox para Android</a> (Fennec)</li> -</ul> -<h2 id="Desenvolver_para_a_web_movel">Desenvolver para a web movel</h2> -<p>Nós começamos a montar um guia para a <a href="/En/Mobile" title="En/Mobile">criação de websites para dispositivos móveis</a>.</p> -<p><span id="result_box" lang="pt"><span class="hps">Com o Firefox</span> <span class="hps">para</span> <span class="hps">Android</span><span>, você tem</span> <span class="hps">acesso</span> a <span class="hps">uma série de</span> <span class="hps">APIs</span> <span class="hps">que expõem</span> <span id="result_box" lang="pt"><span class="hps alt-edited">as capacidades</span> <span class="hps">ocultas do</span> <span class="hps">dispositivo,</span></span><span> diminuíndo a distância</span><span class="hps"> entre a</span> <span class="hps">Web</span> <span class="hps">e</span> <span class="hps">aplicações nativas</span><span>:</span> </span></p> -<ul> - <li><a class="external" href="http://hacks.mozilla.org/2012/02/using-the-battery-api-part-of-webapi/" title="http://hacks.mozilla.org/2012/02/using-the-battery-api-part-of-webapi/">Bateria</a></li> - <li><a href="/en/DOM/Using_the_Camera_API" title="Using the Camera API">Camera</a></li> - <li><a href="/en/API/WebTelephony/Introduction_to_WebTelephony" title="Introduction to WebTelephony">WebTelefonia</a></li> - <li><a href="/en/API/WebSMS/Introduction_to_WebSMS" title="Introduction to WebSMS">WebSMS</a></li> - <li><a href="/En/Using_geolocation" title="Using geolocation">Geolocalização</a></li> - <li><a href="/en/Detecting_device_orientation" title="https://developer.mozilla.org/en/detecting_device_orientation">Orientação</a></li> - <li><a href="/en/WebAPI/Web_Activities" title="Web Activities">Web Activities</a></li> -</ul> -<p><span id="result_box" lang="pt"><span class="hps">Para testar</span> <span class="hps">seu site</span> <span class="hps">no Firefox</span> <span class="hps">para</span> <span class="hps">Android</span></span>, você pode <a class="link-https" href="https://www.mozilla.org/en-US/mobile/">instalá-lo em um dispositivo Android</a> ou <a class="link-https" href="https://wiki.mozilla.org/Mobile/Fennec/Android/Emulator">executá-lo no seu desktop usando o Emulador Android</a>.</p> -<h2 id="Constua_complementos_móveis">Constua <span class="short_text" id="result_box" lang="pt"><span class="hps alt-edited">complementos </span></span>móveis</h2> -<p><a href="/en/Extensions/Mobile" title="en/Extensions/Firefox_on_Android">Firefox para Android suporta complementos</a> using the exact same <a href="/en/Extensions" title="en/Extensions">extension system</a> used by all other Gecko-based applications. We did not invent a new add-on system. This means that building an add-on for Firefox on Android is the <a href="/en/Building_an_Extension" title="en/Building_an_Extension">same process</a> that would be used for desktop Firefox. Add-ons that work with desktop Firefox <strong>do not</strong> automatically work in Firefox on Android. The user interfaces are just too different.</p> -<div class="note"> - Firefox on Android has a unique application identifier which must be used in <code>install.rdf</code>. The identifier is <code>{aa3c5121-dab2-40e2-81ca-7ea25febc110}</code></div> -<p>Both classic restart-required and newer <a href="/en/Extensions/Bootstrapped_extensions" title="en/Extensions/Bootstrapped_extensions">restartless</a> add-on approaches are supported. Using the restartless approach is preferred whenever possible because the user experience is far superior to forcing an application restart when installing or removing an add-on.</p> -<h3 id="Descrição_rápida"><span class="short_text" id="result_box" lang="pt"><span class="hps">Descrição rápida</span></span></h3> -<ul> - <li>There is no visible XUL in the UI, so using overlays to try to add or change UI is useless.</li> - <li>Internal code and objects, like <code>gBrowser</code>, do not exist. Look at the Firefox on Android <a class="external" href="http://mxr.mozilla.org/mozilla-central/source/mobile/android/chrome/content/browser.js" title="http://mxr.mozilla.org/mozilla-central/source/mobile/android/chrome/content/browser.js"><code>browser.js</code></a> file to learn about the internals. Much of the same fundamental functionality exists.</li> - <li>Services like <code>nsIPromptService</code> and <code>nsIAlertsService</code> are implemented to use native Android UI.</li> - <li>There is a simple JavaScript object, called <a href="/en/Extensions/Mobile/API/NativeWindow" title="en/Extensions/Mobile/NativeWindow"><code>NativeWindow</code></a>, that allows you to manipulate parts of the native Android UI.</li> -</ul> -<h2 id="Obtenha_ajuda_para_o_Firefox_para_Android"><span class="short_text" id="result_box" lang="pt"><span class="hps">Obtenha ajuda</span> <span class="hps alt-edited">para o Firefox</span> <span class="hps">para</span> <span class="hps">Android</span></span></h2> -<p>Documentation and tutorials for using and troubleshooting Firefox for Android are available on the <a class="external" href="http://support.mozilla.org/mobile" title="http://support.mozilla.org/mobile">Mozilla Support website</a>.</p> diff --git a/files/pt-br/mozilla/gecko/faq/index.html b/files/pt-br/mozilla/gecko/faq/index.html deleted file mode 100644 index 2a607010f8..0000000000 --- a/files/pt-br/mozilla/gecko/faq/index.html +++ /dev/null @@ -1,201 +0,0 @@ ---- -title: Gecko FAQ -slug: Mozilla/Gecko/FAQ -translation_of: Gecko/FAQ ---- -<h3 id="What_is_Gecko.3F" name="What_is_Gecko.3F">O que é o Gecko?</h3> - -<p><a href="/en/Gecko" title="en/Gecko">Gecko</a> é uma engine open source projetada para suportar os padrões abertos da Internet, como o <a href="/en/HTML" title="en/HTML">HTML</a> 4, <a href="/en/CSS" title="en/CSS">CSS</a> 1 e 2, o W3C <a href="/en/DOM" title="en/DOM">DOM</a>, <a href="/en/XML" title="en/XML">XML</a>, <a href="/en/JavaScript" title="en/JavaScript">JavaScript</a>, e outros.</p> - -<p>Gecko é usado em múltiplos navegadores, incluindo Mozilla Firefox, SeaMonkey, Camino e outros. O Gecko está continuamente em desenvolvimento na mozilla.org. O Gecko foi previamente conhecido pelos codinomes "Raptor" e "NGLayout"; o novo nome foi escolhido devido a uma disputa por quebra de marca registrada.</p> - -<p>Para mais informações, veja o {{ interwiki('wikipedia', 'Gecko_(layout_engine)', 'artigo na Wikipedia sobre o Gecko') }}.</p> - -<h3 id="What_is_a_layout_engine.3F" name="What_is_a_layout_engine.3F">O que é um mecanismo de layout?</h3> - -<p>Basically, a {{ interwiki('wikipedia', 'Layout_engine', 'layout engine') }} takes content (such as HTML, XML, image files, applets, and so on) and formatting information (such as Cascading Style Sheets, presentational HTML tags, etc.) and displays the formatted content on the screen. It paints the browser's content area, which is the blank area inside the browser window's chrome.</p> - -<p>Formally, a layout engine defines the placement policy for a document and places content on a page. Gecko's core is a very fast layout engine. Gecko also offers the ability to parse various document types (HTML, XML, SVG, etc), advanced rendering capabilities including compositing and transformations, and support for embedded JavaScript and <a href="/en/Plugins" title="en/Plugins">plugins</a>.</p> - -<p>Gecko is so fast and so powerful that it's being used to create the user interface of some applications ("chrome") as well. In other words, Gecko will not only be displaying the document's content, but it will also be painting the scrollbars, toolbars, and menus on the screen as well. For more information see <a href="/en/XUL" title="en/XUL">XUL</a>.</p> - -<h3 id="How_is_a_layout_engine_like_Gecko_different_from_a_Web_browser.3F" name="How_is_a_layout_engine_like_Gecko_different_from_a_Web_browser.3F">How is a layout engine like Gecko different from a Web browser?</h3> - -<p>Gecko provides the foundation needed to display content on the screen, including a layout engine and a complementary set of browser components. However, Gecko does not package all of these components alongside other interface modules in a coherent, user-friendly application (including menus, toolbars, etc.), such as Firefox.</p> - -<p>mozilla.org assembles the necessary components into its applications, such as Firefox, Thunderbird, SeaMonkey, Camino, which are available for free download from mozilla.org. Netscape released its own version of the browser branded as Netscape Navigator. Other companies release their own software and hardware products that use Gecko. See <a href="/en/XULRunner_Hall_of_Fame" title="en/XULRunner_Hall_of_Fame">XULRunner Hall of Fame</a> for a partial list of application that use Gecko via XULRunner.</p> - -<p>Third parties such as ISVs and hardware vendors will pick and choose the components they want to use in their applications or hardware devices. Certain browser components are not provided as part of Gecko, such as bookmarks, history, address book, etc. However, the source for all those components is available for free download from mozilla.org.</p> - -<h3 id="Why_was_Gecko_built.3F" name="Why_was_Gecko_built.3F">Why was Gecko built?</h3> - -<p>The original Mozilla browser, first released as Navigator 1.0, was developed rapidly by a small team that was passionate about creating the next killer app, and they succeeded. Now that the web has evolved, a new generation layout engine was needed upon which future products could be built. Gecko enables a pioneering new class of dynamic content that is more interactive and offers greater presentation control to Web developers, using open and recommended Internet standards instead of proprietary APIs. You are encouraged to join this team by getting involved.</p> - -<h3 id="How_is_mozilla.org_using_Gecko.3F" name="How_is_mozilla.org_using_Gecko.3F">How is mozilla.org using Gecko?</h3> - -<p>mozilla.org will assemble the Gecko layout engine and other browser components into the Mozilla browser application.</p> - -<h3 id="How_does_Mozilla_use_Gecko.3F" name="How_does_Mozilla_use_Gecko.3F">How does Mozilla use Gecko?</h3> - -<p>Gecko lies at the heart of Mozilla and Firefox browsers, as well as others, powering all of the individual components. Gecko technologies will also power the display of the mozilla.com portal site, speedily delivering more exciting content and services. Gecko's architecture will serve Mozilla well into the future, enabling faster time to market, more innovation, less costly development, easier distribution and updating, and better cross platform support.</p> - -<h3 id="How_can_other_companies_and_organizations_use_Gecko.3F" name="How_can_other_companies_and_organizations_use_Gecko.3F">How can other companies and organizations use Gecko?</h3> - -<p>Because Gecko is small, lightweight, and open source, other companies and organizations can easily reuse it. Many hardware vendors are creating devices with network access and wish to include web browsing functionality. Likewise, many software developers want to include Web browsing capability in their applications, but don't want to independently develop browser software. These developers can pick and choose the browser components they want from among those that Gecko offers, and package these components alongside their own within their finished products.</p> - -<h3 id="Which_open_standards_is_the_Gecko_development_project_working_to_support.2C_and_to_what_extent_does_it_support_them.3F" name="Which_open_standards_is_the_Gecko_development_project_working_to_support.2C_and_to_what_extent_does_it_support_them.3F">Which open standards is the Gecko development project working to support, and to what extent does it support them?</h3> - -<p>By the end of calendar year 2000, Gecko is expected to support the following recommended open Internet standards fully except for the areas noted below and open bugs documented in <a class="link-https" href="https://bugzilla.mozilla.org/">Bugzilla</a>:</p> - -<ul> - <li>HTML 4.0 - full support except for: - <ul> - <li>elements: BDO, BASEFONT</li> - <li>attributes: shape attribute on the A element, abbr, axis, headers, scope-row, scope-col, scope-rowgroup, scope-colgroup, charoff, datasrc, datafld, dataformat, datapagesize, summary, event, dir, align on table columns, label attribute of OPTION, alternate text of AREA elements, longdesc</li> - <li>various metadata attributes: cite, datetime, lang, hreflang</li> - <li>bidirectional text layout, which is only used in Hebrew and Arabic (IBM has begun work to add bidi support in a future release)</li> - </ul> - </li> - <li>Style Sheets - <ul> - <li>CSS 1 - full support, except for: - <ul> - <li>the application of styles to HTML column elements</li> - <li>the ability to turn off author styles</li> - <li>the names of certain Mozilla extension pseudo-classes lack the moz- prefix</li> - </ul> - </li> - <li>CSS 2 - partial support is expected and has already been built into Gecko, including support for CSS2 positioning, but no commitment has been made to achieve a specific level of support</li> - </ul> - </li> - <li>DOM - <ul> - <li>Level 0</li> - <li>Level 1 Core: full support - <ul> - <li>making EntityReferences available through DOM1; per a provision of the DOM1 spec for XML implementations, Entities will be automatically expanded inline and therefore not available through DOM1; our implementation extrapolates this provision to apply to EntityReferences as well</li> - <li>For more information, see the <a href="/en/DOM" title="en/DOM">DOM in Mozilla</a></li> - </ul> - </li> - <li>Level 1 HTML</li> - <li>DOM 2 - Most of it has already been implemented in Gecko, including support for DOM 2 events, the DOM 2 Style, and the DOM2 Core. DOM 3 support is also planned for a future release.</li> - </ul> - </li> - <li>XML 1.0: full support, except for processing to manipulate default attributes</li> - <li>RDF: full support, except for aboutEach, aboutEachPrefix, and parseType</li> - <li>JavaScript 1.5, including ECMA-262 Edition 3 (ECMAscript) compliance, except for Date.toDateString and Date.toTimeString, which are not implemented</li> - <li>Transfer protocols: HTTP 1.1 (including gzip compression), FTP</li> - <li>SSL</li> - <li>Unicode</li> - <li>OJI (Open Java Interface)</li> - <li>Image formats - <ul> - <li>PNG</li> - <li>GIF</li> - <li>JPEG, PJPEG</li> - </ul> - </li> -</ul> - -<h3 id="Does_.22full_support.22_mean_that_Gecko_has_zero_bugs_today_or_will_have_zero_bugs_at_some_point_in_the_future.3F" name="Does_.22full_support.22_mean_that_Gecko_has_zero_bugs_today_or_will_have_zero_bugs_at_some_point_in_the_future.3F">Does "full support" mean that Gecko has zero bugs today or will have zero bugs at some point in the future?</h3> - -<p>Of course not. As Robert O'Callahan notes in {{ Bug(25707) }}, "Full HTML4/CSS1 compliance can't mean '100% bug free'. If it does, no-one will ever ship a fully compliant browser."</p> - -<p>Because web pages can be arbitrarily long and complex and have arbitrarily deeply nested markup, it will always be possible to construct web pages that do not display in a given browser the way the specifications would recommend. So long as QA testing and test case development continues, there will always be known bugs at any given point in time in the open-source Gecko codebase, and it follows that every commercial product that has ever shipped and ever will ship based on Gecko will have known bugs at the time of its release. (The same principle of course applies to other browser engine development projects and products based upon them as well.)</p> - -<p>Known bugs in the open-source Gecko codebase are documented in <a class="link-https" href="https://bugzilla.mozilla.org/">Bugzilla</a>. Here are some links to lists of reported bugs related to the standards mentioned above; be aware that these raw lists of open in-process bugs will inevitably include some duplicate, out of date, unreproducible, invalid, and incorrectly tagged reports:</p> - -<div class="note">The links themselves are probably outdated too.</div> - -<ul> - <li><a class="link-https" href="https://bugzilla.mozilla.org/buglist.cgi?bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&email1=&emailtype1=substring&emailassigned_to1=1&email2=&emailtype2=substring&emailreporter2=1&bugidtype=include&bug_id=&changedin=&votes=&chfieldfrom=&chfieldto=Now&chfieldvalue=&component=Layout&short_desc=&short_desc_type=substring&long_desc=&long_desc_type=substring&bug_file_loc=&bug_file_loc_type=substring&status_whiteboard=&status_whiteboard_type=substring&keywords=&keywords_type=anywords&field0-0-0=noop&type0-0-0=noop&value0-0-0=&cmdtype=doit&newqueryname=&order=Reuse+same+sort+as+last+time">Layout</a> component tracks content layout bugs that may be related to a variety of specifications</li> - <li>HTML 4.0 - <ul> - <li><a class="link-https" href="https://bugzilla.mozilla.org/buglist.cgi?bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&email1=&emailtype1=substring&emailassigned_to1=1&email2=&emailtype2=substring&emailreporter2=1&bugidtype=include&bug_id=&changedin=&votes=&chfieldfrom=&chfieldto=Now&chfieldvalue=&component=Form+Submission&component=HTML+Element&component=HTML+Form+Controls&component=HTMLFrames&component=HTMLTables&short_desc=&short_desc_type=substring&long_desc=&long_desc_type=substring&bug_file_loc=&bug_file_loc_type=substring&status_whiteboard=&status_whiteboard_type=substring&keywords=&keywords_type=anywords&field0-0-0=noop&type0-0-0=noop&value0-0-0=&cmdtype=doit&newqueryname=&order=Reuse+same+sort+as+last+time">Elements, Form Controls, Frames, Tables, and Form Submission</a></li> - <li>bug reports marked with the <a class="link-https" href="https://bugzilla.mozilla.org/buglist.cgi?bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&email1=&emailtype1=substring&emailassigned_to1=1&email2=&emailtype2=substring&emailreporter2=1&bugidtype=include&bug_id=&changedin=&votes=&chfieldfrom=&chfieldto=Now&chfieldvalue=&short_desc=&short_desc_type=substring&long_desc=&long_desc_type=substring&bug_file_loc=&bug_file_loc_type=substring&status_whiteboard=&status_whiteboard_type=substring&keywords=html4&keywords_type=anywords&field0-0-0=noop&type0-0-0=noop&value0-0-0=&cmdtype=doit&newqueryname=&order=Reuse+same+sort+as+last+time">html4 keyword</a></li> - <li>"meta bug" for tracking outstanding issues with <a class="link-https" href="https://bugzilla.mozilla.org/show_bug.cgi?id=7954">HTML 4.01 compliance</a></li> - </ul> - </li> - <li>CSS: <a class="link-https" href="https://bugzilla.mozilla.org/buglist.cgi?bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&email1=&emailtype1=substring&emailassigned_to1=1&email2=&emailtype2=substring&emailreporter2=1&bugidtype=include&bug_id=&changedin=&votes=&chfieldfrom=&chfieldto=Now&chfieldvalue=&component=Style+System&short_desc=&short_desc_type=substring&long_desc=&long_desc_type=substring&bug_file_loc=&bug_file_loc_type=substring&status_whiteboard=&status_whiteboard_type=substring&keywords=&keywords_type=anywords&field0-0-0=noop&type0-0-0=noop&value0-0-0=&cmdtype=doit&newqueryname=&order=Reuse+same+sort+as+last+time">Style System</a> component (see also bug reports marked with the <a class="link-https" href="https://bugzilla.mozilla.org/buglist.cgi?bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&email1=&emailtype1=substring&emailassigned_to1=1&email2=&emailtype2=substring&emailreporter2=1&bugidtype=include&bug_id=&changedin=&votes=&chfieldfrom=&chfieldto=Now&chfieldvalue=&component=Style+System&short_desc=&short_desc_type=substring&long_desc=&long_desc_type=substring&bug_file_loc=&bug_file_loc_type=substring&status_whiteboard=&status_whiteboard_type=substring&keywords=css1&keywords_type=anywords&field0-0-0=noop&type0-0-0=noop&value0-0-0=&cmdtype=doit&newqueryname=&order=Reuse+same+sort+as+last+time">css1</a>, <a class="link-https" href="https://bugzilla.mozilla.org/buglist.cgi?bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&email1=&emailtype1=substring&emailassigned_to1=1&email2=&emailtype2=substring&emailreporter2=1&bugidtype=include&bug_id=&changedin=&votes=&chfieldfrom=&chfieldto=Now&chfieldvalue=&component=Style+System&short_desc=&short_desc_type=substring&long_desc=&long_desc_type=substring&bug_file_loc=&bug_file_loc_type=substring&status_whiteboard=&status_whiteboard_type=substring&keywords=css2&keywords_type=anywords&field0-0-0=noop&type0-0-0=noop&value0-0-0=&cmdtype=doit&newqueryname=&order=Reuse+same+sort+as+last+time">css2</a>, and <a class="link-https" href="https://bugzilla.mozilla.org/buglist.cgi?bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&email1=&emailtype1=substring&emailassigned_to1=1&email2=&emailtype2=substring&emailreporter2=1&bugidtype=include&bug_id=&changedin=&votes=&chfieldfrom=&chfieldto=Now&chfieldvalue=&component=Style+System&short_desc=&short_desc_type=substring&long_desc=&long_desc_type=substring&bug_file_loc=&bug_file_loc_type=substring&status_whiteboard=&status_whiteboard_type=substring&keywords=css3&keywords_type=anywords&field0-0-0=noop&type0-0-0=noop&value0-0-0=&cmdtype=doit&newqueryname=&order=Reuse+same+sort+as+last+time">css3</a> keywords)</li> - <li>DOM: see <a class="link-https" href="https://bugzilla.mozilla.org/buglist.cgi?bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&email1=&emailtype1=substring&emailassigned_to1=1&email2=&emailtype2=substring&emailreporter2=1&bugidtype=include&bug_id=&changedin=&votes=&chfieldfrom=&chfieldto=Now&chfieldvalue=&component=DOM+Level+0&short_desc=&short_desc_type=substring&long_desc=&long_desc_type=substring&bug_file_loc=&bug_file_loc_type=substring&status_whiteboard=&status_whiteboard_type=substring&keywords=&keywords_type=anywords&field0-0-0=noop&type0-0-0=noop&value0-0-0=&cmdtype=doit&newqueryname=&order=Reuse+same+sort+as+last+time">DOM0</a>, <a class="link-https" href="https://bugzilla.mozilla.org/buglist.cgi?bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&email1=&emailtype1=substring&emailassigned_to1=1&email2=&emailtype2=substring&emailreporter2=1&bugidtype=include&bug_id=&changedin=&votes=&chfieldfrom=&chfieldto=Now&chfieldvalue=&component=DOM+Level+1&short_desc=&short_desc_type=substring&long_desc=&long_desc_type=substring&bug_file_loc=&bug_file_loc_type=substring&status_whiteboard=&status_whiteboard_type=substring&keywords=&keywords_type=anywords&field0-0-0=noop&type0-0-0=noop&value0-0-0=&cmdtype=doit&newqueryname=&order=Reuse+same+sort+as+last+time">DOM1</a>, <a class="link-https" href="https://bugzilla.mozilla.org/buglist.cgi?bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&email1=&emailtype1=substring&emailassigned_to1=1&email2=&emailtype2=substring&emailreporter2=1&bugidtype=include&bug_id=&changedin=&votes=&chfieldfrom=&chfieldto=Now&chfieldvalue=&component=DOM+Level+2&short_desc=&short_desc_type=substring&long_desc=&long_desc_type=substring&bug_file_loc=&bug_file_loc_type=substring&status_whiteboard=&status_whiteboard_type=substring&keywords=&keywords_type=anywords&field0-0-0=noop&type0-0-0=noop&value0-0-0=&cmdtype=doit&newqueryname=&order=Reuse+same+sort+as+last+time">DOM2</a> and <a class="link-https" href="https://bugzilla.mozilla.org/buglist.cgi?bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&email1=&emailtype1=substring&emailassigned_to1=1&email2=&emailtype2=substring&emailreporter2=1&bugidtype=include&bug_id=&changedin=&votes=&chfieldfrom=&chfieldto=Now&chfieldvalue=&component=Event+Handling&short_desc=&short_desc_type=substring&long_desc=&long_desc_type=substring&bug_file_loc=&bug_file_loc_type=substring&status_whiteboard=&status_whiteboard_type=substring&keywords=&keywords_type=anywords&field0-0-0=noop&type0-0-0=noop&value0-0-0=&cmdtype=doit&newqueryname=&order=Reuse+same+sort+as+last+time">Event Handling</a> components</li> - <li><a class="link-https" href="https://bugzilla.mozilla.org/buglist.cgi?bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&email1=&emailtype1=substring&emailassigned_to1=1&email2=&emailtype2=substring&emailreporter2=1&bugidtype=include&bug_id=&changedin=&votes=&chfieldfrom=&chfieldto=Now&chfieldvalue=&component=XML&short_desc=&short_desc_type=substring&long_desc=&long_desc_type=substring&bug_file_loc=&bug_file_loc_type=substring&status_whiteboard=&status_whiteboard_type=substring&keywords=&keywords_type=anywords&field0-0-0=noop&type0-0-0=noop&value0-0-0=&cmdtype=doit&newqueryname=&order=Reuse+same+sort+as+last+time">XML</a></li> - <li><a class="link-https" href="https://bugzilla.mozilla.org/buglist.cgi?bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&email1=&emailtype1=substring&emailassigned_to1=1&email2=&emailtype2=substring&emailreporter2=1&bugidtype=include&bug_id=&changedin=&votes=&chfieldfrom=&chfieldto=Now&chfieldvalue=&component=RDF&short_desc=&short_desc_type=substring&long_desc=&long_desc_type=substring&bug_file_loc=&bug_file_loc_type=substring&status_whiteboard=&status_whiteboard_type=substring&keywords=&keywords_type=anywords&field0-0-0=noop&type0-0-0=noop&value0-0-0=&cmdtype=doit&newqueryname=&order=Reuse+same+sort+as+last+time">RDF</a></li> - <li>core JavaScript language interpreter (<a class="link-https" href="https://bugzilla.mozilla.org/buglist.cgi?bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&email1=&emailtype1=substring&emailassigned_to1=1&email2=&emailtype2=substring&emailreporter2=1&bugidtype=include&bug_id=&changedin=&votes=&chfieldfrom=&chfieldto=Now&chfieldvalue=&component=Javascript+Engine&short_desc=&short_desc_type=substring&long_desc=&long_desc_type=substring&bug_file_loc=&bug_file_loc_type=substring&status_whiteboard=&status_whiteboard_type=substring&keywords=&keywords_type=anywords&field0-0-0=noop&type0-0-0=noop&value0-0-0=&cmdtype=doit&newqueryname=&order=Reuse+same+sort+as+last+time">JavaScript engine</a>)</li> - <li>HTTP 1.1 compliance bugs should generally be found on the <a class="link-https" href="https://bugzilla.mozilla.org/buglist.cgi?bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&email1=&emailtype1=substring&emailassigned_to1=1&email2=&emailtype2=substring&emailreporter2=1&bugidtype=include&bug_id=&changedin=&votes=&chfieldfrom=&chfieldto=Now&chfieldvalue=&component=Necko&short_desc=&short_desc_type=substring&long_desc=&long_desc_type=substring&bug_file_loc=&bug_file_loc_type=substring&status_whiteboard=&status_whiteboard_type=substring&keywords=&keywords_type=anywords&field0-0-0=noop&type0-0-0=noop&value0-0-0=&cmdtype=doit&newqueryname=&order=Reuse+same+sort+as+last+time">Networking, Networking - General, and Networking: Cache</a> components</li> - <li><a class="link-https" href="https://bugzilla.mozilla.org/buglist.cgi?bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&email1=&emailtype1=substring&emailassigned_to1=1&email2=&emailtype2=substring&emailreporter2=1&bugidtype=include&bug_id=&changedin=&votes=&chfieldfrom=&chfieldto=Now&chfieldvalue=&component=OJI&short_desc=&short_desc_type=substring&long_desc=&long_desc_type=substring&bug_file_loc=&bug_file_loc_type=substring&status_whiteboard=&status_whiteboard_type=substring&keywords=&keywords_type=anywords&field0-0-0=noop&type0-0-0=noop&value0-0-0=&cmdtype=doit&newqueryname=&order=Reuse+same+sort+as+last+time">OJI</a></li> - <li><a class="link-https" href="https://bugzilla.mozilla.org/buglist.cgi?bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&email1=&emailtype1=substring&emailassigned_to1=1&email2=&emailtype2=substring&emailreporter2=1&bugidtype=include&bug_id=&changedin=&votes=&chfieldfrom=&chfieldto=Now&chfieldvalue=&component=ImageLib&short_desc=&short_desc_type=substring&long_desc=&long_desc_type=substring&bug_file_loc=&bug_file_loc_type=substring&status_whiteboard=&status_whiteboard_type=substring&keywords=&keywords_type=anywords&field0-0-0=noop&type0-0-0=noop&value0-0-0=&cmdtype=doit&newqueryname=&order=Reuse+same+sort+as+last+time">Imagelib</a> image library (see also <a class="link-https" href="https://bugzilla.mozilla.org/buglist.cgi?bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&email1=&emailtype1=substring&emailassigned_to1=1&email2=&emailtype2=substring&emailreporter2=1&bugidtype=include&bug_id=&changedin=&votes=&chfieldfrom=&chfieldto=Now&chfieldvalue=&component=JPEG+Image+Handling&short_desc=&short_desc_type=substring&long_desc=&long_desc_type=substring&bug_file_loc=&bug_file_loc_type=substring&status_whiteboard=&status_whiteboard_type=substring&keywords=&keywords_type=anywords&field0-0-0=noop&type0-0-0=noop&value0-0-0=&cmdtype=doit&newqueryname=&order=Reuse+same+sort+as+last+time">JPEG Image Handling</a> and <a class="link-https" href="https://bugzilla.mozilla.org/buglist.cgi?bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&email1=&emailtype1=substring&emailassigned_to1=1&email2=&emailtype2=substring&emailreporter2=1&bugidtype=include&bug_id=&changedin=&votes=&chfieldfrom=&chfieldto=Now&chfieldvalue=&component=PNG+Image+Handling&short_desc=&short_desc_type=substring&long_desc=&long_desc_type=substring&bug_file_loc=&bug_file_loc_type=substring&status_whiteboard=&status_whiteboard_type=substring&keywords=&keywords_type=anywords&field0-0-0=noop&type0-0-0=noop&value0-0-0=&cmdtype=doit&newqueryname=&order=Reuse+same+sort+as+last+time">PNG Image Handling</a>)</li> - <li>SSL-related bugs are filed on the <a class="link-https" href="https://bugzilla.mozilla.org/buglist.cgi?bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&email1=&emailtype1=substring&emailassigned_to1=1&email2=&emailtype2=substring&emailreporter2=1&bugidtype=include&bug_id=&changedin=&votes=&chfieldfrom=&chfieldto=Now&chfieldvalue=&component=Security%3A+Crypto&short_desc=&short_desc_type=substring&long_desc=&long_desc_type=substring&bug_file_loc=&bug_file_loc_type=substring&status_whiteboard=&status_whiteboard_type=substring&keywords=&keywords_type=anywords&field0-0-0=noop&type0-0-0=noop&value0-0-0=&cmdtype=doit&newqueryname=&order=Reuse+same+sort+as+last+time">Crypto</a> component</li> -</ul> - -<p>For information about the known bugs of a specific commercial product based on Gecko, see that product's release notes.</p> - -<h3 id="How_does_Gecko_format_XML_documents.3F" name="How_does_Gecko_format_XML_documents.3F">How does Gecko format XML documents?</h3> - -<p>Gecko supports the use of CSS and <a href="/en/XSLT" title="en/XSLT">XSLT</a> to format XML documents.</p> - -<p>For XML documents without associated CSS or XSLT, Gecko displays the pretty-printed source of the document.</p> - -<h3 id="How_does_Gecko_help_content_developers.3F" name="How_does_Gecko_help_content_developers.3F">How does Gecko help content developers?</h3> - -<p>Content developers are sick and tired of developing and testing every single web page multiple times in order to support the different, incompatible, proprietary DOMs of browsers from different vendors. They have been demanding that all vendors fully support the open standards listed above so that they can</p> - -<ol> - <li>have a rich, powerful formatting system and object model at their disposal, and</li> - <li>"write once, view anywhere."</li> -</ol> - -<p>Gecko's robust support for these standards makes Gecko the platform of choice for web content and web application developers worldwide.</p> - -<h3 id="Are_Gecko.27s_APIs_based_on_ActiveX.3F_COM.3F_JavaBeans.3F" name="Are_Gecko.27s_APIs_based_on_ActiveX.3F_COM.3F_JavaBeans.3F">Are Gecko's APIs based on ActiveX? COM? JavaBeans?</h3> - -<p>Gecko is reusable on all platforms thanks to <a href="/en/XPCOM" title="en/XPCOM">XPCOM</a>, a subset of COM that works across platforms. COM, developed by Digital and later adopted by Microsoft, is the de facto standard for modular interfaces on Windows platforms.</p> - -<p>Additionally, on the Windows platform, Gecko's XPCOM interfaces are wrapped in an ActiveX control that VB developers can utilize (ActiveX wrappers are not available on other platforms because ActiveX is a Windows-only technology).</p> - -<p>A JavaBean wrapper is not currently under development, but there is nothing in Gecko's architecture that precludes such development in the future. Source code and documentation for these interfaces are available through mozilla.org.</p> - -<p>For future embedding API plans, see {{ interwiki('wikimo', 'Mozilla_2:Embedding_APIs', 'wikimo:Mozilla 2:Embedding APIs') }}.</p> - -<h3 id="Are_Gecko.27s_APIs_compatible_with_Microsoft.27s_Trident_APIs.3F" name="Are_Gecko.27s_APIs_compatible_with_Microsoft.27s_Trident_APIs.3F">Are Gecko's APIs compatible with Microsoft's Trident APIs?</h3> - -<p>Gecko's XPCOM interfaces are different than Microsoft's. The most important differences between the two models involve reflection of the Document Object Model (DOM) in the interfaces.</p> - -<p>Microsoft's Trident interfaces reflect the DOM in a proprietary API, whereas Gecko exposes the DOM according to the W3C's recommended standard. Other incompatibilities exist. Adam Lock created a partial compatibility layer that may enable developers to more easily migrate from Microsoft's engine to the Gecko engine.</p> - -<h3 id="Which_platforms_does_Gecko_run_on.3F" name="Which_platforms_does_Gecko_run_on.3F">Which platforms does Gecko run on?</h3> - -<p>Gecko runs today on Win32 (Windows XP Service Pack 2, Windows Vista, Windows 7, Windows 8, Windows 8.1), Mac OS X 10.5 and later, and Linux. OEMs and contributors from the Net participating in mozilla.org are porting Gecko to other platforms. Such porting efforts are underway for Solaris, HP/UX, AIX, Irix, OS/2, OpenVMS, BeOS, and Amiga, among others.</p> - -<p>Older versions of Gecko supported earlier versions of Win32 and Mac OS X.</p> - -<h3 id="What_are_the_components_of_Gecko.3F" name="What_are_the_components_of_Gecko.3F">What are the components of Gecko?</h3> - -<p>Gecko includes the following components:</p> - -<ul> - <li>Document parser (handles HTML and XML)</li> - <li>Layout engine with content model</li> - <li>Style system (handles CSS, etc.)</li> - <li>JavaScript runtime (<a href="/en/SpiderMonkey" title="en/SpiderMonkey">SpiderMonkey</a>)</li> - <li>Image library</li> - <li>Networking library (<a href="/en/Necko" title="en/Necko">Necko</a>)</li> - <li>Platform-specific graphics rendering and widget sets for Win32, X, and Mac</li> - <li>User preferences library</li> - <li>Mozilla Plug-in API (<a href="/en/Plugins" title="en/Plugins">NPAPI</a>) to support the Navigator plug-in interface</li> - <li>Open Java Interface (OJI), with Sun Java 1.2 JVM</li> - <li><a href="/en/RDF" title="en/RDF">RDF</a> back end</li> - <li>Font library</li> - <li>Security library (<a href="/en/NSS" title="en/NSS">NSS</a>)</li> -</ul> - -<div class="originaldocinfo"> -<h2 id="Original_Document_Information" name="Original_Document_Information">Original Document Information</h2> - -<ul> - <li>Author(s): Angus</li> - <li>Other Contributors: Ekrock, Vidur, Hidday, Drunclear</li> - <li>Copyright Information: Portions of this content are © 1998–2006 by individual mozilla.org contributors; content available under a Creative Commons license</li> -</ul> -</div> - -<p>{{ languages( { "ja": "ja/Gecko_FAQ", "zh-cn": "cn/Gecko_FAQ" } ) }}</p> diff --git a/files/pt-br/mozilla/gecko/index.html b/files/pt-br/mozilla/gecko/index.html deleted file mode 100644 index bc9ead9919..0000000000 --- a/files/pt-br/mozilla/gecko/index.html +++ /dev/null @@ -1,73 +0,0 @@ ---- -title: Gecko -slug: Mozilla/Gecko -tags: - - Gecko - - Mozilla -translation_of: Mozilla/Gecko ---- -<p><strong>Gecko </strong>é o nome do motor de layout desenvolvido pelo Projeto Mozilla. Ele foi primeiramente nomeado NGLayout.</p> -<p>A função do Gecko é ler o conteúdo da web, como <a href="https://developer.mozilla.org/en-US/docs/HTML" title="HTML">HTML</a>, <a href="https://developer.mozilla.org/en-US/docs/CSS" title="CSS">CSS</a>, <a href="https://developer.mozilla.org/en-US/docs/XUL" title="XUL">XUL</a>, <a href="https://developer.mozilla.org/en-US/docs/JavaScript" title="JavaScript">JavaScript</a> e renderiza-lo na tela do usuário, ou imprimí-la. Em aplicações baseadas em XUL o Gecko também é usado para renderizar a interface do usuário.</p> -<p>Gecko é utilizado em muitas aplicações, incluindo alguns navegadores, como o Firefox, SeaMonkey, etc. (Para a lista completa, veja em <a class="external" href="http://en.wikipedia.org/wiki/Gecko_%28layout_engine%29#Web_browsers" rel="external" title="http://en.wikipedia.org/wiki/Gecko_(layout_engine)#Web_browsers">Artigo da Wikipedia do Gecko</a>.) Produtos usando a mesma versão do Gecko tem suporte idêntico aos padrões.</p> -<table class="topicpage-table"> - <tbody> - <tr> - <td> - <h2 class="Documentation" id="Documentação">Documentação</h2> - <dl> - <dt> - <a href="/en-US/docs/Gecko_FAQ" title="Gecko_FAQ">Perguntas frequentes Gecko</a></dt> - <dd> - Perguntas frequentes sobre o Gecko.</dd> - <dt> - <a href="/en-US/docs/Gecko_DOM_Reference" title="https://developer.mozilla.org/en-US/docs/Gecko_DOM_Reference">Referência DOM Gecko</a></dt> - <dd> - Referência do DOM.</dd> - <dt> - <a href="/en-US/docs/Gecko-Specific_DOM_Events" title="Gecko/Gecko event reference">Referência de eventos Gecko</a></dt> - <dd> - Referência de eventos usados em aplicações Gecko e Mozilla;</dd> - <dd> - Para convenção-web de eventos DOM, veja <a href="https://developer.mozilla.org/en-US/docs/DOM/DOM_event_reference" title="DOM/DOM event reference">Referência de evento DOM</a>.</dd> - <dt> - <a href="/en-US/docs/Gecko/Versions" title="Gecko/Versions">Versões Gecko e versões de aplicação</a></dt> - <dd> - Versões do Gecko e das aplicações que ele é usado.</dd> - <dt> - <a class="external" href="/en-US/docs/Introduction_to_Layout_in_Mozilla" title="https://developer.mozilla.org/en-US/docs/Introduction_to_Layout_in_Mozilla">Introdução ao Layout na Mozilla</a></dt> - <dd> - Conversa técnica sobre layout.</dd> - <dt> - <a href="/en-US/docs/Embedding_Mozilla" title="Embedding_Mozilla">Integrando Mozilla</a></dt> - <dd> - Usando Gecko na sua aplicação.</dd> - <dt> - <a href="/en-US/docs/Character_Sets_Supported_by_Gecko" title="Character Sets Supported by Gecko">Conjuntos de caracteres suportados pelo Gecko</a></dt> - <dd> - Uma lista de caracteres suportados pelo Gecko.</dd> - <dt> - <a href="/en-US/docs/Gecko/HTML_parser_threading" title="Gecko/HTML_parser_threading">HTML parser threading</a></dt> - <dd> - Descrição de multithreading no HTML parser.</dd> - <dt> - {{interwiki('wikimo', 'Gecko:Home_Page', 'Página inicial Gecko na MozillaWiki')}}</dt> - <dd> - Início para desenvolvedores ativos. Roteiros e mais recursos atualizados.</dd> - </dl> - <p><span class="alllinks"><a href="/en-US/docs/tag/Gecko" title="tag/Gecko">Ver tudo...</a></span></p> - </td> - <td> - <h2 class="Community" id="Comunidade">Comunidade</h2> - <ul> - <li>Veja fóruns da Mozilla... {{DiscussionList("dev-tech-layout", "mozilla.dev.tech.layout")}}</li> - </ul> - <h2 class="Related_Topics" id="Tópicos_relacionados">Tópicos relacionados</h2> - <dl> - <dd> - <a href="/en-US/docs/Web_Standards" title="Web_Standards">Convenções da Web</a>, <a href="/en-US/docs/XUL" title="XUL">XUL</a>, <a href="/en-US/docs/Embedding_Mozilla" title="Embedding_Mozilla">Integrando Mozilla</a>, <a href="/en-US/docs/Developer_Guide" title="Developing_Mozilla">Desenvolvendo Mozilla</a></dd> - </dl> - </td> - </tr> - </tbody> -</table> -<p> </p> diff --git a/files/pt-br/mozilla/implementing_pontoon_in_a_mozilla_website/index.html b/files/pt-br/mozilla/implementing_pontoon_in_a_mozilla_website/index.html deleted file mode 100644 index ca96828d17..0000000000 --- a/files/pt-br/mozilla/implementing_pontoon_in_a_mozilla_website/index.html +++ /dev/null @@ -1,76 +0,0 @@ ---- -title: Implementing Pontoon in a Mozilla project -slug: Mozilla/Implementing_Pontoon_in_a_Mozilla_website -tags: - - Localização -translation_of: Mozilla/Implementing_Pontoon_in_a_Mozilla_website ---- -<p>O <a class="external external-icon" href="https://pontoon.mozilla.org">Pontoon</a> é uma ferramenta de tradução (l10n) baseado na web do tipo O-Que-Você-Ver-É-O-Que-Você-Tem (WYSIWYG), usada para traduzir conteúdo web. Na Mozilla, usamos o Pontoon para traduzir os sites da Mozilla e a interface de aplicativo do Firefox OS, conhecida como Gaia. O Pontoon é uma ferramenta muito simples e intuitiva que requer pouca ou nenhuma habilidade técnica para usar no trabalho de tradução, o que vai reduzir seu tempo para publicar versões localizadas de seu projeto. Aqui nós vamos discutir como você pode adicionar Pontoon a seu projeto Mozilla.</p> - -<div class="note"> -<p><strong>Você gostaria de melhorar o Pontoon?</strong> Aprenda como se envolver no <a href="https://github.com/mozilla/pontoon">GitHub</a>.</p> -</div> - -<div class="note"> -<p><strong>Primeiros passos com l10n em seu projeto?</strong> Veja o wiki sobre <a href="https://wiki.mozilla.org/L10n:NewProjects">fazer com que seu projeto seja localizado</a>.</p> -</div> - -<h2 id="A._Torne_seu_projeto_localizável">A. Torne seu projeto localizável</h2> - -<p>Nós percebemos que estas já são consideradas <a class="external external-icon" href="https://mozweb.readthedocs.org/en/latest/reference/l10n.html">boas práticas</a> padrões para localização de projetos no Mozilla, mas sentimos que é bom adicioná-las aqui como um pequeno lembrete.</p> - -<ol> - <li>Certifique-se que seu projeto possui suporte a um dos frameworks de l10n (<a class="external external-icon" href="https://www.gnu.org/software/gettext/">gettext</a>, <a class="external external-icon" href="https://docs.oasis-open.org/xliff/xliff-core/v2.0/xliff-core-v2.0.html">XLIFF</a>, <a class="external external-icon" href="https://projectfluent.org/">L20n</a>, <a class="external external-icon" href="https://github.com/mozilla-l10n/langchecker/wiki/.lang-files-format">lang</a>, <a class="external external-icon" href="https://wikipedia.org/wiki/.properties">properties</a>, etc.).</li> - <li>Extraia strings localizáveis para os arquivos de recursos.</li> - <li>Envie os arquivos de recursos para um repositório (SVN, HG ou Git). - <ul> - <li>Pastas de locale individuais devem estar localizadas no memos nível de aninhamento da árvore de diretório. Locales fontes precisam ser chamados <code>templates</code>, <code>en</code> ou <code>en-US</code>. Você pode criar uma pasta de locales decicada para esse propósito. Código de locale não pode ser parte do nome do arquivo.</li> - <li>Padrão correto: - <pre>/locales/{codigo_locale}/caminho/para/extensão</pre> - </li> - <li>Padrão incorreto: - <pre>/locales/{codigo_locale}/camiho/para/arquivo.{codigo_locale}.extensão</pre> - </li> - </ul> - </li> - <li>Certifique-se de que o Pontoon possui acesso de escrita ao repositório. - <ul> - <li>Se estiver usando GitHub, adicione <a class="external external-icon" href="https://github.com/mozilla-pontoon">mozilla-pontoon</a> ou <a href="https://github.com/orgs/mozilla/teams/pontoon-l10n-robots">pontoon-l10n-robots</a> como colaborador de seu projeto.</li> - </ul> - </li> -</ol> - -<h2 id="B._opcional_Habilite_localização_em-página_de_seu_projeto_web">B. (opcional) Habilite localização em-página de seu projeto web</h2> - -<ol> - <li>Vincule um script de seu elemento HTML <code><body></code>, de forma que Pontoon possa falar com seu site, detectar o conteúdo e torná-lo localizável "in loco". Você só precisa fazer isso no ambiente que será usado para a localização na-página. Por exemplo, no servidor de preparo: - - <ul> - <li> - <pre id="line1"><span> </span><span><<span class="start-tag">script</span> <span class="attribute-name">src</span>="<a class="attribute-value">https://pontoon.mozilla.org/pontoon.js</a>"</span><span>></<span class="end-tag">script</span>></span></pre> - </li> - </ul> - </li> - <li>Se seu site usa <a href="/pt-BR/docs/Web/HTTP/CSP">CSP</a>, por favor certifique-se de que o seguinte é permitido para o domínio <code>pontoon.mozilla.org</code>: - <ol> - <li>carregar dentro do iframe</li> - <li>carregar CSS remotas</li> - <li>carregar imagens remotas</li> - </ol> - </li> - <li>Se seu site usa o cabeçalho <a href="/docs/Web/HTTP/Headers/X-Frame-Options">X-Frame-Options</a>, por favor certifique-se de carregar dentro do iframe é permitido para o domínio <code>pontoon.mozilla.org</code>.</li> - <li>Certifique-se de que seu site oferece suporte a HTTPS. É gratuito, automatizado e aberto. <a href="https://letsencrypt.org/">Vamos criptografar</a>!</li> -</ol> - -<h2 id="C._Adicione_seu_projeto_ao_Pontoon">C. Adicione seu projeto ao Pontoon</h2> - -<p>Seu projeto já está pronto para ser configurado no Pontoon. Por favor preencha um relatório de problema em <a class="external external-icon" href="https://bugzilla.mozilla.org/enter_bug.cgi?product=Localization%20Infrastructure%20and%20Tools&component=Administration%20%2F%20Setup">Localization Infrastructure and Tools :: Administration / Setup</a> e forneça a seguinte informação:</p> - -<ul> - <li>Nome do projeto</li> - <li>URL do repositório</li> - <li>Lista de locales requisitadas</li> - <li>URL do site, incluindo todas as URLs de subpáginas (apenas se usando localização na-página)</li> -</ul> - -<p>Para mais detalhes, por favor entre em contato com a <a class="external external-icon" href="mailto:pontoon-team@mozilla.com">Project Management Team</a>.</p> diff --git a/files/pt-br/mozilla/javascript_code_modules/index.html b/files/pt-br/mozilla/javascript_code_modules/index.html deleted file mode 100644 index fd00be0bda..0000000000 --- a/files/pt-br/mozilla/javascript_code_modules/index.html +++ /dev/null @@ -1,83 +0,0 @@ ---- -title: Módulos de código JavaScript -slug: Mozilla/JavaScript_code_modules -translation_of: Mozilla/JavaScript_code_modules ---- -<div>{{gecko_minversion_header("1.9")}}</div> - -<p>JavaScript code modules let multiple privileged JavaScript scopes share code. For example, a module could be used by Firefox itself as well as by extensions, in order to avoid code duplication.</p> - -<h2 id="General_topics">General topics</h2> - -<dl style="-moz-columns: 2; columns: 2;"> - <dt><a href="/en-US/docs/JavaScript_code_modules/Using" title="./Using">Using JavaScript code modules</a></dt> - <dd>An introduction to how to use JavaScript code modules.</dd> - <dt><a href="/en-US/docs/Components.utils.import" title="Components.utils.import">Component.utils.import</a></dt> - <dd>How to import a JavaScript code module.</dd> - <dt><a href="/en-US/docs/Components.utils.unload" title="Components.utils.unload">Component.utils.unload</a> {{gecko_minversion_inline("7.0")}}</dt> - <dd>How to unload a JavaScript code module.</dd> - <dt><a href="/en-US/docs/Code_snippets/Modules" title="Code_snippets/Modules">Code snippets: Modules</a></dt> - <dd>Examples of how to use code modules.</dd> - <dt><a class="external" href="http://wiki.mozilla.org/Labs/JS_Modules">Mozilla Labs JS Modules</a></dt> - <dd>This page features a list of JS modules, along with download links and documentation, that extension developers can use in their code.</dd> -</dl> - -<dl> -</dl> - -<h2 id="Standard_code_modules">Standard code modules</h2> - -<dl style="-moz-columns: 2; columns: 2;"> - <dt><a href="/en-US/docs/Addons/Add-on_Manager" title="Addons/Add-on_Manager">AddonManager.jsm</a> {{gecko_minversion_inline("2.0")}}</dt> - <dd>Interface to install, manage, and uninstall add-ons.</dd> - <dt><a href="/en-US/docs/Addons/Add-on_Repository" title="Addons/Add-on Repository">AddonRepository.jsm</a> {{gecko_minversion_inline("2.0")}}</dt> - <dd>Allows searching of the add-ons repository.</dd> - <dt><a href="/en-US/docs/Mozilla/JavaScript_code_modules/Assert.jsm" title="./Assert.jsm">Assert.jsm</a> {{gecko_minversion_inline("28.0")}}</dt> - <dd>Implements the <a href="http://wiki.commonjs.org/wiki/Unit_Testing/1.1" title="http://wiki.commonjs.org/wiki/Unit_Testing/1.1">CommonJS Unit Testing specification version 1.1</a>, which provides a basic, standardized interface for performing in-code logical assertions with optional, customizable error reporting.</dd> - <dt><a href="/en-US/docs/Mozilla/js-ctypes" title="./ctypes.jsm">ctypes.jsm</a> {{fx_minversion_inline("3.6")}}</dt> - <dd>Provides an interface that allows JavaScript code to call native libraries without requiring the development of an XPCOM component.</dd> - <dt><a href="/en-US/docs/Mozilla/JavaScript_code_modules/CustomizableUI.jsm" title="./ctypes.jsm">CustomizableUI.jsm</a> {{fx_minversion_inline("29")}}</dt> - <dd>Allows you to interact with customizable buttons and items in Firefox's main window UI.</dd> - <dt><a href="/en-US/docs/Mozilla/JavaScript_code_modules/DeferredTask.jsm" title="./DeferredTask.jsm">DeferredTask.jsm</a> {{gecko_minversion_inline("18.0")}}</dt> - <dd>Run a task after a delay.</dd> - <dt><a href="/en-US/docs/Mozilla/JavaScript_code_modules/Dict.jsm" title="./Dict.jsm">Dict.jsm</a> {{gecko_minversion_inline("5.0")}}</dt> - <dd>Provides an API for key/value pair dictionaries.</dd> - <dt><a href="/en-US/docs/Mozilla/JavaScript_code_modules/DownloadLastDir.jsm" title="./DownloadLastDir.jsm">DownloadLastDir.jsm</a> {{gecko_minversion_inline("2.0")}}</dt> - <dd>Provides the path to the directory into which the last download occurred.</dd> - <dt><a href="/en-US/docs/Mozilla/JavaScript_code_modules/Downloads.jsm" title="./Downloads.jsm">Downloads.jsm</a> {{gecko_minversion_inline("23.0")}}</dt> - <dd>Provides a single entry point to interact with the downloading capabilities of the platform.</dd> - <dt><a href="/en-US/docs/Mozilla/JavaScript_code_modules/FileUtils.jsm" title="./FileUtils.jsm"><span style="font-weight: bold;">FileUtils.jsm</span></a> {{gecko_minversion_inline("1.9.2")}}</dt> - <dd>Provides helpers for dealing with files.</dd> - <dt><a href="/en-US/docs/Mozilla/JavaScript_code_modules/Geometry.jsm" title="./Geometry.jsm">Geometry.jsm</a> {{gecko_minversion_inline("2.0")}}</dt> - <dd>Provides routines for performing basic geometric operations on points and rectangles.</dd> - <dt><a href="/en-US/docs/Mozilla/JavaScript_code_modules/ISO8601DateUtils.jsm" title="./ISO8601DateUtils.jsm">ISO8601DateUtils.jsm</a></dt> - <dd>Provides routines to convert between JavaScript <a href="/en-US/docs/JavaScript/Reference/Global_Objects/Date" title="JavaScript/ Reference/Global Objects/Date"><code>Date</code></a> objects and ISO 8601 date strings.</dd> - <dt><a href="/en-US/docs/Mozilla/JavaScript_code_modules/Log.jsm">Log.jsm</a> (formerly log4moz) {{gecko_minversion_inline("27.0")}}</dt> - <dd>Provides a <a href="https://en.wikipedia.org/wiki/Log4j">log4j</a> style API for logging log messages to various endpoints, such as the <a href="/en-US/docs/Tools/Browser_Console">Browser Console</a> or a file on disk. This module was formerly</dd> - <dt><a href="/en-US/docs/Mozilla/JavaScript_code_modules/NetUtil.jsm" title="./NetUtil.jsm"><span style="font-weight: bold;">NetUtil.jsm</span></a></dt> - <dd>Provides helpful networking utility functions, including the ability to easily copy data from an input stream to an output stream asynchronously.</dd> - <dt><a href="/en-US/docs/Mozilla/JavaScript_code_modules/openLocationLastURL.jsm" title="./openLocationLastURL.jsm">openLocationLastURL.jsm</a> {{gecko_minversion_inline("1.9.1.4")}}</dt> - <dd>Provides access to the last URL opened using the "Open Location" option in the File menu.</dd> - <dt><a href="/Mozilla/JavaScript_code_modules/OSFile.jsm" title="/en-US/docs/JavaScript_OS.File">OSFile.jsm</a> {{gecko_minversion_inline("16.0")}}</dt> - <dd>Provides routines to access files. Read, write, rename, create directories, ...</dd> - <dt><a href="/en-US/docs/Mozilla/JavaScript_code_modules/PerfMeasurement.jsm" title="./PerfMeasurement.jsm">PerfMeasurement.jsm</a> {{fx_minversion_inline("4.0")}}</dt> - <dd>Provides access to low-level hardware and OS performance measurement tools.</dd> - <dt><a href="/en-US/docs/Localization_and_Plurals" title="Localization and Plurals">PluralForm.jsm</a></dt> - <dd>Provides an easy way to get the correct plural forms for the current locale, as well as ways to localize to a specific plural rule.</dd> - <dt><a href="/en-US/docs/Mozilla/JavaScript_code_modules/PopupNotifications.jsm" title="./PopupNotifications.jsm">PopupNotifications.jsm</a> {{gecko_minversion_inline("2.0")}}</dt> - <dd>Provides an easy way to present non-modal notifications to users.</dd> - <dt><a href="/en-US/docs/Mozilla/JavaScript_code_modules/Promise.jsm" title="./Promise.jsm">Promise.jsm</a> {{gecko_minversion_inline("25.0")}}</dt> - <dd>Implements the <a class="external" href="https://github.com/promises-aplus/promises-spec/blob/1.0.0/README.md" title="https://github.com/promises-aplus/promises-spec/blob/1.0.0/README.md">Promises/A+</a> proposal as known in April 2013.</dd> - <dt><a href="/en-US/docs/Mozilla/JavaScript_code_modules/Services.jsm" title="./Services.jsm">Services.jsm</a> {{gecko_minversion_inline("2.0")}}</dt> - <dd>Provides getters for conveniently obtaining access to commonly-used services.</dd> - <dt><a href="/en-US/docs/Mozilla/JavaScript_code_modules/source-editor.jsm" title="./source-editor.jsm">source-editor.jsm</a> {{fx_minversion_inline("11.0")}}</dt> - <dd>The Source Editor is used by developer tools such as the Style Editor; this interface implements the editor and lets you interact with it.</dd> - <dt><a href="/en-US/docs/Mozilla/JavaScript_code_modules/Sqlite.jsm" title="./Sqlite.jsm">Sqlite.jsm</a> {{gecko_minversion_inline("20.0")}}</dt> - <dd>A Promise-based API to {{ interface("mozIStorage") }}/SQLite.</dd> - <dt><a href="/en-US/docs/Mozilla/JavaScript_code_modules/Task.jsm" title="./Task.jsm">Task.jsm</a> {{gecko_minversion_inline("17.0")}}</dt> - <dd>Implements a subset of <a class="external" href="http://taskjs.org/" title="http://taskjs.org/">Task.js</a> to make sequential, asynchronous operations simple, using the power of JavaScript's <code>yield</code> operator.</dd> - <dt><a href="/en-US/docs/Mozilla/JavaScript_code_modules/Timer.jsm" title="/en-US/docs/Mozilla/JavaScript_code_modules/Timer.jsm">Timer.jsm </a>{{gecko_minversion_inline("22.0")}}</dt> - <dd>A pure JS implementation of <code>window.setTimeout</code>.</dd> - <dt><a href="/en-US/docs/Mozilla/JavaScript_code_modules/XPCOMUtils.jsm" title="./XPCOMUtils.jsm">XPCOMUtils.jsm</a></dt> - <dd>Contains utilities for JavaScript components loaded by the JS component loader.</dd> -</dl> diff --git a/files/pt-br/mozilla/js-ctypes/index.html b/files/pt-br/mozilla/js-ctypes/index.html deleted file mode 100644 index b531577cb3..0000000000 --- a/files/pt-br/mozilla/js-ctypes/index.html +++ /dev/null @@ -1,97 +0,0 @@ ---- -title: js-ctypes -slug: Mozilla/js-ctypes -translation_of: Mozilla/js-ctypes ---- -<p>{{jsctypesSidebar("Introduction")}}</p> - -<p><strong>js-ctypes</strong> permite que código de aplicação e extensão chamar e receber de código nativo escrito em C. Suporte a C++ é possível através de ponteiros <code>vtable </code>veja <a href="/en-US/docs/Mozilla/js-ctypes/Examples/Using_COM_from_js-ctypes">Usando COM a partir de js-ctypes</a>. Para uma discussão sobre suporte extendido ao C++ support veja {{bug("505907")}}. Outro que se tornou possível através do js-ctypes é o JNI, que foi elaborado no a seção <a href="/en-US/docs/Mozilla/JavaScript_code_modules/JNI.jsm">JNI.jsm</a> e não na seção js-ctypes por causa da abstração do JSM abstraindo todo o js-ctypes. Diferentemente de um componente binário XPCOM, ela permite aos desenvolvedores à embarcar um único binário para utilização em diversas versões do Firefox.</p> - -<div class="note"><strong>Note:</strong> js-ctypes somente está disponível a partir de código chrome; isso significa que ctypes não está disponível para websites, somente para código de aplicação e extensão.</div> - -<table class="topicpage-table"> - <tbody> - <tr> - <td> - <h2 class="Documentation" id="Documentation" name="Documentation">Documentação</h2> - - <p class="summary">Se você é novato ao js-ctypes, e não tem nenhuma idéia do que se trata, as páginas que você precisa ler primeiro são - <a href="/en-US/docs/Mozilla/js-ctypes/Using_js-ctypes/ctypes.open">ctypes.open </a>seguido por <a href="/en-US/docs/Mozilla/js-ctypes/Using_js-ctypes/Standard_OS_Libraries">Bibliotecas de SO Padrão</a></p> - - <dl> - <dt><a href="/en-US/docs/Mozilla/js-ctypes/Using_js-ctypes" title="Mozilla/js-ctypes/Using_js-ctypes">Usando JS-Ctypes</a></dt> - <dd> - <ul> - <li><a href="/en-US/docs/Mozilla/js-ctypes/Using_js-ctypes/ctypes.open">ctypes.open</a> - <ul> - <li><a href="/en-US/docs/Mozilla/js-ctypes/Using_js-ctypes/ctypes.open#Custom_Native_File">Arquivo Nativo Customizado</a></li> - <li><a href="/en-US/docs/Mozilla/js-ctypes/Using_js-ctypes/Standard_OS_Libraries">Bibliotecas de SO Padrão</a> - <ul> - <li><a href="/en-US/Add-ons/Code_snippets/Finding_Window_Handles">Encontrando Manipuladores de Janelas</a></li> - </ul> - </li> - </ul> - </li> - <li><a href="/en-US/docs/Mozilla/js-ctypes/Using_js-ctypes/Working_with_data">Trabalhando com Dados</a></li> - <li><a href="/en-US/docs/Mozilla/js-ctypes/Using_js-ctypes/Working_with_ArrayBuffers">Trabalhando com ArrayBuffers</a></li> - <li><a href="/en-US/docs/Mozilla/js-ctypes/Using_js-ctypes/Declaring_types">Declarando Tipoes</a></li> - <li><a href="/en-US/docs/Mozilla/js-ctypes/Using_js-ctypes/Declaring_and_calling_functions">Declarando e chamando Funções</a></li> - <li><a href="/en-US/docs/Mozilla/js-ctypes/js-ctypes_reference/Callbacks">Declarando e Usando Callbacks</a></li> - <li><a href="/en-US/docs/Mozilla/js-ctypes/Using_js-ctypes/Type_conversion">Conversão de Tipoes</a></li> - <li><a href="/en-US/docs/Mozilla/js-ctypes/Memory_Management">Gerenciamento de Memória</a></li> - <li><a href="/en-US/docs/Web/API/ChromeWorker">ChromeWorker</a></li> - </ul> - </dd> - <dt><a href="/en-US/docs/Mozilla/js-ctypes/js-ctypes_reference" title="js-ctypes/js-ctypes_reference">Referência JS-ctypes</a></dt> - <dd>Um guia de referência à API js-ctypes. - <ul> - <li><a href="/en-US/docs/Mozilla/js-ctypes/js-ctypes_reference/ABI">ABI</a></li> - <li><a href="/en-US/docs/Mozilla/js-ctypes/js-ctypes_reference/CData">CData</a></li> - <li><a href="/en-US/docs/Mozilla/js-ctypes/js-ctypes_reference/CType">CType</a></li> - <li><a href="/en-US/docs/Mozilla/js-ctypes/js-ctypes_reference/ctypes">ctypes</a></li> - <li><a href="/en-US/docs/Mozilla/js-ctypes/js-ctypes_reference/FunctionType">FunctionType</a></li> - <li><a href="/en-US/docs/Mozilla/js-ctypes/js-ctypes_reference/Int64">Int64</a></li> - <li><a href="/en-US/docs/Mozilla/js-ctypes/js-ctypes_reference/Library">Library</a></li> - <li><a href="/en-US/docs/Mozilla/js-ctypes/js-ctypes_reference/UInt64">UInt64</a></li> - </ul> - </dd> - </dl> - - <p><span class="alllinks"><a href="/en-US/docs/tag/js-ctypes" title="tag/js-ctypes">Ver Tudo...</a></span></p> - - <h2 class="Tools" id="Examples" name="Examples"><a href="/en-US/docs/Mozilla/js-ctypes/Examples" title="Mozilla/js-ctypes/Examples">Exemplos</a></h2> - - <dl> - <dt><a href="/en-US/docs/Mozilla/js-ctypes/Examples/Add_to_iPhoto" title="Mozilla/js-ctypes/Examples/Add_to_iPhoto">Adicionar ao iPhoto</a></dt> - <dd>Uma extensão Firefox que usa js-ctypes para chamar rotinas do framework Carbon and Core Foundation no Mac OS X para implememtar uma funcionalidade de "Adicionar imagem ao iPhoto" no Firefox.</dd> - <dt><a href="/en-US/docs/Mozilla/js-ctypes/Examples/Using_C_structs_and_pointers">Usando estruturas C e ponteiros</a></dt> - <dd> </dd> - <dt><a href="/en-US/docs/Mozilla/js-ctypes/Examples/Using_COM_from_js-ctypes">Usando COM a partir de js-ctypes</a></dt> - <dd> </dd> - <dt><a href="/en-US/docs/Mozilla/js-ctypes/Examples/Using_Objective-C_from_js-ctypes">Usando Objective-C a partir de js-ctypes</a></dt> - </dl> - - <dl> - <dt><a href="https://github.com/ochameau/jscpptypes">Github :: ochameau / jscpptypes</a></dt> - <dd>Uma biblioteca distorcida para usar C++ a partir de js-ctypes</dd> - </dl> - </td> - <td> - <h2 class="Community" id="Community" name="Community">Comunidade</h2> - - <ul> - <li>Ver os forums Mozilla ...{{DiscussionList("dev-extensions", "mozilla.dev.extensions")}}</li> - <li><a href="irc://moznet/jsctypes">IRC - #jsctypes</a></li> - <li><a href="http://stackoverflow.com/questions/tagged/jsctypes">Stackoverflow - jsctypes</a></li> - </ul> - - <h2 class="Related_Topics" id="Related_Topics" name="Related_Topics">Tópicos Relacionados</h2> - - <ul> - <li><a href="/en-US/docs/Mozilla/Tech/XPCOM/Guide/Changes_in_Gecko_2.0#Binary_components">XPCOM em Gecko 2 - Componentes Binários</a></li> - </ul> - </td> - </tr> - </tbody> -</table> - -<p> </p> diff --git a/files/pt-br/mozilla/localization/guia_rápido/index.html b/files/pt-br/mozilla/localization/guia_rápido/index.html deleted file mode 100644 index 917e513127..0000000000 --- a/files/pt-br/mozilla/localization/guia_rápido/index.html +++ /dev/null @@ -1,33 +0,0 @@ ---- -title: Localização Guia Rápido -slug: Mozilla/Localization/Guia_rápido -tags: - - Guide - - Localization - - Mozilla - - Translation -translation_of: Mozilla/Localization/Quick_start_guide ---- -<p><span id="result_box" lang="pt"><span class="hps">Bem-vindo ao</span> <span class="hps">Mozilla</span> <span class="hps">localização</span></span> (Abreviado como L10n em Inglês)!</p> -<p><span id="result_box" lang="pt"><span class="hps">Se você está aqui</span> <span class="hps">para iniciar</span> <span class="hps">a sua própria</span> <span class="hps">localização</span> <span class="hps">no projeto</span> <span class="hps">Mozilla</span> <span class="hps">ou</span> <span class="hps">para se juntar aos</span> <span class="hps">esforços de uma</span> <span class="hps">localização</span> <span class="hps">existente</span><span>, você veio</span> <span class="hps">ao lugar certo</span><span>.</span></span> <span id="result_box" lang="pt"><span class="hps">Este manual</span> <span class="hps">contém todas as</span> <span class="hps">informações básicas</span><span>, técnicas</span> <span class="hps">que você precisa para</span> <span class="hps">se envolver</span> <span class="hps">no programa</span> <span class="hps">l10n</span> <span class="hps">Mozilla.</span> <span class="hps alt-edited">Vamos guiá-lo</span> <span class="hps">através dos</span> <span class="hps">passos para começar</span><span>, a partir da</span> <span class="hps">configuração do ambiente</span> <span class="hps">inicial para</span> <span class="hps">testar e</span> <span class="hps">lançar</span> <span class="hps">sua própria</span> <span class="hps">localização</span><span>.</span> <span class="hps">Ao longo do caminho</span><span>, você vai aprender</span> <span class="hps">sobre a variedade de</span> <span class="hps">projetos que você pode</span> <span class="hps">contribuir e</span> <span class="hps">as ferramentas utilizadas para</span> <span class="hps">localizá-los</span><span>.</span></span></p> -<p><span class="short_text" id="result_box" lang="pt"><span class="hps">Quando chegarmos</span> <span class="hps">a exemplos específicos</span></span>, <span class="short_text" id="result_box" lang="pt"><span class="hps">vamos</span> <span class="hps">levá-los</span> <span class="hps">ao projeto</span> <span class="hps">Firefox</span></span>, como o projeto é mais amplamente localizado na Mozilla. <span id="result_box" lang="pt"><span class="hps">Como você está perto do</span> <span class="hps">final deste guia</span><span>, você</span> <span class="hps">deve ser capaz de</span> <span class="hps">fazer uma mudança</span> <span class="hps">para</span> <span class="hps">o Firefox</span> <span class="hps">em</span> <span class="hps">sua configuração</span> <span class="hps">local e</span><span>, em seguida,</span> <span class="hps">ver a mudança</span> <span class="hps">na interface do</span> <span class="hps">Firefox</span></span>. <span id="result_box" lang="pt"><span class="hps">Quando terminar</span> <span class="hps">este guia</span><span>, você terá</span> <span class="hps">todas as ferramentas necessárias</span> <span class="hps">para</span> <span class="hps">começar a contribuir</span><span>!</span></span></p> -<p><span id="result_box" lang="pt"><span class="hps">Lembre-se,</span> <span class="hps">este guia irá</span> <span class="hps">instruí-lo</span></span> apenas sobre os aspectos técnicos da Mozilla L10n. Visite a página do <a class="link-https" href="https://wiki.mozilla.org/L10n:Localization_Process" title="https://wiki.mozilla.org/L10n:Overview">Processo L10n</a> para aprender sobre o processo inteiro.</p> -<div style="width: 25%; background-color: #4AA02C; float: left; display: block; margin: 1.5%; border: 1px solid #C4C295; text-align: center; padding: 2.5%; padding-top: 0px;"> - <h2 id="Configuração_Inicial"><a href="/en-US/docs/Mozilla/Localization/Quick_start_guide/Initial_setup?redirectlocale=en-US&redirectslug=Localization_Quick_Start_Guide%2FInitial_setup" title="en/Localization_Quick_Start_Guide/Initial_setup">Configuração Inicial</a></h2> - Tecnologia de preparação para o trabalho de localização.</div> -<div style="width: 25%; background-color: #A2BFF4; float: left; display: block; margin: 1.5%; border: 1px solid #C4C295; text-align: center; padding: 2.5%; padding-top: 0px;"> - <h2 id="Fase_da_tradução"><a href="/en-US/docs/Mozilla/Localization/Quick_start_guide/Translation_phase" title="en/Localization_Quick_Start_Guide/Translation_phase">Fase da tradução</a></h2> - <span class="short_text" id="result_box" lang="pt"><span class="hps">Localização das</span> <span class="hps">ferramentas</span> e <span class="hps">tutoriais para</span> <span class="hps">tradução</span><span>.</span></span></div> -<div style="width: 25%; background-color: orange; float: left; display: block; margin: 1.5%; border: 1px solid #C4C295; text-align: center; padding: 2.5%; padding-top: 0px;"> - <h2 id="Fase_da_garantia_de_qualidade"><a href="/en-US/docs/Mozilla/Localization/Quick_start_guide/QA_phase" title="en/Localization_Quick_Start_Guide/QA_phase">Fase da <span class="short_text" id="result_box" lang="pt"><span class="hps">garantia de qualidade</span></span></a></h2> - Testando os tutoriais de localização.</div> -<div style="width: 92%; background-color: #C0C0C0; float: left; display: block; margin: 1.5%; border: 1px solid #C4C295; text-align: center; padding: 2.5%; padding-top: 0px;"> - <h2 id="Fase_de_liberação"><a href="/en-US/docs/Mozilla/Localization/Quick_start_guide/Release_phase" title="en/Localization_Quick_Start_Guide/Release_phase">Fase de liberação</a></h2> - <span class="short_text" id="result_box" lang="pt"><span class="hps">Passos para</span> <span class="hps">enviar seu</span> <span class="hps">trabalho de localização</span><span>.</span></span></div> -<div style="background-color: white; border: 3px solid; display: block; padding: 20px; margin-top: 20px;"> - <span id="result_box" lang="pt"><span class="hps">Estas</span> <span class="hps">quatro etapas</span> <span class="hps">compõem</span> <span class="hps">o lado</span> <span class="hps">técnico</span> <span class="hps">do programa</span> <span class="hps">de localização</span></span>. Para saber mais sobre as etapas, clique nos links acima. Para um melhor aproveitamento, nós sugerimos que siga passo a passo começando por <a href="/en-US/docs/Mozilla/Localization/Quick_start_guide/Initial_setup?redirectlocale=en-US&redirectslug=Localization_Quick_Start_Guide%2FInitial_setup">Configuração Inicial</a>.</div> -<p> </p> -<div class="note"> - <span id="result_box" lang="pt"><span class="hps">Nota: Este</span> <span class="hps">guia foi escrito para</span> <span class="hps">dois tipos de</span> <span class="hps">contribuintes</span><span>: Os que</span> querem <span class="hps">iniciar uma nova</span> <span class="hps">localização e</span> <span class="hps">aqueles que se integram</span> <span class="hps">a uma</span> <span class="hps">localização</span> <span class="hps">existente.</span></span> <span id="result_box" lang="pt"><span class="hps">É</span> <span class="hps">importante saber</span> <span class="hps">qual tipo de informação</span> <span class="hps">se aplica a</span> <span class="hps">qual tipo de</span> <span class="hps">contribuinte</span><span>.</span></span><span style="display: none;"> </span> <span id="result_box" lang="pt"><span class="hps">Para</span> <span class="hps">ajudá-lo a</span> <span class="hps">filtrar</span> <span class="hps">a informação</span> <span class="hps">mais aplicável</span><span>,</span> <span class="hps">note que</span> <span class="hps">todas as informações</span> <span class="hps">que são exclusivas para</span> <span class="hps">quem está começando</span> <span class="hps">uma nova</span> <span class="hps">localização</span> <span class="hps">será</span> <span class="hps">em fonte</span> <span class="hps"><span style="color: #ffa500;">laranja</span>.</span> <span class="hps">Toda a informação</span> <span class="hps">que é exclusiva para</span> <span class="hps">aqueles que se integram</span> <span class="hps">a uma</span> <span class="hps">localização</span> <span class="hps">existente será</span> <span class="hps">em fonte</span> <span class="hps"><span style="color: #0000ff;">azul</span>.</span></span></div> -<p class="note"> </p> -<p>{{ Next("Localization_Quick_Start_Guide/Initial_setup") }}</p> diff --git a/files/pt-br/mozilla/localization/guia_rápido/initial_setup/index.html b/files/pt-br/mozilla/localization/guia_rápido/initial_setup/index.html deleted file mode 100644 index ec02a3c67c..0000000000 --- a/files/pt-br/mozilla/localization/guia_rápido/initial_setup/index.html +++ /dev/null @@ -1,96 +0,0 @@ ---- -title: Configuração inicial -slug: Mozilla/Localization/Guia_rápido/Initial_setup -translation_of: Mozilla/Localization/Quick_start_guide/Initial_setup ---- -<div class="wiki-right-present wiki-left-closed wiki-left-none" id="wiki-column-container"> -<div class="column-container column-container-reverse"> -<div class="column-strip wiki-column" id="wiki-right"> -<div class="toc toggleable" style="width: auto;"> </div> - -<div class="toc toggleable" style="width: auto;"> </div> - -<div class="toc toggleable" id="toc" style="width: auto;"><span style="line-height: 1.5; background-color: rgb(255, 255, 255);">Você também precisa descobrir se já existe para a sua região um trabalho de localização. Aqui nós falaremos sobre as contas que precisa, bem como as ferramentas e suas configurações que você precisa antes de contribuir.</span></div> -</div> - -<div class="column-main wiki-column text-content" id="wiki-content" style="width: 959px;"> -<article id="wikiArticle"> -<h3 id="New_or_existing" style="line-height: 24px; font-size: 1.71428571428571rem;">New or existing</h3> - -<p>Before anything else, you need to know if you will be creating a new localization or joining an existing one. This will determine what information is most applicable to you throughout the rest of this guide.</p> - -<p>Here's what you do:</p> - -<p>Look through the existing <a class="external link-https external-icon" href="https://wiki.mozilla.org/L10n:Teams" title="https://wiki.mozilla.org/L10n:Teams">localization community directory</a> to see if one already exists for your locale.</p> - -<ol start="1" style="list-style-type: lower-alpha;"> - <li><span style="color: rgb(0, 0, 205);">If a community already exists, reach out to them and ask how you can help.</span></li> - <li><span style="color: rgb(255, 140, 0);">If a community doesn't exist, send an <a class="external link-https external-icon" href="https://groups.google.com/forum/?fromgroups#!forum/mozilla.dev.l10n.new-locales" title="https://groups.google.com/forum/?fromgroups#!forum/mozilla.dev.l10n.new-locales">email to the new-locales newsgroup</a> for additional guidance</span><span style="color: rgb(255, 140, 0);">.</span></li> -</ol> - -<h3 id="Accounts" style="line-height: 24px; font-size: 1.71428571428571rem;">Accounts</h3> - -<p>There are a handful of accounts that you need to be aware as you begin. They're not required for you to begin contributing, but will be required when you are preparing to produce an official release. For now, simply be aware that these will become important as your efforts progress. These accounts will store your code, contributions, and help you produce an official localization.</p> - -<dl> - <dt style="margin-left: 40px;">hg (Mercurial)</dt> - <dd>Mercurial is the revision control environment that houses the main Mozilla source code as well as localized code for each official Mozilla localization. You will need this for localizing Mozilla applications. For anyone to gain access to hg repos, you must visit the <a class="external external-icon" href="http://www.mozilla.org/hacking/committer/" title="http://www.mozilla.org/hacking/committer/">Mozilla Commiter page</a> and follow the process outlined there. <a class="external external-icon" href="https://bugzilla.mozilla.org/show_bug.cgi?id=741305" title="https://bugzilla.mozilla.org/show_bug.cgi?id=741305">Here is an example bug</a> that illustrates the process well. Use <a class="external link-https external-icon" href="https://bugzilla.mozilla.org/enter_bug.cgi?product=mozilla.org&component=Repository%20Account%20Requests&rep_platform=All&op_sys=All&cc=l10n%40mozilla.com&short_desc=l10n%20hg%20account%20for%20John%20Doe%20(ab-CD)" title="https://bugzilla.mozilla.org/enter_bug.cgi?product=mozilla.org&component=Repository%20Account%20Requests&rep_platform=All&op_sys=All&cc=l10n%40mozilla.com&short_desc=l10n%20hg%20account%20for%20John%20Doe%20(ab-CD)">this bug template</a>when filing your hg account registration bug. Add a request about creating your locale's repository to the <a class="external external-icon" href="http://groups.google.com/group/mozilla.dev.l10n.new-locales/topics" title="http://groups.google.com/group/mozilla.dev.l10n.new-locales/topics">new locales newsgroup</a>.</dd> - <dt style="margin-left: 40px;">SVN</dt> - <dd style="margin-left: 40px;">SVN is a revision control environment that Mozilla uses to house Mozilla source websites and their localizations for each official Mozilla localization. See <a class="external link-https external-icon" href="https://wiki.mozilla.org/SVN#SVN_account_for_localizers" title="https://wiki.mozilla.org/SVN#SVN_account_for_localizers">this wiki page</a> about how to gain access to SVN. Add a request about creating your locale's repository to the<a class="external external-icon" href="http://groups.google.com/group/mozilla.dev.l10n.new-locales/topics" title="http://groups.google.com/group/mozilla.dev.l10n.new-locales/topics">new locales newsgroup</a>.</dd> -</dl> - -<dl> - <dt style="margin-left: 40px;">Web-based L10n tools</dt> - <dd style="margin-left: 40px;">We'll talk about these in a little bit. For now, just be aware that should you choose to use them, you may need to create a personal account.</dd> - <dt style="margin-left: 40px;">Mozilla LDAP</dt> - <dd style="margin-left: 40px;">You will need a Mozilla LDAP account once you're ready to have your localization registered on the main Mozilla repositories. Add a request about creating your LDAP account to the<a class="external external-icon" href="http://groups.google.com/group/mozilla.dev.l10n.new-locales/topics" title="http://groups.google.com/group/mozilla.dev.l10n.new-locales/topics"> new locales newsgroup</a>.</dd> - <dt style="margin-left: 40px;">Locale-specific Bugzilla component</dt> - <dd style="margin-left: 40px;">Having a Bugzilla component specific to your locale will help us to track your localization's progress from first steps to official release. It will also notify us when you're having problems unique to your localization team's work. Add a request about creating your locale's Bugzilla component to the <a class="external external-icon" href="http://groups.google.com/group/mozilla.dev.l10n.new-locales/topics" title="http://groups.google.com/group/mozilla.dev.l10n.new-locales/topics">new locales newsgroup</a>.</dd> -</dl> - -<h3 id="Local_environment_tools" style="line-height: 24px; font-size: 1.71428571428571rem;">Local environment tools</h3> - -<p>Similar to accounts, there is a number of environment tools that you should install on your personal computer. These tools will help you to store your contributions, build Mozilla applications and language packs, and test your work. Install and configure them in the following order.</p> - -<div class="note"> -<p>If you're using a Windows machine, you'll need to set up a Unix shell first. <a href="https://www.cygwin.com/">Cygwin</a> is the most popular, but there are others you can find using a quick internet search.</p> -</div> - -<dl> - <dt style="margin-left: 40px;">Perl</dt> - <dd style="margin-left: 40px;">Perl is a programming language that will help you create Mozilla application builds and language packs. You can find the source files and install instructions <a class="external external-icon" href="http://www.perl.org/" title="http://www.perl.org/">here</a>.</dd> - <dt style="margin-left: 40px;">Python</dt> - <dd style="margin-left: 40px;">Python is a programming language in which many of our L10n testing scripts are written. You can find the source files and install instructions <a class="external external-icon" href="http://python.org/" title="http://python.org/">here</a>.</dd> - <dt style="margin-left: 40px;">A solid, Unicode-based, text editor</dt> - <dd style="margin-left: 40px;">Here are some suggestions: - <ul> - <li style="margin-left: 40px;">Windows: <a class="external external-icon" href="http://notepad-plus.sourceforge.net/uk/site.htm" title="http://notepad-plus.sourceforge.net/uk/site.htm">Notepad++</a> or <a class="external external-icon" href="http://www.flos-freeware.ch/notepad2.html" title="http://www.flos-freeware.ch/notepad2.html">Notepad2</a></li> - <li style="margin-left: 40px;">GNU/Linux: <a class="external external-icon" href="http://en.wikipedia.org/wiki/Vim_%28text_editor%29" title="http://en.wikipedia.org/wiki/Vim_(text_editor)">vim</a>, <a class="external external-icon" href="http://projects.gnome.org/gedit/" title="http://projects.gnome.org/gedit/">gedit</a> or <a class="external external-icon" href="http://www.kate-editor.org/kate" title="http://www.kate-editor.org/kate">Kate</a></li> - <li style="margin-left: 40px;">Mac OS X: <a class="external external-icon" href="http://www.barebones.com/products/TextWrangler/" title="http://www.barebones.com/products/TextWrangler/">TextWrangler</a></li> - </ul> - </dd> - <dt style="margin-left: 40px;">GNU make</dt> - <dd style="margin-left: 40px;"><span class="external external-icon">Make is a tool which controls the generation of executables. You can find version</span> 3.79.1 or higher <a class="external external-icon" href="http://www.gnu.org/software/make/" title="http://www.gnu.org/software/make/">here</a>. Unfortunately, other varieties of <code>make</code> won't do.</dd> - <dt style="margin-left: 40px;">autoconf 2.13</dt> - <dd style="margin-left: 40px;">autoconf is a utility that is vital to manually creating Mozilla application builds and language packs. We use version 2.13 and higher for these builds. You can find the source files and install instructions <a class="external external-icon" href="http://www.gnu.org/software/autoconf/" title="http://www.gnu.org/software/autoconf/">here</a>.</dd> - <dt style="margin-left: 40px;">wget</dt> - <dd style="margin-left: 40px;">wget is a command-line utility that allows you to retrieve files using internet protocols. We use it for retrieving files from repositories. You can find the source files and install instructions <a class="external external-icon" href="http://www.gnu.org/s/wget/" title="http://www.gnu.org/s/wget/">here</a>.</dd> - <dt style="margin-left: 40px;">compare-locales</dt> - <dd style="margin-left: 40px;">compare-locales is a Python script that helps you check your work without needing to run Firefox or another application. Install intructions are located <a href="https://developer.mozilla.org/en/Compare-locales" title="https://developer.mozilla.org/en/Compare-locales">here</a>.</dd> - <dt style="margin-left: 40px;">L10n checks</dt> - <dd style="margin-left: 40px;">L10n checks is another Python script that helps you check your work without running an application. Install instructions are located <a href="https://developer.mozilla.org/en/L10n_Checks" title="https://developer.mozilla.org/en/L10n_Checks">here</a>.</dd> - <dt style="margin-left: 40px;">Hg (Mercurial)</dt> - <dd style="margin-left: 40px;">As noted above, we use Mercurial for maintaining Mozilla source code and localized code. Not only will you need a localization repository to store your localizations, but you need to have it installed and configured on your personal computer as well. You can find everything you need to know about installing and configuring Mercurial for your localization work <a href="https://developer.mozilla.org/en/Localizing_with_Mercurial#Install_Mercurial" title="https://developer.mozilla.org/en/L10n_on_Mercurial#Install_Mercurial">here</a>.</dd> - <dt style="margin-left: 40px;">Locale Switcher or Quick Locale Switcher</dt> - <dd style="margin-left: 40px;">Both Locale Switcher and Quick Locale Switcher are add-ons for Mozilla applications. Either one is necessary to enable you to see your work within a Mozilla application. You can install either by searching for them in Firefox's add-ons manager or following <a class="external link-https external-icon" href="https://addons.mozilla.org/en-US/firefox/addon/locale-switcher/" title="https://addons.mozilla.org/en-US/firefox/addon/locale-switcher/">these</a> <a class="external link-https external-icon" href="https://addons.mozilla.org/en-US/firefox/addon/quick-locale-switcher/" title="https://addons.mozilla.org/en-US/firefox/addon/quick-locale-switcher/">links</a>.</dd> -</dl> - -<h2 id="End_of_initial_setup" style="line-height: 30px; font-size: 2.14285714285714rem;">End of initial setup</h2> - -<p>Now that you've finished your initial setup, it's time for the best part: translating!</p> -</article> -</div> -</div> -</div> - -<p> </p> diff --git a/files/pt-br/mozilla/localization/index.html b/files/pt-br/mozilla/localization/index.html deleted file mode 100644 index ca4e66d3ec..0000000000 --- a/files/pt-br/mozilla/localization/index.html +++ /dev/null @@ -1,25 +0,0 @@ ---- -title: Localização na Mozilla -slug: Mozilla/Localization -tags: - - Landing - - Localization - - Localização - - Mozilla - - Tradução - - Translation - - l10n -translation_of: Mozilla/Localization ---- -<p><span class="seoSummary"><strong>Localização</strong> (L10n) é o processo de tradução de interfaces do usuário de softwares de um idioma para outro e sua adaptação a uma cultura estrangeira. Esses recursos são para qualquer pessoa com interesse nos aspectos técnicos envolvidos na localização. Eles são para desenvolvedores e todos os contribuidores.</span></p> - -<h2 id="Veja_também">Veja também</h2> - -<dl> - <dt><a href="/en-US/docs/Project:MDN/Localizing" title="/en-US/docs/Project:MDN/Localizing">Localizando o MDN</a></dt> - <dd>Este recurso abrange a localização da documentação aqui no MDN.</dd> - <dt><a href="/en-US/Apps/Build/Localization">Localização de aplicativos</a></dt> - <dd>Este conjunto de documentos aplica-se mais especificamente à localização de aplicativos, incluindo aplicativos do Firefox OS.</dd> - <dt><a href="/en-US/docs/Web/API/L10n">L10n</a></dt> - <dd>Documentos de referência para a API L10n que a Mozilla usa para localizar o Firefox OS.</dd> -</dl> diff --git a/files/pt-br/mozilla/localization/localization_and_plurals/index.html b/files/pt-br/mozilla/localization/localization_and_plurals/index.html deleted file mode 100644 index 859adb7a4d..0000000000 --- a/files/pt-br/mozilla/localization/localization_and_plurals/index.html +++ /dev/null @@ -1,371 +0,0 @@ ---- -title: Localização e Plurais -slug: Mozilla/Localization/Localization_and_Plurals -tags: - - Internacionalização - - Internationalization - - Localization - - Localização -translation_of: Mozilla/Localization/Localization_and_Plurals ---- -<p>Você provavelmente está aqui porque está localizando um arquivo .properties e ele tem um link para essa página. Essa página ajuda a explicar como localizar essas strings de forma que a forma de plural correta seja mostrada para o usuário. Por exemplo, "1 página" vs "2 páginas".</p> - -<p>Se você está aqui para tornar seu código (ex.: extensões) localizável para formas de plural, você pode pular direto para <a href="#Developing_with_PluralForm">Desenvolvendo com PluralForm</a>, mas se você provavelmente precisa localizar as strings iniciais para seu código, então seria bom também ler pelo menos a seção Uso.</p> - -<p> </p> - -<h2 id="Usage" name="Usage">Uso</h2> - -<p>Aqui estão alguns termos usados nesta página para ajudar a manter as coisas claras:</p> - -<ul> - <li><strong>regra de plural</strong>: Para um idioma dado, há uma regra gramatical sobre como alterar palavras dependendo do número qualificando a palavra. Idiomas diferentes podem ter regras diferentes.</li> - <li><strong>forma de plural</strong>: Para uma regra de plural em particular, pode haver múltiplas formas de uma palavra, tal como "página" e "páginas". Neste caso, há 2 formas, mas outros idiomas podem ter 1 ou muito mais.</li> -</ul> - -<p>Se você está aqui para <code>pluralRule</code> no arquivo <code>chrome/global/intl.properties</code>, você precisa descobrir qual <em>regra de plural</em> deve ser escolhida para sua localização. Essa regra de plural é usada para determinar quantas <em>formas de plural</em> são necessárias para cada palavra que precisa ser localizada com plurais em mente.</p> - -<p>Para todos os demais arquivos de propriedades que possuem link para essa página, você terá que fornecer formas de plural suficiente da palavra desejada e separá-las com ponto e vírgula (;). Se você não sabe quantas formas de plural você precisa, verifique o número de <code>pluralRule</code> em <code>chrome/global/intl.properties</code> e procure pela entrada correspondente à entrada na lista de regras de plural a seguir.</p> - -<h2 id="List_of_Plural_Rules" name="List_of_Plural_Rules">Lista de Regras de Plural</h2> - -<p>Essa seção contém uma lista de regras de plural ordenada por seu número de regras de plural. Cada entrada indica quantas formas de plural são necessárias ao localizar uma palavra. Para cada entrada, há uma lista de famílias e idiomas naquelas famílias para lhe ajudar a descobrir se esta é a regra que você deveria escolher para <code>pluralRule</code>. Adicionalmente, há uma breve descrição de cada forma de plural seguida por alguns exemplos de números que caem naquela forma em particular.</p> - -<p>Para a regra de plural dada, a ordem na qual as formas de plural são listadas está na mesma ordem que você localizar uma palavra, separadas por caractere de ponto e vírgula. Por exemplo, o inglês usa a regra de plural 1, e localizar <code>plurals</code> exigiria uma string de "plural;plurais" na qual a primeira palavra é a forma singular e a segunda é a forma plural geral.</p> - -<h3 id="Plural_rule_.230_.281_form.29" name="Plural_rule_.230_.281_form.29">Regra de plural #<em><strong>0</strong></em> (1 forma)</h3> - -<p><strong>Famílias</strong>: asiática (chinês, japonês, coreano), persa, turca/altaica (turco), tailandês, laociana<br> - <strong>tudo</strong>: <small>0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, …</small></p> - -<h3 id="Plural_rule_.231_.282_forms.29" name="Plural_rule_.231_.282_forms.29">Regra de plural #<em><strong>1</strong></em> (2 formas)</h3> - -<p><strong>Famílias</strong>: germânica (dinamarquês, holandês, inglês, faroês, frísio, alemão, norueguês, sueco), fino-úgricas (estoniando, finlandês, húngaro), língua isolada (basco), latina/grega (grego), semítica (hebráico), românica (italiano, português, espanhol, catalão), vietnamita<br> - <strong>é 1</strong>: <small>1</small><br> - <strong>todo resto</strong>: <small>0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, …</small></p> - -<h3 id="Plural_rule_.232_.282_forms.29" name="Plural_rule_.232_.282_forms.29">Regra de plural #<em><strong>2</strong></em> (2 formas)</h3> - -<p><strong>Família</strong>: Românica (francês, português brasileiro)<br> - <strong>é 0 ou 1</strong>: <small>0, 1</small><br> - <strong>todo resto</strong>: <small>2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, …</small></p> - -<h3 id="Plural_rule_.233_.283_forms.29" name="Plural_rule_.233_.283_forms.29">Regra de plural #<em><strong>3</strong></em> (3 formas)</h3> - -<p><strong>Famílias</strong>: báltica (letã)<br> - <strong>é 0</strong>: <small>0</small><br> - <strong>termina em 1, excluindo 11</strong>: <small>1, 21, 31, 41, 51, 61, 71, 81, 91, 101, 121, 131, 141, 151, 161, 171, 181, 191, 201, 221, 231, 241, 251, 261, 271, 281, 291, …</small><br> - <strong>todo resto</strong>: <small>2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 22, 23, 24, 25, 26, 27, 28, 29, 30, 32, 33, 34, 35, 36, 37, 38, 39, 40, 42, 43, 44, 45, 46, 47, 48, 49, 50, 52, 53, 54, 55, …</small></p> - -<h3 id="Plural_rule_.234_.283_forms.29" name="Plural_rule_.234_.283_forms.29">Regra de plural #<em><strong>4</strong></em> (4 formas)</h3> - -<p><strong>Famílias</strong>: céltica (gaélico escocês)<br> - <strong>é 1 ou 11</strong>: <small>1, 11</small><br> - <strong>é 2 ou 12</strong>: <small>2, 12</small><br> - <strong>é 3-10 ou 13-19</strong>: <small>3, 4, 5, 6, 7, 8, 9, 10, 13, 14, 15, 16, 17, 18, 19</small><br> - <strong>todo resto</strong>: <small>0, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, …</small></p> - -<h3 id="Plural_rule_.235_.283_forms.29" name="Plural_rule_.235_.283_forms.29">Regra de plural #<em><strong>5</strong></em> (3 formas)</h3> - -<p><strong>Families</strong>: Romanic (Romanian)<br> - <strong>is 1</strong>: <small>1</small><br> - <strong>is 0 or ends in 01-19, excluding 1</strong>: <small>0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, …</small><br> - <strong>everything else</strong>: <small>20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, …</small></p> - -<h3 id="Plural_rule_.236_.283_forms.29" name="Plural_rule_.236_.283_forms.29">Regra de plural #<em><strong>6</strong></em> (3 formas)</h3> - -<p><strong>Families</strong>: Baltic (Lithuanian)<br> - <strong>ends in 1, excluding 11</strong>: <small>1, 21, 31, 41, 51, 61, 71, 81, 91, 101, 121, 131, 141, 151, 161, 171, 181, 191, 201, 221, 231, 241, 251, 261, 271, 281, 291, …</small><br> - <strong>ends in 0 or ends in 11-19</strong>: <small>0, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 130, 140, 150, 160, 170, 180, 190, 200, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, …</small><br> - <strong>everything else</strong>: <small>2, 3, 4, 5, 6, 7, 8, 9, 22, 23, 24, 25, 26, 27, 28, 29, 32, 33, 34, 35, 36, 37, 38, 39, 42, 43, 44, 45, 46, 47, 48, 49, 52, 53, 54, 55, 56, 57, 58, 59, 62, 63, 64, 65, 66, 67, 68, 69, 72, 73, …</small></p> - -<h3 id="Plural_rule_.237_.283_forms.29" name="Plural_rule_.237_.283_forms.29">Regra de plural #<em><strong>7</strong></em> (3 formas)</h3> - -<p><strong>Families</strong>: Slavic (Belarusian, Bosnian, Croatian, Serbian, Russian, Ukrainian)<br> - <strong>ends in 1, excluding 11</strong>: <small>1, 21, 31, 41, 51, 61, 71, 81, 91, 101, 121, 131, 141, 151, 161, 171, 181, 191, 201, 221, 231, 241, 251, 261, 271, 281, 291, …</small><br> - <strong>ends in 2-4, excluding 12-14</strong>: <small>2, 3, 4, 22, 23, 24, 32, 33, 34, 42, 43, 44, 52, 53, 54, 62, 63, 64, 72, 73, 74, 82, 83, 84, 92, 93, 94, 102, 103, 104, 122, 123, 124, 132, 133, 134, 142, 143, 144, 152, 153, 154, 162, 163, 164, 172, 173, 174, 182, 183, …</small><br> - <strong>everything else</strong>: <small>0, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 25, 26, 27, 28, 29, 30, 35, 36, 37, 38, 39, 40, 45, 46, 47, 48, 49, 50, 55, 56, 57, 58, 59, 60, 65, 66, 67, 68, 69, 70, 75, 76, 77, …</small></p> - -<h3 id="Plural_rule_.238_.283_forms.29" name="Plural_rule_.238_.283_forms.29">Regra de plural #<em><strong>8</strong></em> (3 formas)</h3> - -<p><strong>Families</strong>: Slavic (Slovak, Czech)<br> - <strong>is 1</strong>: <small>1</small><br> - <strong>is 2-4</strong>: <small>2, 3, 4</small><br> - <strong>everything else</strong>: <small>0, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, …</small></p> - -<h3 id="Plural_rule_.239_.283_forms.29" name="Plural_rule_.239_.283_forms.29">Regra de plural #<em><strong>9</strong></em> (3 formas)</h3> - -<p><strong>Families</strong>: Slavic (Polish)<br> - <strong>is 1</strong>: <small>1</small><br> - <strong>ends in 2-4, excluding 12-14</strong>: <small>2, 3, 4, 22, 23, 24, 32, 33, 34, 42, 43, 44, 52, 53, 54, 62, 63, 64, 72, 73, 74, 82, 83, 84, 92, 93, 94, 102, 103, 104, 122, 123, 124, 132, 133, 134, 142, 143, 144, 152, 153, 154, 162, 163, 164, 172, 173, 174, 182, 183, …</small><br> - <strong>everything else</strong>: <small>0, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 25, 26, 27, 28, 29, 30, 31, 35, 36, 37, 38, 39, 40, 41, 45, 46, 47, 48, 49, 50, 51, 55, 56, 57, 58, 59, 60, 61, 65, 66, 67, 68, …</small></p> - -<h3 id="Plural_rule_.2310_.284_forms.29" name="Plural_rule_.2310_.284_forms.29">Regra de plural #<em><strong>10</strong></em> (4 formas)</h3> - -<p><strong>Families</strong>: Slavic (Slovenian, Sorbian)<br> - <strong>ends in 01</strong>: <small>1, 101, 201, …</small><br> - <strong>ends in 02</strong>: <small>2, 102, 202, …</small><br> - <strong>ends in 03-04</strong>: <small>3, 4, 103, 104, 203, 204, …</small><br> - <strong>everything else</strong>: <small>0, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, …</small></p> - -<h3 id="Plural_rule_.2311_.285_forms.29" name="Plural_rule_.2311_.285_forms.29">Regra de plural #<em><strong>11</strong></em> (5 formas)</h3> - -<p><strong>Families</strong>: Celtic (Irish Gaelic)<br> - <strong>is 1</strong>: <small>1</small><br> - <strong>is 2</strong>: <small>2</small><br> - <strong>is 3-6</strong>: <small>3, 4, 5, 6</small><br> - <strong>is 7-10</strong>: <small>7, 8, 9, 10</small><br> - <strong>everything else</strong>: <small>0, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, …</small></p> - -<h3 id="Plural_rule_.2312_.284_forms.29" name="Plural_rule_.2312_.284_forms.29">Regra de plural #<em><strong>12</strong></em> (6 formas)</h3> - -<p><strong>Families</strong>: Semitic (Arabic)<br> - <strong>is 1</strong>: <small>1</small><br> - <strong>is 2</strong>: <small>2</small><br> - <strong>ends in 03-10</strong>: <small>3, 4, 5, 6, 7, 8, 9, 10, 103, 104, 105, 106, 107, 108, 109, 110, 2</small><small>03, 204, 205, 206, 207, 208, 209, 210, </small><small>…</small><br> - <strong>everything else but is 0 and ends in 00-02, excluding 0-2</strong>: <small>11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, … </small><br> - <strong>ends in 00-02, excluding 0-2</strong>: <small>100, 101, 102, 200, 201, 202, …</small><br> - <strong>is 0</strong>: <small>0</small></p> - -<h3 id="Plural_rule_.2313_.284_forms.29" name="Plural_rule_.2313_.284_forms.29">Regra de plural #<em><strong>13</strong></em> (4 formas)</h3> - -<p><strong>Families</strong>: Semitic (Maltese)<br> - <strong>is 1</strong>: <small>1</small><br> - <strong>is 0 or ends in 01-10, excluding 1</strong>: <small>0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, …</small><br> - <strong>ends in 11-19</strong>: <small>11, 12, 13, 14, 15, 16, 17, 18, 19, 111, 112, 113, 114, 115, 116, 117, 118, 119, 211, 212, 213, 214, 215, 216, 217, 218, 219, …</small><br> - <strong>everything else</strong>: <small>20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, …</small></p> - -<h3 id="Plural_rule_.2314_.283_forms.29" name="Plural_rule_.2314_.283_forms.29">Regra de plural #<em><strong>14</strong></em> (3 formas)</h3> - -<p><strong>Families</strong>: Slavic (Macedonian)<br> - <strong>ends in 1</strong>: <small>1, 11, 21, 31, 41, 51, 61, 71, 81, 91, 101, 111, 121, 131, 141, 151, 161, 171, 181, 191, 201, 211, 221, 231, 241, 251, 261, 271, 281, 291, …</small><br> - <strong>ends in 2</strong>: <small>2, 12, 22, 32, 42, 52, 62, 72, 82, 92, 102, 112, 122, 132, 142, 152, 162, 172, 182, 192, 202, 212, 222, 232, 242, 252, 262, 272, 282, 292, …</small><br> - <strong>everything else</strong>: <small>0, 3, 4, 5, 6, 7, 8, 9, 10, 13, 14, 15, 16, 17, 18, 19, 20, 23, 24, 25, 26, 27, 28, 29, 30, 33, 34, 35, 36, 37, 38, 39, 40, 43, 44, 45, 46, 47, 48, 49, 50, 53, 54, 55, 56, 57, 58, 59, 60, 63, …</small></p> - -<h3 id="Plural_rule_.2315_.283_forms.29" name="Plural_rule_.2315_.283_forms.29">Regra de plural #<em><strong>15</strong></em> (2 formas)</h3> - -<p><strong>Families</strong>: Icelandic<br> - <strong>ends in 1, excluding 11</strong>: <small>1, 21, 31, 41, 51, 61, 71, 81, 91, 101, 121, 131, 141, 151, 161, 171, 181, 191, 201, 221, 231, 241, 251, 261, 271, 281, 291, …</small><br> - <strong>everything else</strong>: <small>0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 22, 23, 24, 25, 26, 27, 28, 29, 30, 32, 33, 34, 35, 36, 37, 38, 39, 40, 42, 43, 44, 45, 46, 47, 48, 49, 50, 52, 53, 54, …</small></p> - -<h3 id="Plural_rule_.2316_.283_forms.29" name="Plural_rule_.2316_.283_forms.29">Regra de plural #<em><strong>16</strong></em> (6 formas)</h3> - -<p><strong>Families</strong>: Celtic (Breton)<br> - <strong>is 1</strong>: <small>1</small><br> - <strong>ends in 1, excluding 1, 11, 71, 91</strong>: <small>21, 31, 41, 51, 61, 81, 101, 121, 131, 141, 151, 161, 181, 201, 221, 231, 241, 251, 261, 281, ...</small><br> - <strong>ends in 2, excluding 12, 72, 92</strong>: <small>2, 22, 32, 42, 52, 62, 82, 102, 122, 132, 142, 152, 162, 182, 202, 222, 232, 242, 252, 262, 282, ...</small><br> - <strong>ends in 3, 4 or 9 excluding 13, 14, 19, 73, 74, 79, 93, 94, 99</strong>: <small>3, 4, 9, 23, 24, 29, 33, 34, 39, 43, 44, 49, 53, 54, 59, ...</small><br> - <strong>ends in 1000000</strong>: <small>1000000: 1000000, 2000000, 3000000, 4000000, 5000000, 6000000, 7000000, 8000000, 9000000, 10000000, ...</small><br> - <strong>everything else</strong>: <small>0, 5, 6, 7, 8, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 25, 26, 27, 28, 30, 35, 36, 37, 38, 40, ...</small></p> - -<h2 id="Examples" name="Examples">Examples</h2> - -<p>The following are some examples for various languages and a brief thought processes.</p> - -<h3 id="French" name="French">French</h3> - -<p>Some French speaking places treat 0 as plural while others treat it as singular. The only other singular is 1 while everything else is plural. So pick either plural rule #1 or #2.</p> - -<p><code>pluralRule=2<br> - seconds=seconde;secondes<br> - minutes=minute;minutes<br> - hours=heure;heures<br> - days=jour;jours </code></p> - -<p>Like many other times when localizing words, gender agreement might force you to rearrange words in a way that the gender is always the same. (seconde vs jour)</p> - -<h3 id="Chinese" name="Chinese">Chinese</h3> - -<p>A word doesn't change if there is a different number in front of it, so all numbers use the same plural form. With just one plural form, it has to be plural rule #0. For each word to localize, it's just like localizing a single word with no semi-colons needed.</p> - -<p><code>pluralRule=0<br> - seconds=秒<br> - minutes=分<br> - hours=時<br> - days=日 </code></p> - -<h3 id="Polish" name="Polish">Polish</h3> - -<p>There's a singular form for 1, a plural form for 2-4, and another for 5-21 at which point 22 is the same as 2. Plural rule #7 has a "ends in 2-4, not 12-14" but the singular form includes everything ending in 1 except 11. Plural rule #9 has the correct singular form for only 1.</p> - -<p><code>pluralRule=9<br> - seconds=sekunda;sekundy;sekund<br> - minutes=minuta;minuty;minut<br> - hours=godzina;godziny;godzin<br> - days=dzień;dni;dni </code></p> - -<p>Even though the last 2 plural forms of "day" are the same, both are still needed because there needs to be 3 plural forms for each word.</p> - -<h3 id="Sorbian" name="Sorbian">Sorbian</h3> - -<p>There are 4 plural forms: nominative singular, nominative dual, nominative plural, genitive plural. These match up with plural rule #10.</p> - -<p><code>pluralRule=10<br> - seconds=sekunda;sekundźe;sekundy;sekundow<br> - minutes=mjeńšina;mjeńšinje;mjeńšiny;mjeńšin<br> - hours=hodźina;hodźinje;hodźiny;hodźin<br> - days=dźeń;dnjej;dny;dnjow </code></p> - -<h2 id="Testing_Extension" name="Testing_Extension">Testing Extension</h2> - -<p>To help make sure you pick the right plural rule and provide enough plural forms for strings, you should use the pluralForm Checker extension. After installing the extension, it should be available from the Tools menu.</p> - -<p>To use it, list off the property files and properties that you want to check and click the button. The extension will load each property and display the plural forms in a table. Selecting a table entry will populate the bottom box with sample uses of the word for some numbers.</p> - -<p><img alt="Image:pluralForm-checker.0.3.png" class="internal" src="/@api/deki/files/804/=PluralForm-checker.0.3.png"></p> - -<p><a class="external" href="http://ed.agadak.net/firefox/pluralForm-checker.xpi">Install pluralForm Checker v0.3 extension</a></p> - -<h3 id="Extension_input" name="Extension_input">Extension input</h3> - -<p>It would be good to keep this list updated with all the words that need plural forms. People using the extension can then copy/paste this input.</p> - -<p><code><small><a class="external" rel="freelink">chrome://mozapps/locale/downloads/do...tes,hours,days</a><br> - <a class="external" rel="freelink">chrome://mozapps/locale/downloads/do...dsTitlePercent</a><br> - <a class="external" rel="freelink">chrome://browser/locale/browser.prop...ausedDownloads</a> </small></code></p> - -<h3 id="Version_history" name="Version_history">Version history</h3> - -<p>0.1: Initial version with pluralRule check, properties input loading, table generation, sample output display<br> - 0.2: Use PluralForm.numForms() to get the number of forms instead of figuring out locally to better support future rules - <strong>Requires build from 2007/01/27 or later</strong><br> - 0.3: Generate a list of what numbers fall into which plural form to minimize the sample output to at most 3 of each form</p> - -<h2 id="Developing_with_PluralForm" name="Developing_with_PluralForm">Developing with PluralForm</h2> - -<p>The functionality for getting the correct plural forms is provided by a JavaScript Module, <code>PluralForm.jsm</code>. This module provides a couple methods for localizing to the browser's current locale as well as getting methods to localize to a desired plural rule. The latter ability of specifying a plural rule is useful for extensions because the extension doesn't necessarily have to be localized to the browser's locale.</p> - -<h3 id="Loading_PluralForm.jsm" name="Loading_PluralForm.jsm">Loading <code>PluralForm.jsm</code></h3> - -<p>Loading the PluralForm module from JavaScript is simple with <a href="/en/Components.utils.import" title="en/Components.utils.import">Components.utils.import</a>. Just put the following line somewhere that will be evaluated before you want to use PluralForm. At the top of your JavaScript file is fine.</p> - -<pre>Components.utils.import("resource://gre/modules/PluralForm.jsm");</pre> - -<h3 id="Methods:_get" name="Methods:_get">Methods: <code>get</code></h3> - -<p>These methods make use of the browser's current locale specified by <code><a class="external" rel="freelink">chrome://global/locale/intl.properties</a></code>'s <code>pluralRule</code> value.</p> - -<pre>/** - * Get the correct plural form of a word based on the number - * - * @param aNum - * The number to decide which plural form to use - * @param aWords - * A semi-colon (;) separated string of words to pick the plural form - * @return The appropriate plural form of the word - */ -string pluralForm -get(int aNum, string aWords)</pre> - -<p>Here is an example of using this method:</p> - -<pre>// Load PluralForm and for this example, assume English -Components.utils.import("resource://gre/modules/PluralForm.jsm"); - -// PluralForm.get expects a semi-colon separated list of words -let downloads = "download;downloads"; -// Pretend this number came from somewhere else -let num = 10; - -// Display the correct plural form for 10 downloads: "You have 10 downloads.") -print("You have " + num + " " + PluralForm.get(num, downloads) + "."); - -// Try again with a different value: "You have 1 download." -num = 1; -print("You have " + num + " " + PluralForm.get(num, downloads) + ".")</pre> - -<p>The above example works, but is still difficult to localize because we're concatenating strings assuming a particular grammatical structure. The following would be better:</p> - -<pre>Components.utils.import("resource://gre/modules/PluralForm.jsm"); - -let downloads = "You have one download.;You have #1 downloads."; -let num = 10; - -// For English, this would display "You have 10 downloads." -print(PluralForm.get(num, downloads).replace("#1", num);</pre> - -<p>Notice in the above example that the code can be written to support placeholders or not use placeholders in some forms of the string. Additionally, the localizer has control over where the placeholder is in relation to the rest of the text.</p> - -<p>Of course, the strings to be localized will be placed in a separate file such as yourextension.properties instead of being hardcoded in the JavaScript code file.</p> - -<p>The following 3 file snippets show how to use PluralForm with your <code>.xul</code>, <code>.properties</code>, <code>.js</code> files.</p> - -<p><code>downloads.xul</code>:</p> - -<pre><stringbundleset> - <stringbundle id="strings" src="chrome://downloads.properties"/> -</stringbundleset></pre> - -<p><code>downloads.properties</code>:</p> - -<pre># LOCALIZATION NOTE (downloadsTitleFiles): Semi-colon list of plural forms. -# See: http://developer.mozilla.org/en/docs/Localization_and_Plurals -# #1 number of files -# example: 111 files - Downloads -downloadsTitleFiles=#1 file - Downloads;#1 files - Downloads - -# LOCALIZATION NOTE (timePair): #1 time number; #2 time unit -# example: 1 second; 11 seconds -timePair=#1 #2 -seconds=second;seconds -minutes=minute;minutes -hours=hour;hours -</pre> - -<p><code>downloads.js</code>:</p> - -<pre>Components.utils.import("resource://gre/modules/PluralForm.jsm"); -let getStr = function(string) document.getElementById("strings").getString(string); - -// Get the correct plural form for the title -let numDownloads = 3; -let title = PluralForm.get(numDownloads, getStr("downloadsTitleFiles")); -// Put in the correct number of downloads -print(title.replace("#1", numDownloads)); - -// Get the correct plural form of seconds -let timeLeft = 55; -let seconds = PluralForm.get(timeLeft, getStr("seconds")); -// Print the localized string for "55 seconds" -print(getStr("timePair").replace("#1", timeLeft).replace("#2", seconds));</pre> - -<h3 id="Method:_makeGetter" name="Method:_makeGetter">Method: <code>makeGetter</code></h3> - -<p>If you're writing an extension, you'll want to use <code>makeGetter</code> instead of <code>PluralForm.get()</code> or <code>PluralForm.numForms()</code> because someone installing the extension on a different locale will be using the strings provided by your default extension locale. For example, your extension localized for English with plural rule #1, which expects 2 plural forms, is installed on a localized version of Firefox with plural rule #4, which expects 3 forms.</p> - -<pre>/** - * Create a pair of plural form functions for the given plural rule number. - * - * @param aRuleNum - * The plural rule number to create functions - * @return A pair: [function that gets the right plural form, - * function that returns the number of plural forms] - */ -[string pluralForm get(int aNum, string aWords), int numForms numForms()] -makeGetter(int aRuleNum)</pre> - -<p>Here is an example usage of <code>makeGetter</code>:</p> - -<pre>Components.utils.import("resource://gre/modules/PluralForm.jsm"); - -// Let's get Irish (plural rule #11) -let [get, numForms] = PluralForm.makeGetter(11); - -// Make up some values to use with "get" -let dummyText = "form 1;form 2;form 3;form 4;form 5"; -let dummyNum = 10; - -// In the case of Irish, the value 10 uses plural form #4, so "form 4" is printed -print(get(dummyNum, dummyText));</pre> - -<p>In this example, the Irish plural rule was hardcoded, but this could be a value specified in the .properties file. So for your extension, specify a pluralRule value in the .properties and call <code>PluralForm.makeGetter(pluralRuleFromProperties)</code> making sure to save the 2 returned functions. (You can use <a href="/en/JavaScript/New_in_JavaScript/1.7#Destructuring_assignment" title="en/New_in_JavaScript_1.7#Destructuring_assignment">destructured assignment</a> in JavaScript 1.7 to keep things clean.) The returned functions act just like <code>PluralForm.get()</code> and <code>PluralForm.numForms()</code> except for the specified plural rule instead of the default plural rule.</p> - -<h2 id="Credits" name="Credits">Credits</h2> - -<p>Plural Form code first implemented for {{ Bug(394516) }} - <em>Figure out a remaining-time rounding scheme for minutes -> hours/days</em><br> - Plural rules and families derived from <a class="external" href="http://www.gnu.org/software/gettext/manual/html_node/gettext_150.html#Plural-forms">GNU <code>gettext</code> documentation</a>.</p> - -<p> </p> - -<p> </p> - -<p>{{ languages( { "es": "es/Localización_y_Plurales", "fr": "fr/Localisation_et_pluriels", "ja": "ja/Localization_and_Plurals", "pl": "pl/Lokalizacja_i_liczba_mnoga" } ) }}</p> diff --git a/files/pt-br/mozilla/localization/localizing_with_pontoon/index.html b/files/pt-br/mozilla/localization/localizing_with_pontoon/index.html deleted file mode 100644 index efe8ef99b2..0000000000 --- a/files/pt-br/mozilla/localization/localizing_with_pontoon/index.html +++ /dev/null @@ -1,135 +0,0 @@ ---- -title: Traduzindo com o Pontoon -slug: Mozilla/Localization/Localizing_with_Pontoon -tags: - - Tradução -translation_of: Mozilla/Localization/Localizing_with_Pontoon ---- -<p>O <a href="https://pontoon.mozilla.org" title="https://pontoon.mozilla.org">Pontoon</a> é uma ferramenta de tradução (l10n) baseado na web do tipo O-Que-Você-Ver-É-O-Que-Você-Tem (WYSIWYG), usada para traduzir conteúdo web. Na Mozilla, usamos o Pontoon para traduzir os sites da Mozilla e a interface de aplicativo do Firefox OS, conhecida como Gaia. O Pontoon é uma ferramenta muito simples e intuitiva que requer pouca ou nenhuma habilidade técnica para usar no trabalho de tradução. Aqui discutiremos como usar o Pontoon para traduzir projetos, do primeiro acesso até a finalização de suas contribuições. Ao longo do caminho, apontaremos alguns belos recursos que o tornarão mais eficiente e farão suas contribuições de tradução mais fáceis.</p> - -<div class="note"> -<p><strong>Você é um desenvolvedor?</strong> Leia sobre <a href="/en-US/docs/Implementing_Pontoon_Mozilla">implementando Pontoon no seu site</a> ou aprenda como se envolver no <a href="https://github.com/mozilla/pontoon">GitHub</a>.</p> -</div> - -<h2 id="Primeiros_passos">Primeiros passos</h2> - -<p>A <a href="https://pontoon.mozilla.org" title="https://pontoon.mozilla.org">página inicial do Pontoon</a> é muito fácil de usar. Para começar a traduzir o projeto, clique no ícone Persona e entre. Em seguida, simplesmente selecione o projeto que você quer trabalhar e seu idioma nos menus suspensos. O Pontoon abrirá automaticamente esse idioma do projeto para você iniciar. Note que para nossos propósitos aqui, usaremos o site do<a href="https://affiliates.mozilla.org/"> Firefox Afiliados</a> para demonstrar a funcionalidade e fluxo de trabalho do Pontoon. E aí está, aberto dentro do Pontoon:</p> - -<p><em><img alt="Navegador do aplicativo e espaço de trabalho" src="https://mdn.mozillademos.org/files/8323/affiliates.png" style="height: 558px;"></em></p> - -<h3 id="Barra_de_ferramentas_principal">Barra de ferramentas principal</h3> - -<p>Como você pode ver, a maior parte da interface é composta pelo site que está sendo traduzido. Somente a barra de ferramentas no topo pertence ao Pontoon, contendo os seguintes itens (da esquerda para a direita):</p> - -<p><img alt="Barra de ferramentas principal" src="https://mdn.mozillademos.org/files/8325/toolbar.png"></p> - -<h4 id="Lista_de_strings">Lista de strings</h4> - -<p>Abre uma barra lateral com uma lista da todas as strings para traduzir.</p> - -<h4 id="Seletor_de_projeto_(Affiliates)">Seletor de projeto (Affiliates)</h4> - -<p>Alterna entre os projetos para traduzir.</p> - -<h4 id="Seletor_de_recursos_(Homepage)">Seletor de recursos (Homepage)</h4> - -<p>Alterna entre os recursos do projeto para traduzir, como sub-páginas ou arquivos de tradução. Oculta se não há recursos disponíveis para o projeto.</p> - -<dl> -</dl> - -<h4 id="Seletor_de_idioma_(Slovenian)">Seletor de idioma (Slovenian)</h4> - -<p>Alterna entre os idiomas para traduzir.</p> - -<h4 id="Go">Go</h4> - -<p>Abre a seleção de projeto-recurso-idioma.</p> - -<h4 id="Indicador_de_progresso">Indicador de progresso</h4> - -<p>Exibe seu progresso no recurso sendo traduzido. Mais detalhes estão disponíveis na janela de contexto.</p> - -<dl> -</dl> - -<h4 id="Menu_do_usuário">Menu do usuário</h4> - -<p>Permite tarefas específicas do usuário, como enviar para o repositório, baixar arquivos e sair.</p> - -<h4 id="Menu_de_informações">Menu de informações</h4> - -<p>Cede informações importantes, como a linha do tempo antecipada do projeto e uma lista de atalhos do teclado.</p> - -<dl> -</dl> - -<p>Tudo bem, que tal traduzirmos algo agora?<span id="cke_bm_608E" style="display: none;"> </span></p> - -<dl> -</dl> - -<h2 id="Traduzir_strings">Traduzir strings</h2> - -<p>Quando usando o Pontoon para tradução, você tem algumas opções para traduzir suas strings. Você pode traduzir em contexto, fora do contexto, ou uma combinação dos dois. Começaremos olhando na tradução em contexto.</p> - -<h3 id="Em_contexto">Em contexto</h3> - -<p>O modo de tradução em contexto do Pontoon é o que se coloca acima dos outros. Ele abre uma nova página (ou aplicativo) e ativa a edição em tempo real daquela página. Aqui está como você traduz sua primeira string:</p> - -<p><img alt="Tradução em contexto" src="https://mdn.mozillademos.org/files/8331/in-context.png"></p> - -<ol> - <li>Passe com o seu mouse sobre o texto que você quer.</li> - <li>Um botão de edição aparece sobre aquele texto. Clique nele para ativar o modo de tradução.</li> - <li>Substitua o texto original com sua tradução dentro do seu idioma.</li> - <li>Clique no botão de salvar para guardar sua tradução.</li> -</ol> - -<div> -<h3 id="Fora_de_contexto">Fora de contexto</h3> - -<p>Algumas strings são impossíveis de traduzir em contexto, por exemplo, os conteúdos da etiqueta <title> nos sites e strings com regionalismos ou formas plurais diferentes. Clicando no ícone de hambúrguer na barra de ferramentas principal, uma lista de todas as strings e traduções disponíveis abrirá na barra lateral. Você também pode usar a barra lateral para tradução fora de contexto:</p> -</div> - -<p><img alt="Tradução fora de contexto: list" src="https://mdn.mozillademos.org/files/8337/out-of-context-1.png"> <img alt="Tradução fora de contexto: traduzir" src="https://mdn.mozillademos.org/files/8335/out-of-context-2.png"></p> - -<ol> - <li>Clique na string que gostaria de traduzir.</li> - <li>O painel de tradução com a string original e seus detalhes (por exemplo, comentários) será aberto.</li> - <li>Traduza a string na área de tradução abaixo.</li> - <li>Clique no botão de salvar para guardar sua tradução.</li> -</ol> - -<p>Conforme você traduz strings fora de contexto, as traduções também aparecerão no site, se elas também puderem ser traduzidas em contexto.</p> - -<h3 id="Ajudantes_de_tradução">Ajudantes de tradução</h3> - -<p>Como você pode ver, sugestões do histórico, traduções memorizadas, máquina de tradução e outros idiomas também estão disponíveis no painel de tradução fora de contexto. Chamamos tudo isso de ajudantes de tradução e aqui está como cada um deles lhe ajudarão conforme você traduz strings:</p> - -<p><img alt="Ajudantes de tradução: Histórico" src="https://mdn.mozillademos.org/files/8339/helpers-history.png"> <img alt="Ajudantes de tradução: Maquinário" src="https://mdn.mozillademos.org/files/8341/helpers-machinery.png"> <img alt="Ajudantes de tradução: Outros idiomas" src="https://mdn.mozillademos.org/files/8343/helpers-locales.png"> <img alt="Ajudantes de tradução: Pesquisar" src="https://mdn.mozillademos.org/files/8345/helpers-menu.png"></p> - -<h4 id="Histórico">Histórico</h4> - -<p>Exibe traduções sugeridas anteriormente, incluindo de outros usuários.</p> - -<h4 id="Maquinário">Maquinário</h4> - -<p>Exibe combinações de vários serviços: memória de tradução interna, <a href="http://transvision.mozfr.org/">Mozilla Transvision</a>, <a href="https://amagama-live.translatehouse.org/">open source translation memory</a>, <a href="https://www.microsoft.com/Language/pt-BR/Default.aspx">Portal de idiomas da Microsoft</a> e a <a href="http://www.bing.com/translator">máquina de tradução</a>.</p> - -<h4 id="Outros_idiomas">Outros idiomas</h4> - -<p>Exibe traduções compatíveis de outros idiomas.</p> - -<h4 id="Pesquisar">Pesquisar</h4> - -<p>Quase igual ao maquinário, mas Almost like machinery, mas pega a palavra-chave fornecida como parâmetro de entrada em vez da string original.</p> - -<p>Clicando em uma sugestão, ela é copiada para dentro da área de tradução.</p> - -<dl> -</dl> - -<h2 id="Publicando_sua_tradução">Publicando sua tradução</h2> - -<p>Suponhamos que agora você quer publicar seu trabalho de tradução para enviar a um repositório. O Pontoon lhe permite fazer isso também! Na verdade, ele faz isso para você sincronizando automaticamente com os repositórios em bases horárias. Você pode agora dar tapinhas nas suas costas, fazer uma dancinha, ir dormir ou outra coisa para comemorar seu trabalho!</p> diff --git a/files/pt-br/mozilla/localization/localizing_with_verbatim/index.html b/files/pt-br/mozilla/localization/localizing_with_verbatim/index.html deleted file mode 100644 index e5fe258987..0000000000 --- a/files/pt-br/mozilla/localization/localizing_with_verbatim/index.html +++ /dev/null @@ -1,158 +0,0 @@ ---- -title: Localizando com o Verbatim -slug: Mozilla/Localization/Localizing_with_Verbatim -translation_of: Mozilla/Localization/Localizing_with_Pontoon ---- -<p><span class="seoSummary">Verbatim is a web-based tool (specifically a Mozilla-hosted Pootle instance) for localizing Mozilla web content. It can be used to localize a variety of Mozilla projects and is capable of supporting any language. This guide will walk you through localizing a common Mozilla web project.</span> The tutorial here will give you a solid foundation for using Verbatim to localize any Mozilla web project you hope to add to your localization community's efforts. We'll discuss what specific projects Verbatim is currently being used for, how to get started with Verbatim, and the tasks that are commonly accomplished through using Verbatim.</p> - -<h2 id="Getting_started_with_Verbatim">Getting started with Verbatim</h2> - -<p>Being that it is web-based, localizers must be online to use Verbatim. There are essentially two ways to get started with Verbatim: start a new localization or join an existing localization community's efforts. Either way, you will need to follow these steps to start working on a Verbatim project.</p> - -<table style="width: 100%; border-style: solid; border-color: rgb(0,0,0);"> - <thead> - <tr style="text-align: center;"> - <th scope="col" style="text-align: center;"><strong>Start a new localization on Verbatim</strong></th> - <th scope="col" style="text-align: center;"><strong>Join an existing localization on Verbatim</strong></th> - </tr> - </thead> - <tbody> - <tr> - <td> - <ol> - <li>Point your browser to <a class="external" href="http://localize.mozilla.org/">http://localize.mozilla.org</a>. This is where Verbatim is hosted.</li> - </ol> - </td> - <td> - <ol> - <li>Point your browser to <a class="external" href="http://localize.mozilla.org/">http://localize.mozilla.org</a>. This is where Verbatim is hosted.</li> - </ol> - </td> - </tr> - <tr> - <td> - <ol start="2"> - <li>If you have a Mozilla LDAP account, simply sign in using your LDAP credentials. If not, register for an account and sign in once you've completed registration. The links for both are located in the upper right-hand corner of the page.</li> - </ol> - </td> - <td> - <ol start="2"> - <li>If you have a Mozilla LDAP account, simply sign in using your LDAP credentials. If not, register for an account and sign in once you've completed registration. The links for both are located in the upper right-hand corner of the page.</li> - </ol> - </td> - </tr> - <tr> - <td> - <ol start="3"> - <li>File a <a class="link-https" href="https://bugzilla.mozilla.org/enter_bug.cgi?alias=&assigned_to=nobody%40mozilla.org&blocked=&bug_file_loc=https%3A%2F%2Flocalize.mozilla.org%2F&bug_severity=normal&bug_status=NEW&cf_blocking_191=---&cf_blocking_192=---&cf_status_191=---&cf_status_192=---&cf_status_firefox10=---&cf_status_firefox11=---&cf_status_firefox8=---&cf_status_firefox9=---&cf_tracking_firefox10=---&cf_tracking_firefox11=---&cf_tracking_firefox8=---&cf_tracking_firefox9=---&comment=I%20would%20like%20to%20request%20that%20you%20add%20the%20%5Binsert%20your%20locale%20code%20here%5D%20as%20a%20new%20localization%20in%20Verbatim.%0D%0A%0D%0A%5BAdd%20any%20other%20comments%20you%20may%20have%20here.%5D&component=Verbatim&contenttypeentry=&contenttypemethod=autodetect&contenttypeselection=text%2Fplain&data=&defined_groups=1&dependson=&description=&flag_type-4=X&flag_type-607=X&form_name=enter_bug&keywords=&maketemplate=Remember%20values%20as%20bookmarkable%20template&op_sys=All&priority=--&product=Webtools&qa_contact=verbatim%40webtools.bugs&rep_platform=All&requestee_type-325=&requestee_type-4=&requestee_type-607=&short_desc=Request%20for%20new%20localization%20on%20Verbatim&status_whiteboard=&target_milestone=---&version=Trunk" title="https://bugzilla.mozilla.org/enter_bug.cgi?alias=&assigned_to=nobody%40mozilla.org&blocked=&bug_file_loc=https%3A%2F%2Flocalize.mozilla.org%2F&bug_severity=normal&bug_status=NEW&cf_blocking_191=---&cf_blocking_192=---&cf_status_191=---&cf_status_192=---&cf_status_firefox10=---&cf_status_firefox11=---&cf_status_firefox8=---&cf_status_firefox9=---&cf_tracking_firefox10=---&cf_tracking_firefox11=---&cf_tracking_firefox8=---&cf_tracking_firefox9=---&comment=I%20would%20like%20to%20request%20that%20you%20add%20the%20%5Binsert%20your%20locale%20code%20here%5D%20as%20a%20new%20localization%20in%20Verbatim.%0D%0A%0D%0A%5BAdd%20any%20other%20comments%20you%20may%20have%20here.%5D&component=Verbatim&contenttypeentry=&contenttypemethod=autodetect&contenttypeselection=text%2Fplain&data=&defined_groups=1&dependson=&description=&flag_type-4=X&flag_type-607=X&form_name=enter_bug&keywords=&maketemplate=Remember%20values%20as%20bookmarkable%20template&op_sys=All&priority=--&product=Webtools&qa_contact=verbatim%40webtools.bugs&rep_platform=All&requestee_type-325=&requestee_type-4=&requestee_type-607=&short_desc=Request%20for%20new%20localization%20on%20Verbatim&status_whiteboard=&target_milestone=---&version=Trunk">bug</a> using this prefilled bugzilla template. Add your locale code and language name to the description field, as well as any other information you'd like to share. See the following example.</li> - </ol> - - <div class="note"><strong>Example</strong>: I would like to request that you add the <em><strong>en-US</strong></em> as a new localization in Verbatim. The langauge is <em><strong>English</strong></em>. Also, I like cookies. Lots and lots of cookies. I can easily be motivated by any and all baked goods.</div> - </td> - <td> - <ol start="3"> - <li><a class="link-https" href="https://wiki.mozilla.org/Category:L10n_Teams" title="https://wiki.mozilla.org/Category:L10n_Teams">Contact the community</a> to find out which projects they need you to concentrate your efforts on. See the following example for what you could include in your email to the community leaders.</li> - </ol> - - <div class="note"><strong>Example</strong>: I would like to join your localization efforts on Verbatim for this locale. Where would be the best place for me to begin? Also, I would like to buy you a drink to encourage you to let me join the team!</div> - </td> - </tr> - </tbody> -</table> - -<p>Now that you're registered and logged in, we'll outline the general translation workflow, using the <a class="link-https" href="https://localize.mozilla.org/projects/mdn" title="https://localize.mozilla.org/projects/mdn/">MDN project page</a> as our example.</p> - -<h2 id="Translating">Translating</h2> - -<p>First thing's first, you need to find untranslated source strings to translate.</p> - -<ol> - <li>Navigate to the <a class="link-https" href="https://localize.mozilla.org/projects/mdn" title="https://localize.mozilla.org/projects/mdn/">MDN project page</a>.</li> - <li>Select your language from the <strong>Overview</strong> tab.</li> - <li>Now click on the the <strong>Translate</strong> tab. This tab will display the directories for the MDN user interface.</li> - <li>Select the <strong>LC Messages</strong> directory. This is where the project's <code>.po</code> files containing translatable strings are located. You will now see an overview of each <code>.po</code> file.</li> - <li>In the summary column, the number of words untranslated will be shown as a link. Click on that link to be taken directly to the first string that needs to be translated.</li> -</ol> - -<p>Now you're ready to contribute translations and you won't believe how easy it is. Check it out, you can contribute translations in two simple steps:</p> - -<ol> - <li>Simply type your translation in the box to below the English string</li> - <li>Select <strong>Suggest</strong>. If you have approval permission, select <strong>Submit</strong>. You will then be taken to the next string that needs translating.</li> - <li>Hooray! You're translating! Repeat steps one and two for the remainder of the untranslated strings.</li> -</ol> - -<div class="note"><strong>Note</strong>: If you come across a string that already has a suggested translation, you can still suggest your own translation if you feel it is more accurate.</div> - -<h3 id="Some_extra_cool_features_on_Verbatim">Some extra cool features on Verbatim</h3> - -<p>Here are a few additional items about the Verbatim interface that you should be aware of. Some of these can be seen in the screen shot below.</p> - -<p><a href="/@api/deki/files/5930/=Translate_Tab.png" title="Translate Tab.png"><img alt="Translate Tab.png" class="internal default" src="/@api/deki/files/5930/=Translate_Tab.png" style="width: 1113px; height: 221px;"></a></p> - -<ul> - <li>You can copy the English string over to the translation box by clicking the <strong>Copy</strong> icon.</li> - <li>You can use machine translation by clicking on the <strong>Google Translate</strong> icon.</li> - <li>You can move forward and back through the strings by clicking the <strong>Next</strong> and <strong>Previous</strong> buttons.</li> - <li>You can navigate directly to a particular string by clicking it's string number on the far left.</li> - <li>You can mark a translation as <strong>Fuzzy</strong> if you think there could be a better way to say something. This will mark it so it can be found and updated later. Remember that only submitted strings will be commited to the localization's repository, not fuzzy strings. If strings remain marked as fuzzy, the source string will appear in your localized version instead of a translated string.</li> - <li>You can add notes about a particular string in the <strong>Translator Comments</strong> section.</li> - <li>When translating a string with both singular and plural forms you will see two boxes on the right hand side. The box for the singular form is labeled <strong>Plural Form 0</strong> and the box for the plural form is labeled <strong>Plural Form 1</strong>.</li> -</ul> - -<h2 id="Additional_tasks">Additional tasks</h2> - -<p>If you are a localizer with approval priviledges, here are a few more tasks that you should be aware of.</p> - -<h3 id="Review_suggested_translations">Review suggested translations</h3> - -<ol start="1"> - <li>Click on the <strong>Review</strong> tab. It will show how many strings are waiting for review for each <code>.po</code> file.<a href="/@api/deki/files/5931/=Review_Tab1.png" title="Review Tab1.png"><img align="right" alt="Review Tab1.png" class="internal rwrap" src="/@api/deki/files/5931/=Review_Tab1.png?size=webview" style="width: 274px; height: 145px;"></a></li> - <li>Select <span style="font-weight: bold;">Review</span><strong> suggestions</strong> to start approving suggestions. It will take you to the first string that needs to be reviewed.</li> - <li>You can accept the suggestion by clicking the green checkmark or reject the suggestion by clicking the red X (see the screen shot from the previous section).</li> -</ol> - -<p>It is important to note that <em>only</em> submitted strings will appear in your localized pages. Neither suggestions nor fuzzy strings will appear. Before commiting your final localized product, make sure all strings have been submitted.</p> - -<h3 id="Using_VCS_on_Verbatim">Using VCS on Verbatim</h3> - -<p>VCS (<strong>V</strong>ersion <strong>C</strong>ontrol <strong>S</strong>ystem) is the repository system we use to update the project's strings as well as push your translated content onto the web. The difference between the two tasks is simply a matter of which link to click.</p> - -<p><img align="right" alt="VCS.png" class="internal rwrap" src="/@api/deki/files/5925/=VCS.png" style="">To push your strings onto the web and see your changes, simply select the <strong>Commit to VCS</strong> link underneath each file name. It usually takes about an hour before you can see your changes on the project site.</p> - -<p>To update your <code>.po</code> files with new untranslated strings, simple select the <strong>Update from VCS</strong> link underneath each file name.</p> - -<p> </p> - -<div class="note"><br> -<strong>Note</strong>: Some projects are automatically updated nightly while others require you to manually update them to receive new source content. Be sure to pay close attention to this, as it can alter your workflow.</div> - -<h2 id="Translating_Verbatim_files_with_an_external_application">Translating Verbatim files with an external application</h2> - -<p>While in the <strong>Translate</strong> tab, you have the option to export the <code>.po </code>and <code>.xliff</code> files and translate the strings with an external application (i.e., a text editor or translation memory tool).</p> - -<ol> - <li>To download the <code>.po</code> file, select the <strong>Download</strong> link found underneath each file name. To download the .<code>xliff</code> file, select the <strong>Download XLIFF</strong> link.</li> - <li>Proceed to translate the strings using your selected tool.</li> -</ol> - -<p>Once you've finished your translations, you'll need to upload your file to Verbatim. You can do this from the <strong>Translate</strong> tab.</p> - -<ol> - <li>Navigate to the bottom of the files list to the <strong>Upload File</strong> section.</li> - <li>Click on the <strong>Browse</strong> button and select the file you wish to upload.</li> - <li>Select an upload setting from the options provided.</li> - <li>Once your upload setting has been selected, click <strong>Upload</strong>.</li> -</ol> - -<div class="warning"> -<p class="warning"><strong>Important</strong>: There have been some problems in the past with community members updating their source strings while others are in the process of localizing the previous updated files. This can cause community members to overlook new source strings, producing untranslated strings in a localized project. Be sure to coordinate these manual updates within your community to avoid this problem.</p> -</div> - -<h2 id="You're_ready_to_go!">You're ready to go!</h2> - -<p>Whew! You've arrived at the end! Time to take what you've learned and put it to good use spreading Mozilla to everyone in your region. Have fun and <a class="link-mailto" href="mailto:l10n-drivers@mozilla.com" title="l10n-drivers@mozilla.com">let us know</a> if you run into any difficulties. We'll be happy to help in any way we can.</p> - -<p> </p> - -<p><a href="/en/Localization_Quick_Start_Guide:_Translation" title="Localization Quick Start Guide: Translation">Back: Quick Start Guide</a></p> diff --git a/files/pt-br/mozilla/localization/writing_localizable_code/index.html b/files/pt-br/mozilla/localization/writing_localizable_code/index.html deleted file mode 100644 index f403bdbb1c..0000000000 --- a/files/pt-br/mozilla/localization/writing_localizable_code/index.html +++ /dev/null @@ -1,47 +0,0 @@ ---- -title: Escrevendo código localizável -slug: Mozilla/Localization/Writing_localizable_code -tags: - - Internacionalização - - Localização -translation_of: Mozilla/Localization/Writing_localizable_code ---- -<div>Essa página lhe fala sobre as melhores práticas e diretrizes ao lidar com código de UI relacionado a localização. Ela é destinada a desenvolvedores do Mozilla e de extensões.</div> - -<p>Para mais detalhes técnicos, por favor veja também <a href="/pt-BR/docs/XUL_Tutorial/Localization" title="XUL_Tutorial/Localization">UL_Tutorial:Localization</a>.</p> - -<h2 id="About_Localizers" name="About_Localizers">Sobre localizadores</h2> - -<p>Algumas notas sobre localizadores para desenvolvedores que raramente lidam ocm eles:</p> - -<ul> - <li>localizadores gostam de ferramentas, e eles não gostam de editores,</li> - <li>ferramentas de localização geralmente são baseadas em pares de chave-valor,</li> - <li>pelo menos alguns localizadores possuem talentos com foco em habilidades linguísticas e não conhecedores de programação, ou alté mesmo compilação de aplicativos.</li> -</ul> - -<h2 id="Guidelines" name="Guidelines">Diretrizes</h2> - -<p>Portanto, há algunas diretrizes que você deve seguir para facilitar a localização de seu código:</p> - -<dl> - <dt>Escolha bons nomes de chaves</dt> - <dd>Os nomes escolhidos para suas chaves (independentemente de ser um DTD ou um arquivo de propriedade) devem ser descritivos. Pensem neles como sendo nomes longos de variáveis. Se você alterar as semânticas de uma string localizada, altere a chave. Isso provavelmente será um bom nome de chave, e ajudará as ferramentas a compreender que a alteração que você fez é diferente de uma mera correção de ortografia.</dd> - <dt>Tente não presumir a gramática em strings compostas</dt> - <dd>A separação de frases em várias chaves muitas vezes, inadvertidamente, pressupõe uma gramática, uma estrutura de oração e essas strings compostas são muitas vezes muito difíceis de traduzir. Quando uma string composta é necessária, tente dar aos tradutores "espaço para se mover". Um exemplo de uma string composta bem utilizada é a configuração do Firefox para páginas visitadas: o tradutor pode (implicitamente) posicionar o campo de texto como ele bem entender.</dd> - <dt>Não use macros de pré-processador</dt> - <dd>O uso de <code>#if #else #endif</code> ou <code>#expand</code> é fortemente desencorajado. Há algumas exceções a esta regra, mas, em geral, o arquivo localizado deve estar em conformidade com padrões e não devem exigir ferramentas de compilação para serem transformadas. Se você deseja adicionar processamento de compilação a arquivos localizados, certifique-se de solicitar feedback do <a href="/User:AxelHecht" title="User:AxelHecht">l10n@</a>. Na maioria dos casos, você também pode colocar o processamento em código de conteúdo e referência diferentes pares de valor-chave em <code>l10n</code>.</dd> - <dt>Use uma boa estrutura de diretórios de fontes</dt> - <dd>Certifique-se de colocar os arquivos localizáveis no lugar correto. A adição de diretórios de topo de nível é um meio termo entre a propriendade do módulo no repositório no <code>cvsroot</code> e a facilidade de localização.</dd> - <dt>Use uma boa estrutura de diretório de chrome</dt> - <dd>Para um módulo <code>mod</code> em particular, um caminho alvo <code>jar:ab-CD.jar!/locale/ab-CD/mod/foo.dtd</code> foi amplamente testado e é um bom lugar para seus arquivos referenciados como <code><a class="external" rel="freelink">chrome://mod/locale/foo.dtd</a></code>. Usar uma estrutura de diretórios como essa facilita o processo de localização sem o código fonte e é especialmente recomendada para autores de extensão. <a href="pt-BR/docs/Developer_Guide/Intrucoes_Build/Manifestos_JAR" title="JAR_Manifests">Manifestos de JAR</a> podem facilitar isso.</dd> -</dl> - -<h2 id="l10n_impact" name="l10n_impact">Impacto de l10n</h2> - -<p>Em árvores congeladas, há a regra de não verificar alterações de <em>l10n-impact</em>. Então, o que isso significa? <em>l10n-impact</em> é</p> - -<ul> - <li>qualquer alteração a <code>mozilla/@mod@/locales</code>; Localizadores descobrem se eles têm que se atualizar sobre alterações ao fazer consultas de bonsai, assim como todo mundo faz. Nenhuma alteração significa que esse resultado de consulta é vazio.</li> - <li>qualquer uso alterado ou novo de strings localizadas existentes; Qualquer coisa que dispara um ciclo de QA em 40+ localizações é <em>l10n-impact</em>.</li> -</ul> diff --git a/files/pt-br/mozilla/marketplace/diretrizes_para_avaliação_de_aplicativos/index.html b/files/pt-br/mozilla/marketplace/diretrizes_para_avaliação_de_aplicativos/index.html deleted file mode 100644 index 65be91fdc0..0000000000 --- a/files/pt-br/mozilla/marketplace/diretrizes_para_avaliação_de_aplicativos/index.html +++ /dev/null @@ -1,87 +0,0 @@ ---- -title: Diretrizes para Avaliação de Aplicativos -slug: Mozilla/Marketplace/Diretrizes_para_Avaliação_de_Aplicativos -translation_of: Archive/Mozilla/Marketplace/User_Review_Guidelines ---- -<p dir="ltr" style="margin-top: 0pt; margin-bottom: 0pt;"><span style="line-height: 1.38;">Avaliação de aplicativos é um jeito de compartilhar sua opinião sobre aplicativos que você instalou e usou. Nosso </span><font face="arial"><span style="font-size: 15px; line-height: 20.7px;">time de moderação de avaliações se reserva o direito de remover qualquer avaliação que não siga estas diretrizes.</span></font></p> - -<h2 dir="ltr" id="Dicas_para_escrever_boas_avaliações" style="line-height: 1.38; margin-top: 18pt; margin-bottom: 4pt;"><strong style="background-color: transparent; color: #000000; font-family: arial; font-size: 23px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: none; vertical-align: baseline;">Dicas para escrever boas avaliações </strong></h2> - -<h3 dir="ltr" id="O_que_fazer" style="line-height: 1.38; margin-top: 14pt; margin-bottom: 4pt;"><strong style="background-color: transparent; color: #000000; font-family: arial; font-size: 17px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: none; vertical-align: baseline;">O que fazer:</strong></h3> - -<ul style="margin-top: 0pt; margin-bottom: 0pt;"> - <li dir="ltr" style="list-style-type: disc; font-size: 15px; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;"> - <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">Escreva como se estivesse contando a um amigo sobre sua experiência com o aplicativo.</span></p> - </li> - <li dir="ltr" style="list-style-type: disc; font-size: 15px; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;"> - <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">Dê detalhes específicos e úteis. Por exemplo:</span></p> - - <ul style="margin-top: 0pt; margin-bottom: 0pt;"> - <li dir="ltr" style="list-style-type: circle; font-size: 15px; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;"> - <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">O aplicativo funcionou como esperado?</span></p> - </li> - <li dir="ltr" style="list-style-type: circle; font-size: 15px; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;"> - <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">De quais recursos você gostou ou não gostou?</span></p> - </li> - <li dir="ltr" style="list-style-type: circle; font-size: 15px; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;"> - <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">O aplicativo foi útil?</span></p> - </li> - <li dir="ltr" style="list-style-type: circle; font-size: 15px; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;"> - <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">Foi fácil de usar?</span></p> - </li> - <li dir="ltr" style="list-style-type: circle; font-size: 15px; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;"> - <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">Você vai continuar usando esse aplicativo?</span></p> - </li> - </ul> - </li> - <li dir="ltr" style="list-style-type: disc; font-size: 15px; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;"> - <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">Antes de submeter sua avaliação, leia o que escreveu para minimizar os erros de digitação.</span></p> - </li> -</ul> - -<h3 dir="ltr" id="O_que_não_fazer" style="line-height: 1.38; margin-top: 14pt; margin-bottom: 4pt;"><strong style="background-color: transparent; color: #000000; font-family: arial; font-size: 17px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: none; vertical-align: baseline;">O que não fazer:</strong></h3> - -<ul style="margin-top: 0pt; margin-bottom: 0pt;"> - <li dir="ltr" style="list-style-type: disc; font-size: 15px; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;"> - <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">Escrever avaliações de aplicativos que você não usou pessoalmente.</span></p> - </li> - <li dir="ltr" style="list-style-type: disc; font-size: 15px; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;"> - <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">Usar linguagem profana, sexual ou que incite o ódio.</span></p> - </li> - <li dir="ltr" style="list-style-type: disc; font-size: 15px; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;"> - <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">Incluir HTML, links, código fonte ou snippets. Avaliações devem conter apenas texto.</span></p> - </li> - <li dir="ltr" style="list-style-type: disc; font-size: 15px; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;"> - <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;">Fazer afirmações falsas, difamar desenvolvedores ou fazer insultos pessoais.</p> - </li> - <li dir="ltr" style="list-style-type: disc; font-size: 15px; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;"> - <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">Incluir seu email pessoal, número de telefone ou outros detalhes pessoais.</span></p> - </li> - <li dir="ltr" style="list-style-type: disc; font-size: 15px; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;"> - <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">Escrever avaliações para aplicativos que você ou sua organização criou ou representa.</span></p> - </li> - <li dir="ltr" style="list-style-type: disc; font-size: 15px; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;"> - <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">Criticar um aplicativo pela natureza de sua função. Por exemplo, deixar uma avaliação negativa para um aplicativo porque exibe propagandas ou requer coleta de dados, quando é esse o propósito do aplicatico ou ele requer coleta de dados para funcionar. </span></p> - </li> - <li dir="ltr" style="list-style-type: disc; font-size: 15px; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;"> - <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">Avaliar negativamente um aplicativo por não funcionar em uma versão do FirefoxOS que a descrição informa explicitamente não suportar. </span></p> - </li> -</ul> - -<h2 dir="ltr" id="Perguntas_Frequentes_sobre_Avaliações" style="line-height: 1.38; margin-top: 18pt; margin-bottom: 4pt;"><strong style="background-color: transparent; color: #000000; font-family: arial; font-size: 23px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: none; vertical-align: baseline;">Perguntas Frequentes sobre Avaliações</strong></h2> - -<h3 dir="ltr" id="Como_denuncio_uma_avaliação_problemática" style="line-height: 1.38; margin-top: 14pt; margin-bottom: 4pt;"><strong style="background-color: transparent; color: #000000; font-family: arial; font-size: 17px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: none; vertical-align: baseline;">Como denuncio uma avaliação problemática?</strong></h3> - -<p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">Por favor, reporte ou sinalize qualquer avaliação questionável clicando em "Reportar" para que a avaliação seja encaminhada para moderação. Nosso time de moderação utilizará as Diretrizes de Avaliação para concluir se a avaliação deve ser apagada ou retornar ao site.</span></p> - -<h3 dir="ltr" id="O_que_devo_fazer_se_tiver_problemas_com_um_aplicativo" style="line-height: 1.38; margin-top: 14pt; margin-bottom: 4pt;"><strong style="background-color: transparent; color: #000000; font-family: arial; font-size: 17px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: none; vertical-align: baseline;">O que devo fazer se tiver problemas com um aplicativo?</strong></h3> - -<p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">Você deve contactar o desenvolvedor pelos botões "Email de suporte" ou "Site de Suporte" na página do aplicativo no Marketplace.</span></p> - -<h3 dir="ltr" id="Como_desenvolvedor_de_aplicativos_posso_responder_avaliações" style="line-height: 1.38; margin-top: 14pt; margin-bottom: 4pt;"><strong style="background-color: transparent; color: #000000; font-family: arial; font-size: 17px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: none; vertical-align: baseline;">Como desenvolvedor de aplicativos, posso responder avaliações?</strong></h3> - -<p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">No momento isso não é possível.</span></p> - -<h3 dir="ltr" id="Como_desenvolvedor_de_aplicativos_posso_excluir_avaliações_ou_notas_desfavoráveis" style="line-height: 1.38; margin-top: 14pt; margin-bottom: 4pt;"><strong style="background-color: transparent; color: #000000; font-family: arial; font-size: 17px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: none; vertical-align: baseline;">Como desenvolvedor de aplicativos, posso excluir avaliações ou notas desfavoráveis? </strong></h3> - -<p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">Em geral, não, mas se a avaliação não seguir as diretrizes listadas acima, você pode clicar em "Reportar" para submeter o caso à moderação. Se a avaliação inclui uma reclamação que não se aplica mais devido ao lançamento de uma nova versão, podemos considerar excluir a avaliação. Envie seu pedido detalhado para</span> <a href="https://groups.google.com/forum/#!forum/mozilla.appreview" title="appreview@lists.mozilla.org">mozilla.appreview</a><span style="background-color: transparent; color: #000000; font-family: arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">.</span></p> diff --git a/files/pt-br/mozilla/marketplace/index.html b/files/pt-br/mozilla/marketplace/index.html deleted file mode 100644 index b936966bc4..0000000000 --- a/files/pt-br/mozilla/marketplace/index.html +++ /dev/null @@ -1,133 +0,0 @@ ---- -title: Firefox Marketplace -slug: Mozilla/Marketplace -tags: - - Apps - - Firefox OS - - Introdução - - Loja - - Principiante - - Prioridade - - chegada -translation_of: Archive/Mozilla/Marketplace ---- -<div class="boxed translate-rendered"> -<div class="summary">A Marketplace Firefox é uma loja aberta e não-proprietária para aplicativos web. Aqui você encontrará toda a informação necessária para iniciar e publicar aplicativos na Marketplace Firefox. Encontre orientações para fazer apps de sucesso, opções de entrega, publicação e atualização de apps, e as bibliotecas e APIs para fazer uso das características da Marketplace.</div> - -<div class="column-container"> -<p>A Mozilla está trazendo seus valores fundamentais — abertura, liberdade, escola do usuário — para o mundo de divulgação de apps.</p> - -<p>Utilizando tecnologias Web padrões, linguagens, e ferramentas, a <a href="https://marketplace.firefox.com/">Firefox Marketplace</a> permite que você publique <a href="https://developer.mozilla.org/en-US/Apps">Apps Web Abertos</a>. Esses apps podem ser empacotados, rodando dentro do Firefox OS, ou hospedado no seu próprio Servidor Web. Apps publicados estão disponíveis para usuários de telefone Firefox OS onde quer que eles estejam no mundo. Usuários descobrem seus apps facilmente na Marketplace Firefox usando a seção de apps em destaque, categorias de apps, e a poderosa pesquisa. Então os usuários estão possibilitados de instalar apps gratuitos instantaneamente, ou comprar apps pagos com o suporte crescente para pagamentos por cartão de crédito e cobrança de faturas.</p> -</div> - -<div class="row topicpage-table"> -<div class="section"> -<h2 class="Community" id="Community" name="Community"><a href="https://developer.mozilla.org/en-US/Marketplace/Prepare">Se preparando para o sucesso</a></h2> - -<dl> - <dd>Quer você esteja criando apps por prazer ou por lucro, você vai querer que as pessoas os descubram, os usem e se divirtam com eles. Essa sessão explica como popularizar e construir comunidades de usuários satisfeitos.</dd> -</dl> - -<h2 class="Community" id="Community" name="Community"><a href="https://developer.mozilla.org/en-US/Marketplace/Options">Opções de publicação</a></h2> - -<dl> - <dd>Empacotado ou Hospedado, eis a questão. Descubra sobre entregar o seu app e as opções para fazer seus apps disponíveis em aparelhos Android e desktops, além do Firefox OS.</dd> -</dl> - -<h2 class="Community" id="Community" name="Community"><a href="https://developer.mozilla.org/en-US/Marketplace/Publishing/Introduction">Publicando apps</a></h2> - -<dl> - <dd>O mundo está ansioso para você publicar seus apps. Descubra como botar seus apps na Firefox Marketplace, incluindo os processos para submeter seus apps, o processo de revisão, atualização de seus apps, monitorando a performance deles, e revisando os comentários dos usuários.</dd> -</dl> -</div> - -<div class="section"> -<dl> -</dl> - -<h2 class="Tools" id="Tools" name="Tools">Ferramentas para desenvolvimento de apps</h2> - -<dl> - <dt><a href="https://developer.mozilla.org/en-US/Marketplace/APIs">Bibliotecas e APIs da Firefox Marketplace</a></dt> - <dd>Obtenha uma visão geral e encontre links para bibliotexas e APIs disponíveis para acrescentar características aos seus apps da Marketplace.</dd> - <dt><a href="https://developer.mozilla.org/en-US/Apps/Tools_and_frameworks/App_developer_tools">Ferramentas para desenvolvedores de Apps</a></dt> - <dd>Encontre uma lista completa das ferramentas que você pode usar para fazer o desenvolvimento de Apps Web Abertos mais eficiente e divertido.</dd> - <dt><a href="https://developer.mozilla.org/en-US/docs/Tools/WebIDE">WebIDE</a></dt> - <dd>Sua ferramenta principal para testar, implantar, e depurar apps <a href="https://developer.mozilla.org/en-US/Firefox_OS">Firefox OS</a> usando o <a href="https://developer.mozilla.org/en-US/docs/Tools/Firefox_OS_Simulator">Simulador Firefox OS</a> ou um dispositivo real com Firefox OS.</dd> -</dl> -</div> -</div> - -<h2 id="Subnav">Subnav</h2> - -<ol> - <li><a href="https://developer.mozilla.org/en-US/Marketplace/Prepare">Se preprare para o sucesso</a> - - <ol> - <li><a href="https://developer.mozilla.org/en-US/Marketplace/Prepare/Introduction">Introdução</a></li> - <li><a href="https://developer.mozilla.org/en-US/Marketplace/Prepare/Deciding_what_to_build">Decidindo o que construir</a></li> - <li><a href="https://developer.mozilla.org/en-US/Marketplace/Prepare/Getting_to_know_your_users">Conhecendo seus usuários</a></li> - <li><a href="https://developer.mozilla.org/en-US/Marketplace/Prepare/Choosing_your_business_model">Escolhendo seu modelo de negócios</a></li> - <li><a href="https://developer.mozilla.org/en-US/Marketplace/Prepare/Localizing_your_apps">Localizando seus apps</a></li> - <li><a href="https://developer.mozilla.org/en-US/Marketplace/Prepare/Promoting_your_app">Promovendo seu app</a></li> - <li><a href="https://developer.mozilla.org/en-US/Marketplace/Prepare/Creating_your_community">Criando sua comunidade</a></li> - </ol> - </li> - <li><a href="https://developer.mozilla.org/en-US/Marketplace/Options">Suas opções de publicação</a> - <ol> - <li><a href="https://developer.mozilla.org/en-US/Marketplace/Options/Introduction">Introdução</a></li> - <li><a href="https://developer.mozilla.org/en-US/Marketplace/Options/Packaged_apps">Apps empacotados</a></li> - <li><a href="https://developer.mozilla.org/en-US/Marketplace/Options/Hosted_apps">Apps hospedados</a></li> - <li><a href="https://developer.mozilla.org/en-US/Marketplace/Options/Packaged_or_hosted">Empacotados ou hospedados?</a></li> - <li><a href="https://developer.mozilla.org/en-US/Marketplace/Options/Mobile_optimized_websites">Websites otimizados para dispositivos móveis</a></li> - <li><a href="https://developer.mozilla.org/en-US/Marketplace/Options/Self_publishing">Publique apps você mesmo</a></li> - </ol> - </li> - <li><a href="https://developer.mozilla.org/en-US/Marketplace/Publishing">Visão geral sobte publicação de apps</a> - <ol> - <li><a href="https://developer.mozilla.org/en-US/Marketplace/Publishing/Introduction">Introdução</a></li> - <li><a href="https://developer.mozilla.org/en-US/Marketplace/Publishing/Submission_checklist">Checklist de submissão</a></li> - <li><a href="https://developer.mozilla.org/en-US/Marketplace/Publishing/Marketplace_review_criteria" title="An explanation of the criteria an app must meet in order to be published on the Firefox Marketplace">Critério de revisão da Marketplace</a></li> - <li><a href="https://developer.mozilla.org/en-US/Marketplace/Publishing/Marketplace_showcase_criteria">Critério para vitrine da Marketplace</a></li> - <li><a href="https://developer.mozilla.org/en-US/Marketplace/Publishing/Adding_a_subdomain" title="For security reasons, each app must have its own domain (or subdomain) on the Web. This article covers how to go about creating a subdomain for your app.">Adicionando um subdompinio para um app</a></li> - <li><a href="https://developer.mozilla.org/en-US/Marketplace/Publishing/Policies_and_Guidelines">Políticas e Diretrizes</a> - <ol> - <li><a href="https://developer.mozilla.org/en-US/Marketplace/Publishing/Policies_and_Guidelines/Introduction">Introdução</a></li> - <li><a href="https://developer.mozilla.org/en-US/Marketplace/Publishing/Policies_and_Guidelines/Marketplace_screenshot_criteria" title="Some guidelines on how to create an effective screenshot for marketplace submission">Critério de captura de tela Marketplace</a></li> - <li><a href="https://developer.mozilla.org/en-US/Marketplace/Publishing/Policies_and_Guidelines/Privacy_policies" title="Your users' privacy is very important, so you need to develop and adhere to a reasonable privacy policy to engender their trust. This article provides a guide to developing privacy policies.">Política de privacidade</a></li> - <li><a href="https://developer.mozilla.org/en-US/Marketplace/Publishing/Policies_and_Guidelines/Testing_and_troubleshooting">Teste e resolução de problemas de app</a></li> - </ol> - </li> - </ol> - </li> - <li><a href="https://developer.mozilla.org/en-US/Marketplace/Publishing/Submit">Envie seu app</a> - <ol> - <li><a href="https://developer.mozilla.org/en-US/Marketplace/Publishing/Submit/Overview">Visão geral</a></li> - <li><a href="https://developer.mozilla.org/en-US/Marketplace/Publishing/Submit/Sign-in_to_your_developer_account" title="This step-by-step guide will help you successfully submit your app to the Firefox Marketplace.">Passo 1: Entre</a></li> - <li><a href="https://developer.mozilla.org/en-US/Marketplace/Publishing/Submit/Load_your_app">Passo 2: Carregue o app</a></li> - <li><a href="https://developer.mozilla.org/en-US/Marketplace/Publishing/Submit/Enter_your_apps_details">Passo 3: Liste detalhes</a></li> - <li><a href="https://developer.mozilla.org/en-US/Marketplace/Publishing/Submit/Next_steps">Passo 4: Próximos passos</a></li> - <li><a href="https://developer.mozilla.org/en-US/Marketplace/Publishing/Submit/Rating_Your_Content">Passo 5: Avaliação de app</a></li> - <li><a href="https://developer.mozilla.org/en-US/Marketplace/Publishing/Submit/Define_your_team">Passo 6: Definir membros da equipe</a></li> - <li><a href="https://developer.mozilla.org/en-US/Marketplace/Publishing/Submit/View_your_listing">Passo 7: Ver lista</a></li> - <li><a href="https://developer.mozilla.org/en-US/Marketplace/Publishing/Submit/Edit_other_localizations">Passo 8: Editar outras localizações</a></li> - </ol> - </li> - <li><a href="https://developer.mozilla.org/en-US/Marketplace/Publishing/Managing_your_apps">Gerenciando e atualizando apps publicados</a> - <ol> - <li><a href="https://developer.mozilla.org/en-US/Marketplace/Publishing/Managing_your_apps/Introduction_Managing_your_apps">Introdução</a></li> - <li><a href="https://developer.mozilla.org/en-US/Marketplace/Publishing/Managing_your_apps/Status___Versions">Status de seu app</a></li> - <li><a href="https://developer.mozilla.org/en-US/Marketplace/Publishing/Updating_apps" title="Information about how both hosted and packaged app updates are handled, and what you need to do to ensure that your app properly supports updating.">Atualizando apps</a></li> - <li><a href="https://developer.mozilla.org/en-US/Marketplace/Publishing/Managing_your_apps/App_Statistics">Estatísticas do App</a></li> - </ol> - </li> - <li><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Marketplace/Add-on_submission">Submissão de complemento</a> - <ol> - <li><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Marketplace/Add-on_submission">Visão geral da submissão de complemento</a></li> - <li><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Marketplace/Add-on_submission/Review_criteria">Critério de revisão de complemento</a></li> - </ol> - </li> - <li><a href="https://developer.mozilla.org/en-US/Marketplace/APIs">Bibliotecas e APIs</a></li> - <li><a href="https://developer.mozilla.org/en-US/Marketplace/FAQ">FAQ Firefox Marketplace</a></li> -</ol> -</div> diff --git a/files/pt-br/mozilla/marketplace/marketplace_apis/index.html b/files/pt-br/mozilla/marketplace/marketplace_apis/index.html deleted file mode 100644 index fc006758a5..0000000000 --- a/files/pt-br/mozilla/marketplace/marketplace_apis/index.html +++ /dev/null @@ -1,68 +0,0 @@ ---- -title: Firefox Marketplace APIs -slug: Mozilla/Marketplace/Marketplace_APIs -translation_of: Archive/Mozilla/Marketplace/Marketplace_APIs ---- -<div class="summary"> -<p><span id="result_box" lang="pt"><span class="hps">Links para</span> <span class="hps">as principais referências</span> <span class="hps">que abrangem o</span></span><span class="seoSummary">Mozilla's Firefox Marketplace APIs, </span><span id="result_box" lang="pt"><span class="hps">com o qual</span> <span class="hps">você pode manipular</span> <span class="hps">as submissões</span> <span class="hps">de aplicativos</span><span>,</span> <span class="hps">configurar</span> <span class="hps">uma conta de pagamento</span> <span class="hps">de um aplicativo</span><span>,</span> <span class="hps">e muito mais.</span></span></p> -</div> - -<div class="row topicpage-table"> -<div class="section"> -<dl> - <dt><a href="/en-US/docs/Web/Apps/Publishing/Marketplace_utility_library">Biblioteca Utilitária do Marketplace</a></dt> - <dd><span id="result_box" lang="pt"><span class="hps">Para</span> <span class="hps">ajudá-lo a</span> <span class="hps">trabalhar com o</span> <span class="hps">Firefox</span> <span class="hps">mercado</span><span>, nós fornecemos</span> <span class="hps">uma biblioteca</span> <span class="hps">JavaScript</span> <span class="hps">que você</span> <span class="hps">pode</span> <span class="hps">usar em seus</span> <span class="hps">aplicativos</span> <span class="hps">para torná-lo</span> <span class="hps">mais fácil de</span> <span class="hps">lidar com</span> <span class="hps">pagamentos em</span><span>-app</span> <span class="hps">e</span> <span class="hps">verificar</span> <span class="hps">recibos de pagamento</span><span>.</span></span></dd> - <dt><a href="http://firefox-marketplace-api.readthedocs.org/en/latest/topics/submission.html" title="http://firefox-marketplace-api.readthedocs.org/en/latest/topics/submission.html">Submission API</a></dt> - <dd><span id="result_box" lang="pt"><span class="hps">A</span> <span class="hps">API</span> <span class="hps">Submission</span> <span class="hps">permite validar</span> <span class="hps">seu aplicativo,</span> <span class="hps">atualizar</span> <span class="hps">seu aplicativo,</span> <span class="hps">e</span> <span class="hps">buscar</span> <span class="hps">informações sobre os</span> <span class="hps">aplicativos disponíveis</span> <span class="hps">para serem instalados</span><span>.</span></span></dd> - <dt><a href="http://firefox-marketplace-api.readthedocs.org/en/latest/topics/payment.html" title="http://firefox-marketplace-api.readthedocs.org/en/latest/topics/payment.html">Payment API</a></dt> - <dd> - <div id="gt-src-tools"> - <div dir="ltr" style="zoom: 1;"><span id="result_box" lang="pt"><span class="hps">A</span> <span class="hps">API</span> <span class="hps">de pagamento</span> <span class="hps">permite que você faça</span> <span class="hps">coisas como</span> <span class="hps">obter</span> <span class="hps">informações sobre</span> <span class="hps">compras no aplicativo</span> <span class="hps">e obter informações</span> <span class="hps">sobre os preços</span> <span class="hps">para</span> <span class="hps">níveis</span> <span class="hps">vários países.</span></span></div> - </div> - </dd> - <dt><a href="http://firefox-marketplace-api.readthedocs.org/en/latest/topics/overview.html" title="http://firefox-marketplace-api.readthedocs.org/en/latest/topics/overview.html">Outras APIs do Marketplace</a></dt> - <dd><span id="result_box" lang="pt"><span class="hps">A</span> <span class="hps">documentação completa para</span> <span class="hps">as</span> <span class="hps">APIs</span> <span class="hps">de mercado</span> <span class="hps">do Firefox</span><span>.</span></span></dd> -</dl> -</div> - -<div class="section"> -<h5 class="Tools" id="Tools" name="Tools">Tools for app developers</h5> -<ul> - <li><a href="https://marketplace.firefox.com/developers/">Visit Firefox Marketplace Developer Hub</a></li> - <li><a href="/en-US/docs/Mozilla/Firefox_OS/Using_Firefox_OS_Simulator">Firefox OS Simulator</a></li> - <li><a href="/en-US/docs/Apps/App_developer_tools">App developer tools</a></li> -</ul> -<h5 class="Documentation" id="Documentation" name="Documentation">Technology reference documentation</h5> -<div class="twocolumns"> - <ul> - <li><a href="/en-US/docs/Web/CSS">CSS</a></li> - <li><a href="/en-US/docs/DOM">DOM</a></li> - <li><a href="/en-US/docs/Web/HTML">HTML</a></li> - <li><a href="/en-US/docs/JavaScript">JavaScript</a></li> - <li><a href="/en-US/docs/WebAPI">WebAPI</a></li> - <li><a href="/en-US/docs/Web/WebGL">WebGL</a></li> - <li><a href="/en-US/docs/SVG">SVG</a></li> - <li><a href="https://www.mozilla.org/en-US/apps/">Open Web Apps overview site</a></li> - <li><a href="https://wiki.mozilla.org/Apps">Apps project wiki page</a></li> - </ul> -</div> -<h5 class="Community" id="Community" name="Community">Getting help from the community</h5> -<p>If you still aren't sure how to do what you're trying to get done, feel free to join the conversation!</p> -<ul> - <li>Consult the webapps forum: <ul> - <li><a href="https://lists.mozilla.org/listinfo/dev-webapps">Lista de E-mails</a></li> - - - <li><a href="http://groups.google.com/group/mozilla.dev.webapps">grupo de discussão</a></li> - <li><a href="http://groups.google.com/group/mozilla.dev.webapps/feeds">RSS feed</a></li> -</ul> - <ul> - <li>Ask your question on the Open Web Apps IRC channel: <a class="link-irc" href="irc://irc.mozilla.org/openwebapps">#openwebapps</a></li> - </ul> - </li> -</ul> -<p><span class="alllinks"><a href="http://www.catb.org/~esr/faqs/smart-questions.html" rel="external">Don't forget about the <em>netiquette</em>...</a></span></p> -</div> -</div> - -<p> </p> diff --git a/files/pt-br/mozilla/marketplace/opcoes/aplicativos_hospedados/index.html b/files/pt-br/mozilla/marketplace/opcoes/aplicativos_hospedados/index.html deleted file mode 100644 index 6db162bca9..0000000000 --- a/files/pt-br/mozilla/marketplace/opcoes/aplicativos_hospedados/index.html +++ /dev/null @@ -1,69 +0,0 @@ ---- -title: Aplicativos hospedados -slug: Mozilla/Marketplace/Opcoes/Aplicativos_hospedados -translation_of: Archive/Mozilla/Marketplace/Options/Hosted_apps ---- -<div class="summary"> -<p>Um aplicativo hospedado é um aplicativo Open Web que possui todos os recursos (HTML, CSS, Javascript, manifesto do aplicativo etc.) armazenados em um servidor web. Este artigo trata de uma introdução á aplicativos hospedados e possui links para tudo o que você precisa conhecer sobre aplicativos hospedados do ponto de vista do desenvolvedor.</p> -</div> - -<p>Um aplicativo Open Web fornece todo seu conteúdo a partir de um servidor web, da mesma forma que um web site convencional, juntamente com um <a href="https://developer.mozilla.org/en-US/docs/Web/Apps/Manifest">manifesto do aplicativo</a> no diretório. O manifesto do aplicativo fornece detalhes do aplicativo, tal como sua descrição, icones usados para identificar o aplicativo instalado etc. Os detalhes no manifesto do aplicativo são usados para instalar o aplicativo em dispositivos com Firefox OS, <a href="https://developer.mozilla.org/en-US/Marketplace/Options/Open_web_apps_for_android">dispositivos Android</a> e <a href="https://developer.mozilla.org/en-US/Marketplace/Options/Open_web_apps_for_desktop">desktops</a>. Uma vez instalado, o aplicativo carrega o conteúdo dinâmicamente a partir do servidor web, e está habilitado para acessar outros recursos nas internet, tal como um banco de dados.</p> - -<p>De cordo com o <a href="/en-US/Firefox_OS/Security/Security_model#App_Security">modelo de segurança do Firefox OS</a>, aplicativos hospedados são definicos como aplicativos web. Isso significa que eles não são habilitados a usar <a href="https://developer.mozilla.org/en-US/Apps/Build/App_permissions">APIs de permissão privilegiada</a>: para fazer uso destas APIs o aplicativo deve ser um <a href="/en-US/Marketplace/Options/Packaged_apps">aplicativo empacotado</a>.</p> - -<div class="note"> -<p><strong>Observe:</strong> O Firefox Marketplace suporta aplicativos hospedados pagos somente para Firefox OS e aplicativos hospedados gratuitos para Firefox OS, Firefox para Android e Firefox para Desktop. Suporte para aplicativos pagos para todas as plataformas está em desenvolvimento.</p> -</div> - -<h2 id="Opções_para_hospedar_seu_aplicativo">Opções para hospedar seu aplicativo</h2> - -<p>Onde hospedar seus aplicativos é com você. Se você não escolheu uma solução de hospedagem, esta sessão descreve duas das mais comuns opções utilizadas que valem a pena considerar.</p> - -<h3 id="GitHub">GitHub</h3> - -<p>Se o conteúdo do seu Open Web App é estático (HTML/CSS/Javascript, sem processamento server-side), <a class="external external-icon" href="http://pages.github.com" rel="external">páginas no GitHub</a> é uma boa opção de hospedagem. Irá hospedar seu manifesto no <a href="https://developer.mozilla.org/en-US/Apps/Developing/Manifest#Serving_from_GitHub">correto formato MIME </a>se você der a extensão <code>.webapp</code>.</p> - -<h3 id="Soluções_genéricas_de_hospedagem">Soluções genéricas de hospedagem</h3> - -<p>Para um plicativo Open Web dinâmico, aqueles que requerem processamento server-side, você pode usar alguma solução genérica de hospedagem (como um servidor web que você possua ou tenha acesso a ele). Você vai precisar garantir que o seu servidor oferece os recursos corretos. Uma número de servidores oferecem serviços web que já vêm prontos para as necessidades dos aplicativos hospedados, como <a class="external external-icon" href="http://www.heroku.com" rel="external">Heroku</a>. <a class="external external-icon" href="http://code.google.com/appengine" rel="external">Google App Engine</a> ou <a class="external external-icon" href="http://aws.amazon.com/application-hosting" rel="external">Amazon App Hosting</a>.</p> - -<div class="note"> -<p><strong>Note</strong>: Installable open web apps used to have a "single app per origin" security policy, but this was lifted as of Firefox 34/Firefox OS 2.1 (read <a href="https://developer.mozilla.org/en-US/Apps/Build/installable_apps_for_Firefox_OS/App_manifest_FAQ#Can_I_have_more_than_one_app_at_my_origin.3F">this FAQ entry</a> for more information). If you still need to support older versions, consider hosting different apps (e.g. a test and live version) at separate origins; one strategy is to <a href="/en-US/Marketplace/Publishing/Adding_a_subdomain">create different subdomains</a> for your apps, or you could test it using <a href="/en-US/docs/Tools/WebIDE">WebIDE</a>. See the <a href="https://developer.mozilla.org/en-US/docs/Web/Apps/FAQs/About_app_manifests">FAQs about apps manifests</a> for more information on origins.</p> -</div> - -<h2 id="Testing_hosted_apps">Testing hosted apps</h2> - -<p>To install a hosted app into a Firefox OS Simulator or onto a device for testing purposes, see <a href="https://developer.mozilla.org/en-US/Firefox_OS/Using_the_App_Manager">Using the App Manager</a>. Alternatively, you can install it on to a device from a Web server by following the steps described in <a href="https://developer.mozilla.org/en-US/Marketplace/Options/Self_publishing">Publishing apps yourself</a>.</p> - -<h2 id="Publishing_hosted_apps">Publishing hosted apps</h2> - -<p>You have two options for publishing hosted apps: on Firefox Marketplace or self-publishing.</p> - -<h3 id="Publishing_on_Firefox_Marketplace">Publishing on Firefox Marketplace</h3> - -<p>The process for submitting a hosted app to Firefox Marketplace is described in the <a href="https://developer.mozilla.org/en-US/Marketplace/Publishing">App Publishing</a> section.</p> - -<p>When you submit your hosted app, the Marketplace generates a new manifest called the <strong>mini-manifest</strong> that is based on the app manifest on your hosted app's Web server. When a user installs your app, the mini-manifest is passed to the <a href="https://developer.mozilla.org/en-US/docs/Web/API/Apps.install"><code>Apps.install()</code></a> function to install the app. The mini-manifest exists for installation and update purposes and isn't used when your app runs.</p> - -<h3 id="Publishing_yourself">Publishing yourself</h3> - -<p>It's possible to publish hosted apps outside Firefox Marketplace, on your own web server. Details are provided in <a href="https://developer.mozilla.org/en-US/Marketplace/Options/Self_publishing">Publishing apps yourself</a>.</p> - -<h2 id="Updating_hosted_apps">Updating hosted apps</h2> - -<p>Updating of hosted apps happens in two ways:</p> - -<ul> - <li>changes made on the app's Web server are presented to users the next time they run the app.</li> - <li>changes to device content controlled by the mini-manifest, such as the app's icon or name, are updated when a new version of the app is submitted to Firefox Marketplace.</li> -</ul> - -<p>For information on updating apps in Firefox Marketplace, see <a href="https://developer.mozilla.org/en-US/docs/Web/Apps/Updating_apps">Updating apps</a>. For self-published apps see <a href="https://developer.mozilla.org/en-US/Marketplace/Options/Self_publishing">Publishing apps yourself</a>.</p> - -<h2 id="See_also">See also</h2> - -<ul> - <li><a href="https://developer.mozilla.org/en-US/Firefox_OS/Security/Security_model">Firefox OS security Overview</a></li> - <li><a href="https://developer.mozilla.org/en-US/Firefox_OS/Security/Application_security">Application Security</a></li> - <li><a class="external external-icon" href="https://github.com/robnyman/Firefox-OS-Boilerplate-App" title="https://github.com/robnyman/Firefox-OS-Boilerplate-App">Firefox OS Boilerplate App</a></li> -</ul> diff --git a/files/pt-br/mozilla/marketplace/opcoes/index.html b/files/pt-br/mozilla/marketplace/opcoes/index.html deleted file mode 100644 index e990cd6ad5..0000000000 --- a/files/pt-br/mozilla/marketplace/opcoes/index.html +++ /dev/null @@ -1,19 +0,0 @@ ---- -title: Suas opções de publicação -slug: Mozilla/Marketplace/Opcoes -tags: - - needsRevision -translation_of: Archive/Mozilla/Marketplace/Options/Introduction ---- -<p><a href="/en-US/Marketplace/Options/Introduction">Nesta seção</a> você descobrirá:</p> -<ul> - <li>os formatos em que você pode entregar Aplicativos Web Abertos ‐ Como aplicativos <a href="/en-US/Marketplace/Options/Packaged_apps">empacotados</a> ou <a href="/en-US/Marketplace/Options/Hosted_apps">hospedados</a> ‐ assim como os deltalhes de <a href="/en-US/Marketplace/Options/Packaged_or_hosted_">como escolher entre esses formatos</a>.</li> - <li>como as ferramentas de <a href="/en-US/Marketplace/Options/Open_web_apps_for_android">Aplicativos Web Abertos para Android</a> e <a href="/en-US/Marketplace/Options/Open_web_apps_for_desktop">Aplicativos Web Abertos para Desktop</a> portam seus aplicativos para dispositivos Androide computadores Mac/Windows/Linux.</li> - <li>informação sobre escolher entre esses dispositivos com diferentes quantias de memória.</li> - <li>suas opções para <a href="/en-US/Marketplace/Options/Self_publishing">publicar aplicativos por si próprio</a>, fora do Marketplace.</li> - <li>como você pode <a href="/en-US/Marketplace/Options/Creating_a_store">criar seu próprio Marketplace</a>.</li> -</ul> -<div class="warning"> - <p>O conteúdo nesta seção ainda está sob desenvolvimento.</p> -</div> -<p> </p> diff --git a/files/pt-br/mozilla/marketplace/opcoes/introdução/index.html b/files/pt-br/mozilla/marketplace/opcoes/introdução/index.html deleted file mode 100644 index 8b6d60ab93..0000000000 --- a/files/pt-br/mozilla/marketplace/opcoes/introdução/index.html +++ /dev/null @@ -1,27 +0,0 @@ ---- -title: Introdução — Suas opções de publicação -slug: Mozilla/Marketplace/Opcoes/Introdução -translation_of: Archive/Mozilla/Marketplace/Options/Introduction ---- -<div class="summary"> -<p>O Firefox Marketplace possui um canal que permite que você possa publicar seus aplicativos e fazer com que eles sejam mais facilmente localizados por usuários do Firefox OS, Firefox para Android e Firefox para Desktop. De toda forma, esta não é a única opção que você tem para disponibilizar seus aplicativos. Nesta sessão, você conhecerá os formatos com os quais você pode entregar seus aplicativos, o mecanismo no navegador Firefox para habilitar seus aplicativos para dispositivos Android e PCs, opções para publicação de seus próprios aplicativos e formas de criar sua própria Marketplace personalizada.</p> -</div> - -<h2 id="Suas_opções_de_publicação">Suas opções de publicação</h2> - -<dl> - <dt><a href="/en-US/Marketplace/Options/Packaged_apps">Aplicativos empacotados</a></dt> - <dd>Conheça o método preferido para fornecer seus aplicativos - que oferece acesso à privilégios e APIs de segurança.</dd> - <dt><a href="/en-US/Marketplace/Options/Hosted_apps">Aplicativos hospedados</a></dt> - <dd>Descubra como fazer aplicativos disponíveis à partir de um servidor, enquanto dá aos usuários o benefício de um aplicativo instalado.</dd> - <dt><a href="/en-US/Marketplace/Options/Packaged_or_hosted_">Empacotado ou hospedado?</a></dt> - <dd>Use essa checklist para determinar qual formato de entrega cairia bem nos seus aplicativos.</dd> - <dt><a href="/en-US/Marketplace/Options/Open_web_apps_for_android">Open Web Apps para Android</a></dt> - <dd>Seus aplicativos do Firefox Marketplace são agora entregues para usuários Android em uma APK, permitindo que instalem-os e usem seus aplicativos assim como qualquer outro aplicativo Android. Descubra como fazer isto.</dd> - <dt><a href="/en-US/Marketplace/Options/Open_web_apps_for_desktop">Open Web Apps para Desktop</a></dt> - <dd>Seus aplicativos do Open Web Apps são agora intalados em computadores Windows, Mac e Linux pelo navegador Firefox para Desktop, permitindo que os usuários executem seus aplicativos assim como qualquer outro aplicativo desktop. Descubra como fazer isto.</dd> - <dt><a href="/en-US/Marketplace/Options/Self_publishing">Publicando aplicativos você mesmo</a></dt> - <dd>Ocasionalmente você pode querer publicar seu aplicativo fora da Firefox Marketplace, talvez para torná-lo mais disponível para teste ou distribuição em sua empresa. Descubra as opções que você tem e como implementá-las.</dd> - <dt><a href="/en-US/Marketplace/Options/Creating_a_store">Criando sua própria Marketplace</a></dt> - <dd>Mesmo que você publique seus aplicativos no Firefox Marketplace, ou publicando sozinho, você tem um número de opções para apresentá-los em uma loja. Esta sessão fala destas opções e como implementá-las.</dd> -</dl> diff --git a/files/pt-br/mozilla/marketplace/publishing/criterio-de-revisao-loja-de-aplicativos/index.html b/files/pt-br/mozilla/marketplace/publishing/criterio-de-revisao-loja-de-aplicativos/index.html deleted file mode 100644 index 80851ac85c..0000000000 --- a/files/pt-br/mozilla/marketplace/publishing/criterio-de-revisao-loja-de-aplicativos/index.html +++ /dev/null @@ -1,120 +0,0 @@ ---- -title: Critérios de Revisão Marketplace -slug: Mozilla/Marketplace/Publishing/criterio-de-revisao-loja-de-aplicativos -tags: - - App Revisor - - Apps - - Marketplace - - Mobile - - Revisão - - Segurança - - l1on -translation_of: Archive/Mozilla/Marketplace/Publishing/Marketplace_review_criteria ---- -<div class="summary"> -<p><span id="result_box" lang="pt"><span class="alt-edited">Este artigo descreve o conjunto de requisitos que um aplicativo deve cumprir para ser distribuído através do Firefox Marketplace. Estes requisitos são projetados para equilibrar as necessidades de ambos os usuários e desenvolvedores de aplicativos a partir do Firefox Marketplace. Os desenvolvedores querem requisitos justos, consistentes e não-draconianas que eles podem confiar para construir um negócio online. Por outro lado, os usuários querem garantia de que os aplicativos são seguros, irá trabalhar em seu dispositivo, e que a aplicação irá fazer o que diz que vai fazer. Os requisitos de aplicativos abaixo apontar para o delicado equilíbrio entre essas necessidades.</span></span></p> -</div> - -<p><span id="result_box" lang="pt"><span class="alt-edited">Aqui estão expectativas dos revisores do que é ou não é app da Mozilla :</span></span></p> - -<ul> - <li><span id="result_box" lang="pt"><span class="alt-edited">Critérios serão aplicados de maneira justa, compassiva e consistente. O processo de revisão do app não se destina a ser um gatekeeper, mas sim um ponto de contato confiável que fornece feedback para ajudar os desenvolvedores a serem mais bem sucedido.</span></span></li> - <li><span id="result_box" lang="pt"><span class="alt-edited">Os revisores não são uma equipe de QA! Durante o processo de revisão, alguém vai olhar sobre o manifesto do aplicativo e passar alguns minutos exercitando o aplicativo como um usuário normal faria.</span></span></li> - <li><span id="result_box" lang="pt"><span class="alt-edited">Se um aplicativo falhar na avaliação, será dado ao desenvolvedor uma explicação clara dos problemas encontrados, os passos para reproduzir e, quando possível, o revisor deve apontar o desenvolvedor na direção certa, fornecendo links para documentação de apoio relevante ou fazer recomendações sobre a mudança que precisa ser feita.</span></span></li> - <li><span id="result_box" lang="pt"><span class="alt-edited">Os revisores não fazem nenhum julgamento sobre a forma como um aplicativo parece, apenas em como o aplicativo funciona. Por exemplo, um aplicativo com um parágrafo do texto em vermelho sobre um fundo laranja não seria rejeitado porque é feio, mas pode ser rejeitado se não for legível.</span></span></li> - <li><span id="result_box" lang="pt"><span class="alt-edited">Nós sempre damos aos desenvolvedores o benefício da dúvida. Se não tiver certeza se um aplicativo deve ser rejeitado, os revisores vão fazer perguntas antes de emitir uma rejeição. Aplicativos não será (conscientemente) rejeitado devido a questões de plataforma que estão fora do controle do colaborador; no entanto, pode recusar a aprovação se não podemos obter o aplicativo para trabalhar.</span></span></li> -</ul> - -<h2 id="Segurança">Segurança</h2> - -<p><span id="result_box" lang="pt"><span>Todos os detalhes da</span> <span>arquitetura de segurança</span> <span>app</span> <span>estão disponíveis</span> <span>aqui:</span></span> <a href="https://wiki.mozilla.org/Apps/Security">https://wiki.mozilla.org/Apps/Security</a></p> - -<ul> - <li><span id="result_box" lang="pt"><span>O</span> <span>manifesto do aplicativo</span> <span>deve</span> <span>ser servido</span> <span>a partir da</span> <span>mesma origem que</span> <span>o aplicativo</span><span>.</span></span></li> - <li>The app manifest must be served a <code>Content-Type</code> header of <code>application/x-web-app-manifest+json</code>.</li> - <li><span id="result_box" lang="pt"><span>Aplicativos</span> <span>não devem usar</span> <span>redirecionamentos</span> <span>ou</span> <span>iframe</span> <span>para carregar o conteúdo</span> <span>que o desenvolvedor</span> <span>não está autorizado a</span> <span>usar.</span></span></li> - <li><span id="result_box" lang="pt"><span class="alt-edited">Permissões solicitadas deve ser especificado no manifesto do aplicativo com a descrição do motivo pelo qual a permissão é necessária.</span></span></li> - <li><span id="result_box" lang="pt"><span class="alt-edited">Aplicativos do <a href="/en-US/Apps/Build/Manifest#type">tipo</a> privilegiado passará por outras verificações, incluindo a revisão do código, devido ao potencial para atividade maliciosa e perda de dados do usuário com APIs privilegiados.</span></span></li> - <li><span id="result_box" lang="pt"><span class="alt-edited">A Política de Segurança de Conteúdo <a href="/en-US/docs/Security/CSP/Introducing_Content_Security_Policy">(CSP)</a> definido no manifesto do aplicativo determina o código que aplicativo pode fazer. O padrão, se não especificado, para aplicações não-privilegiados é o mesmo que qualquer site; aplicativos do <a href="/en-US/Apps/Build/Manifest#type">tipo </a>privilegiado tem um <a href="/en-US/Marketplace/Options/Packaged_apps#Privileged_app">padrão mais restritivo</a>. O relatório de validação criado em submissão ao Firefox Marketplace vai indicar violações CSP potenciais em seu app - embora tenha cuidado falso-positivos e uso em partes das bibliotecas 3rd partido que você não usa.</span></span></li> -</ul> - -<h2 id="Privacidade">Privacidade</h2> - -<p> </p> - -<ul> - <li><span id="result_box" lang="pt"><span>O desenvolvedor deve</span> <span>conectar-se a</span> <span>uma política de privacidade</span> <span>durante o envio</span><span>,</span> <span>mas não existem</span> <span>requisitos para</span> <span>o formato e conteúdo</span> <span>desta política de privacidade</span><span>.</span> <span>Sinta-se livre</span> <span>para usar nosso</span> <span>modelo de <a href="https://github.com/flamsmark/privacy-policy-template">política de privacidade</a></span><a href="https://github.com/flamsmark/privacy-policy-template"> </a><span><a href="https://github.com/flamsmark/privacy-policy-template">privacidade</a>.</span> <span>Também dê uma</span> <span>olhada em nossas</span> <a href="https://developer.mozilla.org/en-US/Marketplace/Publishing/Privacy_policies">diretrizes de política de privacidade.</a></span></li> -</ul> - -<h2 id="Conteúdo">Conteúdo</h2> - -<ul> - <li><span id="result_box" lang="pt"><span class="alt-edited">Quaisquer aplicativos que violam nossas Diretrizes de conteúdo a seguir não são permitidos. Se você acha que tem um caso extremo, por favor, pergunte a equipe de revisão de esclarecimento, mesmo se o aplicativo ainda não esteja pronto para ser submetido. Queremos ajudá-lo a ficar no caminho certo, em vez de investir tempo de desenvolvimento em conteúdo que será rejeitada.</span></span></li> - <li><span id="result_box" lang="pt"><span>A partir de janeiro</span> <span>de 2014,</span> <span>todos os aplicativos</span> <span>devem</span> <span>receber uma classificação</span> <span>da</span> <span>Coalizão Internacional de Classificação</span> <span>(IARC</span><span>)</span><span>.</span> <span>Para obter esta</span> <span>classificação</span><span>, vamos</span> <span>encaminhá-lo para</span> <span>um breve questionário</span> <span>durante o</span> <span>processo de submissão,</span> <span>e você vai</span> <span>receber a</span> <span>classificação</span> <span>imediatamente.</span> <span>Mais informações sobre</span> <span>o processo de</span> <span>classificação</span> <span>está disponível <a href="https://developer.mozilla.org/en-US/Marketplace/Submission/Rating_Your_Content">aqui</a>.</span></span></li> - <li><span id="result_box" lang="pt"><span class="alt-edited">Imagens e descrições apresentadas ao Firefox Marketplace deve representar com precisão o aplicativo. Você pode incluir 1-2 imagens "marketing" que mostram a compatibilidade, comparar características, ou outra forma, gerar interesse, mas deve haver pelo menos uma captura de tela do aplicativo em ação, de modo que os usuários podem visualizar o que eles estão realmente recebendo. Se uma das suas imagens é uma tela inicial ou lançamento, você também deve incluir uma imagem da parte funcional de sua aplicação.</span></span></li> - <li><span id="result_box" lang="pt"><span>No manifesto do aplicativo</span><span>, as<a href="/en-US/docs/Web/Apps/Manifest#locales"> chaves de localidade</a></span> <span>deve coincidir com as</span> <span>localizações</span> <span>que</span> <span>seu aplicativo</span> <span>suporta.</span> <span>Ao fornecer</span> <span>uma chave</span> <span>de localidade</span> <span>em polaco</span><span>, os usuários vão</span> <span>esperar que o seu</span> <span>app</span> <span>para estar disponível</span> <span>nesse idioma.</span></span></li> - <li><span id="result_box" lang="pt"><span>O</span> <span>ícone do aplicativo</span> <span>deve seguir o</span> <span>guia de estilo</span> <a href="https://www.mozilla.org/en-US/styleguide/products/firefox-os/icons/">ícones de aplicativos Firefox OS</a><span>.</span> <span>Apenas</span> <span>um ícone de</span> <span>128 x 128</span> <span>é obrigatório, mas</span> <span>recomendamos também</span> <span>um ícone de</span> <span>512</span> <span>x 512</span> <span>também (</span><span>para mais</span> <span>detalhes, consulte</span> <span>a <a href="/en-US/Apps/Build/Icon_implementation_for_apps#Firefox_OS">implementação Ícone para apps.</a></span><span>) Note que</span> <span>os ícones podem</span> <span>ser redondo</span><span>,</span> <span>quadrado arredondado</span> <span>canto</span><span>,</span> <span>ou quadrado</span><span>,</span> <span>de acordo com o</span> <span>guia de estilo</span> <span>.</span></span></li> -</ul> - -<h3 id="Diretrizes_do_Conteúdo"><strong>Diretrizes do Conteúdo</strong></h3> - -<p><span id="result_box" lang="pt"><span class="alt-edited">Esta lista descreve os tipos de conteúdo que são inadequados para o Firefox Marketplace. Esta lista é ilustrativa, não é definitivo, e pode ser atualizado. Se um pedido for encontrado para ser uma violação dessas diretrizes de conteúdo, Mozilla tem o direito de remover imediatamente o aplicativo do Firefox Marketplace.</span></span></p> - -<ul> - <li><span id="result_box" lang="pt"><span>Nenhum</span> <span>material pornográfico</span> <span>obsceno ou</span> <span>representações gráficas de</span> <span>sexualidade e violência</span><span>.</span></span></li> - <li><span id="result_box" lang="pt"><span>Nenhum conteúdo</span> <span>que infrinja</span> <span>os direitos de ninguém</span><span>, incluindo a propriedade</span> <span>intelectual ou outros</span> <span>direitos de propriedade ou</span> <span>direitos</span> <span>de privacidade ou publicidade</span><span>.</span></span></li> - <li><span id="result_box" lang="pt"><span>Nenhum conteúdo</span> <span>que é projetado para</span> <span>prejudicar</span> <span>Mozilla</span> <span>ou</span> <span>usuários</span> <span>(tais como</span> <span>códigos maliciosos</span><span>, vírus</span><span>, spyware</span> <span>ou malware</span><span>)</span><span>.</span></span></li> - <li><span id="result_box" lang="pt"><span>Nenhum conteúdo</span> <span>que seja ilegal ou</span> <span>promova atividades ilegais</span><span>.</span></span></li> - <li><span id="result_box" lang="pt"><span class="alt-edited">Nenhum conteúdo que é deprecivo, enganosa, fraudulenta ou é projetado para phish ou realizar outro roubo de identidade.</span></span></li> - <li><span class="short_text" id="result_box" lang="pt"><span class="alt-edited">Nenhum conteúdo que promova jogos de azar.</span></span></li> - <li><span id="result_box" lang="pt"><span>Nenhum</span> <span>conteúdo que</span> <span>engaja na</span> <span>propaganda de produtos</span> <span>ou serviços</span> <span>ilegais ou</span> <span>controladas.</span></span></li> - <li>Nenhum <span class="short_text" id="result_box" lang="pt"><span>conteúdos que exploram crianças</span><span>.</span></span></li> - <li><span id="result_box" lang="pt"><span>Nenhum conteúdo</span> <span>que degrada</span><span>,</span> <span>intimida</span><span>,</span> <span>incite à violência</span> <span>contra</span> <span>ou</span> <span>incentiva</span> <span>ação</span> <span>prejudicial</span> <span>contra alguém</span> <span>ou um grupo</span> <span>com base na idade</span><span>, sexo, raça</span><span>,</span> <span>etnia, nacionalidade</span><span>, religião, orientação</span> <span>sexual,</span> <span>deficiência, religião</span><span>, localização geográfica</span> <span>ou</span> <span>outra categoria protegida</span> <span>ou constitua</span> <span>discurso de ódio</span><span>.</span></span></li> - <li><span id="result_box" lang="pt"><span>Nenhum</span> <span>conteúdo que</span> <span>engana</span> <span>um usuário</span> <span>a tomar uma decisão</span> <span>de compra.</span></span></li> -</ul> - -<h2 id="Funcionalidade">Funcionalidade</h2> - -<p><span id="result_box" lang="pt"><span class="alt-edited">O revisor deve ser capaz de realizar primários recursos anunciados pelo aplicativo. Falhas de cosméticos e inconvenientes menores serão relatados para o desenvolvedor, mas não vai impedir que um aplicativo seja aprovado.</span></span></p> - -<ul> - <li><span id="result_box" lang="pt"><span>O aplicativo</span> <span>não deve comprometer</span> <span>o desempenho e</span> <span>estabilidade do sistema.</span></span></li> -</ul> - -<h2 id="Usuabilidade">Usuabilidade</h2> - -<p><span id="result_box" lang="pt"><span>elementos de navegação</span><span>, tais como botões</span> <span>e links,</span> <span>deve ser fácil de</span> <span>clique</span> <span>ou toque</span><span>.</span></span></p> - -<ul> - <li><span id="result_box" lang="pt"><span>O desenvolvedor</span> <span>deve fazer uma</span> <span>tentativa razoável</span> <span>para otimizar o</span> <span>layout do</span> <span>aplicativo para</span> <span>a plataforma de destino</span><span>.</span> <span>O</span> <span>intuito desta exigência</span> <span>é pegar</span> <span>falhas</span> <span>óbvias</span><span>, tais como</span><span>:</span></span> - - <ul> - <li><span id="result_box" lang="pt"><span>Um aplicativo</span> <span>apresentado</span> <span>para celular</span> <span>que é</span><span>, obviamente,</span> <span>um site</span> <span>desktop.</span></span></li> - <li><span id="result_box" lang="pt"><span class="alt-edited">Um aplicativo que muito obviamente não se ajusta para preencher o espaço disponível na tela (imagine um aplicativo de 320x480, que ocupa apenas no canto superior em um tablet, com o resto da tela em branco. Isso certamente não se destina!)</span></span></li> - </ul> - </li> - <li><span id="result_box" lang="pt"><span>O aplicativo</span> <span>deve implementar</span> <span>seu próprio método de</span> <span>navegação</span> <span>e não depender do navegador Chrome</span><span> ou</span> <span>um botão de hardware</span> <span>de volta</span><span>, que</span> <span>não estará presente</span> <span>em todos os dispositivos</span></span> .</li> - <li><span id="result_box" lang="pt"><span>Por exemplo,</span> <span>um aplicativo</span> <span>será rejeitado</span> <span>se o revisor</span> <span>navega</span> <span>em algum lugar</span> <span>dentro do aplicativo</span> <span>e não</span> <span>é capaz de</span> <span>navegar de volta</span><span>.</span> <span>Apps não</span> <span>são necessários para implementar</span> <span>uma barra de botões</span> <span>comum</span> <span>para</span> <span>aplicativos nativos</span><span>.</span></span></li> - <li><span lang="pt"><span>Em</span> <span>v1.1</span> <span>Firefox</span> <span>OS</span> <span>e maior</span><span>, você pode</span> <span>adicionar a propriedade</span> <span>manifesto</span> <span>chrome</span> <span>para adicionar</span> <span>controles de navegação</span> <span>mínimas.</span></span> </li> -</ul> - -<h2 id="Política_de_Bloqueamentos">Política de Bloqueamentos</h2> - -<p><span id="result_box" lang="pt"><span class="alt-edited">Nós esperamos que nós nunca tem que usá-lo, mas nós nos reservamos o direito de remover ("lista de bloqueio") qualquer aplicativo publicado que é encontrado mais tarde para violar quaisquer requisitos de segurança, de privacidade ou conteúdo, ou aplicativos que degradam seriamente sistema ou o desempenho da rede. Os desenvolvedores serão informados sobre a situação antes que um aplicativo é enviado a lista de bloqueios, vai ser assumido como sendo um bom cidadão a menos que tenhamos provas específicas em contrário, e receberão assistência integral da equipe de revisão app para comunicar o que está acontecendo e obter o problema resolvido. Os exemplos específicos de situações em que se justifica bloqueamento incluem:</span></span></p> - -<ul> - <li>Phishing</li> - <li>Spamming</li> - <li><span id="result_box" lang="pt"><span>Alterar</span> <span>o conteúdo de</span> <span>filhotes de cachorro</span> <span>v1.0</span> <span>para</span> <span>Brutal</span> <span>Violência</span> <span>v1.0</span> <span>(</span><span>sem atualizar</span> <span>a classificação de</span> <span>conteúdo)</span></span></li> - <li><span id="result_box" lang="pt"><span>mau comportamento</span> <span>grave de</span> <span>aplicativo</span> <span>para uma</span> <span>grande porcentagem de usuários</span> <span>-</span> <span>desempenho do telefone</span> <span>degradante</span><span>,</span> <span>causando</span> <span>reinicializações</span><span>, causando</span> <span>perda de dados</span> <span>do usuário</span><span>, etc.</span><span>, onde</span> <span>os usuários não podem</span> <span>dizer que é</span> <span>por causa do</span> <span>app</span> <span>e onde não</span> <span>é resolvido</span> <span>com a reinicialização do</span> <span>dispositivo.</span></span></li> - <li><span id="result_box" lang="pt"><span>Um aplicativo</span> <span>que está sendo</span> <span>usado para</span> <span>ataques na rede</span><span>, como</span> <span>uma negação</span> <span>de serviço distribuída</span> <span>(DDoS</span><span>)</span><span>.</span></span></li> -</ul> - -<h2 id="Mais_Informações">Mais Informações</h2> - -<p><span id="result_box" lang="pt"><span>Os seguintes recursos fornecem</span> <span>mais informações sobre</span> <span>o processo de revisão</span> <span>e de aplicativos</span> <span>revisores:</span></span></p> - -<ul> - <li><a href="https://wiki.mozilla.org/Marketplace/Reviewers/Apps/Testing">Critérios da Revisão de App</a> — <span id="result_box" lang="pt"><span>Esta página descreve</span> <span>os testes</span> <span>que os revisores</span> <span>de aplicativos</span> <span>irá realizar</span> <span>em</span> <span>seus aplicativos</span></span></li> - <li><a href="https://wiki.mozilla.org/Marketplace/Reviewers/Apps">App reviewers</a> — <span id="result_box" lang="pt"><span>como contactar</span> <span>a equipa de revisão</span> <span>app</span> <span>e envolver-se</span> <span>a avaliar</span> <span>aplicativos</span></span></li> -</ul> diff --git a/files/pt-br/mozilla/marketplace/publishing/index.html b/files/pt-br/mozilla/marketplace/publishing/index.html deleted file mode 100644 index e2b172a388..0000000000 --- a/files/pt-br/mozilla/marketplace/publishing/index.html +++ /dev/null @@ -1,9 +0,0 @@ ---- -title: Publishing -slug: Mozilla/Marketplace/Publishing -tags: - - NeedsTranslation - - TopicStub -translation_of: Archive/Mozilla/Marketplace/Publishing/Introduction ---- -<p>Marketplace publishing</p> diff --git a/files/pt-br/mozilla/marketplace/publishing/opcoes_de_publicacao/index.html b/files/pt-br/mozilla/marketplace/publishing/opcoes_de_publicacao/index.html deleted file mode 100644 index 84bf1dbfc3..0000000000 --- a/files/pt-br/mozilla/marketplace/publishing/opcoes_de_publicacao/index.html +++ /dev/null @@ -1,69 +0,0 @@ ---- -title: Opções de publicação de aplicativos -slug: Mozilla/Marketplace/Publishing/Opcoes_de_publicacao -translation_of: Archive/Mozilla/Marketplace/Options/Self_publishing ---- -<div class="summary"> - <p>Depois de ter terminado o seu aplicativo, você precisa implementá-lo e publicá-lo. Trata-se de torná-lo disponível para os usuários consomem (se eles estão indo para apenas navegar para ele em um browser e usá-lo como uma página web normal, ou baixá-lo e instalá-lo em um dispositivo (como um telefone Firefox OS), permitindo que as pessoas sei que está disponível, e fornecer informações de apoio, tais como instruções de uso e recursos de ajuda. Este artigo analisa brevemente as opções disponíveis para você.</p> -</div> -<h2 id="Publishing_on_the_Firefox_Marketplace">Publishing on the Firefox Marketplace</h2> -<p>O <a href="https://marketplace.firefox.com/" title="/en-US/docs/Web/Apps/Publishing/Submitting_an_app">Firefox Marketplace</a> é a nossa própria loja de aplicativos dedicados para a distribuição de aplicativos gratuitos e pagos. Apresentação de um aplicativo para o Firefox <a href="/en-US/docs/Web/Apps/Publishing/Submitting_an_app">Aplicativo para o Firefox Marketplace</a> é um processo simples, que envolve carregar o aplicativo em si, mais em torno da informação, e esperando por ele para passar por nosso processo de revisão completa para ter certeza que é de alta qualidade e não malicioso. Apresentar ao Firefox mercado também confere outras vantagens, como aumento da publicidade, não há necessidade de implementar APIs especiais em seu próprio Web site, bem como a possibilidade de publicação de aplicativos pagos mais facilmente. Você pode enviar os aplicativos hospedados e aplicativos empacotados para o Firefox Marketplace.</p> -<p> </p> -<h3 id="Hosted_apps">Hosted apps</h3> -<p>A hosted app is basically an app hosted on a web server just like a regular web page. If you want to let people install a hosted app straight from the site, you must <a href="/en-US/Apps/Developing/JavaScript_API">implement some JavaScript code</a> on your Web site to manage installing and updating your app into users' browsers, and make sure your app code includes a valid manifest file. Please see our writeups of <a href="/en-US/docs/Web/Apps/Introduction_to_open_web_apps#Manifest" title="/en-US/docs/Web/Apps/Introduction_to_open_web_apps#Manifest">manifest files</a> and <a href="/en-US/docs/Web/Apps/Introduction_to_open_web_apps#Install_API_functionality" title="/en-US/docs/Web/Apps/Introduction_to_open_web_apps#Install_API_functionality">Install API functionality</a> for how simple these steps are to implement.</p> -<p>Where you host the app is really up to you, but the two options listed below are probably the most common and easiest.</p> -<h4 id="GitHub">GitHub</h4> -<p>If the Web app is purely static (HTML/CSS/JavaScript, but no server-side processing), <a href="http://pages.github.com" rel="external">GitHub Pages</a> is a solid hosting option. It will serve your manifest with the <a href="/en-US/Apps/Developing/Manifest#Serving_from_GitHub">correct MIME type</a> if you give it a <code>.webapp</code> extension.</p> -<h4 id="Generic_hosting_solutions">Generic hosting solutions</h4> -<p>For dynamic websites, use a generic hosting option (like a Web server you may already own or have access to) with the right capabilities or a hosting provider specifically tailored to the needs of your app, like <a href="http://www.heroku.com" rel="external">Heroku</a> or <a href="http://code.google.com/appengine" rel="external">Google App Engine</a>.</p> -<div class="note"> - <p><strong>Note</strong>: Installable open web apps have a "single app per origin" security policy; basically, you can't host more than one installable app per origin. This makes testing a bit more tricky, but there are still ways around this, such as creating different sub-domains for apps, testing them using the Firefox OS Simulator, or testing the install functionality on Firefox Aurora/Nightly, which allow installable web apps to install on the desktop. See <a href="/en-US/docs/Web/Apps/FAQs/About_app_manifests">FAQs about apps manifests</a> for more information on origins.</p> -</div> -<h3 id="Packaged_apps">Packaged apps</h3> -<p>A packaged app is an Open Web App that has all of its resources (HTML, CSS, JavaScript, app manifest, and so on) contained in a zip file, instead of having its resources on a Web server. A packaged app is simply a zip file with the <a href="https://developer.mozilla.org/en-US/docs/Web/Apps/Manifest">app manifest</a> in its root directory. The manifest must be named <code>manifest.webapp</code>.</p> -<p>One difference from a hosted app is that a packaged app must specify a <code><a href="https://developer.mozilla.org/en-US/docs/Web/Apps/Manifest#launch_path">launch_path</a></code> in the manifest, whereas it's an optional manifest field for a hosted app. For more information, check out our <a href="/en-US/docs/Web/Apps/Publishing/Packaged_Apps" title="/en-US/docs/Web/Apps/Publishing/Packaged_Apps">Packaged Apps</a> article.</p> -<h2 id="Aplicações_de_auto-publicação">Aplicações de auto-publicação</h2> -<p>Você também pode optar por aplicações de auto-publicar. Para aplicativos hospedados, este envolve apenas colocá-los em hospedagem na web, como detalhado acima.<br> - <br> - Você pode auto-publicar um aplicativo em pacote por hospedá-lo em um servidor, juntamente com um mini-manifesto no mesmo diretório que identifica o aplicativo e é usado no processo de instalação. Vamos percorrer este processo:</p> -<ol> - <li>Tenha arquivo zip do seu aplicativo em pacote disponíveis e dar-lhe o nome <code>package.zip</code>. Este arquivo contém todos os arquivos de recursos do aplicativo, incluindo o manifesto.</li> - <li>Crie um arquivo chamado <code>package.manifest</code> com o conteúdo abaixo. Este é um mini-manifesto usado para fins de instalação aplicativo embalados. Não é o manifesto principal do seu aplicativo que está dentro do arquivo zip. - <pre class="brush: js">{ - "name": "My sample app", - "package_path" : "http://my-server.com/my-app-directory/my-app.zip", - "version": "1", - "developer": { - "name": "Chris Mills", - "url": "http://my-server.com" - } -}</pre> - </li> - <li>Create a file named <code>index.html</code> with the following contents. This contains sample JavaScript that calls the packaged app (<a href="/en-US/docs/Web/API/Apps.installPackage"><code>installPackage()</code></a>) and callbacks for success and failure notification. - <pre class="brush: html"><html> - <body> - <p>Packaged app installation page</p> - <script> - // This URL must be a full url. - var manifestUrl = 'http://my-server.com/my-app-directory/package.manifest'; - var req = navigator.mozApps.installPackage(manifestUrl); - req.onsuccess = function() { - alert(this.result.origin); - }; - req.onerror = function() { - alert(this.error.name); - }; - </script> - </body> -</html></pre> - </li> - <li>Copy <code>package.zip</code>, <code>package.manifest</code>, and <code>index.html</code> into your app root directory (<code>my-app-directory</code> in my examples).</li> - <li>Usando um dispositivo compatível (como um telefone Firefox OS), navegue até o local em seu servidor onde você colocou os arquivos de exemplo e confirmar a solicitação para instalar o aplicativo. O script vai lhe dar uma indicação de sucesso ou falha de instalação.</li> -</ol> -<div class="note"> - <p><strong>Note:</strong> Você não pode instalar aplicativos privilegiados ou certificados a partir de pacotes de auto-hospedado, como eles precisam ser assinado usando o processo de submissão Firefox Marketplace.</p> -</div> -<div class="note"> - <p><strong>Note</strong>: You can even <a href="/en-US/docs/Web/Apps/Creating_a_store" title="/en-US/docs/Web/Apps/Creating_a_store">create your own apps store</a>, which has a number of options available to it.</p> -</div> -<p> </p> diff --git a/files/pt-br/mozilla/marketplace/publishing/policies_and_guidelines/index.html b/files/pt-br/mozilla/marketplace/publishing/policies_and_guidelines/index.html deleted file mode 100644 index eb579fe3a0..0000000000 --- a/files/pt-br/mozilla/marketplace/publishing/policies_and_guidelines/index.html +++ /dev/null @@ -1,10 +0,0 @@ ---- -title: Policies and Guidelines -slug: Mozilla/Marketplace/Publishing/Policies_and_Guidelines -tags: - - NeedsTranslation - - Structure - - TopicStub -translation_of: Archive/Mozilla/Marketplace/Publishing/Policies_and_Guidelines ---- -<p>This section contains Firefox Marketplace policies and guidelines</p> diff --git a/files/pt-br/mozilla/marketplace/publishing/policies_and_guidelines/politica_privacidade/index.html b/files/pt-br/mozilla/marketplace/publishing/policies_and_guidelines/politica_privacidade/index.html deleted file mode 100644 index e0ddb7d403..0000000000 --- a/files/pt-br/mozilla/marketplace/publishing/policies_and_guidelines/politica_privacidade/index.html +++ /dev/null @@ -1,74 +0,0 @@ ---- -title: Diretrizes da Política de Privacidade -slug: Mozilla/Marketplace/Publishing/Policies_and_Guidelines/politica_privacidade -tags: - - Apps - - Começando - - Firefox OS - - Guía - - Marketplace - - politica - - privacidade -translation_of: >- - Archive/Mozilla/Marketplace/Publishing/Policies_and_Guidelines/Privacy_policies ---- -<div class="summary"> -<p><span id="result_box" lang="pt"><span class="alt-edited">Privacidade é difícil de acertar. É um conceito complicado que envolve leis, normas sociais e expectativas dos utilizadores. O desenvolvedor de um aplicativo, site, página ou add-on que leva a privacidade a sério inspira a confiança do usuário. Reunimos estas diretrizes para ajudá-lo a fazer um app com consiência de privacidade, e escrever uma boa política de privacidade para isso. Por favor, lembre-se que este não é um substituto para um advogado de verdade e não fornece aconselhamento jurídico.</span></span></p> -</div> - -<h2 id="sect1"> </h2> - -<h2 id="Política_de_privacidade">Política de privacidade</h2> - -<p> </p> - -<p><span id="result_box" lang="pt"><span class="alt-edited">A política de privacidade é uma descrição do que você faz com os dados sobre as pessoas. Um deve ser fornecida quando o aplicativo faz nada com os dados sobre seus usuários. As coisas críticas para descrever na política são como você e seu aplicativo coleta, usa, armazena e compartilha ou divulga informações sobre as pessoas. Fornecendo uma política de privacidade também ajuda seus usuários a entender o que acontece com informações sobre eles.Diferentes lugares ao redor do mundo têm requisitos específicos para a forma como os dados do usuário são coletadas, usadas, armazenadas e divulgados. Em alguns territórios, pode ser uma exigência legal para fornecer uma política de privacidade. Você definitivamente precisa falar com um advogado para ajudá-lo a navegar no mundo da privacidade e fazer uma política de privacidade que diz a seus usuários o que eles precisam saber.</span></span></p> - -<h2 id="Requerimentos_do_Mozilla_Marketplace">Requerimentos do Mozilla Marketplace</h2> - -<p><span id="result_box" lang="pt"><span>Se</span> <span>seu aplicativo</span> <span>faz nada</span> <span>com os dados</span> <span>sobre seus usuários</span><span>,</span> <span>você é obrigado a</span> <span>fornecer uma</span> <span>política de privacidade para</span> <span>a sua aplicação</span> <span>no Firefox</span> <span>Marketplace.</span></span></p> - -<div class="note"> -<p><span id="result_box" lang="pt"><span class="alt-edited">Se o seu aplicativo não coletar, usar, armazenar e compartilhar ou divulgar qualquer informação sobre as pessoas, basta digitar "Este aplicativo não coleta, usa, armazena e compartilha ou divulga qualquer informação sobre o usuário ou qualquer outra pessoa." no campo da Política de Privacidade de mercado.</span></span></p> -</div> - -<h2 id="Sugestões_de_privacidade_para_a_concepção_de_aplicações"><span id="result_box" lang="pt"><span>Sugestões de privacidade</span> <span>para a concepção de</span> <span>aplicações</span></span></h2> - -<p> </p> - -<ul> - <li><span id="result_box" lang="pt"><span>Projetar</span> <span>seu aplicativo</span> <span>ou add-on</span> <span>para que</span> <span>o que você realmente</span> <span>fazer com os dados</span> <span>do usuário</span> <span>é</span> <span>o que os usuários</span> <span>pensam que estão fazendo</span> <span>com ele.</span></span></li> - <li><span id="result_box" lang="pt"><span class="alt-edited">Tente dar ao usuário o máximo de controle sobre seus dados, como você pode, como dando-lhes a opção de mostrar ou ocultar da recolha de dados sempre que possível.</span></span></li> - <li><span id="result_box" lang="pt"><span>Tente limitar</span> <span>a sua</span> <span>recolha de dados e</span> <span>usar</span> <span>apenas</span> <span>os dados que</span> <span>você precisa.</span></span></li> - <li><span id="result_box" lang="pt"><span>Projetar</span> <span>seu aplicativo</span> <span>e serviço</span> <span>para proteger a</span> <span>segurança dos seus dados</span> <span>de usuários</span> <span>em sua coleção</span><span>, armazenamento e</span> <span>utilização</span><span>.</span></span></li> - <li><span id="result_box" lang="pt"><span>Responder</span> <span>às perguntas dos utilizadores</span> <span>e preocupações sobre</span> <span>suas</span> <span>práticas de privacidade.</span></span></li> - <li><span class="short_text" id="result_box" lang="pt"><span>Evite</span> <span>atualizações</span> <span>"secretas"</span><span>.</span></span></li> - <li><span id="result_box" lang="pt"><span>Faça o seu</span> <span>uso de</span> <span>recursos sociais</span> <span>transparentes</span><span>, de modo que</span> <span>os usuários estão</span> <span>cientes de quando</span> <span>eles estão compartilhando</span> <span>dados</span> <span>socialmente</span><span>.</span></span></li> - <li><span id="result_box" lang="pt"><span>Dar às pessoas</span> <span>uma maneira de</span> <span>desativar o compartilhamento</span> <span>automático ou</span> <span>fazer escolhas</span> <span>mais granulares</span> <span>sobre o compartilhamento de</span> <span>dados.</span></span></li> - <li>Obtenha consentimento dos usuários quando necessário, especialmente para localização e outras informações sensíveis.</li> - <li>Coloque um link para sua política de privacidade e, se você tiver, seus "termos de uso" em algum lugar no seu aplicativo.</li> -</ul> - -<h2 id="Recursos_Adicionais">Recursos Adicionais</h2> - -<p><span id="result_box" lang="pt"><span>Estes recursos</span> <span>podem ser úteis</span> <span>em ajudar com</span> <span>a criação de</span> <span>sua política de privacidade</span><span>.</span> <span>Estas ligações não</span> <span>são filiados a</span> <span>Mozilla</span> <span>-</span> <span>eles são fornecidos</span> <span>para sua informação.</span></span></p> - -<h3 id="Geradores_de_politicas_de_privacidade">Geradores de politicas de privacidade</h3> - -<ul> - <li><a href="http://generator.cooley.com/sites/privacy/Privacy/PQ2/Pre-PRIVACY-Start.aspx">Cooley LLP</a></li> - <li><a href="https://privacychoice.org/policymaker">Privacy Choice</a></li> - <li><a href="http://www.iubenda.com">iubenda</a></li> -</ul> - -<h3 id="Templates_de_politicas_de_privacidade">Templates de politicas de privacidade</h3> - -<ul> - <li><a href="https://github.com/flamsmark/privacy-policy-template">HTML privacy policy template</a> — GitHub hosted template, check out the <a class="link-https" href="https://github.com/flamsmark/privacy-policy-template#readme" title="https://github.com/flamsmark/privacy-policy-template#readme">README</a> to get started.</li> -</ul> - -<h3 id="Politica_de_privacidade_recurso_adicional">Politica de privacidade recurso adicional</h3> - -<ul> - <li><a href="http://www.privacybydesign.ca">Privacy by Design</a></li> -</ul> diff --git a/files/pt-br/mozilla/marketplace/submission/index.html b/files/pt-br/mozilla/marketplace/submission/index.html deleted file mode 100644 index 1c01f1e00d..0000000000 --- a/files/pt-br/mozilla/marketplace/submission/index.html +++ /dev/null @@ -1,9 +0,0 @@ ---- -title: Submission -slug: Mozilla/Marketplace/Submission -tags: - - NeedsTranslation - - TopicStub -translation_of: Archive/Mozilla/Marketplace/Submission ---- -<p>Marketplace submission</p> diff --git a/files/pt-br/mozilla/marketplace/submission/testando_e_solucionando/index.html b/files/pt-br/mozilla/marketplace/submission/testando_e_solucionando/index.html deleted file mode 100644 index 9d89c193c2..0000000000 --- a/files/pt-br/mozilla/marketplace/submission/testando_e_solucionando/index.html +++ /dev/null @@ -1,41 +0,0 @@ ---- -title: Testando e solucionando seu aplicativo -slug: Mozilla/Marketplace/Submission/Testando_E_Solucionando -tags: - - Aplicativos - - Celular - - Firefox - - Marketplace -translation_of: >- - Archive/Mozilla/Marketplace/Publishing/Policies_and_Guidelines/Testing_and_troubleshooting ---- -<div class="summary"> - <p><span style="line-height: 1.5;">Este artigo lhe apresenta tudo que você necessitará para testar e acabar com qualquer problema possível em seus aplicativos.</span></p> -</div> -<h2 id="Inciando_a_configuração_de_seu_ambiente_de_teste">Inciando a configuração de seu ambiente de teste</h2> -<h2 id="Existe_um_número_variado_de_ferramentas_ao_qual_você_pode_instalar_os_tais_possuem_sua_total_performance_e_funções_úteis_para_o_desenvolvimento_voltado_ao_Firefox_OSopen_web_apps._Nós_recomendamos_a_instalação_das_seguintes_listadas."><span style="line-height: 1.5; font-size: 14px; font-weight: normal;">Existe um número variado de ferramentas ao qual você pode instalar, os tais possuem sua total performance e funções úteis para o desenvolvimento voltado ao Firefox OS/open web apps. Nós, recomendamos a instalação das seguintes listadas.</span></h2> -<ul> - <li>Firefox para desktop. Nós recomendamos a utilização de uma versão ainda em pré-lançamento, como <a href="http://aurora.mozilla.org/">Aurora</a> ou <a href="http://nightly.mozilla.org/">Nightly</a>. </li> - <li>Firefox para Android. Nós recomendamos a utilização de uma versão em pré-lançamento, como <a href="http://aurora.mozilla.org/">Aurora</a> ou <a href="http://nightly.mozilla.org/">Nightly</a>. Se você não possui um dispositivo Android físico, utilize um <a href="http://developer.android.com/sdk/">Android emulator</a> (Emulador do sistema Operacional Android). </li> - <li>O <a href="/en-US/Firefox_OS/Using_the_App_Manager">Firefox OS App Manager</a>. O mesmo foi criado e inserido no Firefox para desktop, acima da versão 26, além de prover várias ferramentas totalmente úteis, como um depurador de aplicativos e a permissão de instala-los nos emuladores ou dispositivos reais.</li> - <li><a href="/en-US/docs/Tools/Firefox_OS_Simulator">Firefox OS simulator</a>; isto deve ser usado se for do seu desejo testar seus aplicativos especificamente em versões antigas do Firefox OS. Para versões 1.2 ou mais recentes, utilize o App Manager. Você pode se apropriar do painel de controle do simulador, para instala-los.</li> -</ul> -<p><span style="line-height: 1.5;">De forma primordial, é recomendável e ideal que você tenha um dispositivo físico em suas mãos para propósito de testes. Para mais detalhes, veja nosso </span><a href="/en-US/docs/Mozilla/Firefox_OS/Developer_phone_guide" style="line-height: 1.5;">Developer phone guide</a><span style="line-height: 1.5;"> (Guia de desenvolvimento para telefones)</span><span style="line-height: 1.5;">.</span></p> -<h2 id="Testando">Testando</h2> -<p><span style="line-height: 1.5;">Desde de que as propriedades dos aplicativos Web se utilizam da mesma tecnologia e métodos de comunicação que as páginas Web, a experiência como usuário na utilização de aplicativos é um pouco diferente desde que os ambientes, não possuem ferramentas dos navegadores, como uma barra URL ou botões de Ir e Voltar, além, dos dispositivos Firefox OS, que não terão um botão de hardware "voltar", como um Android faz. Estes passos irão ajuda-lo com precisão e garantia que seus aplicativos renderão uma boa experiência para o usuário.</span></p> -<ol> - <li>Instale o aplicativo. Tenha certeza que os ícones são mostrados na tela inicial, e o título de seu aplicativo não seja cortado.</li> - <li>Inicie o aplicativo. Tenha certeza que o tamanho e a orientação da tela, foi devidamente ajustado.</li> - <li>Tenha garantia que o usuário irá visualizar seu aplicativo, e não sua homepage. Lembre-se, os usuários que instalarem seu aplicativo pelo Firefox Marketplace, estarão automaticamente submetidos as condições monetárias exigidas e oferecidas. Não é necessário criar vinculações que levem o usuário novamente para uma página cujo objetivo é demonstrar as funcionalidades do aplicativo. As primeiras experiências do usuário são disposta de melhor forma em Getting Started (Inciando) ou Login page (página de login).</li> - <li>Certifique-se das maiores e principais características do aplicativo. Especialmente, garantia para não interfaces de navegação sem utilidade ou inúteis, além de conteúdo lógico ou não, que possa ser mal disposto e provoque erros.</li> - <li>Tenha certeza que os links que levam a experiência de seu aplicativo para fora do mesmo, contenham o conteúdo real e desejado a ser exibido, como links para outras páginas web, ou a exemplo, o Twitter, onde as mesmas rodem em sua própria página pelo navegador, ou mesmo, você desenvolvedor, crie acessos ou estruturas que o exibam direto do aplicativo, permitindo a qualquer instante, o usuário voltar.</li> - <li>Centralizando no navegador para desktop, se utilize do <a href="/en-US/docs/Tools/Responsive_Design_View">Responsive Design View</a> (Design atrativo/compreensivo) para manter a qualidade de seus aplicativos em diferentes resoluções de tela. Nós recomendamos a escolha de resoluções de 320X480 até 1260X800.</li> -</ol> -<h2 id="Resolução_de_problemas">Resolução de problemas</h2> -<ul> - <li>Se você necessita de ajuda para o desenvolvimento dos aplicativos, o <a href="/en-US/Apps">App Center</a> (Central dos aplicativos) possui uma larga quantidade de informação sobre design e técnicas de desenvolvimento, instalação, APIs suportadas, e muito mais.</li> - <li>O <a href="/en-US/Firefox_OS">Firefox OS zone</a> possui uma larga quantidade de informação sobre a plataforma Firefox OS, como exemplos de construção do S.O (sistema operacional), até como hackear aplicativos padrão do sistema.</li> - <li>Para todos e mais detalhes de como submeter um aplicativo ao Firefox Marketplace, e o que vai ser necessário, veja nosso guia <a href="/en-US/Marketplace/Submission/Submitting_an_app">Submitting an app to the Firefox Marketplace</a> (Submetendo um aplicativo ao Firefox Marketplace).</li> - <li>O <a href="/en-US/docs/Mozilla/Marketplace/FAQ">Marketplace FAQ</a> responde uma série de perguntas comuns relacionadas a publicação de aplicativos no Firefox Marketplace.</li> - <li>Para questionar algo mais específico, existe um extenso número de <a href="http://www.mozilla.org/about/forums/">Forums</a> voltados para ajuda avaliáveis, incluindo newsgroups, mailing lists e o IRC. Veja mais detalhes na parte inferior das páginas <a href="/en-US/Apps">App Center</a>, <a href="/en-US/Firefox_OS">Firefox OS zone</a>, e <a href="/en-US/Marketplace">Marketplace zone</a> demonstrando e dando destinos que melhor se encaixam nos contextos que você procura.</li> -</ul> diff --git a/files/pt-br/mozilla/marketplace/submissão_de_complemento/index.html b/files/pt-br/mozilla/marketplace/submissão_de_complemento/index.html deleted file mode 100644 index b22a5f60db..0000000000 --- a/files/pt-br/mozilla/marketplace/submissão_de_complemento/index.html +++ /dev/null @@ -1,62 +0,0 @@ ---- -title: Submissão de complemento -slug: Mozilla/Marketplace/Submissão_de_complemento -tags: - - Avaliação - - B2G - - Complementos - - Firefox OS - - Marketplace - - Revisão - - submissão -translation_of: Archive/Mozilla/Marketplace/Add-on_submission ---- -<p class="summary">Firefox OS 2.5+ suporta complementos, uma característica já familiar aos usuários do Firefox Desktop, que permite a personalização de apps específicos ou todo o SO — se comportar como você desejar. A Firefox Marketplace age como um hospedeiro para complementos e apps; esse artigo fornece uma visão geral de como enviar seus complementos para publicação.</p> - -<h2 id="Submissão_passo-a-passo">Submissão passo-a-passo</h2> - -<ol> - <li>Navegue até as <a href="https://marketplace.firefox.com/content/">Ferramentas de Conteúdo da Firefox Marketplace</a> e faça log in no site.</li> - <li>Após você ter entrado, selecione o botão <em>Enviar complemento Firefox OS</em> para ir para <a href="https://marketplace.firefox.com/content/addon/submit/">A página Enviar um complemento Firefox OS</a>; aqui é onde o processo inicia.</li> - <li>Clique em <em>Selecionar um arquivo</em> e selecione o zip do complemento que você quer enviar. Veja a seção {{anch("Add-on package structure")}} abaixo para mais detalhes nos pacotes requeridos/formato do manifesto.</li> - <li>Opcionalmente você pode adicionar notas de submissão. Essas são apenas para propósitos de avaliação e não estão publicamente disponíveis — instruções de teste, teste de detalhes de login, etc.</li> - <li>Clique Enviar. Seu complemento agora será validado. - <ol> - <li>Se houver qualquer erro você será enviado de volta para o passo 3 para reenviar um arquivo zip atualizado.</li> - <li>Se não, você será redirecionado para o seu <a href="https://marketplace.firefox.com/content/addon/dashboard/">dashboard</a>, onde todos os seus envios estarão listados.</li> - </ol> - </li> - <li>Após um avaliador ter visto o seu complemento, um email será enviao para notificar você do resultado.</li> -</ol> - -<h2 id="Editando_e_atualizando_seu_complemento">Editando e atualizando seu complemento</h2> - -<p>Após um envio com sucesso do seu complemento, você pode editar/atualizar ele indo para o seu <a href="/en-US/docs/">dashboard</a> e selecionando <em>Editar esse complemento</em>.</p> - -<p>Novas versões do complemento podem ser adicionadas nessa página. Subir uma nova versão enquanto uma versão anterior está pendente irá marcar a versão anterior como obsoleta e a nova versão será marcada como pendente (no máximo 1 versão pode estar pendente por vez).</p> - -<p>Uma vez que a versão está aprovada então ela estará disponível para instalação; ela permanecerá disponível até que uma nova versão seja aprovada.</p> - -<h2 id="Estrutura_do_pacote_de_complemento">Estrutura do pacote de complemento</h2> - -<p>O complemento é submetido como um arquivo zip. Essa seção detalha o que o zip deve conter.</p> - -<p>O manifest.json (arquivo de Manifesto) deve estar na raíz do arquivo zip. Detalhes chave são como segue:</p> - -<ul> - <li><code>name</code> é obrigatório.</li> - <li><code>version</code> é obrigatório.</li> - <li><code>description</code> é opcional, mas será usado pela Marketplace na {{anch("Add-on detail page")}}.</li> - <li><code>icons</code> é usado para encontrar ícones para mostrar namarketplace, e no dispositivo quando o complemento está instalado.</li> - <li><code>author</code> atualmente não é usado pela Marketplace, mas será mostrado no dispositivo quando o complemento estiver instalado.</li> -</ul> - -<p>O resto do seu complemento será uma coleção típica de CSS, JavaScript, ícones, etc. Novamente, isso tudo deveria estar na raíz do arquivo zip, não dentro de uma subpasta — não compacte sua pasta do projeto; compacte o conteúdo da pasta do projeto.) Para mais informações no desenvolvimento de coplementos, veja <a href="/en-US/docs/Mozilla/Firefox_OS/Add-ons">Complementos Firefox OS</a>.</p> - -<div class="note"> -<p><strong>Nota</strong>: A <a href="https://wiki.mozilla.org/Marketplace/Add-ons/Validation">Validação</a> descreve o estado atual do validador de manifesto.</p> -</div> - -<h2 id="Critério_de_avaliação">Critério de avaliação</h2> - -<p>Você pode avaliar o <a href="/en-US/docs/Mozilla/Marketplace/Add-on_submission/Review_criteria">Critério de revisão de complementos do Firefox OS add-ons</a> para ter certeza que seu complemento segue ele.</p> diff --git a/files/pt-br/mozilla/marketplace/submissão_de_complemento/review_criteria/index.html b/files/pt-br/mozilla/marketplace/submissão_de_complemento/review_criteria/index.html deleted file mode 100644 index 3cfe5355d9..0000000000 --- a/files/pt-br/mozilla/marketplace/submissão_de_complemento/review_criteria/index.html +++ /dev/null @@ -1,113 +0,0 @@ ---- -title: Add-on review criteria -slug: Mozilla/Marketplace/Submissão_de_complemento/Review_criteria -tags: - - Add-ons - - Firefox Marketplace - - Revisores de apps - - Revisão -translation_of: Archive/Mozilla/Marketplace/Add-on_submission/Review_criteria ---- -<div class="warning"> -<p>This document is a working draft - it is not final. Do not rely on this document to be correct, consistent or stable.</p> -</div> - -<div class="note"> -<p>This page relates to Add-ons for <strong>FirefoxOS</strong>. See <a href="/docs/Mozilla/Add-ons/AMO/Policy/Reviews">AMO Review Policy</a> for Add-ons for desktop Firefox and Firefox for Android.</p> -</div> - -<div class="summary"> -<p>Este artigo descrve o conjunto de requisitos que um add-on precisa reunir para ser distribuído através do Firefox Marketplace. Estes requisitos são desenhados para balancear as necessidades de ambos desenvolvedores e usuários de add-ons do Firefox Marketplace. Desenvolvedores desejam justo, consistente, não draconiano requisitos que eles podem confiar para construir um negócio. Por outro lado, usuários desejam que que seja garantido a segurança dos add-ons. Trabalharão no dispositivo, e que o add-on fará o que diz que faz. Os requisitos do add-on do alvo abaixo cotado para o delicado balanceamento entre estas necessidades.</p> - -<p>Por causa do grande potencial dos add-ons seja comparado a outros mercados como webapps, a segurança e a confiabilidade está em alta - Nós escolheremos proteger o usuário e a experiência além de facilidades para o desenvolvedor de desenvolver ou monetizar.</p> - -<p>Aqui está a expectativa de o quê a revisão do add-on é ou não é:</p> -</div> - -<ul> - <li>Os critérios serão aplicados de forma justa, compassivo, e de maneira consistente. A revisão do processo de add-on não pretende ser um porteiro, mas de preferência um ponto de toque confiável queprovê feedback para ajudar os desenvolvedores a ser um sucesso.</li> - <li>Revisores não são um equipe QA! Durante o processo de revisão, alguém inspecionará o código fonte do add-on e gastará algum tempo usando os componentes que o add-on providencia como um usuário normal usaria.</li> - <li>Se um add-on falha na revisão, o desenvolvedor aodesenvolvedor será dado uma clara explicação do problema encontrado, passos para reproduzir, e onde onde for possível, o revisor deve pontuar o desenvolvedor na direção certa para providenciar links relevantes para suportar a documentação ou fazer recomendações no que é necessário mudar para ser feito.</li> - <li>Nós sempre daremos aos desenvolvedores o benefício do dúvida. Se inseguro se um add-on deve ser rejeitado. Add-ons não serão (conscientemente) rejeitado por problemas de plataforma que são fora do controle dos desenvolvedores; no entanto nós podemos reter a aprovação se nós não pudermos alcançar o add-on para trabalhar.</li> -</ul> - -<h2 id="Segurança">Segurança</h2> - -<p>Add-ons no FirefoxOS pode rodar junto ao nível do sistema e modificar built-in e precarregar apps dos sistemas. Como tal eles tem significantemente mais escopo para abris a segurança e vulnerabilidades do que webapps, webpages e add-ons em alguma outra plataforma. Nós esperamos que todos os add-ons para ser seguros, não somente em manipularos próprios dados deles, e de usar dados, mas também in todo interacão com a web e sistema operacional. Especilamente, add-ons não necessitam:</p> - -<ul> - <li>Criar ou expôr vulnerabilidades na segurança</li> - <li>Sabotagem com o sistema operacional/add-on código atualizado, ou funções bloqueadas em blocos</li> - <li>Executa código remoto</li> - <li>Degrada a segurança de sites HTTPS</li> - <li>Instalar add-ons adicionais ou apps sem o consentimento do usuário</li> - <li>Bloqueia, interfere ou faz chamadas telefônicasou sms sem o consentimento do usuário</li> - <li>Faz alguma conexão remota no sistema do app</li> -</ul> - -<h2 id="Privacidade_e_Consentimento_do_usuário">Privacidade e Consentimento do usuário</h2> - -<ul> - <li>Se o add-on processar ou transmitir dados do usuário uma política de privacidade deve ser ligada na descrição; Não há requisitos para o formato e conteúdo dessa política de privacidade. Sinta-se livre para usar nosso <a href="https://github.com/flamsmark/privacy-policy-template">exemplo de política de privacidade</a>. Também olhe nossas <a href="https://developer.mozilla.org/en-US/Marketplace/Publishing/Privacy_policies">diretrizes da política de privacidade.</a></li> - <li>A respeito da política estabelecida, nós esperamos que todos os add-ons respeitem as escolhas dos usuários e razoável expectativa de privacidade.</li> - <li>Add-ons não precisam mandar dados sensíveis para servidores remotos desprotegidos.</li> - <li>O add-on não precisa prevenir o acesso para o gerenciador do add-on (configurações|Add-ons) ou por outro lado prevenir o usuário de desabilitar ou desinstalar o add-on.</li> - <li>O usuário não precisa ser prevenido de reversão de mudanças feitas pelo add-on.</li> - <li>O add-on não pode fazer inexperadas ou não reveladas mudanças no sistema. apps ou webpages.</li> - <li>O sistema de preferência não pode ser mudado sem o consentimento do usuário</li> -</ul> - -<h2 id="Consentimento">Consentimento</h2> - -<ul> - <li>Alguns add-ons que violam nossas diretrizes de conteúdo abaixo não são permitidos. Se você acha que tem um problema para resolver deste tipo, por favor peça a equipe de revisão para clarificação, até mesmo se o add-on não estiver ainda pronto para ser submetido. Nós desejamos ajudar você na trilha certa, em vez de investir tempo de desenvolvimento em um conteúdo que será rejeitado.</li> - <li>Telas printadas e descrições submetidas para a loja Firefox Marktplace tem que precisamente representar o add-on. Nós recomendamos que a última tela printada do add-on em ação, assim os usuários terão um prévia daquilo que realmente eles estão pegando. Como alguns add-on podem ter mudanças não visuais onde uma tela printada não é relevante nós não requeremos uma.</li> - <li>Nós recomendamos você um ícone para ficar fora do Marketplace e no gerenciador add-on. Mas isto não é requisito. No entanto, se você providenciar um deverá ser relevante para o add-on e não enganoso.</li> -</ul> - -<h3 id="Diretrizes_de_conteúdo"><strong>Diretrizes de conteúdo</strong></h3> - -<p>Essa lista descreve tipos de conteúdo que são inapropriados para o Firefox Marktplace. Essa lista é ilustrativa, não definitiva, e pode ser atualizada. Se um add-on for encontrado violando estas diretrizes, Mozilla tem o direito de imediatamente remover o add-on do Firefox Marketblace.</p> - -<ul> - <li>Material pornográfico ou obsceno é probido, ou representação gráficade sexualidade ou violência.</li> - <li>Nenhum conteúdo que infringe direitos autorais, incluindo propriedade intelectual ou direitos proprietário ou direitos de privacidade ou pubicidade.</li> - <li>Nenhum conteúdo que é desenhado para prejudicar Mozilla ou usuários (tais como código malicioso, vírus, spyware ou malware).</li> - <li>Nenhum conteúdo que é ilegal ou promove as atividades ilegais.</li> - <li>Nenhum conteúdo enganador, fraudulento ou feito para hackear ou realizar roubo de identidades.</li> - <li>Nenhum conteúdo que promova jogos de azar.</li> - <li>Nenhum conteúdo que engage na propaganda de ilegais ou controlados produtos e serviços.</li> - <li>Nenhum conteúdo que explora crianças.</li> - <li>Nenhum conteúdo que degrade, intimide, incite a violência contra, ou encorage ações prejudiciais contraalguém ou um grupo baseado na idade, gênero, raça, etnia, nacionalidade,religiâo, localização geográfica ou outras categorias ou discursos baseados no ódio.</li> - <li>Nenhum conteúdo que engana um usuário a fazer uma decisão de compra.</li> -</ul> - -<h2 id="Funcionalidade">Funcionalidade</h2> - -<ul> - <li>O revisor deve ser capaz de realizar recursos adicionais anunciandos no add-on. Falhas estéticas e menores incoveniências serão reportadas para o desenvolvedor, mas não prevenirá um add-on de ser aprovado.</li> - <li> O add-on não pode comprometer a performance do sistema ou estabilidade.</li> - <li>Add-ons não podem baixar uma grande quantidade de dados sem o usuário estar ciente.</li> - <li>Mudanças feitas por add-ons não precisam persistir depois que o add-on foi desabilitado ou desinstalado.</li> -</ul> - -<h2 id="Política_da_lista_de_bloqueio">Política da lista de bloqueio</h2> - -<p>Nós esperamos que nunca use isso mas nós nos reservamos ao direito de remover ("Lista de bloqueio") qualquer add-on publicado que posteriormente for encontrado violandoqualquer segurança, privacidade, ou requisito de conteúdo, ou add-ons que seriamente degrada a performance de sistema ou da rede. Desenvolvedores serão informados da situação antes de um add-on ser bloquado, assumiremos ser um bom cidadão à menos que nós tenhamos achado evidências ao contrário, e receberá total assistência do time de revisão para comunicar o que está havendo e em como resolver este problema. Examplos espcíficos da situação onde a lista de bloqueio é garantido, inclusive:</p> - -<ul> - <li>Phishing</li> - <li>Spamming</li> - <li>Severo mau comportamento do add-on por grande percentual de usuários - degradação da performance do celular, causando reboots, causando useretc. Perda de dados, onde usuários não podem dizer se por causa do add-on e onde não é resolvido pelo reboot do aparelho.</li> - <li>Um add-on usado para attacks na rede, tais como um negação distribuída de serviço (DDOS).</li> - <li>An add-on being used for attacks on the network, such as a distributed denial of service (DDOS).</li> -</ul> - -<h2 id="Mais_Informações">Mais Informações</h2> - -<p>O seguinte recurso providencia mais informações no processo de revisão e revisão de add-ons.</p> - -<ul> - <li><a href="https://wiki.mozilla.org/Marketplace/Reviewers/FxOSAdd-ons/Testing">Revisores de teste por critério</a> - Esta página descreve os testes que os revisores de add-ons realizarão em seus add-ons.</li> - <li><a href="https://wiki.mozilla.org/Marketplace/Reviewers/Apps">Revisores de FxOS Add-on</a> - Como contatar a equipe de revisão de mercado (mesmo que revisores de apps).</li> -</ul> diff --git a/files/pt-br/mozilla/mobile/index.html b/files/pt-br/mozilla/mobile/index.html deleted file mode 100644 index 3197b37970..0000000000 --- a/files/pt-br/mozilla/mobile/index.html +++ /dev/null @@ -1,26 +0,0 @@ ---- -title: Dispositivos móveis -slug: Mozilla/Mobile -tags: - - Android - - Firefox OS - - Mobile -translation_of: Mozilla/Mobile ---- -<h2 id="Firefox_OS"><a href="/en-US/docs/Archive/B2G_OS" title="Mozilla/Boot to Gecko">Firefox OS</a></h2> - -<p>Firefox OS é um sistema operacional de código aberto (open-source) que utiliza Linux e o motor Gecko da Mozilla para rodar a interface de usuário e aceitar aplicações escritas inteiramente em HTML, CSS e JavaScript.</p> - -<p>Leia mais como instalar o Firefox OS e como desenvolver aplicativos para o mesmo.</p> - -<h2 id="Firefox_para_Android"><a href="/en-US/docs/Mozilla/Firefox_for_Android" title="Mozilla/Firefox_for_Android">Firefox para Android</a></h2> - -<p>Firefox para Android é um navegador web da Mozilla para dispositivos Android. Este foi reescrito recentimento para usar as aplicações nativas do Android, tornando-o mais rápido, enxuto e mais responsivo em relação ao seu user interface. Proporcionando suporte para APIS poderosas para acessar capacidades do dispositivo como câmera e bateria do telefone.</p> - -<p>Leia mais sobre como ajudar a criar Firefox para Android, como usar APIS do dispositivo e como criar add-ons (extensões) para mobile.</p> - -<h2 id="Desenvolvimento_web_para_dispositivos_móveis"><a href="/en-US/docs/Mobile/Mobile_Web_Development" title="Mobile/Mobile_Web_Development">Desenvolvimento web para dispositivos móveis</a></h2> - -<p>Dispositivos móveis tem muitas diferentes caracteristicas de hardware de um desktop ou notebooks, e muitas das APIs usadas para trabalhar com eles estão ainda em processo de padronização</p> - -<p>Leia mais sobre como desenvolver web sites com boa aparência em dispositivos móveis e tirar proveito das novas possibilidades que elas oferecem. Aprenda como fazer para que seu site funcione bem em diferentes navegadores.</p> diff --git a/files/pt-br/mozilla/mobile/viewport_meta_tag/index.html b/files/pt-br/mozilla/mobile/viewport_meta_tag/index.html deleted file mode 100644 index 78e5293405..0000000000 --- a/files/pt-br/mozilla/mobile/viewport_meta_tag/index.html +++ /dev/null @@ -1,85 +0,0 @@ ---- -title: >- - Usando a meta tag viewport para controlar o layout em navegadores de - dispositivos móveis -slug: Mozilla/Mobile/Viewport_meta_tag -translation_of: Mozilla/Mobile/Viewport_meta_tag ---- -<h2 id="Background">Background</h2> - -<p>Browsers para dispositivos móveis, tal como o Fennec, renderizam as páginas em uma "janela" virtual (o viewport), que costuma ser maior que a tela, fazendo com que não seja necessário "espremer" todo o layout da página para caber em uma janela pequena (o que faria "quebrar" muitos sites não otimizados para visualização em dispositivos móveis). Os usuários podem deslocar e aumentar diferentes áreas da página para visualização.</p> - -<p>O Safari Mobile introduziu a "viewport meta tag" para permitir aos desenvolvedores web controlar o tamanho e a escala da viewport. Atualmente, muitos outros navegadores para dispositivos móveis suportam esta tag, embora ela não faça parte de nenhum padrão web. A Apple possui uma <a class="external" href="http://developer.apple.com/safari/library/documentation/AppleApplications/Reference/SafariWebContent/UsingtheViewport/UsingtheViewport.html#//apple_ref/doc/uid/TP40006509-SW29">documentação</a> que explica bem como os desenvolvedores web podem utilizar esta tag, contudo, tivemos que realizar um trabalho investigativo para encontrar a maneira exata de como implementá-la no Fennec. Por exemplo, a documentação do Safari informa que o conteúdo da tag é composto por uma "lista separada por vírgula", no entanto, os navegadores e páginas web existentes utilizam uma combinação de vírgulas, ponto e vírgulas e espaços como separadores.</p> - -<p>Aprenda mais sobre os diferentes tipos de viewports em navegadores para dispositivos móveis em <a class="external" href="http://www.quirksmode.org/mobile/viewports2.html" title="http://www.quirksmode.org/mobile/viewports2.html">Um Conto sobre Dois Viewports</a> no site quirksmode.org.</p> - -<h2 id="O_Básico_sobre_a_viewport">O Básico sobre a viewport</h2> - -<p>Um site tipicamente otimizado para dispositivos móveis, contém algo como o que segue:</p> - -<pre class="notranslate"><code><meta name="viewport" content="width=device-width, initial-scale=1"></code></pre> - -<p>A propriedade <code>width</code> controla o tamanho da viewport. O valor desta propriedade pode ser definido com um número específico de píxels como por exemplo <code>width=600</code> ou com um valor especial chamado <code>device-width</code> que representa a largura da onde o conteúdo está sendo apresentado em pixels de CSS considerando uma escala de 100%. (Ainda há as propriedades <code>height</code> e <code>device-height</code>, as quais podem ser úteis para páginas com elementos que mudam de posição baseado na altura da viewport.)</p> - -<p>A propriedade <code>initial-scale</code> controla o nível de amplificação quando a página é carregada pela primeira vez. As propriedades <code>maximum-scale</code>, <code>minimum-scale</code>, e <code>user-scalable</code> controlam a permissão para o usuário efetuar aumento ou diminuição da página.</p> - -<div class="blockIndicator warning"> -<p>o uso de <code>user-scalable=no</code> pode causar problemas de acessibildade para usuários com impecílios visuais como baixa visão.</p> -</div> - -<h2 id="Um_pixel_não_é_um_pixel"><a name="A_pixel_is_not_a_pixel"></a>Um pixel não é um pixel</h2> - -<p><span style="line-height: 1.5;">O Iphone e muitos dos telefones populares que rodam Android possuem telas entre 3 e 4-polegadas (7–10 cm) com resolução de 320—480 pixels (~160 dpi). O Firefox para Maemo roda no Nokia N900, o qual tem o mesmo tamanho físico porém possui uma resolução de 480—800 pixels (~240 dpi). Por causa disto, a última versão do Fennec exibia muitas páginas um terço menor (em tamanho físico real) do que o Iphone ou Android. Isto causou problemas de usabilidade e de leitura em muitos sites otimizados para leitura em dispositivos móveis. Peter-Paul Koch escreveu sobre este problema em </span><a class="external" href="http://www.quirksmode.org/blog/archives/2010/04/a_pixel_is_not.html" style="line-height: 1.5;">Um pixel não é um pixel</a><span style="line-height: 1.5;">.</span></p> - -<p>O Fennec 1.1 para Maemo utilizará 1.5 pixels de hardware para cada "pixel" de CSS, seguindo o que hoje é feito por navegadores baseados no WebKit para dispositivos Android. Isto significa que uma página com a largura definida como <code>initial-scale=1, </code>irá ser renderizada o mais próximo do tamanho físico possível no Fennec para Maemo, Safari Mobile para iPhone, e nos navegadores Android nos aparelhos com <a class="external" href="http://developer.android.com/guide/practices/screens_support.html#range">HDPI and MDPI</a>. Isto está em concordância com a <a class="external" href="http://www.w3.org/TR/CSS2/syndata.html#length-units">Especificação CSS 2.1</a>, que diz:</p> - -<blockquote> -<p>Se a densidade do pixel do dispositivo de saída é muito diferente da de um monitor de computador típico, o navegador deverá redimensionar os valores do pixel. Recomenda-se que a unidade do pixel refira-se ao número integral de pixels do dispositivo que mais se aproxima do pixel de referência. Recomenda-se que o pixel de referência seja o ângulo visual formado entre um dispositivo com com uma densidade de pixel de 96dpi e a distância de um braço em relação ao leitor.</p> -</blockquote> - -<p>Para os desenvolvedores web, isto significa que uma resolução de 320px será apresentada na largura total no modo retrato em escala 1, em todos os dispositivos móveis mencionados acima, e eles poderão dimensionar seus layouts e imagens com corformidade. Entretanto, lembre-se de que nem todos os dispositivos móveis possuem a mesma largura; você deve certificar que suas páginas irão funcionar bem em modo paisagem ou em dispositivos com largura maior, como o iPad e outros tablets Android.</p> - -<p>Em telas com 240-dpi, páginas definidas com <code>initial-scale=1</code> serão efetivamente aumentadas para 150% tanto pelo Fennec quanto pelo Android WebKit. O texto das páginas ficará mais suave e nítido, porém as imagens em bitmap provavelmente não terão nenhuma vantagem na visualização em tela cheia. Para obter imagens mais nítidas nestas telas, os desenvolvedores web podem querer projetar as imagens - ou todo o layout – em uma escala de 150% em relação ao seu tamanho final (ou 200%, para suportar dispositivos com 320-dpi tais como as telas de retina do iPhone) e então dimensioná-las com uma menor escala usando CSS ou as propriedaes da viewport.</p> - -<p>A razão padrão depende da densidade da tela. Em uma tela com densidade menor que 200dpi, a razão é de 1.0. Em telas com densidades entre 200 e 300dpi, a razão é de 1.5. Para telas com densidade superior a 300dpi, a razão será dada pelo maior inteiro menor ou igual à <em>densidade</em>/150dpi. Note que a razão padrão é real somente quando a escala da viewport está configurada como 1. Do contrário, a relação entre um pixel de hardware e um pixel CSS dependerá também do nível corrente de aumento (zoom) aplicado.</p> - -<h2 id="Largura_da_viewport_e_largura_da_tela">Largura da viewport e largura da tela</h2> - -<p>Muitos sites definem sua viewport como <code>"width=320, initial-scale=1"</code> para encaixar-se precisamente na tela do iPhone no modo retrato. Como mencionado acima, isto causou <a class="external" href="http://starkravingfinkle.org/blog/2010/01/perils-of-the-viewport-meta-tag/">problemas</a> quando o Fennec 1.0 renderizou estes sites, especialente no modo paisagem. Para corrigir esta situação, o Fennec 1.1 irá expandir a largura da viewport se necessário para preencher a tela na escala requisitada. Isto atende ao comportamento do Android e Safari Mobile, e é especialmente útil em dispositivos com telas grandes como o iPad. (Allen Pike's <a class="external" href="http://www.antipode.ca/2010/choosing-a-viewport-for-ipad-sites/">Escolhendo uma viewport para sites para iPad</a> tem uma boa explanação para desenvolvedores web.)</p> - -<p>Para as páginas que indicam uma escala máxima ou inicial, isto significa que a propriedade <code>width</code> será traduzida para uma largura <em>minima da </em>viewport. Por exemplo, se o layout necessita ao menos 500 pixels de largura, então você pode fazer uso de tal marcação. Quando a tela tem largura maior que 500 pixels, o navegador irá expandir a viewport (ao invés de somente aumentar o zoom) para que ela se encaixe adequadamente na tela:</p> - -<pre class="notranslate"><meta name="viewport" content="width=500, initial-scale=1"></pre> - -<p>O Fennec 1.1 também adicionou suporte para as propriedades <code>minimum-scale</code>, <code>maximum-scale</code>, e <code>user-scalable</code>, com valores padrão e limitis, similar aos feitos pelo <a class="external" href="http://developer.apple.com/safari/library/documentation/AppleApplications/Reference/SafariHTMLRef/Articles/MetaTags.html">Safari</a>. Estas propriedades afetam a escala inicial e largura, bem como limitam modificação no nível de aumento (zoom).</p> - -<p>Os navegadores para dispositivos móveis tratam as mudanças de orientação de forma difente um do outro. Por exemplo, o Safari Mobile, frequentemente apenas aumenta a página quando muda da orientação retrato para a orientação paisagem ao invés de modificar o layout original da página como ela deveria ser se fosse carregada inicialmente já no modo de paisagem. Caso os desenvolvedores web desejem manter consistentes as suas configurações de escala durante modificações de orientação no iPhone, eles precisam definir o valor <code>maximum-scale</code> para prevenir este aumento automático, o qual possui o efeito colateral de não permitir também a utilização do aumento (zoom) por parte do usuário:</p> - -<pre class="notranslate"><meta name="viewport" content="initial-scale=1, maximum-scale=1"></pre> - -<p>Isso não é necessário no Fennec pois, quando o dispositivo muda a orientação, o Fennec atualiza automaticamente o tamanho da viewport, o layout da página e as propriedades JavaScript/CSS, como o <code>device-width</code>, baseado nas novas dimensões para a janela.</p> - -<h2 id="Tamanhos_comuns_da_viewport_para_dispositivos_móveis_e_tablets">Tamanhos comuns da viewport para dispositivos móveis e tablets</h2> - -<p>Se o que você está querendo saber é quais dispositivos móveis e tablets têm quais larguras de viewport, existe uma lista abrangente de <a href="http://viewportsizes.com/" title="http://i-skool.co.uk/mobile-development/web-design-for-mobiles-and-tablets-viewport-sizes/">tamanhos de viewport para dispositivos móveis e tablets aqui</a>. Há informações como a largura da viewport quando o dispositivo está na orientação retratou ou paisagem bem como o tamanho físico das telas, sistema operacional e a densidade de pixels de cada dispositivo.</p> - -<h2 id="Padrões">Padrões</h2> - -<table class="standard-table"> - <thead> - <tr> - <th scope="col">Specification</th> - <th scope="col">Status</th> - <th scope="col">Comment</th> - </tr> - </thead> - <tbody> - <tr> - <td>{{SpecName('CSS3 Device', '#viewport-meta', '<meta name="viewport">')}}</td> - <td>{{Spec2('CSS3 Device')}}</td> - <td>Non-normatively describes the Viewport META element</td> - </tr> - </tbody> -</table> - -<p>Existe uma demanda de utilização clara pela tag viewport, levando em conta que ela é suportada pelos mais populares navegadores para dispositivos móveis e é utilizada por milhares de web sites. Seria bom ter um padrão oficial para a utilização das propriedades da viewport para as páginas web. De acordo com a especificação HTML5, extensões da tag <code>meta</code> devem primeiramente ser registradas em <a class="external" href="http://wiki.whatwg.org/wiki/MetaExtensions">WHATWG wiki</a> para então passar pelo processo de padronização W3C. Se isso ocorrer, então nós da Mozilla, trabalharemos para garantir que implementaremos qualquer modificação realizada durante o processo de padronização.</p> diff --git a/files/pt-br/mozilla/performance/about_colon_memory/index.html b/files/pt-br/mozilla/performance/about_colon_memory/index.html deleted file mode 100644 index 072274aa40..0000000000 --- a/files/pt-br/mozilla/performance/about_colon_memory/index.html +++ /dev/null @@ -1,330 +0,0 @@ ---- -title: 'about:memory' -slug: 'Mozilla/Performance/about:memory' -translation_of: 'Mozilla/Performance/about:memory' ---- -<p>"about:memory" é uma página especial do Firefox que permite você ver, salvar, carregar, e comparar medidas detalhadas do uso de memória do Firefox. Também permite que você faça outras operações relacionadas com memória, tais como: disparar GC e CC, remover registros GC & CC, e remover relatórios DMD. Está presente em todas as versões e não necessita nenhuma preparação para ser usada.</p> - -<h2 id="Como_gerar_relatórios_de_memória">Como gerar relatórios de memória</h2> - -<pre class="tw-data-text vk_txt tw-ta tw-text-small" dir="ltr" id="tw-target-text" style="text-align: left; height: 240px;"><span>Vamos supor que você quer medir o uso de memória do Firefox. Talvez você queira investigá-lo você mesmo, ou talvez alguém lhe pediu para usar about: memory para gerar relatórios " de memória" para que eles possam investigar um problema que está ocorrendo . Siga esses passos.</span></pre> - -<ul> - <li><span id="result_box" lang="pt"><span title="At the moment of interest (eg once Firefox's memory usage has gotten high) open a new tab and type "about:memory" into the address bar and hit "Enter". - ">No momento de interesse (por exemplo, uma vez que o uso de memória do Firefox ficou alto) abrir uma nova aba e digite "about:memory" na barra de endereços e aperte "Enter".<br> - </span><span title='If you are using a communication channel where files can be sent, such as Bugzilla or email, click on the "Measure and save..." button.'>Se você estiver usando um canal de comunicação onde os arquivos podem ser enviados, como o Bugzilla ou e-mail, clique em "Medir e salvar ..." botão. </span><span title="This will open a file dialog that lets you save the memory reports to a file of your choosing.">Isto irá abrir uma janela de ficheiros que lhe permite guardar os relatórios de memória para um arquivo de sua escolha. </span><span title="(The filename will have a .json.gz suffix.) You can then attach or upload the file appropriately.">(O nome do arquivo terá um sufixo .json.gz.) Você pode então anexar ou fazer o upload do arquivo de forma apropriada. </span><span title="The recipients will be able to view the contents of this file within about:memory in their own Firefox instance. - ">Os destinatários será capaz de visualizar o conteúdo deste arquivo dentro de cerca de memória: em sua própria instância Firefox.<br> - </span><span title='If you are using a communication channel where only text can be sent, such as a comment thread on a website, click on the "Measure..." button.'>Se você estiver usando um canal de comunicação em que apenas o texto pode ser enviada, como um comentário de discussão em um site, clique no botão "Medida ..." botão. </span><span title="This will cause a tree-like structure to be generated text within about:memory.">Isso fará com que uma estrutura de árvore a ser gerada texto dentro about:memory. </span><span title="This structure is just text, so you can copy and paste some or all of this text into any kind of text buffer.">Esta estrutura é apenas texto, de modo que você pode copiar e colar alguns ou todos este texto em qualquer tipo de buffer de texto. </span><span title="(You don't need to take a screenshot.) This text contains fewer measurements than a memory reports file, but is often good enough to diagnose problems. - -">(Você não precisa tirar um screenshot.) Este texto contém menos do que um arquivo de medições relatórios memória, mas muitas vezes é bom o suficiente para diagnosticar problemas.</span><br> - <br> - <span title="Note that in both cases the generated data contains privacy-sensitive details such as the full list of the web pages you have open in other tabs.">Note-se que em ambos os casos, os dados gerados contém detalhes sensíveis à privacidade, tal como a lista completa das páginas da web que você tem aberto em outras abas. </span><span title='If you do not wish to share this information, you can select the "anonymize" checkbox before clicking on "Measure and save..." or "Measure...".'>Se você não deseja compartilhar essa informação, você pode selecionar a opção "anônimos" antes de clicar em "Medir e salvar ..." ou "Medida ...". </span><span title="This will cause the privacy-sensitive data to be stripped out, but it may also make it harder for others to investigate the memory usage. -">Isto fará com que os dados sensíveis a privacidade para ser retirados, mas também pode tornar mais difícil para os outros a investigar o uso de memória.</span><br> - <span title="Loading memory reports from file - -">Carregando relatos de memória de arquivo</span><br> - <br> - <span title='The easiest way to load memory reports from file is to use the "Load..." button.'>A maneira mais fácil para carregar relatórios de memória de arquivo é usar o "Load ..." botão. </span><span title='You can also use the "Load and diff..." button to get the difference between two memory report files. - -'>Você também pode usar o botão "... Carregar e diff" para obter a diferença entre dois arquivos de relatório de memória.</span><br> - <br> - <span title="Single memory report files can also be loaded automatically when about:memory is loaded by appending a file query string, for example: - -">Arquivos de relatório de memória individuais também podem ser carregados automaticamente quando about: memory é carregado anexando uma cadeia de consulta de arquivos, por exemplo:</span></span><br> - <br> - <span class="st"><em>about:memory</em>?uri=<em>file</em>:///<em>home</em>/<em>username</em>/<em>reports</em>.<em>json</em>.<em>gz</em></span><br> - <br> - <span lang="pt"><span title="This is most useful when loading memory reports files obtained from a Firefox OS device. - -">Isso é mais útil ao carregar arquivos de memória relatórios obtidos a partir de um dispositivo Firefox OS.</span><br> - <br> - <span title="Memory reports are saved to file as gzipped JSON.">Relatórios de memória são salvos em um arquivo JSON como gzipped. </span><span title="These files can be loaded as is, but they can also be loaded after unzipping. -">Estes ficheiros podem ser carregados como seja, mas eles também podem ser carregados depois de descompactar.</span><br> - <span title="Interpreting memory reports - -">Interpretando relatórios de memória</span><br> - <br> - <span title="Almost everything you see in about:memory has an explanatory tool-tip.">Quase tudo o que você vê no about: memory tem uma dica de ferramenta explicativa. </span><span title="Hover over any button to see a description of what it does.">Passe o mouse sobre qualquer botão para ver uma descrição do que ele faz. </span><span title="Hover over any measurement to see a description of what it means. -">Passe o mouse sobre qualquer medição para ver uma descrição do que ela significa.</span><br> - <span title="Measurement basics - -">Noções básicas de medição</span><br> - <br> - <span title="Most measurements use bytes as their unit, but some are counts or percentages. - -">A maioria das medições usar bytes como unidade, mas algumas são contagens ou percentagens.</span><br> - <br> - <span title="Most measurements are presented within trees.">A maioria das medições são apresentados no prazo de árvores. </span><span title="For example: - - ">Por exemplo:<br> - <br> - </span><span title="585 (100.0%) -- preference-service - ">585 (100,0%) - preferências de serviço<br> - </span><span title="└──585 (100.0%) -- referent - ">└──585 (100,0%) - referente<br> - </span><span title="├──493 (84.27%) ── strong - ">├──493 (84,27%) ── forte<br> - </span><span title="└───92 (15.73%) -- weak - ">└───92 (15,73%) - fraco<br> - </span><span title="├──92 (15.73%) ── alive - ">├──92 (15,73%) ── vivo<br> - </span><span title="└───0 (00.00%) ── dead - -">└───0 (00,00%) ── mortos</span><br> - <br> - <span title="Leaf nodes represent actual measurements;">Nós folha representam medições reais; </span><span title="the value of each internal node is the sum of all its children. - -">o valor de cada nó interno é a soma de todos os seus filhos.</span><br> - <br> - <span title="The use of trees allows measurements to be broken down into further categories, sub-categories, sub-sub-categories, etc., to arbitrary depth, as needed.">O uso de árvores permite medições devem ser discriminados em outras categorias, sub-categorias, sub-sub-categorias, etc., a profundidade arbitrária, conforme necessário. </span><span title="All the measurements within a single tree are non-overlapping. - -">Todas as medidas dentro de uma única árvore são para não-sobreposição.</span><br> - <br> - <span title="Tree paths can be written using '/' as a separator.">Caminhos de árvore podem ser escritas usando '/' como separador. </span><span title="For example, preference/referent/weak/dead krepresents the path to the final leaf node in the example tree above. - -">Por exemplo, a preferência / referente / fracos krepresents / mortas o caminho para o nó final de folhas no exemplo acima árvore.</span><br> - <br> - <span title="Sub-trees can be collapsed or expanded by clicking on them.">Sub-árvores pode ser recolhido ou expandido, clicando sobre eles. </span><span title="If you find any particular tree overwhelming, it can be helpful to collapse all the sub-trees immediately below the root, and then gradually expand the sub-trees of interest. -">Se você encontrar qualquer árvore em particular esmagadora, ele pode ser útil para recolher todas as sub-árvores imediatamente abaixo da raiz, e então, gradualmente, expandir as sub-árvores de interesse.</span><br> - <span title="Sections - -">Seções</span><br> - <br> - <span title="Memory reports are displayed on a per-process basis, with one process per section.">Relatórios de memória são exibidos em uma base por processo, com um processo por seção. </span><span title="Within each process's measurements, there are the following subsections. -">Dentro de medições de cada processo, existem as seguintes subseções.</span><br> - <span title="Explicit Allocations - -">As alocações explícitas</span><br> - <br> - <span title='This section contains a single tree, called "explicit", that measures all the memory allocated via explicit calls to heap allocation functions (such as malloc and new) and to non-heap allocations functions (such as mmap and VirtualAlloc). - -'>Esta seção contém uma única árvore, chamado de "explícita", que mede toda a memória alocada via chamadas explícitas para amontoar funções de alocação (como malloc e nova) e às funções alocações não-heap (como mmap e VirtualAlloc).</span><br> - <br> - <span title="Here is an example for a browser session where tabs were open to cnn.com, techcrunch.com, and arstechnica.com.">Aqui está um exemplo de uma sessão do navegador, onde abas estavam abertas para cnn.com, techcrunch.com, e arstechnica.com. </span><span title="Various sub-trees have been expanded and others collapsed for the sake of presentation. - -">Vários sub-árvores foram ampliados e outros desmoronou por causa da apresentação.</span><br> - <br> - <span title="191.89 MB (100.0%) -- explicit -">191,89 MB (100,0%) - explícitas</span><br> - <span title="├───63.15 MB (32.91%) -- window-objects -">├───63.15 MB (32,91%) - window-objetos</span><br> - <span title="│ ├──24.57 MB (12.80%) -- top(http://edition.cnn.com/, id=8) -">│ ├──24.57 MB (12,80%) - superior (http://edition.cnn.com/, id = 8)</span><br> - <span title="│ │ ├──20.18 MB (10.52%) -- active -">│ │ ├──20.18 MB (10,52%) - ativa</span><br> - <span title="│ │ │ ├──10.57 MB (05.51%) -- window(http://edition.cnn.com/) -">│ │ │ ├──10.57 MB (05.51%) - janela (http://edition.cnn.com/)</span><br> - <span title="│ │ │ │ ├───4.55 MB (02.37%) ++ js-compartment(http://edition.cnn.com/) -">│ │ │ │ ├───4.55 MB (02.37%) ++ js-compartimento (http://edition.cnn.com/)</span><br> - <span title="│ │ │ │ ├───2.60 MB (01.36%) ++ layout -">│ │ │ │ ├───2.60 MB (01.36%) ++ disposição</span><br> - <span title="│ │ │ │ ├───1.94 MB (01.01%) ── style-sheets -">│ │ │ │ ├───1.94 MB (01.01%) ──-folhas de estilo</span><br> - <span title="│ │ │ │ └───1.48 MB (00.77%) -- (2 tiny) -">│ │ │ │ └───1.48 MB (00.77%) - (2 minúsculo)</span><br> - <span title="│ │ │ │ ├──1.43 MB (00.75%) ++ dom -">│ │ │ │ ├──1.43 MB (00.75%) ++ dom</span><br> - <span title="│ │ │ │ └──0.05 MB (00.02%) ── property-tables -">│ │ │ │ └──0.05 MB (00.02%) ── propriedade mesas-</span><br> - <span title="│ │ │ └───9.61 MB (05.01%) ++ (18 tiny) -">│ │ │ └───9.61 MB (05.01%) ++ (18 minúsculo)</span><br> - <span title="│ │ └───4.39 MB (02.29%) -- js-zone(0x7f69425b5800) -">│ │ └───4.39 MB (02.29%) - js-zone (0x7f69425b5800)</span><br> - <span title="│ ├──15.75 MB (08.21%) ++ top(http://techcrunch.com/, id=20) -">│ ├──15.75 MB (08.21%) ++ superior (http://techcrunch.com/, id = 20)</span><br> - <span title="│ ├──12.85 MB (06.69%) ++ top(http://arstechnica.com/, id=14) -">│ ├──12.85 MB (06.69%) ++ superior (http://arstechnica.com/, id = 14)</span><br> - <span title="│ ├───6.40 MB (03.33%) ++ top(chrome://browser/content/browser.xul, id=3) -">│ ├───6.40 MB (03.33%) ++ superior (chrome: //browser/content/browser.xul, id = 3)</span><br> - <span title="│ └───3.59 MB (01.87%) ++ (4 tiny) -">│ └───3.59 MB (01.87%) ++ (4 minúsculo)</span><br> - <span title="├───45.74 MB (23.84%) ++ js-non-window -">├───45.74 MB (23,84%) ++ js-não-janela</span><br> - <span title="├───33.73 MB (17.58%) ── heap-unclassified -">├───33.73 MB (17,58%) ── heap-categorias</span><br> - <span title="├───22.51 MB (11.73%) ++ heap-overhead -">├───22.51 MB (11,73%) ++ heap-sobrecarga</span><br> - <span title="├────6.62 MB (03.45%) ++ images -">├────6.62 MB (03.45%) ++ imagens</span><br> - <span title="├────5.82 MB (03.03%) ++ workers/workers(chrome) -">├────5.82 MB (03.03%) ++ trabalhadores / trabalhadores (cromo)</span><br> - <span title="├────5.36 MB (02.80%) ++ (16 tiny) -">├────5.36 MB (02.80%) ++ (16 minúsculo)</span><br> - <span title="├────4.07 MB (02.12%) ++ storage -">├────4.07 MB (02.12%) ++ armazenamento</span><br> - <span title="├────2.74 MB (01.43%) ++ startup-cache -">├────2.74 MB (01.43%) ++ startup-cache</span><br> - <span title="└────2.16 MB (01.12%) ++ xpconnect - -">└────2.16 MB (01.12%) ++ xpconnect</span><br> - <br> - <span title="Some expertise is required to understand the full details here, but there are various things worth pointing out. - - ">Alguns perícia é necessária para entender os detalhes aqui, mas existem várias coisas vale a pena apontar.<br> - <br> - </span><span title='This "explicit" value at the root of the tree represents all the memory allocated via explicit calls to allocation functions. - '>Este valor "explícito" na raiz da árvore representa toda a memória alocada via chamadas explícitas para funções de alocação.<br> - </span><span title='The "window-objects" sub-tree represents all JavaScript window objects, which includes the browser tabs and UI windows.'>A "janela-objetos" sub-árvore representa todos os objetos da janela JavaScript, o que inclui as abas do navegador e janelas de interface do usuário. </span><span title='For example, the "top(http://edition.cnn.com/, id=8)" sub-tree represents the tab open to cnn.com, and "top(chrome://browser/content/browser.xul'>Por exemplo, o "top (http://edition.cnn.com/, id = 8)" sub-árvore representa a aba aberta para cnn.com, e "top (chrome: //browser/content/browser.xul </span><span title=', id=3)" represents the main browser UI window. - '>, id = 3) "representa a janela principal do navegador UI.<br> - </span><span title="Within each window's measurements are sub-trees for JavaScript ("js-compartment(...)" and "js-zone(...)"), layout, style-sheets, the DOM, and other things. - ">Dentro de medições de cada janela são sub-árvores para JavaScript ("js-compartimento (...)" e "js-zona (...)"), layout, folhas de estilo, o DOM, e outras coisas.<br> - </span><span title="It's clear that the cnn.com tab is using more memory than the techcrunch.com tab, which is using more than the arstechnica.com tab. - ">É claro que o guia cnn.com está usando mais memória do que a guia techcrunch.com, que está usando mais do que o guia arstechnica.com.<br> - </span><span title='Sub-trees with names like "(2 tiny)" are artificial nodes inserted to allow insignificant sub-trees to be collapsed by default.'>Sub-árvores com nomes como "(2 minúsculo)" são nós artificiais inseridos para permitir sub-árvores insignificantes para serem recolhidos por padrão. </span><span title='If you select the "verbose" checkbox before measuring, all trees will be shown fully expanded and no artificial nodes will be inserted. - '>Se você selecionar a opção "verbose" antes de medir, todas as árvores serão mostrados completamente expandida e nenhum nó artificiais será inserido.<br> - </span><span title="The "js-non-window" sub-tree represents JavaScript memory usage that doesn't come from windows, but from the browser core. - ">O sub-árvore "js-não-janela" representa o uso de memória JavaScript que não vem das janelas, mas a partir do núcleo do navegador.<br> - </span><span title='The "heap-unclassified" value represents heap-allocated memory that is not measured by any memory reporter.'>O valor "heap-categorias" representa memória alocada-pilha que não é medido por qualquer repórter memória. </span><span title='This is typically 10--20% of "explicit".'>Este é tipicamente de 10--20% "explícito". </span><span title="If it gets higher, it indicates that additional memory reporters should be added.">Se ele fica mais alto, isso indica que deve ser adicionado a jornalistas de memória adicionais. </span><span title="DMD can be used to determine where these memory reporters should be added. - ">DMD podem ser usadas para determinar onde deve ser adicionado estes repórteres de memória.<br> - </span><span title="There are measurements for other content such as images and workers, and for browser subsystems such as the startup cache and XPConnect. - -">Há medições para outros conteúdos, tais como imagens e trabalhadores, e para subsistemas do navegador, como o cache de inicialização e XPConnect.</span><br> - <br> - <span title="Some add-on memory usage is identified, as the following example shows. - -">Alguns add-on uso de memória é identificado, como mostra o seguinte exemplo.</span><br> - <br> - <span title="├───40,214,384 B (04.17%) -- add-ons -">├───40,214,384 B (04.17%) - add-ons</span><br> - <span title="│ ├──21,184,320 B (02.20%) ++ {d10d0bf8-f5b5-c8b4-a8b2-2b9879e08c5d}/js-non-window/zones/zone(0x100496800)/compartment([System Principal], jar:file:///Users/njn/Library/Application%20Support/Firefox/Profiles/puna0zr8.new/extensions/%7Bd10d0bf8-f5b5-c8b4-a8b2-2b9879e08c5d%7D.xpi!/bootstrap.js">│ ├──21,184,320 B (02.20%) ++ {d10d0bf8-f5b5 c8b4-a8b2-2b9879e08c5d} / js-não-janela / zonas / zone (0x100496800) / compartimento ([principal Sistema], jar:file:///Users/njn/Library/Application%20Support/Firefox/Profiles/puna0zr8.new/extensions/%7Bd10d0bf8-f5b5-c8b4-a8b2-2b9879e08c5d%7D.xpi!/bootstrap.js </span><span title="(from: resource://gre/modules/addons/XPIProvider.jsm:4307)) -">(A partir de: recurso: //gre/modules/addons/XPIProvider.jsm: 4307))</span><br> - <span title="│ ├──11,583,312 B (01.20%) ++ jid1-xUfzOsOFlzSOXg@jetpack/js-non-window/zones/zone(0x100496800) -">│ ├──11,583,312 B (01.20%) ++ jid1-xUfzOsOFlzSOXg @ jetpack / js-não-janela / zonas / zone (0x100496800)</span><br> - <span title="│ ├───5,574,608 B (00.58%) -- {59c81df5-4b7a-477b-912d-4e0fdf64e5f2} -">│ ├───5,574,608 B (00.58%) - {59c81df5-4b7a-477b-912D-4e0fdf64e5f2}</span><br> - <span title="│ │ ├──5,529,280 B (00.57%) -- window-objects -">│ │ ├──5,529,280 B (00.57%) - window-objetos</span><br> - <span title="│ │ │ ├──4,175,584 B (00.43%) ++ top(chrome://chatzilla/content/chatzilla.xul, id=4293) -">│ │ │ ├──4,175,584 B (00.43%) ++ superior (chrome: //chatzilla/content/chatzilla.xul, id = 4293)</span><br> - <span title="│ │ │ └──1,353,696 B (00.14%) ++ top(chrome://chatzilla/content/output-window.html, id=4298) -">│ │ │ └──1,353,696 B (00.14%) ++ superior (chrome: //chatzilla/content/output-window.html, id = 4298)</span><br> - <span title="│ │ └─────45,328 B (00.00%) ++ js-non-window/zones/zone(0x100496800)/compartment([System Principal], file:///Users/njn/Library/Application%20Support/Firefox/Profiles/puna0zr8.new/extensions/%7B59c81df5-4b7a-477b-912d-4e0fdf64e5f2%7D/components/chatzilla-service.js) -">│ │ └─────45,328 B (00,00%) ++ js-não-janela / zonas / zone (0x100496800) / compartimento ([principal Sistema], file:///Users/njn/Library/Application%20Support/Firefox/Profiles/puna0zr8.new/extensions/%7B59c81df5-4b7a-477b-912d-4e0fdf64e5f2%7D/components/chatzilla-service.js)</span><br> - <span title="│ └───1,872,144 B (00.19%) ++ treestyletab@piro.sakura.ne.jp/js-non-window/zones/zone(0x100496800) - -">│ └───1,872,144 B (00.19%) ++ treestyletab@piro.sakura.ne.jp/js-non-window/zones/zone (0x100496800)</span><br> - <br> - <span title="More things worth pointing out are as follows. - - ">Mais coisas vale a pena ressaltar é como segue.<br> - <br> - </span><span title="Some add-ons are identified by a name, such as Tree Style Tab.">Alguns complementos são identificados por um nome, como Tree Style Tab. </span><span title="Others are identified only by a hexadecimal identifier.">Outros são identificados apenas por um identificador hexadecimal. </span><span title="You can look in about:support to see which add-on a particular identifier belongs to.">Você pode olhar em cerca de: apoio para ver qual add-on de um identificador específico pertence. </span><span title="For example, 59c81df5-4b7a-477b-912d-4e0fdf64e5f2 is Chatzilla. - ">Por exemplo, 59c81df5-4b7a-477b-912D-4e0fdf64e5f2 é Chatzilla.<br> - </span><span title="All JavaScript memory usage for an add-on is measured separately and shown in this sub-tree. - ">Tudo uso de memória JavaScript para um add-on é medido separadamente e mostrado neste sub-árvore.<br> - </span><span title="For add-ons that use separate windows, such as Chatzilla, the memory usage of those windows will show up in this sub-tree. - ">Para add-ons que usar janelas separadas, como Chatzilla, o uso de memória daquelas janelas vai aparecer nesta sub-árvore.<br> - </span><span title="For add-ons that use XUL overlays, such as AdBlock Plus, the memory usage of those overlays will not show up in this sub-tree;">Para add-ons que usar sobreposições XUL, como Adblock Plus, o uso de memória dessas sobreposições não vai aparecer nesta sub-árvore; </span><span title="it will instead be in the non-add-on sub-trees and won't be identifiable as being caused by the add-on. - -">em vez disso ele vai estar no não-add-on sub-árvores e não serão identificáveis como sendo causado pelo add-on.</span><br> - <br> - <span title="Other Measurements - -">Outras Medidas</span><br> - <br> - <span title='This section contains multiple trees, includes many that cross-cut the measurements in the "explicit" tree.'>Esta seção contém várias árvores, inclui muitos que cross-cortar as medições na árvore "explícito". </span><span title='For example, in the "explicit" tree all DOM and layout measurements are broken down by window by window, but in "Other Measurements" those measurements are aggregated into totals for the whole browser, as the following example shows. - -'>Por exemplo, na árvore "explícito" todas as medições DOM e layout são discriminadas por janela pela janela, mas em "outras medidas" essas medidas são agregadas em totais para todo o navegador, como mostra o seguinte exemplo.</span><br> - <br> - <span title="26.77 MB (100.0%) -- window-objects -">26,77 MB (100,0%) - window-objetos</span><br> - <span title="├──14.59 MB (54.52%) -- layout -">├──14.59 MB (54,52%) - de layout</span><br> - <span title="│ ├───6.22 MB (23.24%) ── style-sets -">│ ├───6.22 MB (23,24%) ── conjuntos de estilo</span><br> - <span title="│ ├───4.00 MB (14.95%) ── pres-shell -">│ ├───4.00 MB (14,95%) ── pres-shell</span><br> - <span title="│ ├───1.79 MB (06.68%) ── frames -">│ ├───1.79 MB (06.68%) ── quadros</span><br> - <span title="│ ├───0.89 MB (03.33%) ── style-contexts -">│ ├───0.89 MB (03.33%) ──-contextos estilo</span><br> - <span title="│ ├───0.62 MB (02.33%) ── rule-nodes -">│ ├───0.62 MB (02.33%) ──-nodes de regras</span><br> - <span title="│ ├───0.56 MB (02.10%) ── pres-contexts -">│ ├───0.56 MB (02.10%) ── pres-contextos</span><br> - <span title="│ ├───0.47 MB (01.75%) ── line-boxes -">│ ├───0.47 MB (01.75%) ── caixas de linha</span><br> - <span title="│ └───0.04 MB (00.14%) ── text-runs -">│ └───0.04 MB (00.14%) ── texto-runs</span><br> - <span title="├───6.53 MB (24.39%) ── style-sheets -">├───6.53 MB (24,39%) ──-folhas de estilo</span><br> - <span title="├───5.59 MB (20.89%) -- dom -">├───5.59 MB (20,89%) - dom</span><br> - <span title="│ ├──3.39 MB (12.66%) ── element-nodes -">│ ├──3.39 MB (12,66%) ── elemento-nodes</span><br> - <span title="│ ├──1.56 MB (05.84%) ── text-nodes -">│ ├──1.56 MB (05.84%) ──-nós de texto</span><br> - <span title="│ ├──0.54 MB (02.03%) ── other -">│ ├──0.54 MB (02.03%) ── outro</span><br> - <span title="│ └──0.10 MB (00.36%) ++ (4 tiny) -">│ └──0.10 MB (00.36%) ++ (4 minúsculo)</span><br> - <span title="└───0.06 MB (00.21%) ── property-tables - -">└───0.06 MB (00.21%) ── propriedade mesas-</span><br> - <br> - <span title='Some of the trees in this section measure things that do not cross-cut the measurements in the "explicit" tree, such as those in the "preference-service" example above. - -'>Algumas das árvores nesta seção medida coisas que não cross-cortar as medições na árvore "explícito", tais como os da "preferência para os serviços" exemplo acima.</span><br> - <br> - <span title="Finally, at the end of this section are individual measurements, as the following example shows. - - ">Finalmente, no final desta secção são medições individuais, como mostra o seguinte exemplo.<br> - <br> - </span><span title="0.00 MB ── canvas-2d-pixels - ">0.00 MB ── canvas-2d-pixels<br> - </span><span title="5.38 MB ── gfx-surface-xlib - ">5.38 MB ── gfx-superfície-xlib<br> - </span><span title="0.00 MB ── gfx-textures - ">0.00 MB ── GFX-texturas<br> - </span><span title="0.00 MB ── gfx-tiles-waste - ">0.00 MB ── GFX-telhas-resíduos<br> - </span><span title="0 ── ghost-windows - ">0 ── fantasmas janelas<br> - </span><span title="109.22 MB ── heap-allocated - ">109,22 MB ── alocado-heap<br> - </span><span title="164 ── heap-chunks - ">164 ── heap-pedaços<br> - </span><span title="1.00 MB ── heap-chunksize - ">1.00 MB ── heap-chunksize<br> - </span><span title="114.51 MB ── heap-committed - ">114.51 MB ── cometido-heap<br> - </span><span title="164.00 MB ── heap-mapped - ">164.00 MB ── mapeado-heap<br> - </span><span title="4.84% ── heap-overhead-ratio - ">4,84% ── heap-sobrecarga-ratio<br> - </span><span title="1 ── host-object-urls - ">1 ── hospedeiras-objeto-urls<br> - </span><span title="0.00 MB ── imagelib-surface-cache - ">0.00 MB ── imagelib-superfície-cache<br> - </span><span title="5.27 MB ── js-main-runtime-temporary-peak - ">-Pico js-main-runtime-temporária 5,27 MB ──<br> - </span><span title="0 ── page-faults-hard - ">0 ── página falhas-rígidos<br> - </span><span title="203,349 ── page-faults-soft - ">203.349 ──-falhas de página-soft<br> - </span><span title="274.99 MB ── resident - ">274,99 MB ── residente<br> - </span><span title="251.47 MB ── resident-unique -">251,47 MB ── residente Exclusivos</span><br> - <span title="1,103.64 MB ── vsize - -">1,103.64 MB ── vsize</span><br> - <br> - <span title="Some measurements of note are as follows. - - ">Algumas medidas de nota são as seguintes.<br> - <br> - </span><span title='"resident".'>"Residente". </span><span title="Physical memory usage.">Uso de memória física. </span><span title="If you want a single measurement to summarize memory usage, this is probably the best one. - ">Se você quiser uma única medida para resumir o uso de memória, esta é provavelmente a melhor.<br> - </span><span title='"vsize".'>"Vsize". </span><span title="Virtual memory usage.">Uso de memória virtual. </span><span title="This is often much higher than any other measurement (particularly on Mac).">Este é frequentemente muito mais elevada do que qualquer outra medida (particularmente no Mac). </span><span title="It only really matters on 32-bit platforms such as Win32.">Isso só realmente importa em plataformas de 32 bits, como o Win32. </span><span title='There is also "vsize-max-contiguous" (not measured on all platforms, and not shown in this example), which indicates the largest single chunk of available virtual address space.'>Há também "vsize-max contígua" (não medido em todas as plataformas, e não é mostrado neste exemplo), o que indica o maior pedaço único de disponível espaço de endereço virtual. </span><span title="If this number is low, it's likely that memory allocations will fail due to lack of virtual address space quite soon. - ">Se esse número é baixo, é provável que as alocações de memória irá falhar devido à falta de espaço de endereço virtual muito em breve.<br> - </span><span title='Various graphics-related measurements ("gfx-*").'>Medições relacionados com gráficos diferentes ("gfx- *"). </span><span title="The measurements taken vary between platforms.">As medidas tomadas variam entre plataformas. </span><span title="Graphics is often a source of high memory usage, and so these measurements can be helpful for detecting such cases. - -">Graphics é frequentemente uma fonte de alto uso da memória, e assim por estas medidas pode ser útil para detectar tais casos.</span><br> - <br> - <span title="System - -">Sistema</span><br> - <br> - <span title="This section is show only on Firefox OS.">Esta seção é mostrar apenas no Firefox OS. </span><span title="It contains whole-device measurements obtained from the operating system.">Ele contém as medições do dispositivo inteiro obtido a partir do sistema operativo. </span><span title="Among other things, this section is useful for understanding exactly how the whole device's memory is being used.">Entre outras coisas, esta seção é útil para entender exatamente como a memória de todo o dispositivo está sendo usado.</span></span></li> -</ul> diff --git a/files/pt-br/mozilla/performance/index.html b/files/pt-br/mozilla/performance/index.html deleted file mode 100644 index 0a73bc0aa8..0000000000 --- a/files/pt-br/mozilla/performance/index.html +++ /dev/null @@ -1,96 +0,0 @@ ---- -title: Performance -slug: Mozilla/Performance -tags: - - NeedsTranslation - - Performance - - TopicStub -translation_of: Mozilla/Performance ---- -<p>Os links dos artigos aqui o ajudarão a melhorar a performance, se você estiver desenvolvendo um código de núcleo da Mozilla ou uma extensão.</p> - -<table class="topicpage-table"> - <tbody> - <tr> - <td> - <h3 id="Documentação">Documentação</h3> - - <dl> - <dt><a href="/en/Performance/Reporting_a_Performance_Problem" title="en/Performance/Reporting_a_Performance_Problem">Reportiando um problema de performance</a></dt> - <dd>Um amigável guia do usuário para reportar um problema de performance. Um ambiente de desenvolvimento não é necessário.</dd> - <dt><a href="/en/Extensions/Performance_best_practices_in_extensions" title="en/Extensions/Performance best practices in extensions">Melhores práticas de performance em extensões</a> </dt> - <dd>Um guia de "melhores práticas" para desenvolvedores de extensões.</dd> - <dt><a href="/en/Performance/Measuring_add-on_startup_performance" title="en/Measuring Add-on Startup Performance">Medição da performance de inicialização da extensão</a></dt> - <dd>Um guia para desenvolvedores de extensões de como configurar um ambiente de teste de performance.</dd> - <dt><a href="/en/XUL_School/Appendix_A:_Add-on_Performance" title="en/XUL School/Appendix A: Add-on Performance">Escola XUL: Performance em Extensões</a></dt> - <dd>Dicas para desenvolvedores de extensões para ajudá-los a evitar prejudicar a performance do aplicativo.</dd> - <dt><a href="/en/Performance/GPU_performance" title="en/GPU performance">Performance do GPU</a></dt> - <dd>Dicas de criação de perfil e melhorias de performance com o uso de uma GPU.</dd> - </dl> - - <p><span class="alllinks"><a class="internal" href="/Special:Tags?tag=Performance" title="Special:Tags?tag=Performance">Veja todas as páginas com a marca "Performance"...</a></span></p> - - <h3 id="Ferramentas_de_criação_de_perfil_e_detecção_de_perdas_de_memória">Ferramentas de criação de perfil e detecção de perdas de memória</h3> - - <dl> - <dt><a href="/en-US/docs/Mozilla/Performance/about:memory">about:memory</a></dt> - <dd>about:memory é a ferramenta mais fácil para medir o uso em código Mozilla, e o melhor lugar para começar. Também deixa você fazer outras operações relacionadas à memória como chamar GC e CC, esvaziar os logs de GC e CC, e esvaziar os relatórios de DMD. about:memory é feito no topo da infraestrutura de relatório de memória do Firefox.</dd> - <dt><a href="/en-US/docs/Mozilla/Performance/DMD">DMD</a></dt> - <dd>DMD é uma ferramenta que identifica deficiências nas medidas do about:memory, e também pode fazer múltiplos tipos de criação de perfis de pilha.</dd> - <dt><a href="https://areweslimyet.com/">areweslimyet.com</a></dt> - <dd>areweslimyet.com (a.k.a. AWSY) is a memory usage and regression tracker.</dd> - <dt><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Performance/BloatView">BloatView</a></dt> - <dd>BloatView prints per-class statistics on allocations and refcounts, and provides gross numbers on the amount of memory being leaked broken down by class. It is used as part of Mozilla's continuous integration testing.</dd> - <dt><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Performance/Refcount_tracing_and_balancing">Refcount tracing and balancing</a></dt> - <dd>Refcount tracing and balancing are ways to track down leaks caused by incorrect uses of reference counting. They are slow and not particular easy to use, and thus most suitable for use by expert developers.</dd> - <dt><a href="/en-US/docs/Mozilla/Performance/GC_and_CC_logs">GC and CC logs</a></dt> - <dd>GC and CC logs can be generated and analyzed to in various ways. In particular, they can help you understand why a particular object is being kept alive.</dd> - <dt><a href="/en-US/docs/Mozilla/Testing/Valgrind">Valgrind</a></dt> - <dd><a class="external text" href="http://valgrind.org/" rel="nofollow">Valgrind</a> is a tool that detects various memory-related problems at runtime, including leaks. Valgrind is used as <a class="external text" href="/en-US/docs/Valgrind_test_job" rel="nofollow">part</a> of Mozilla's continuous integration testing, though the coverage is limited because Valgrind is slow.</dd> - <dt><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Testing/Firefox_and_Address_Sanitizer#LeakSanitizer">LeakSanitizer</a></dt> - <dd><span class="external text">LeakSanitizer</span> (a.k.a. LSAN) is similar to Valgrind, but it runs faster because it uses static source code instrumentation. LSAN is part of Mozilla's continuous integration testing, with most tests running through it as part of the AddressSanitizer (a.k.a. ASAN) test jobs.</dd> - <dt><a href="http://developer.apple.com/documentation/Performance/Conceptual/ManagingMemory/Articles/FindingLeaks.html">Apple tools</a></dt> - <dd>Apple provides <span class="external text">some tools</span> for Mac OS X that report similar problems to those reported by LSAN and Valgrind. The "leaks" tool is not recommended for use with SpiderMonkey or Firefox, because it gets confused by tagged pointers and thinks objects have leaked when they have not (see <a class="external text" href="https://bugzilla.mozilla.org/show_bug.cgi?id=390944" rel="nofollow">bug 390944</a>).</dd> - <dt><a href="/en-US/docs/Mozilla/Performance/Leak_Gauge">Leak Gauge</a></dt> - <dd>Leak Gauge is a tool that can be used to detect certain kinds of leaks in Gecko, including those involving documents, window objects, and docshells.</dd> - <dt><a href="http://dxr.mozilla.org/mozilla-central/source/memory/replace/logalloc/README">LogAlloc</a></dt> - <dd>LogAlloc is a tool that dumps a log of memory allocations in Gecko. That log can then be replayed against Firefox's default memory allocator independently or through another replace-malloc library, allowing the testing of other allocators under the exact same workload.</dd> - </dl> - - <p>See also the documentation on <a href="/en-US/docs/Mozilla/Performance/Leak-hunting_strategies_and_tips">Leak-hunting strategies and tips.</a></p> - </td> - <td> - <h3 id="Profiling_and_performance_tools">Profiling and performance tools</h3> - - <dl> - <dt><a href="/en/Performance/Profiling_with_the_Built-in_Profiler" title="en/Performance/Profiling with the Built-in Profiler">Profiling with the Built-in Profiler</a> {{ gecko_minversion_inline("16.0") }}</dt> - <dd>The built-in profiler is a good tool to start with.</dd> - <dt><a href="/en/Performance/Profiling_with_Instruments" title="en/Performance/Profiling with Instruments">Profiling with Instruments</a></dt> - <dd>How to use Apple's Instruments tool to profile Mozilla code.</dd> - <dt><a href="/en/Performance/Profiling_with_Xperf" title="en/Performance/Profiling with Xperf">Profiling with Xperf</a></dt> - <dd>How to use Microsoft's Xperf tool to profile Mozilla code.</dd> - <dt><a href="/en/Performance/Profiling_with_Zoom" title="en/Performance/Profiling with Zoom">Profiling with Zoom</a></dt> - <dd>Zoom is a profiler for Linux done by the people who made Shark</dd> - <dt><a href="/en/Performance/Measuring_performance_using_the_PerfMeasurement.jsm_code_module" title="en/Performance/Measuring performance using the PerfMeasurement.jsm code module">Measuring performance using the PerfMeasurement.jsm code module</a> {{ gecko_minversion_inline("2.0") }}</dt> - <dd>Using <a href="/en/JavaScript_code_modules/PerfMeasurement.jsm" title="en/JavaScript code modules/PerfMeasurement.jsm"><code>PerfMeasurement.jsm</code></a> to measure performance data in your JavaScript code.</dd> - <dt><a href="/en-US/docs/Performance/Adding_a_new_Telemetry_probe" title="https://developer.mozilla.org/en-US/docs/Performance/Adding_a_new_Telemetry_probe">Adding a new Telemetry probe</a></dt> - <dd>Information on how to add a new measurement to the Telemetry performance-reporting system</dd> - <dt><a href="/en/Performance/Profiling_JavaScript_with_Shark" title="en/Performance/Profiling JavaScript with Shark">Profiling JavaScript with Shark</a> {{ gecko_minversion_inline("1.9") }}</dt> - <dd>How to use the Mac OS X Shark profiler to profile JavaScript code in Firefox 3.5 or later.</dd> - <dt><a href="/en/Performance/Profiling_with_Shark" title="en/Performance/Profiling with Shark">Profiling with Shark</a></dt> - <dd>How to use Apple's Shark tool to profile Mozilla code.</dd> - <dt><a href="/en-US/docs/Mozilla/Performance/Investigating_CSS_Performance">Investigating CSS Performance</a></dt> - <dd>How to figure out why restyle is taking so long</dd> - </dl> - - <h3 id="Related_Topics">Related Topics</h3> - - <dl> - <dd><a href="/en/JavaScript" title="en/JavaScript">JavaScript</a>, <a href="/en/XPCOM" title="en/XPCOM">XPCOM</a>, <a href="/En/Developer_Guide" title="en/Developing_Mozilla">Developing Mozilla</a>, <a href="/en/Extensions" title="en/Extensions">Extensions</a>, <a href="/en/Addons" title="en/Addons">Addons</a></dd> - </dl> - </td> - </tr> - </tbody> -</table> - -<p> </p> diff --git a/files/pt-br/mozilla/persona/.well-known-browserid/index.html b/files/pt-br/mozilla/persona/.well-known-browserid/index.html deleted file mode 100644 index 9cbda7ae2b..0000000000 --- a/files/pt-br/mozilla/persona/.well-known-browserid/index.html +++ /dev/null @@ -1,61 +0,0 @@ ---- -title: .well-known-browserid -slug: Mozilla/Persona/.well-known-browserid -translation_of: Archive/Mozilla/Persona/.well-known-browserid ---- -<p><span id="result_box" lang="pt"><span class="hps">Domínios</span> <span class="hps">anunciam sua</span> <span class="hps">capacidade de atuar como</span> <span class="hps">Provedores</span> <span class="hps atn">de Identidade </span><span class="hps">Persona </span></span><span lang="pt"><span class="hps atn">(</span><span>IDPs)</span> <span class="hps">através da publicação de</span> <span class="hps">um documento de</span> <span class="hps">apoio em</span> <code><span class="hps">/.well-known/browserid</span></code><span>.</span> <span class="hps">Este documento</span> <span class="hps">formatado em</span> <span class="hps">JSON</span> <span class="hps">deve</span> <span class="hps">ser servido</span> <span class="hps">por HTTPS</span> <span class="hps">com</span> <span class="hps">o tipo de conteúdo</span> </span><code>application/json</code><span lang="pt"><span>.</span></span></p> - -<p><span id="result_box" lang="pt"><span class="hps">Este documento pode</span> <span class="hps">especificar</span> <span class="hps">a forma de</span> <span class="hps">prestação</span> <span class="hps">e</span> <span class="hps">autenticar usuários</span><span>,</span> <span class="hps">ou</span> <span class="hps">pode delegar</span> <span class="hps">sua autoridade</span> <span class="hps">para outro</span> <span class="hps">provedor de identidade</span><span>.</span></span></p> - -<p><span id="result_box" lang="pt"><span class="hps"><strong>Nota</strong>:</span> <span class="hps">você também deve</span> <span class="hps">consultar o </span></span><span lang="pt"><span class="hps">EspecificaçProtocolo</span> <span class="hps">BrowserID</span><span class="hps"> </span> <span class="hps">como</span> <span class="hps">a referência técnica</span> <span class="hps">autorizada.</span></span></p> - -<h2 id="Supórte_Basico">Supórte Basico</h2> - -<p><span id="result_box" lang="pt"><span class="hps">Um domínio</span> <span class="hps">que atua diretamente</span> <span class="hps">um</span> <span class="hps">um IDP</span> <span class="hps">deve fornecer</span> <span class="hps">três valores</span> <span class="hps">em</span> <span class="hps">seu documento de</span> <span class="hps">apoio</span><span>:</span></span></p> - -<ul> - <li><span id="result_box" lang="pt"><code><span class="hps">chave pública</span></code><span>:</span> <span class="hps">A</span> <span class="hps">parte pública da</span> <span class="hps">chave criptográfica</span> <span class="hps">do domínio.</span></span></li> - <li><span id="result_box" lang="pt"><code><span class="hps">autenticação</span></code><span>:</span> A <span class="hps">página</span> <span class="hps">do</span> <span class="hps">domínio para</span> <span class="hps">pedir aos usuários</span> <span class="hps">fazer login.</span></span></li> - <li><span id="result_box" lang="pt"><code><span class="hps">provisionamento</span></code><span>:</span> A <span class="hps">página</span> <span class="hps">do</span> <span class="hps">domínio</span> <span class="hps alt-edited">para certificar</span> <span class="hps alt-edited">as identidades</span> <span class="hps">de seus usuários</span><span>.</span></span></li> -</ul> - -<p id="Example_.2F.well-known.2Fbrowserid_file.3A"><strong><span class="short_text" id="result_box" lang="pt"><span class="hps">Arquivo</span><span class="hps"> exemplo</span> <span class="hps">/.well-known/browserid</span><span>:</span></span></strong></p> - -<pre class="brush:js;">{ - "public-key": { - "algorithm": "RS", - "n": "82818905405105134410187227495885391609221288015566078542117409373192106382993306537273677557482085204736975067567111831005921322991127165013340443563713385983456311886801211241492470711576322130577278575529202840052753612576061450560588102139907846854501252327551303482213505265853706269864950437458242988327", - "e": "65537" - }, - "authentication": "/browserid/sign_in.html", - "provisioning": "/browserid/provision.html" -}</pre> - -<h2 id="Delegated_Support">Delegated Support</h2> - -<p>HTTP redirects and other means of "moving" a /.well-known/browserid file are not permitted. If an IdP would like to delegate to another domain for authentication and provisioning, it may publish a support document which only contains an <code>authority</code> entry.</p> - -<p id="Example_.2F.well-known.2Fbrowserid.3A"><strong>Example /.well-known/browserid:</strong></p> - -<pre class="brush:js;">{ - "authority": "subdomain.example.com" -} -</pre> - -<p>Then <code>subdomain.example.com</code> would host its own support document, as per the example above.</p> - -<p>The <code>authority</code> field is specified as a hostname plus, optionally, a port. It may not contain a path. So <code>"example.com</code>", "<code>subdomain.example.com"</code>, and "<code>subdomain.example.com:8080</code>" are all valid, but "<code>subdomain.example.com/login</code>" is not.</p> - -<p>A domain may delegate to any other domain, so long as the other domain publishes a <code>/.well-known/browserid</code> document.</p> - -<h2 id="Checklist">Checklist</h2> - -<ul> - <li>The document is formatted as valid JSON</li> - <li>The document is served over SSL</li> - <li>The document is served with a content type of "<code>application/json</code>"</li> - <li>The document is hosted on the domain exactly matching that in the email addresses assigned to users. For example: <code>example.com</code>, not <code>www.example.com</code>.</li> - <li>If delegating to another Identity Provider, the <code>authority</code> value is specified only as a hostname and, optionally, a port.</li> -</ul> - -<p>Many of these can be tested automatically with the <a class="link-https" href="https://github.com/mozilla/browserid/blob/dev/scripts/check_primary_support" title="https://github.com/mozilla/browserid/blob/dev/scripts/check_primary_support">check_primary_support script from the Persona</a> codebase<strong>.</strong></p> diff --git a/files/pt-br/mozilla/persona/browser_compatibility/index.html b/files/pt-br/mozilla/persona/browser_compatibility/index.html deleted file mode 100644 index 9b5f292371..0000000000 --- a/files/pt-br/mozilla/persona/browser_compatibility/index.html +++ /dev/null @@ -1,73 +0,0 @@ ---- -title: Browser compatibility -slug: Mozilla/Persona/Browser_compatibility -translation_of: Archive/Mozilla/Persona/Browser_compatibility ---- -<h2 id="Supported_Browsers">Supported Browsers</h2> -<p>Persona is developed, tested, and supported with the following browsers. Thanks to Persona's cross-platform JavaScript library, users do not need add-ons in order to use Persona.</p> -<table> - <tbody> - <tr> - <th colspan="3" scope="row" style="text-align: center; background-color: #d3d7cf;"><strong>Desktop Browsers</strong></th> - </tr> - <tr> - <th scope="row"><strong>Internet Explorer</strong></th> - <td colspan="2" rowspan="1" style="background-color: #8ae234;">8.0<sup>*</sup>, 9.0<sup>†</sup></td> - </tr> - <tr> - <th scope="row"><strong>Firefox</strong></th> - <td colspan="2" style="background-color: #8ae234;">Current Stable, Beta, Aurora, Nightly, and Extended Support Releases<br> - Previous Stable Release</td> - </tr> - <tr> - <th scope="row"><strong>Chrome</strong></th> - <td colspan="2" style="background-color: #8ae234;">Latest Stable Release</td> - </tr> - <tr> - <th scope="row"><strong>Safari</strong></th> - <td colspan="2" style="background-color: #8ae234;">Latest Stable Release</td> - </tr> - <tr> - <th scope="row"><strong>Opera</strong></th> - <td colspan="2" style="background-color: #8ae234;">Latest Stable Release<sup>‡</sup></td> - </tr> - <tr> - <th colspan="3" scope="row" style="text-align: center; background-color: #d3d7cf;"><strong>iOS Browsers</strong></th> - </tr> - <tr> - <th scope="row"><strong>Mobile Safari</strong></th> - <td colspan="2" rowspan="1" style="background-color: #8ae234;">iOS 5.x</td> - </tr> - <tr> - <th colspan="3" scope="row" style="text-align: center; background-color: #d3d7cf;"><strong>Android Browsers</strong></th> - </tr> - <tr> - <th scope="row"><strong>Default Browser</strong></th> - <td colspan="2" rowspan="1" style="background-color: #8ae234;">2.x — 4.x</td> - </tr> - <tr> - <th scope="row"><strong>Firefox</strong></th> - <td colspan="2" style="background-color: #8ae234;">Current Stable, Beta, Aurora, and Nightly Releases<br> - Previous Stable Release</td> - </tr> - <tr> - <th scope="row"><strong>Chrome</strong></th> - <td colspan="2" style="background-color: #8ae234;">Latest Stable Release</td> - </tr> - </tbody> -</table> -<p><sup>*</sup>: For Windows XP. <sup>†</sup>: For Windows Vista and Windows 7. <sup>‡</sup>: As time allows.</p> -<h2 id="Unsupported_Browsers">Unsupported Browsers</h2> -<ul> - <li>Internet Explorer versions 6.0 and 7.0 are not supported. Users will be prompted to upgrade their browser.</li> - <li>Google Chrome Frame is not supported and will not function. Support may be added later (<a href="https://github.com/mozilla/browserid/issues/796" title="https://github.com/mozilla/browserid/issues/796">Issue #796</a>).</li> - <li>Third party browsers on iOS are not supported and will not function. Support may be added later (<a href="https://github.com/mozilla/browserid/issues/1870" title="https://github.com/mozilla/browserid/issues/1870">Issue #1870</a>, <a href="https://github.com/mozilla/browserid/issues/2034" title="https://github.com/mozilla/browserid/issues/2034">Issue #2034</a>).</li> -</ul> -<h2 id="Other_Browsers">Other Browsers</h2> -<p>Despite not being explicitly supported, any browser that includes both {{ domxref("window.postMessage()") }} and {{ domxref("Storage", "localStorage") }} should work. These APIs have been available in all major browsers since March 2010.</p> -<h2 id="Known_Issues">Known Issues</h2> -<ul> - <li>Browsers must accept third party cookies for full functionality (<a href="https://github.com/mozilla/browserid/issues/1352" title="https://github.com/mozilla/browserid/issues/1352">Issue #1352</a>).</li> - <li>Android 2.x users without a default browser selected may be unable to log in (<a href="https://github.com/mozilla/browserid/issues/1854" title="https://github.com/mozilla/browserid/issues/1854">Issue #1854</a>).</li> - <li>When forced to emulate IE8, Internet Explorer 9 may fail to log in to sites.</li> -</ul> diff --git a/files/pt-br/mozilla/persona/index.html b/files/pt-br/mozilla/persona/index.html deleted file mode 100644 index b4ce66c636..0000000000 --- a/files/pt-br/mozilla/persona/index.html +++ /dev/null @@ -1,177 +0,0 @@ ---- -title: Persona -slug: Mozilla/Persona -tags: - - Persona -translation_of: Archive/Mozilla/Persona ---- -<div class="summary">Simples, sensível à privacidade, login único: permita que seus usuários assinem em seu site com o seu endereço de e-mail, e liberte-se do gerenciamento de senhas.</div> - -<div class="column-container"> -<p><span class="seoSummary">O <a href="https://login.persona.org/">Mozilla Persona</a> é um sistema de login para Web compatível com vários navegadores que é fácil de usar e fácil de implantar. Ele funciona em <a href="/en-US/docs/persona/Browser_compatibility">todos os principais navegadores</a>, e você pode <a href="/en-US/docs/Persona/Quick_Setup">começar hoje mesmo</a>.</span></p> - -<p>Porque você deveria usar o Persona no seu website?</p> - -<ol> - <li><strong>O Persona elimina totalmente as senhas específicas para cada website</strong>, liberando os usuários e sites do fardo da criação, gerenciamento e armazenamento de senhas com segurança.</li> - <li><strong>O Persona é fácil de usar.</strong> Com somente dois cliques, um usuário do Persona pode entrar em um site como o <a href="http://voo.st">Voost</a>, ignorando o atrito associado com a criação da conta.</li> - <li><strong>O Persona é fácil de implementar</strong><strong>. </strong>Os desenvolvedores podem adicionar o Persona em um website numa única tarde.</li> - <li><strong>Não há aprisionamento</strong>. Os desenvolvedores obtêm um endereço de e-mail verificado para todos os seus usuários, e os usuários podem usar qualquer endereço de e-mail com o Persona.</li> -</ol> - -<p>E Mais, o Persona só vai melhorar: ele é construido em um <strong>protocolo descentralizado, aberto,</strong> que é projetado para permitir <strong>integração direta em navegadores</strong> e <strong>suporte nativo por provedores e email</strong><strong>. </strong>Sites que implementam o Persona hoje vão experimentar automaticamente essas melhorias, sem ter de alterar qualquer código.</p> -</div> - -<hr> -<div class="column-container"> -<h2 id="Usando_o_Persona_no_seu_próprio_site">Usando o Persona no seu próprio site</h2> - - -<div class="column-third"> -<h3 id="Começando">Começando</h3> - -<dl> - <dt><a href="/en-US/docs/Persona/Why_Persona">Porque o Persona?</a></dt> - <dd>O que há de especial sobre o Persona em comparação com outros sistemas de identidade e autenticação.</dd> - <dt><a href="/en-US/docs/Persona/Quick_Setup">Instalação rápida</a></dt> - <dd>Um passo a passo mostrando como adicionar o Persona ao seu website.</dd> -</dl> - -<h3 id="API_de_referência">API de referência</h3> - -<dl> - <dt><a href="/en-US/Persona/The_navigator.id_API">A API navigator.id</a></dt> - <dd>A API do navegador.</dd> - <dt><a href="/en-US/docs/Persona/Remote_Verification_API">Verificação de referência da API</a></dt> - <dd>A API de verificação remota.</dd> -</dl> -</div> - -<div class="column-third"> -<h3 id="Guias">Guias</h3> - -<dl> - <dt><a href="/en-US/docs/Persona/Security_Considerations">Considerações de segurança</a></dt> - <dd>Práticas e técnicas para se certificar de sua implantação do Persona é segura.</dd> - <dt><a href="/en-US/docs/Persona/Browser_compatibility">Compatiblidade com navegadores</a></dt> - <dd>Saiba exatamente quais navegadores suportam o Persona.</dd> - <dt><a href="/en-US/docs/Persona/Internationalization">Internationalização</a></dt> - <dd>Saiba como Persona lida com diferentes idiomas.</dd> - <dt><a href="/en-US/docs/Persona/The_implementor_s_guide">O guia do implementador</a></dt> - <dd>Dicas de sites que adicionaram suporte para o Persona.</dd> -</dl> -</div> - -<div class="column-third"> -<h3 id="Recursos">Recursos</h3> - -<dl> - <dt><a href="/en-US/docs/Persona/Libraries_and_plugins">Bibliotecas e plugins</a></dt> - <dd>Encontre uma biblioteca drop-in para sua linguagem programação favorita, framework web, blog, ou sistema de gerenciamento de conteúdo.</dd> - <dt><a class="link-https" href="https://github.com/mozilla/browserid-cookbook">O Livro de Receitas do Persona</a></dt> - <dd>EExemplos de código fonte para websites com Persona. Inclui fragmentos em C# (MVC3), PHP, Node.JS, e mais.</dd> - <dt><a href="/en-US/Persona/User_interface_guidelines">Diretrizes da interface do usuário</a></dt> - <dd>Como apresentar o login do Persona para seus usuários.</dd> -</dl> -</div> -</div> - -<hr> -<h2 id="Tornando-se_um_Provedor_de_Identidade">Tornando-se um Provedor de Identidade</h2> - -<p>Se você é um provedor de e-mail ou outro serviço prestador de identidade, confira os links abaixo para saber mais sobre como se tornar um Provedor de Identidade do Persona.</p> - -<div class="column-container"> -<div class="column-third"> -<dl> - <dt><a href="/en-US/docs/Persona/Identity_Provider_Overview">Visão geral dos PId</a></dt> - <dd>Uma visão de alto nível sobre Provedores de Identidade do Persona.</dd> -</dl> -</div> - -<div class="column-third"> -<dl> - <dt><a href="/en-US/docs/Persona/Implementing_a_Persona_IdP">Implementando um PId</a></dt> - <dd>Um guia detalhado para os detalhes técnicos sobre ser um PId.</dd> -</dl> -</div> - -<div class="column-third"> -<dl> - <dt><a href="/en-US/docs/Persona/.well-known-browserid">.well-known/browserid</a></dt> - <dd>Uma visão geral dos arquivos <code>.well-known/browserid</code>, que os PIds usam para anunciar suporte para o protocolo.</dd> -</dl> -</div> -</div> - -<hr> -<h2 id="O_Projeto_Persona">O Projeto Persona</h2> - -<div class="column-container"> -<div class="column-third"> -<dl> - <dt><a href="/en-US/docs/Persona/Glossary">Glossário</a></dt> - <dd>Terminologia BrowserID e Persona definida.</dd> - <dt><a href="/en-US/docs/Persona/FAQ">Perguntas Frequentes</a></dt> - <dd>Respostas a perguntas comuns.</dd> - <dt><a href="/en-US/docs/Persona/Protocol_Overview">Visão geral do protocolo</a></dt> - <dd>Uma visão geral técnica de nível médio do protocolo BrowserID de base.</dd> -</dl> -</div> - -<div class="column-third"> -<dl> - <dt><a href="/en-US/docs/persona/Crypto">Cripto</a></dt> - <dd>Um olhar sobre os conceitos por trás de criptografia do Persona e BrowserID.</dd> - <dt><a class="link-https" href="https://github.com/mozilla/id-specs/blob/prod/browserid/index.md">As Especificações</a></dt> - <dd>Detalhes técnicos profundos vivem aqui.</dd> -</dl> -</div> - -<div class="column-third"> -<dl> - <dt><a href="/en-US/docs/Persona/Bootstrapping_Persona">O website do Persona</a></dt> - <dd>Para o Persona funcionar, estamos hospedando três serviços em <a class="link-https" href="https://login.persona.org" rel="freelink">https://login.persona.org</a>: um retorno do Provedor de Identidade, uma implementação das APIs {{domxref("navigator.id")}}, e um serviço de verificação.</dd> - <dt><a href="https://github.com/mozilla/browserid">O código fonte do Persona</a></dt> - <dd>O código do Persona está no GitHub. Pull requests são bem-vindas!</dd> -</dl> -</div> -</div> - - - -<h2 id="Subnav">Subnav</h2> - -<ol> - <li><a href="#">Usando o Persona num website</a> - - <ol> - <li><a href="/pt-BR/docs/Mozilla/Persona/Porque_Persona" title="Porque Persona?">Porque você deveria usar o Persona?</a></li> - <li><a href="/pt-BR/docs/Mozilla/Persona/Quick_Setup" title="Início Pápido">Inicio Rápido</a></li> - <li><a href="/en-US/Persona/The_implementor_s_guide" title="Guia do Implementador">Dicas para implementar o Persona</a></li> - <li><a href="/en-US/Persona/Security_Considerations" title="Considerações de Segurança">Considerações de segurança</a></li> - <li><a href="/en-US/Persona/Browser_compatibility" title="Compatibilidade com Navegadores">Compatibilidade com navegadores</a></li> - <li><a href="/en-US/Persona/Internationalization" title="Internationalização">Internationalização</a></li> - <li><a href="/en-US/Persona/The_navigator.id_API" title="A API navigator.id">A API navigator.id</a></li> - <li><a href="/en-US/Persona/Remote_Verification_API" title="A API de Verificação Remota">A API de verificação remota</a></li> - <li><a href="/en-US/Persona/Libraries_and_plugins" title="Bibliotecas e plugins">Bibliotecas e plugins</a></li> - <li><a href="/en-US/Persona/User_interface_guidelines" title="Diretrizes de interface do usuário">Diretrizes de interface do usuário</a></li> - </ol> - </li> - <li><a href="#">Se tornando um Provedor de Identidade</a> - <ol> - <li><a href="/en-US/Persona/Identity_Provider_Overview" title="Visão geral dos IdPs">Visão geral dos IdPs</a></li> - <li><a href="/en-US/Persona/Implementing_a_Persona_IdP" title="Implementando um IdP">Implementando um IdP</a></li> - <li><a href="/pt-BR/docs/Persona/.well-known-browserid" title="Formato .well-known-browserid">Formato .well-known-browserid</a></li> - </ol> - </li> - <li><a href="#">O projeto Persona</a> - <ol> - <li><a href="/en-US/Persona/Glossary" title="Glossário">Glossário</a></li> - <li><a href="/en-US/Persona/FAQ" title="FAQ">Perguntas Frequentes</a></li> - <li><a href="/en-US/Persona/Bootstrapping_Persona" title="Serviços hospedados do Persona">Serviços hospedados do Persona</a></li> - <li><a href="/en-US/Persona/Protocol_Overview" title="Visão geral do protocolo">Visão geral do protocolo</a></li> - <li><a href="/en-US/Persona/Crypto" title="Cripto">Criptografia</a></li> - </ol> - </li> -</ol> diff --git a/files/pt-br/mozilla/persona/porque_persona/index.html b/files/pt-br/mozilla/persona/porque_persona/index.html deleted file mode 100644 index eccf487479..0000000000 --- a/files/pt-br/mozilla/persona/porque_persona/index.html +++ /dev/null @@ -1,74 +0,0 @@ ---- -title: Por que você deveria usar o Persona? -slug: Mozilla/Persona/Porque_Persona -tags: - - Destaque - - Introdução - - Persona -translation_of: Archive/Mozilla/Persona/Why_Persona ---- -<div dir="ltr" style="margin-left: 40px;"><span id="result_box" lang="pt"><span class="hps">Persona</span> <span class="hps">é um sistema de</span> <span class="hps">identidade</span> <span class="hps">cross-browser</span> <span class="hps">distribuído</span> <span class="hps">abertamente</span> <span class="hps">fornecendo uma solução para</span> <span class="hps">o modelo</span> <span class="hps">tradicional</span> <span class="hps">de senha</span><span>.</span> <span class="hps">Ele aborda</span> <span class="hps">as deficiências</span> <span class="hps">de usabilidade</span> <span class="hps">que afligem</span> <span class="hps">outros sistemas</span> <span class="hps">relacionados com a</span> <span class="hps">privacidade, como</span> <span class="hps">OpenID</span><span>,</span> <span class="hps">sem recorrer a</span> <span class="hps">uma infra-estrutura</span> <span class="hps">centralizada, como</span> <span class="hps">o Facebook Connect.</span><br> - <br> -<span class="hps">A abordagem</span> <span class="hps">atual para</span> <span class="hps">estabelecer e gerenciar</span> <span class="hps">nomes de usuário</span> <span class="hps">e senhas</span> <span class="hps">é tedioso</span><span>, ineficiente e</span> <span class="hps">não seguro.</span> <span class="hps">Os usuários devem</span> <span class="hps">criar e</span> <span class="hps">lembrar</span> <span class="hps">senhas complexas</span> <span class="hps">para cada site</span> <span class="hps">e serviço.</span> <span class="hps">Sites</span> <span class="hps">então</span> <span class="hps">deve</span> <span class="hps">de forma segura</span> <span class="hps">criptografar</span> <span class="hps">e armazenar</span> <span class="hps">senhas para impedir</span> <span class="hps">o vazamento de</span> <span class="hps">informações confidenciais.</span> <span class="hps">A prevenção ea</span> <span class="hps">negação</span> <span class="hps">de</span> <span class="hps">vazamentos de segurança</span> <span class="hps">é a principal razão</span> <span class="hps">para o uso de</span> <span class="hps">Persona</span><span>,</span> <span class="hps">mas a flexibilidade</span> <span class="hps">de seus sistemas</span> <span class="hps">outclasses</span> <span class="hps">sistemas de segurança</span> <span class="hps">de identidade</span> <span class="hps">mais padrão</span><span>.</span></span></div> - -<div dir="ltr" style="margin-left: 40px;"> </div> - -<div class="summary"> -<div dir="ltr" style="margin-left: 40px;"><span id="result_box" lang="pt"><span class="hps">Nota: Para informações</span> <span class="hps">mais detalhadas sobre</span> <span class="hps">Persona</span> <span class="hps">e suas funções</span> <span class="hps">ver</span> <a href="https://support.mozilla.org/en-US/kb/what-is-persona-and-how-does-it-work">O que é Persona e como ele funciona?</a></span></div> -</div> - -<h2 id="Persona_elimina_a_necessidade_de_senhas_por_site"><span class="short_text" id="result_box" lang="pt"><span class="hps">Persona</span> <span class="hps">elimina a necessidade de</span> <span class="hps">senhas</span> <span class="hps">por site</span></span></h2> - -<p style="margin-left: 40px;"><span id="result_box" lang="pt"><span class="hps">Persona</span> <span class="hps">utiliza</span> <span class="hps">um sistema</span> <span class="hps">de dois cliques</span> <span class="hps">segura</span> <span class="hps">construída em cima de</span> <span class="hps">criptografia de chave pública</span> <span class="hps">para</span> <span class="hps">fazer login em</span> <span class="hps">sites.</span> <span class="hps">O navegador do usuário</span> <span class="hps">gera uma</span> <span class="hps">afirmação</span> <span class="hps">de criptografia</span> <span class="hps">de</span> <span class="hps">identidade que</span> <span class="hps">expira</span> <span class="hps">depois de alguns minutos</span> <span class="hps">e</span> <span class="hps">é válido apenas</span> <span class="hps">em um local.</span> <span class="hps">Ao evitar</span> <span class="hps">senhas</span><span>,</span> <span class="hps">os usuários não precisam</span> <span class="hps">se preocupar em lembrar</span> <span class="hps">várias</span> <span class="hps">senhas</span> <span class="hps">distintas e</span> <span class="hps">não precisam mais</span> <span class="hps">se preocupar com</span> <span class="hps">o acesso</span> <span class="hps">não segura</span> <span class="hps">a</span> <span class="hps">sua</span> <span class="hps">senha.</span> <span class="hps">Este processo</span> <span class="hps">sign-in</span> <span class="hps">rápido e fácil</span> <span class="hps">elimina</span> <span class="hps">as ineficiências</span> <span class="hps">atuais de</span> <span class="hps">registro de conta</span> <span class="hps">tradicional e</span> <span class="hps">permite que os usuários</span> <span class="hps">rapidamente estabelecer</span> <span class="hps">contas</span> <span class="hps">em sites.</span></span></p> - -<h2 id="Persona_usa_endereços_de_e-mail_como_identidades"><span class="short_text" id="result_box" lang="pt"><span class="hps">Persona</span> <span class="hps">usa endereços</span> <span class="hps">de e-mail</span> <span class="hps">como</span> <span class="hps">identidades</span></span></h2> - -<div id="gt-src-tools"> -<div id="gt-src-tools-l"> -<div id="gt-input-tool" style="display: inline-block;"> -<div id="itamenu" style="margin-left: 40px;"><span id="result_box" lang="pt"><span class="hps">Sistema</span> <span class="hps">de</span> <span class="hps">Persona</span> <span class="hps">depende de</span> <span class="hps">endereços</span> <span class="hps">de e-mail</span> <span class="hps">como seu</span> <span class="hps">componente chave</span> <span class="hps">por causa de</span> <span class="hps">e-mails</span> <span class="hps">inerente</span> <span class="hps">natureza versátil</span> <span class="hps">e privado.</span> <span class="hps">A infra-estrutura</span> <span class="hps">pré-existente</span> <span class="hps">funciona muito bem</span><span>, não apenas de</span> <span class="hps">uma perspectiva de design</span><span>, mas</span> <span class="hps">uma perspectiva</span> <span class="hps">ideal</span> <span class="hps">de</span> <span class="hps">abertamente</span> <span class="hps">mantido</span> <span class="hps">e segura</span> <span class="hps">transferência de</span> <span class="hps">identidade</span> <span class="hps">em toda a</span> <span class="hps">Internet.</span></span></div> -</div> -</div> -</div> - -<h3 id="sect1"> </h3> - -<h3 id="Benefícios_para_o_usuário"><span class="short_text" id="result_box" lang="pt"><span class="hps">Benefícios para</span> <span class="hps">o usuário</span></span></h3> - -<ul style="margin-left: 40px;"> - <li><span id="result_box" lang="pt"><span class="hps">Os usuários já</span> <span class="hps">conhecem os seus</span> <span class="hps">endereços de email.</span> <span class="hps">Eles</span> <span class="hps">não têm que</span> <span class="hps">aprender um sistema</span> <span class="hps">novo e potencialmente</span> <span class="hps">confuso</span><span>, como</span> <span class="hps">OpenID</span><span>.</span></span></li> - <li><span id="result_box" lang="pt"><span class="hps">Os endereços</span> <span class="hps">de e-mail</span> <span class="hps">cuidadosamente</span> <span class="hps">capturar</span> <span class="hps">a idéia de alguém</span> <span class="hps">@</span> <span class="hps">algum</span> <span class="hps">contexto.</span> <span class="hps">Isso torna mais fácil</span> <span class="hps">para os usuários a</span> <span class="hps">manter</span> <span class="hps">suas identidades @trabalho</span><span>, @casa</span><span>,</span> <span class="hps">ou @escola</span> <span class="hps">separado.</span> <span class="hps">Isso difere da</span> <span class="hps">tendência</span> <span class="hps">de</span> <span class="hps">que reúna</span> <span class="hps">muitas</span> <span class="hps">contas através</span> <span class="hps">identidade real</span><span>,</span> <span class="hps">políticas de</span> <span class="hps">conta</span> <span class="hps">única</span> <span class="hps">em redes sociais como</span> <span class="hps">Facebook</span> <span class="hps">e</span> <span class="hps">Google+</span><span>.</span></span></li> - <li><span id="result_box" lang="pt"><span class="hps">Email</span> <span class="atn hps">pode ser auto-</span><span>organizado ou</span> <span class="hps">delegadas a outros</span> <span class="hps">prestadores de serviços,</span> <span class="hps">dando aos usuários</span> <span class="hps">o controle de sua</span> <span class="hps">identidade.</span> <span class="hps">Essa habilidade</span> <span class="hps">é muito reduzido</span> <span class="hps">quando</span> <span class="hps">é preciso</span> <span class="hps">consolidar</span> <span class="hps">várias contas</span> <span class="hps">em uma</span> <span class="hps">identidade.</span></span> </li> -</ul> - -<div class="almost_half_cell" id="gt-res-content"> -<h3 dir="ltr" id="Vantagens_para_Desenvolvedores" style="zoom: 1;"><span class="short_text" id="result_box" lang="en"><span class="hps">Vantagen</span><span class="hps">s para Desenvolvedores</span></span></h3> -</div> - -<ul style="margin-left: 40px;"> - <li> - <div id="gt-input-tool" style="display: inline-block;"> - <div id="tts_button"><span id="result_box" lang="pt"><span class="hps">Os endereços de email</span> <span class="hps">permitem que os desenvolvedores</span> <span class="hps">se comunicar diretamente com</span> <span class="hps">os usuários</span></span></div> - </div> - <span lang="en"><span class="hps">.</span> </span></li> - <li> - <div class="almost_half_cell" id="gt-res-content"> - <div dir="ltr" style="zoom: 1;"><span id="result_box" lang="pt"><span class="hps">Persona</span> <span class="hps">fornece endereços</span> <span class="hps">de e-mail</span> <span class="hps">para sites</span> <span class="hps">automaticamente quando um usuário</span> <span class="hps">faz logon,</span> <span class="hps">eliminando a necessidade de</span> <span class="hps">formas pós</span><span class="atn">-</span><span>inscrição</span> <span class="hps">adicionais.</span></span><span lang="es"><span lang="en"><span class="hps">.</span> </span></span></div> - </div> - </li> - <li> - <div class="almost_half_cell" id="gt-res-content"> - <div dir="ltr" style="zoom: 1;"><span id="result_box" lang="pt"><span class="hps">Muitos</span> <span class="hps">sistemas de login</span> <span class="hps">tratar</span> <span class="hps">endereços</span> <span class="hps">de e-mail</span> <span class="hps">como chaves</span> <span class="hps">únicas,</span> <span class="hps">por isso não há</span> <span class="alt-edited hps">travas</span> <span class="hps">para</span> <span class="hps">Persona</span> <span class="hps">e pode</span> <span class="hps">ser integrado com</span> <span class="hps">sistemas de acesso</span> <span class="hps">existentes.</span> <span class="hps">Qualquer usuário que tenha</span> <span class="hps">um endereço de</span> <span class="hps">e-mail</span> <span class="hps">pode acessar o conteúdo</span> <span class="hps">quase imediatamente</span></span><span id="result_box" lang="es"><span id="result_box" lang="en">.</span></span></div> - </div> - </li> -</ul> - -<div class="almost_half_cell" id="gt-res-content"> -<h2 dir="ltr" id="Como_Persona_é_diferente_de_outros_prestadores_de_login_único" style="zoom: 1;"><span id="result_box" lang="pt"><span class="alt-edited">Como Persona é diferente de outros prestadores de login único</span></span></h2> -</div> - -<p style="margin-left: 40px;"><span id="result_box" lang="pt"><span class="alt-edited">Persona protege a privacidade, fornece ao usuário o controle, e embeleza escolha de uma maneira que outros provedores de segurança não pode. Muitas redes sociais como Facebook e Google+ exige que os usuários usem os nomes reais, aceitar as suas políticas, e os usuários se limitam a apenas uma conta. Persona permite que os usuários mantenham seus trabalhos, na escola e identidades sociais separado usando endereços de e-mail como um identificador único ao invés de nomes reais. Devido a isso o anonimato é garantido uma camada extra de proteção de identidade e de rede que as redes sociais mais não têm.</span></span></p> - -<p style="margin-left: 40px;"><span id="result_box" lang="pt"><span class="alt-edited">Persona também tem uma nova abordagem para proteger a privacidade do usuário, colocando o navegador do usuário no centro do processo de autenticação. O navegador obtém credenciais fornecidas por e-mail do usuário, em seguida, apresenta essas credenciais para um site. O provedor de e-mail não pode rastrear o usuário, mas os locais ainda podem ter confiança na identidade do usuário por criptografia para verificar as credenciais. A maioria dos outros sistemas, até mesmo sistemas distribuídos como o OpenID, requerem sites para se conectar a redes centrais antes de permitir que um usuário para efetuar login.</span></span></p> - -<p style="margin-left: 40px;"><span id="result_box" lang="pt"><span class="alt-edited">A eficiência da Persona permite uma relação avançada entre desenvolvedores e usuários. Mozilla está liderando o caminho no desenvolvimento de web aberta e livre, e Persona suporta filosofia de design da Mozilla através de sua interface de usuário e de proteção características easy-to-use (Fácil de Usar).</span></span></p> diff --git a/files/pt-br/mozilla/persona/quick_setup/index.html b/files/pt-br/mozilla/persona/quick_setup/index.html deleted file mode 100644 index 5a28805de7..0000000000 --- a/files/pt-br/mozilla/persona/quick_setup/index.html +++ /dev/null @@ -1,148 +0,0 @@ ---- -title: Quick Setup -slug: Mozilla/Persona/Quick_Setup -translation_of: Archive/Mozilla/Persona/Quick_Setup ---- -<p>Adicionando o sistema de login Persona para seu site leva apenas cinco passos:</p> -<ol> - <li>Incluir a Persona biblioteca JavaScript em suas páginas.</li> - <li>Adicionar "login" e "logout" botões.</li> - <li>Preste atenção para ações login e logout.</li> - <li>Verificar as credenciais do usuário.</li> - <li>Reveja as melhores práticas.</li> -</ol> -<p>Você deve ser capaz de se levantar e correr em uma única tarde, mas as primeiras coisas primeiro: Se você estiver indo para usar Persona em seu site, por favor, tome um momento e se inscrever na lista de discussão Persona avisos. É o tráfego extremamente baixo, sendo usado apenas para anunciar mudanças ou problemas de segurança que podem afetar negativamente o seu site.<br> - Passo 1: Incluir a biblioteca Persona<br> - <br> - Persona é projetado para ser navegador neutro e funciona bem em todos os desktops principal e navegadores móveis. Isto é possível graças à plataforma cruzada biblioteca JavaScript Persona. Uma vez que esta biblioteca é carregada na sua página, as funções que você precisa Persona ({{domxref ("navigator.id.watch ()", "assistir ()");}}, {{domxref ("navigator.id.request () "," request () ")}}, e {{domxref (" navigator.id.logout () "," logout () ");}}) estará disponível no objeto global navigator.id.<br> - <br> - Para incluir o Persona biblioteca JavaScript, você pode colocar essa tag script na cabeça da sua página:<br> - <br> - <script src="https://login.persona.org/include.js"> </ script><br> - <br> - Você deve incluir isso em cada página que usa {{domxref ("navigator.id")}} funções. Porque Persona ainda está em desenvolvimento, não se deve auto-hospedar o arquivo include.js.<br> - Passo 2: Adicione login e logout botões<br> - <br> - Porque Persona é concebido como uma API DOM, você deve chamar funções quando um usuário clica em um botão de entrar e sair em seu site. Para abrir o diálogo Persona e solicitar ao usuário fazer o login, você deve invocar {{domxref ("navigator.id.request ()")}}. Para sair, chamar {{domxref ("navigator.id.logout ()")}}.<br> - <br> - Por exemplo:<br> - <br> - var signinLink = document.getElementById ('signin');<br> - if (signinLink) {<br> - signinLink.onclick = function () {navigator.id.request ();};<br> - };<br> - <br> - var signoutLink = document.getElementById ('signout');<br> - if (signoutLink) {<br> - signoutLink.onclick = function () {navigator.id.logout ();};<br> - };<br> - <br> - O que deve aqueles botões parecem? Vá para a página de Recursos de Branding para imagens premade e baseados em CSS botões!<br> - Passo 3: Preste atenção para ações login e logout<br> - <br> - Para Persona para funcionar, você precisa dizer a ele o que fazer quando um usuário faz dentro ou fora. <span title='This is done by calling the {{ domxref("navigator.id.watch()") }} function and supplying three parameters:'>Isso é feito chamando a função {{domxref ("navigator.id.watch ()")}} e fornecer três parâmetros:<br> - <br> - </span>O loggedInEmail do usuário atual do seu site, ou nulo se nenhum. <span title="You should generate this dynamically when you render a page.">Você deve gerar este dinamicamente quando você renderizar uma página.<br> - <br> - </span>A função para chamar quando uma ação OnLogin é acionado. <span title="This function is passed a single parameter, an “identity assertion,” which must be verified.">Esta função é passado um único parâmetro, uma "declaração de identidade", a qual deve ser verificada.<br> - <br> - </span>A função para chamar quando uma ação OnLogout é acionado. Esta função não é passado nenhum parâmetro.<br> - <br> - Nota: Você deve sempre incluir tanto OnLogin e OnLogout quando você chamar {{domxref ("navigator.id.watch ()")}}.<br> - <br> - Por exemplo, se você atualmente acho que Bob é registrada em seu site, você pode fazer isso:<br> - <br> - var currentUser = 'bob@example.com';<br> - <br> - navigator.id.watch ({<br> - loggedInEmail: currentUser,<br> - OnLogin: function (afirmação) {<br> - // Um usuário conectado!<br> - // 1. Enviar a afirmação de sua infra-estrutura para verificação e para criar uma sessão.<br> - // 2. Atualize seu UI.<br> - $.ajax({<br> - Tipo: 'POST',<br> - url: '/ auth / login', // Esta é uma URL em seu site.<br> - data: {'status': true},<br> - success: function (res, status, xhr) {window.location.reload ();},<br> - error: function(res, status, xhr) {alert ("falha de login" + res);}<br> - });<br> - }<br> - OnLogout: function () {<br> - // Um usuário logado para fora! Aqui você precisa:<br> - // Derrubem a sessão do usuário, redirecionando o usuário ou fazer uma chamada para o backend.<br> - $.ajax({<br> - type: 'POST',<br> - url: 'auth / / logout', / / Esta é uma URL em seu site.<br> - success: function(res, status, xhr) {window.location.reload ();},<br> - erro: function(res, status, xhr) {alert ("logout fracasso" + res);}<br> - });<br> - }<br> - });<br> - <br> - Neste exemplo, tanto OnLogin e OnLogout são implementadas, fazendo uma solicitação POST assíncrona para backend do seu site. O back-end em seguida, registra o usuário dentro ou fora, geralmente através da criação ou exclusão de informações em um cookie de sessão. Então, se tudo controlos fora, recarrega a página para ter em conta o estado novo login.<br> - <br> - Você pode, é claro, usar AJAX para implementar esta sem recarregar ou redirecionar, mas isso está além do escopo deste tutorial.<br> - <br> - Você deve chamar esta função em cada página com um botão de entrar e sair. Para apoiar melhorias Persona como login automático e sair mundial para seus usuários, você deve chamar esta função em cada página do seu site.<br> - Passo 4: Verifique as credenciais do usuário<br> - <br> - Em vez de senhas, Persona usa "asserções de identidade", que são tipo como de uso único de um único site senhas combinado com o endereço de e-mail do usuário. Quando um usuário deseja fazer o login, o retorno de chamada OnLogin será invocado com uma afirmação do que o usuário. Antes que você possa acessá-los, você deve verificar se a afirmação é válida.<br> - <br> - É extremamente importante que você verifique a afirmação em seu servidor, e não em JavaScript executado no navegador do usuário, uma vez que seria fácil de falsificar. O exemplo acima entregue a afirmação de backend do site usando jQuery $. Ajax () auxiliar para postá-lo para api / / login.<br> - <br> - Uma vez que o servidor tem uma afirmação, como você verificar isso? A maneira mais fácil é usar um serviço de ajuda fornecida pela Mozilla. <span title="Simply POST the assertion to https://verifier.login.persona.org/verify with two parameters:">Simplesmente postar a afirmação de https://verifier.login.persona.org/verify com dois parâmetros:<br> - <br> - </span><span title="assertion: The identity assertion provided by the user.">afirmação: A afirmação de identidade fornecida pelo usuário.<br> - </span>platéia: O nome do host ea porta do seu site. Você deve codificar este valor em seu backend, não derivá-lo de todos os dados fornecidos pelo usuário.<br> - <br> - Por exemplo, se você é example.com, você pode utilizar a linha de comando para testar uma afirmação com:<br> - <br> - $ Curl-d "afirmação = <ASSERTION> público = & https://example.com:443" "https://verifier.login.persona.org/verify"<br> - <br> - Se for válido, você vai ter uma resposta JSON assim:<br> - <br> - {<br> - "status": "okay",<br> - "email": "bob@eyedee.me",<br> - "audience": "https://example.com:443",<br> - "expires": 1308859352261,<br> - "issuer": "eyedee.me"<br> - }<br> - <br> - Você pode saber mais sobre o serviço de verificação lendo a API do serviço de verificação. Um exemplo de implementação api / / login, usando o Python, o framework web Flask, e os pedidos HTTP biblioteca pode ter este aspecto:<br> - <br> - @ App.route ('/ api / login ", métodos = [' Post '])<br> - <span title="def login():">def login ():<br> - </span><span title="# The request has to have an assertion for us to verify"># O pedido tem que ter uma afirmação para nós verificar<br> - </span><span title="if 'assertion' not in request.form:">se "afirmação" não request.form:<br> - </span><span title="abort(400)">abort (400)<br> - <br> - </span><span title="# Send the assertion to Mozilla's verifier service."># Enviar a afirmação ao serviço da Mozilla verificador.<br> - </span><span title="data = {'assertion': request.form['assertion'], 'audience': 'https://example.com:443'}">dados = {'afirmação': request.form ['afirmação'], 'audiência': 'https://example.com:443'}<br> - </span><span title="resp = requests.post('https://verifier.login.persona.org/verify', data=data)">resp = requests.post ('https://verifier.login.persona.org/verify', data = dados)<br> - <br> - </span><span title="# Did the verifier respond?"># Será que o verificador responder?<br> - </span><span title="if resp.ok:">se resp.ok:<br> - </span><span title="# Parse the response"># Analise a resposta<br> - </span><span title="verification_data = json.loads(resp.content)">verification_data = json.loads (resp.content)<br> - <br> - </span><span title="# Check if the assertion was valid"># Verifique se a afirmação era válida<br> - </span><span title="if verification_data['status'] == 'okay':">se verification_data ['status'] == 'ok':<br> - </span><span title="# Log the user in by setting a secure session cookie"># Registra o usuário em definindo um cookie de sessão seguro<br> - </span><span title="session.update({'email': verification_data['email']})">Session.update ({'email': verification_data ['email']})<br> - </span><span title="return resp.content">voltar resp.content<br> - <br> - </span># Ops, algo falhou. <span title="Abort.">Abortar.<br> - </span>abort (500)<br> - <br> - O gerenciamento de sessão é provavelmente muito semelhante ao seu sistema de login existente. A primeira grande mudança é em verificar a identidade do usuário, verificando uma afirmação em vez de verificar uma senha. A outra grande mudança é garantir que o endereço de e-mail do usuário está disponível para uso como parâmetro loggedInEmail para {{domxref ("navigator.id.watch ()")}}.<br> - <br> - Sair é simples: você só precisa remover cookies de sessão do usuário.<br> - Passo 5: Examinar as melhores práticas<br> - <br> - Uma vez que tudo funciona e você conseguiu logado para dentro e fora do seu site, você deve tomar um momento para rever as melhores práticas para a utilização de Persona de forma segura.<br> - <br> - Se você está fazendo um site pronto para produção, você pode querer escrever testes de integração que simulam registro de um usuário dentro e fora do seu site usando BrowserID. Para facilitar esta ação em selênio, considere usar a biblioteca bidpom. Os sites mockmyid.com e personatestuser.org também pode ser útil.<br> - <br> - Por último, não se esqueça de se inscrever para a lista de discussão Persona avisos assim que você está notificado de quaisquer questões de segurança ou mudanças para trás incompatíveis para o API Persona. A lista é de tráfego extremamente baixo: é só usado para anunciar mudanças que podem afetar negativamente o seu site.</p> diff --git a/files/pt-br/mozilla/persona/user_interface_guidelines/index.html b/files/pt-br/mozilla/persona/user_interface_guidelines/index.html deleted file mode 100644 index 61008a4a66..0000000000 --- a/files/pt-br/mozilla/persona/user_interface_guidelines/index.html +++ /dev/null @@ -1,64 +0,0 @@ ---- -title: User Interface guidelines -slug: Mozilla/Persona/User_interface_guidelines -translation_of: Archive/Mozilla/Persona/User_interface_guidelines ---- -<p>Presenting sign-in options to users without confusing them can be difficult, especially if your site offers multiple sign-in options. This article aims to provide guidance about the best way to present Persona sign-in to your users. It covers four different possible approaches, depending on the different sign-in options the website supports:</p> -<ul> - <li><a href="#persona-only">only Persona</a></li> - <li><a href="#persona_plus_traditional">Persona + "traditional sign-in"</a> (that is, sign in with a username and password stored on the site)</li> - <li><a href="#persona_plus_federated">Persona + one or more other federated sign-in options</a> such as Facebook Connect</li> - <li><a href="#persona_plus_traditional_plus_federated">Persona + "traditional sign-in" + one or more other federated sign-in options</a></li> -</ul> -<p>In each approach there are three user interface elements to consider:</p> -<ul> - <li>the Sign in/Sign up link, displayed on pages when the user is not signed in</li> - <li>the Sign up view: the interface that appears when the user clicks "Sign up"</li> - <li>the Sign in view: the interface that appears when the user clicks "Sign in"</li> -</ul> -<p>None of the recommendations here are mandatory.</p> -<h2 id="Persona_only"><a name="persona-only">Persona only</a></h2> -<p>If Persona is the only sign-in option presented to users, this offers the least confusing user experience, because the user has fewer choices to make.</p> -<h3 id="Sign_upSign_in_link">Sign up/Sign in link</h3> -<p>You can show just show a single link labeled "Sign up/Sign in". It's recommended that you also include the Persona icon, as this helps users know what to expect when they click the link:<br> - <br> - <img alt="" src="https://mdn.mozillademos.org/files/6773/persona-only-signin-link.png" style="width: 323px; height: 132px; display: block; margin-left: auto; margin-right: auto;"></p> -<h3 id="Sign_up_view">Sign up view</h3> -<p>You don't need to implement the sign up view at all, as Persona takes care of it for you.</p> -<h3 id="Sign_in_view">Sign in view</h3> -<p>Similarly, you don't need to implement the Sign in view, as Persona takes care of it.</p> -<h2 id="Persona_traditional_sign-in"><a name="persona_plus_traditional">Persona + traditional sign-in</a></h2> -<p>In this case you support Persona alongside traditional sign-in, where you ask users for a username and password which you then store yourself.</p> -<h3 id="Sign_upSign_in_link_2">Sign up/Sign in link</h3> -<p>You can show the text "Sign up/Sign in", with separate links for each choice:<img alt="" src="https://mdn.mozillademos.org/files/6775/persona-plus-signin-link.png" style="width: 296px; height: 142px; display: block; margin-left: auto; margin-right: auto;"></p> -<h3 id="Sign_up_view_2">Sign up view</h3> -<p>When a user clicks "Sign up" you'll need to offer them the choice to sign up using Persona or to create a new username and password on your site.</p> -<p>In this case it's recommended that the button for the Persona option includes the Persona icon and is labeled "Email" rather than "Persona". Users don't know what "Persona" means and won't see it as a valid sign-up option:</p> -<p><img alt="" src="https://mdn.mozillademos.org/files/6777/persona-plus-trad-signup.png" style="width: 274px; height: 387px; display: block; margin-left: auto; margin-right: auto;"></p> -<h3 id="Sign_in_view_2">Sign in view</h3> -<p>When the user clicks "Sign in" you'll offer them the choice to sign in with Persona or the account they created on your site. This can be just like the "Sign up view", except you won't include the password confirmation field:</p> -<p><img alt="" src="https://mdn.mozillademos.org/files/6779/persona-plus-trad-signin.png" style="width: 273px; height: 349px; display: block; margin-left: auto; margin-right: auto;"></p> -<h2 id="Persona_federated_sign-in"><a name="persona_plus_federated">Persona + federated sign-in</a></h2> -<p>In this case you support Persona alongside one or more other federated sign-in options such as Facebook Connect or Google+.</p> -<h3 id="Sign_upSign_in_link_3">Sign up/Sign in link</h3> -<p>You can show the text "Sign up/Sign in", with separate links for each choice:<img alt="" src="https://mdn.mozillademos.org/files/6775/persona-plus-signin-link.png" style="width: 296px; height: 142px; display: block; margin-left: auto; margin-right: auto;"></p> -<h3 id="Sign_up_view_3">Sign up view</h3> -<p>When a user clicks "Sign up" you'll need to offer them the choice to sign up using Persona or to sign up using one of the other federated identity options.</p> -<p>In this case it's recommended that the button for the Persona option includes the Persona icon and is labeled "Email" rather than "Persona". Users don't know what "Persona" means and won't see it as a valid sign-up option:</p> -<p><img alt="" src="https://mdn.mozillademos.org/files/6783/persona-plus-fed-signup.png" style="width: 275px; height: 185px; display: block; margin-left: auto; margin-right: auto;"></p> -<h3 id="Sign_in_view_3">Sign in view</h3> -<p>When the user clicks "Sign in" you'll offer them the choice to sign in with Persona or one of the other federated sign-in options. This can be just like the "Sign up view":</p> -<p><img alt="" src="https://mdn.mozillademos.org/files/6785/persona-plus-fed-signin.png" style="width: 275px; height: 187px; display: block; margin-left: auto; margin-right: auto;"></p> -<h2 id="Persona_traditional_sign-in_federated_sign-in"><a name="persona_plus_traditional_plus_federated">Persona + traditional sign-in + federated sign-in</a></h2> -<p>In this case you support everything: Persona, traditional sign-in, and one or more additional federated sign-in options.</p> -<h3 id="Sign_upSign_in_link_4">Sign up/Sign in link</h3> -<p>You can show the text "Sign up/Sign in", with separate links for each choice:<img alt="" src="https://mdn.mozillademos.org/files/6775/persona-plus-signin-link.png" style="width: 296px; height: 142px; display: block; margin-left: auto; margin-right: auto;"></p> -<h3 id="Sign_up_view_4">Sign up view</h3> -<p>When a user clicks "Sign up" you'll need to offer them the choice to sign up using Persona, to create a new username and password on your site, or to sign up using one of the other federated identity options.</p> -<p>In this case it's recommended that the button for the Persona option includes the Persona icon and is labeled "Email" rather than "Persona". Users don't know what "Persona" means and won't see it as a valid sign-up option:</p> -<p><img alt="" src="https://mdn.mozillademos.org/files/6787/persona-plus-everything-signup.png" style="width: 275px; height: 411px; display: block; margin-left: auto; margin-right: auto;"></p> -<h3 id="Sign_in_view_4">Sign in view</h3> -<p>When the user clicks "Sign in" you'll offer them the choice to sign in with Persona, one of the other federated options, or the account they created on your site. This can be just like the "Sign up view", except you won't include the password confirmation field:</p> -<p><img alt="" src="https://mdn.mozillademos.org/files/6789/persona-plus-everything-signin.png" style="width: 275px; height: 375px; display: block; margin-left: auto; margin-right: auto;"></p> -<h2 id="More_Info">More Info</h2> -<p>You can find more information about Persona's visual design in <a href="http://people.mozilla.org/~smartell/persona/" title="http://people.mozilla.org/~smartell/persona/">Sean Martell's style primer</a>.</p> diff --git a/files/pt-br/mozilla/preferences/index.html b/files/pt-br/mozilla/preferences/index.html deleted file mode 100644 index 733f16bfdb..0000000000 --- a/files/pt-br/mozilla/preferences/index.html +++ /dev/null @@ -1,55 +0,0 @@ ---- -title: Preferências -slug: Mozilla/Preferences -translation_of: Mozilla/Preferences ---- -<p>O sistema de preferências possibilita guardar dados para aplicações Mozilla usando um sistema de emparelhamento chave/valor. Esses artigos fornecem informação sobre como usar os sistema de preferências.</p> - -<table class="topicpage-table"> - <tbody> - <tr> - <td> - <h2 class="Documentation" id="Documentation" name="Documentation">Documentação</h2> - - <dl> - <dt><a href="/en-US/docs/Preferences/Preferences_system" title="Preferences/Preferences system">Sistema de Preferências</a></dt> - <dd>Uma introdução ao uso do sistema de preferências na Mozilla.</dd> - <dt><a href="/en-US/docs/XUL_School/Handling_Preferences" title="XUL School/Handling Preferences">XUL School: Lidando com preferências</a></dt> - <dd>Capítulo tutorial XUL School nas preferências.</dd> - <dt><a href="/en-US/docs/Preferences/Preference_reference" title="Preferences/Preference_reference">Referência para preferências Mozilla</a></dt> - <dd>Um guia de referência para todas as preferências Mozilla.</dd> - <dt><a href="/en-US/docs/Preferences/A_brief_guide_to_Mozilla_preferences" title="Preferences/A brief guide to Mozilla preferences">Um guia rápido para as preferências Mozilla</a></dt> - <dd>Um guia introdutório para onde as preferências são armazenadas e outras informações úteis sobre o núcleo do sistema de preferências.</dd> - <dt><a href="/en-US/docs/Preferences/Using_preferences_from_application_code" title="Preferences/Using preferences from application code">Usando preferências a partir do código da aplicação</a> {{gecko_minversion_inline("6.0")}}</dt> - <dd>O Firefox 6 introduziu funções estáticas para acessar as preferências eficientemente a partir do código da aplicação.</dd> - <dt><a href="/en-US/docs/Preferences/Mozilla_networking_preferences" title="Preferences/Mozilla networking preferences">Preferências de rede Mozilla</a></dt> - <dd>Um guia para as preferências chave relacionado à redes.</dd> - <dt><a href="/en-US/docs/Preferences/Mozilla_preferences_for_uber-geeks" title="Preferences/Mozilla preferences for uber-geeks">Preferências da Mozilla para uber-geeks</a></dt> - <dd>Um guia para preferências que somente verdadeiros geeks de elite deveriam brincar.</dd> - </dl> - - <p><span class="alllinks"><a href="/en-US/docs/tag/Preferences" title="tag/Preferences">Ver todas as páginas com a tag "Preferências"...</a></span></p> - </td> - <td> - <h2 class="Community" id="Examples" name="Examples">Exemplos</h2> - - <dl> - <dt><a href="/en-US/docs/Code_snippets/Preferences" title="Code snippets/Preferences">Trechos de código</a></dt> - <dd>Trechos de código relacionados à preferência.</dd> - <dt><a href="/en-US/docs/Adding_preferences_to_an_extension" title="Adding preferences to an extension">Adicionando preferências à uma extensão</a></dt> - <dd>Como adicionar preferências à uma extensão já existente.</dd> - </dl> - - <h2 class="Related_Topics" id="Related_Topics" name="Related_Topics">Tópicos Relacionados</h2> - - <ul> - <li><a href="/en-US/docs/XUL" title="XUL">XUL</a>, <a href="/en-US/docs/JavaScript" title="JavaScript">JavaScript</a>, <a href="/en-US/docs/XPCOM" title="XPCOM">XPCOM</a>, <a href="/en-US/docs/Extensions" title="Extensions">Extensões</a>, <a href="/en-US/docs/Developer_Guide" title="Developing_Mozilla">Guia do desenvolvedor Mozilla</a></li> - </ul> - </td> - </tr> - <tr> - <td> </td> - <td> </td> - </tr> - </tbody> -</table> diff --git a/files/pt-br/mozilla/projects/emscripten/index.html b/files/pt-br/mozilla/projects/emscripten/index.html deleted file mode 100644 index 85dab946b3..0000000000 --- a/files/pt-br/mozilla/projects/emscripten/index.html +++ /dev/null @@ -1,42 +0,0 @@ ---- -title: Emscripten -slug: Mozilla/Projects/Emscripten -tags: - - C++ - - Emscripten - - JavaScript - - LLVM -translation_of: Mozilla/Projects/Emscripten ---- -<p><span class="seoSummary">Emscripten é um compilador de LLVM para JavaScript. Ele recebe bytecode LLVM (gerado por exemplo de código C/C++ utilizando Clang, ou de outra linguagem) e compila para JavaScript, que pode ser executado na Web.</span></p> - -<div class="warning"> -<p><strong>Importante</strong>: Esta página fornece uma breve introdução sobre o que é o Emscripten. Para aprender mais Emscripten, <a href="http://kripken.github.io/emscripten-site/index.html">vá para o Wiki oficial do Emscripten</a>.</p> -</div> - -<p>Ao utilizar o Emscripten, é possível</p> - -<ul> - <li>Compilar código C e C++ para JavaScript</li> - <li>Compilar qualquer outro código que pode ser traduzido em bytecode de LLVM para JavaScript.</li> - <li>Compilar runtimes C/C++ de outras linguagens para JavaScript, e então executar o código nessas outras linguagens de forma indireta (isto já foi feito para Python e Lua)!</li> -</ul> - -<p>O Emscripten torna o código nativo imediatamente disponível na Web: uma plataforma que é baseada em padrões, tem inúmeras implementações compatíveis independentes, e executa em todos os lugares desde PCs até iPads.</p> - -<p>Com Emscripten, desenvolvedores C/C++ não tem o alto custo de portar código manualmente para JavaScript — ou de precisar aprender JavaScript. Desenvolvedores Web também se beneficiam, pois podem utilizar em seus sites as milhares de utilizadades e bibliotecas nativas pré-existentes.</p> - -<p>Praticamente qualquer base de código de C or C++ pode ser compilada para JavaScript utilizando Emscripten, variando de jogos de alta performance que precisam renderizar gráficos, tocar sons, carregar e processar arquivos, até frameworks de aplicativos como Qt.</p> - -<p>O Emscripten gera código veloz — seu formato de saída padrão é <a href="/en-US/docs/Games/Tools/asm.js">asm.js</a> , um subset de JavaScript altamente otimizado que pode ser executado em velocidade quase nativa em muitos casos.</p> - -<div class="note"> -<p><strong>Nota</strong>: Parece interessante? <a href="http://kripken.github.io/emscripten-site/docs/introducing_emscripten/about_emscripten.html">Leia mais sobre Emscripten e experimente alguns demos</a>, e depois <a href="http://kripken.github.io/emscripten-site/docs/getting_started/index.html">comece a utilizá-lo</a>.</p> -</div> - -<h2 id="Outros_artigos_interessantes_no_MDN">Outros artigos interessantes no MDN</h2> - -<ul> - <li>Nossa área de <a href="/en-US/docs/Games">Desenvolvimento de jogos</a> contém algum conteúdo útil relacionado a jogos, que é uma área de uso comum do Emscripten.</li> - <li>Nossa página <a href="/en-US/docs/Mozilla/Projects/Emscripten/Techniques">Emscripten techniques</a> é um lugar para guardar ideias úteis relacionadas ao Emscripten que não tenham chegado ao Emscripten Wiki.</li> -</ul> diff --git a/files/pt-br/mozilla/projects/index.html b/files/pt-br/mozilla/projects/index.html deleted file mode 100644 index 4cc2b6f23c..0000000000 --- a/files/pt-br/mozilla/projects/index.html +++ /dev/null @@ -1,15 +0,0 @@ ---- -title: Projetos -slug: Mozilla/Projects -tags: - - Mozilla - - Necessidades de Conteúdo - - Projetos - - Tópico Raiz -translation_of: Mozilla/Projects ---- -<p>{{ draft() }}</p> - -<p>Está página precisa tornar-se um índice para os projetos Mozilla por causa da documentação está localizada sobre ela.</p> - -<p>{{ LandingPageListSubpages() }}</p> diff --git a/files/pt-br/mozilla/projects/nss/compilando/index.html b/files/pt-br/mozilla/projects/nss/compilando/index.html deleted file mode 100644 index 92e3619f2c..0000000000 --- a/files/pt-br/mozilla/projects/nss/compilando/index.html +++ /dev/null @@ -1,98 +0,0 @@ ---- -title: Compilando o NSS -slug: Mozilla/Projects/NSS/Compilando -tags: - - Guía - - NSS - - Segurança -translation_of: Mozilla/Projects/NSS/Building ---- -<h2 id="Introdução">Introdução</h2> - -<p>Essa página possui informações detalhadas sobre como compilar o NSS. Porque o NSS é uma biblioteca multiplataforma que compila em muitas plataformas diferentes e possui muitas opções, pode ser complexo compilá-lo. Por favor, leia essas instruções com cuidado antes de tentar compilar.</p> - -<h2 id="Ambiente_de_compilação">Ambiente de compilação</h2> - -<h3 id="Windows">Windows</h3> - -<ol> - <li>Obtenha os pré-requisitos - <ul> - <li>Compilação do NSS no Windows usa o mesmo sistema de compilação compartilhado que o Mozilla Firefox. Você deve primeiro instalar os <a href="/en-US/docs/Developer_Guide/Build_Instructions/Windows_Prerequisites">Pré-requisitos do Windows</a>, incluindo <strong>MozillaBuild</strong>.</li> - </ul> - </li> -</ol> - -<h2 id="Obtenha_o_fonte">Obtenha o fonte</h2> - -<p>NSS e NSPR usam Mercurial para controle de fonte, como outros projetos da Mozilla. Para obter os últimos fontes para NSS e NSPR - o que pode não ser parte de um lançamento estável - use os seguintes comandos:</p> - -<pre>hg clone https://hg.mozilla.org/projects/nspr -hg clone https://hg.mozilla.org/projects/nss -</pre> - -<p>Para obter o fonte de um lançamento específico, veja <a href="/en-US/docs/Mozilla/Projects/NSS/NSS_Releases">Lançamentos do NSS</a>.</p> - -<h3 id="Configure_o_ambiente">Configure o ambiente</h3> - -<p>O sistema de ompilação do NSS usa uma variedade de variáveis de ambiente para controlar a compilação. Segue abaixo uma lista de variáveis, junto com valores possívels que elas pode receber. Por exemplo, no Windows, você pode querer definir <strong>OS_TARGET=WIN95.</strong></p> - -<dl> - <dt>OS_TARGET</dt> - <dd> - <dl> - <dt>WIN95</dt> - <dd>Compila para todas as versões suportadas do Windows. Esse é o padrão (desde NSS 3.15.4) e é a configuração recomendada.</dd> - <dt>WINNT (obsoleto)</dt> - <dd>Uma configuração alternativa, à qual não há mais suporte. (Ela usa recursos especificais como a API de fibras do Windows.)</dd> - </dl> - </dd> - <dt>BUILD_OPT</dt> - <dd> - <dl> - <dt>0</dt> - <dd>Compila uma versão de depuração (não otimizada) do NSS. <em>Essa é a padrão.</em></dd> - <dt>1</dt> - <dd>Compila uma versão otimizada (não depuração) do NSS.</dd> - </dl> - </dd> - <dt>USE_64</dt> - <dd> - <dl> - <dt>0</dt> - <dd>Compila para uma ABI/um ambiente 32 bits. <em>Esse é o padrão.</em></dd> - <dt>1</dt> - <dd>Compila para um ABI/um ambiente 64 bits.</dd> - </dl> - </dd> - <dt>USE_ASAN</dt> - <dd> - <dl> - <dt>0</dt> - <dd>Não cria uma compilação de <a href="http://clang.llvm.org/docs/AddressSanitizer.html">AddressSanitizer</a>. <em>Esse é o padrão.</em></dd> - <dt>1</dt> - <dd>Cria uma compilação de AddressSanitizer.</dd> - </dl> - </dd> -</dl> - -<h2 id="Compilação">Compilação</h2> - -<p>Para criar o NSS, é tão simples quanto navegar para o check-out do NSS e fazer o alvo "nss_build_all".</p> - -<pre>cd nss -make nss_build_all -</pre> - -<h2 id="Teste_de_unidade">Teste de unidade</h2> - -<p>NSS contendo testes de unidade extensivos. Scripts para executá-los são executados no diretório <code>tests</code>. Execute a suíte padrão por:</p> - -<pre>cd nss/tests -HOST=localhost DOMSUF=localdomain ./all.sh</pre> - -<p>Substitua <code>localhost</code> e <code>localdomain</code> com o nome do host e sufixo de domínio para o seu host (os testes apenas transformam estes em "$HOST.$DOMSUF"). Se você não possui um sufixo de domínio e estiver no Windows, adicione esta linha a c:\Windows\System32\drivers\etc\hosts : <code>127.0.0.1 localhost.localdomain</code> . Valide abrindo um shell de comando e digitando: <code>ping localhost.localdomain </code>. </p> - -<p>A saída do teste é armazenada em <code>tests_results/security/$HOST.$NUMBER/</code>. O arquivo <code>results.html</code> resumo os resultados, <code>output.log</code> captura toda a saída de teste.</p> - -<p>Outros subdiretórios do <code>nss/tests</code> contêm scripts para executar um subconjunto da suíte completa.</p> diff --git a/files/pt-br/mozilla/projects/nss/geral/index.html b/files/pt-br/mozilla/projects/nss/geral/index.html deleted file mode 100644 index a51a109715..0000000000 --- a/files/pt-br/mozilla/projects/nss/geral/index.html +++ /dev/null @@ -1,73 +0,0 @@ ---- -title: Visão geral do NSS -slug: Mozilla/Projects/NSS/Geral -tags: - - NSS -translation_of: Mozilla/Projects/NSS/Overview ---- -<h1 id="Bibliotecas_de_Criptografia_de_Código_Aberto"><span class="tlid-translation translation" lang="pt"><span title="">Bibliotecas de Criptografia de Código Aberto</span></span></h1> - -<h3 id="Proven_Application_Security_Architecture" name="Proven_Application_Security_Architecture"><span class="tlid-translation translation" lang="pt"><span title="">Arquitetura de Segurança de Aplicativos Comprovada</span></span></h3> - -<p>Se você quer adicionar suporte para SSL, S/MIME, ou outros padrões de segurança de Internet na sua aplicação, você pode usar Network Security Services (NSS) para implementar todos os seus recursos de segurança. NSS provê uma implementação completa de código aberto das bibliotecas de criptogragia usadas pela AOL, Red Hat, Google e outras empresas em uma variedade de produtos, incluindo os seguintes:</p> - -<ul> - <li><a class="external" href="https://www.mozilla.org/products/">Produtos Mozilla</a>, incluindo <a class="external" href="https://www.mozilla.com/firefox/">Firefox</a>, <a class="external" href="https://www.mozilla.com/thunderbird/">Thunderbird</a>, <a href="https://seamonkey-project.org/">SeaMonkey</a>, e <a href="https://www.mozilla.org/en-US/firefox/os/">Firefox OS</a>.</li> - <li><a class="external" href="https://www.aim.com/">AOL Instant Messenger</a> (AIM)</li> - <li>Aplicativos clientes de código aberto como <a class="external" href="https://wiki.gnome.org/Apps/Evolution">Evolution</a>, <a href="https://pidgin.im/">Pidgin</a>, <a href="https://www.openoffice.org/">Apache OpenOffice</a>, e <a href="https://www.libreoffice.org">LibreOffice</a>.</li> - <li>Produtos para servidores da <a class="external" href="https://www.redhat.com/en/technologies">Red Hat</a>: <a class="external" href="https://www.redhat.com/en/technologies/cloud-computing/directory-server">Red Hat Directory Server</a>, <a class="external" href="https://www.redhat.com/en/technologies/cloud-computing/certificate-system">Red Hat Certificate System</a>, e o módulo SSL <a class="external" href="https://directory.fedoraproject.org/wiki/Mod_nss">mod_nss</a> para o servidor web Apache.</li> - <li>Produtos para servidores da Oracle (antiga Sun Java Enterprise System), incluindo <a href="https://www.oracle.com/industries/communications/enterprise/products/messaging-server/index.html">Oracle Communications Messaging Server</a> e <a href="http://www.oracle.com/technetwork/middleware/id-mgmt/overview/index-085178.html">Oracle Directory Server Enterprise Edition</a>.</li> - <li><a href="https://www.suse.com/products/server/">SUSE Linux Enterprise Server</a> suporta NSS e o módulo SSL <a class="external" href="https://directory.fedoraproject.org/wiki/Mod_nss">mod_nss</a> para o servidor web Apache.</li> -</ul> - -<p>NSS inclui um framework no qual desenvolvedores e <span class="ILfuVd">OEMs (Fabricante Original do Equipamento) podem contribuir com correções, </span><span class="tlid-translation translation" lang="pt"><span title="">como código assembler, para otimizar o desempenho em suas plataformas. NSS 3.x foi certificado em 18 plataformas.</span></span></p> - -<p>Para informações mais detalhadas sobre NSS, veja <a class="external" href="https://wiki.mozilla.org/NSS">wiki.mozilla.org</a> e <a href="NSS_FAQ">NSS FAQ</a>.</p> - -<p>Código-fonte de uma interface Java para NSS está disponível na árvore CVS da Mozilla. Para detalhes, veja <a class="external" href="JSS">Network Security Services for Java</a>.</p> - -<p>NSS faz uso do Netscape Portable Runtime (<a href="/en-US/docs/Mozilla/Projects/NSPR">NSPR</a>), <span class="tlid-translation translation" lang="pt"><span title="">uma API de código aberto de plataforma neutra para funções do sistema projetada para facilitar o desenvolvimento entre plataformas</span></span>. Assim como NSS, NSPR foi testado em vários produtos. Para maiores informações, veja a <a class="external" href="https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSPR">Página do Projeto NSPR</a>.</p> - -<h3 id="Interoperability_and_Open_Standards" name="Interoperability_and_Open_Standards"><span class="tlid-translation translation" lang="pt"><span title="">Interoperabilidade e Padrões Abertos</span></span></h3> - -<p>Você pode usar NSS para suportar uma variedade de padrões de segurança na sua aplicação, incluindo os seguintes:</p> - -<ul> - <li><a href="en/Glossary#SSL">SSL v3</a>. O protocolo Secure Sockets Layer (SSL) permite uma autenticação mútua entre cliente e servidor e o estabelecimento de uma conexão autenticada e criptografada.</li> - <li>TLS v1.3 (<a href="https://tools.ietf.org/html/rfc8446">RFC 8446</a>), <a href="https://tools.ietf.org/html/rfc5246">TLS v1.2 (RFC 5246</a>), <a href="https://tools.ietf.org/html/rfc4346">TLS v1.1 (RFC 4346</a>), <a class="external" href="https://www.ietf.org/rfc/rfc2246.txt">TLS v1 (</a><a class="external" href="https://tools.ietf.org/html/rfc2246" title="https://tools.ietf.org/html/rfc2246">RFC 2246</a>). O protocolo Transport Layer Security (TLS) do IETF que substitui SSL.</li> - <li><a class="external" href="https://www.rsasecurity.com/rsalabs/pkcs/pkcs-1/index.html">PKCS #1</a>. Padrão RSA <span class="tlid-translation translation" lang="pt"><span title="">que rege a implementação de criptografia de chave pública com base no algoritmo RSA.</span></span></li> - <li><a class="external" href="https://www.rsasecurity.com/rsalabs/pkcs/pkcs-3/index.html">PKCS #3</a>. <span class="tlid-translation translation" lang="pt"><span title="">Padrão RSA que rege a implementação do acordo de chave Diffie-Hellman.</span></span></li> - <li><a class="external" href="https://www.rsasecurity.com/rsalabs/pkcs/pkcs-5/index.html">PKCS #5</a>. <span class="tlid-translation translation" lang="pt"><span title="">Padrão RSA que rege a criptografia baseada em senha, por exemplo, para criptografar chaves privadas para armazenamento.</span></span></li> - <li><a class="external" href="https://www.rsasecurity.com/rsalabs/pkcs/pkcs-7/index.html">PKCS #7</a>. <span class="tlid-translation translation" lang="pt"><span title="">Padrão RSA que rege a aplicação de criptografia a dados, por exemplo, assinaturas digitais e envelopes digitais.</span></span></li> - <li><a class="external" href="https://www.rsasecurity.com/rsalabs/pkcs/pkcs-8/index.html">PKCS #8</a>. <span class="tlid-translation translation" lang="pt"><span title="">Padrão RSA que rege o armazenamento e a criptografia de chaves privadas.</span></span></li> - <li><a class="external" href="https://www.rsasecurity.com/rsalabs/pkcs/pkcs-9/index.html">PKCS #9</a>. <span class="tlid-translation translation" lang="pt"><span title="">Padrão RSA que rege os tipos de atributos selecionados, incluindo aqueles usados com </span></span>PKCS #7, PKCS #8, e PKCS #10.</li> - <li><a class="external" href="https://www.rsasecurity.com/rsalabs/pkcs/pkcs-10/index.html">PKCS #10</a>. <span class="tlid-translation translation" lang="pt"><span title="">Padrão RSA que rege a sintaxe para solicitações de certificado.</span></span></li> - <li><a class="external" href="https://www.rsasecurity.com/rsalabs/pkcs/pkcs-11/index.html">PKCS #11</a>. <span class="tlid-translation translation" lang="pt"><span title="">Padrão RSA que controla a comunicação com tokens criptográficos (como aceleradores de hardware e cartões inteligentes) e permite a independência do aplicativo de algoritmos e implementações específicas.</span></span></li> - <li><a class="external" href="https://www.rsasecurity.com/rsalabs/pkcs/pkcs-12/index.html">PKCS #12</a>.<span class="tlid-translation translation" lang="pt"><span title=""> Padrão RSA que rege o formato usado para armazenar ou transportar chaves privadas, certificados e outros materiais secretos.</span></span></li> - <li><a href="en/Glossary#S.2FMIME">S/MIME (RFC 2311 and RFC 2633)</a>. <span class="tlid-translation translation" lang="pt"><span title="">Especificação de mensagem IETF (baseada no popular padrão Internet MIME) que fornece uma maneira consistente de enviar e receber dados MIME assinados e criptografados.</span></span></li> - <li><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Security/x509_Certificates">X.509 v3</a>. <span class="tlid-translation translation" lang="pt"><span title="">Padrão ITU que rege o formato de certificados usados para autenticação em criptografia de chave pública.</span></span></li> - <li><a href="en/Glossary#OCSP">OCSP (RFC 2560)</a>. O Online Certificate Status Protocol (OCSP) rege<span class="tlid-translation translation" lang="pt"><span title=""> a confirmação em tempo real da validade do certificado.</span></span></li> - <li><a class="external" href="https://www.ietf.org/rfc/rfc3280.txt">PKIX Certificate and CRL Profile (</a><a class="external" href="https://tools.ietf.org/html/rfc3280" title="https://tools.ietf.org/html/rfc3280">RFC 3280</a>). <span class="tlid-translation translation" lang="pt"><span title="">A primeira parte do padrão de quatro partes em desenvolvimento pelo grupo de trabalho Public-Key Infrastructure (X.509) da IETF (conhecido no PKIX) para uma infraestrutura de chave pública para a Internet.</span></span></li> - <li>RSA, DSA, ECDSA, Diffie-Hellman, EC Diffie-Hellman, <a class="external" href="https://csrc.nist.gov/encryption/aes/">AES</a>, Triple DES, DES, RC2, RC4, SHA-1, SHA-256, SHA-384, SHA-512, MD2, MD5, HMAC: <span class="tlid-translation translation" lang="pt"><span title="">Algoritmos criptográficos comuns usados em criptografia de chave pública e de chave simétrica.</span></span></li> - <li>FIPS 186-2 <span class="tlid-translation translation" lang="pt"><span title="">gerador de números pseudo-aleatórios.</span></span></li> -</ul> - -<p>Para detalhes completos, veja <a class="external" href="https://www.mozilla.org/projects/security/pki/nss/nss-3.11/nss-3.11-algorithms.html">Tecnologias de Criptografia</a>.</p> - -<h3 id="FIPS_140_Validation_and_NISCC_Testing" name="FIPS_140_Validation_and_NISCC_Testing">Validação FIPS 140 e Teste NISCC</h3> - -<p><span class="tlid-translation translation" lang="pt"><span title="">O módulo de criptografia do software NSS foi validado três vezes para conformidade com o FIPS 140 nos Níveis de Segurança 1 e</span></span> 2. Para mais informações, veja a página <a href="FIPS_Mode_-_an_explanation">NSS FIPS</a> (<a class="external" href="https://wiki.mozilla.org/FIPS_Validation">Ou essa página</a>).</p> - -<p>As bibliotecas NSS passaram nas suites de testes NISCC <a class="external" href="https://www.niscc.gov.uk/niscc/docs/re-20030930-00749.pdf?lang=en">TLS/SSL</a> e <a class="external" href="https://www.uniras.gov.uk/niscc/docs/re-20031104-00752.pdf?lang=en">S/MIME</a> (<span class="tlid-translation translation" lang="pt"><span title="">1,6 milhão de casos de teste com dados de entrada inválidos</span></span>).</p> - -<h3 id="Complete_Software_Development_Kit" name="Complete_Software_Development_Kit"><span class="tlid-translation translation" lang="pt"><span title="">Kit Completo de Desenvolvimento de Software</span></span></h3> - -<p><span class="tlid-translation translation" lang="pt"><span title="">Além de bibliotecas e APIs, o NSS fornece</span></span> <a class="external" href="https://developer.mozilla.org/en-US/docs/NSS/Tools">ferramentas de segurança</a> <span class="tlid-translation translation" lang="pt"><span title="">necessárias para depuração, diagnósticos, gerenciamento de certificados e chaves, gerenciamento de módulos de criptografia e outras tarefas de desenvolvimento.</span></span></p> - -<p><span class="tlid-translation translation" lang="pt"><span title="">NSS vem com um extenso e crescente conjunto de</span></span><a href="/docs/Mozilla/Projects/NSS#Documentation"> documentação</a>, incluindo material introdutório, referências de API, páginas man para ferramentas CLI, e <a class="external" href="https://developer.mozilla.org/en-US/docs/NSS/NSS_Sample_Code">códigos de exemplo</a>.</p> - -<p>NSS está disponível como código e bibliotecas (dinâmicas) compartilhadas. <span class="tlid-translation translation" lang="pt"><span title="">Cada versão do NSS é compatível com versões anteriores, permitindo que os usuários do NSS atualizem para as novas bibliotecas compartilhadas do NSS sem recompilar ou reconectar seus aplicativos.</span></span></p> - -<h3 id="Open-Source_Licensing_and_Distribution" name="Open-Source_Licensing_and_Distribution"><span class="tlid-translation translation" lang="pt"><span title="">Licenciamento e Distribuição de Código Aberto</span></span></h3> - -<p>NSS está disponível sob a <a href="https://www.mozilla.org/MPL/">Licença Pública Mozilla</a>, versão 2. <span class="tlid-translation translation" lang="pt"><span title="">O código-fonte mais recente está disponível gratuitamente em todo o mundo a partir de</span></span> <a class="external" href="https://www.mozilla.org" rel="freelink">https://www.mozilla.org</a> <span class="tlid-translation translation" lang="pt"><span title="">e seus sites espelhados (mirrors).</span></span></p> diff --git a/files/pt-br/mozilla/projects/nss/getting_started_with_nss/index.html b/files/pt-br/mozilla/projects/nss/getting_started_with_nss/index.html deleted file mode 100644 index 9096118265..0000000000 --- a/files/pt-br/mozilla/projects/nss/getting_started_with_nss/index.html +++ /dev/null @@ -1,42 +0,0 @@ ---- -title: Getting Started With NSS -slug: Mozilla/Projects/NSS/Getting_started_with_NSS -translation_of: Mozilla/Projects/NSS/Getting_started_with_NSS ---- -<h2 id="Como_se_envolver_com_o_NSS">Como se envolver com o NSS</h2> - -<p>NSS (Serviços de segurança de rede) É uma biblioteca base para algoritmos criptográficos e protocolos de rede seguros usados pelo software Mozilla.<br> - <br> - Você gostaria de se envolver e nos ajudar a melhorar a segurança básica do Mozilla Firefox e de outras aplicações que utilizam o NSS? Estamos ansiosos por suas contribuições!<br> - <br> - Nós temos uma grande lista de tarefas à espera de atenção, e estamos felizes em ajudá-lo a identificar áreas que correspondam ao seu interesse ou habilidades. Você pode encontrar-nos em <a href="http://irc.mozilla.org" title="http://irc.mozilla.org">irc.mozilla.org</a> no canal <a href="irc://irc.mozilla.org/#nss" title="irc://irc.mozilla.org/nss">#nss</a> ou você poderia fazer suas perguntas no grupo de notícias <a href="https://lists.mozilla.org/listinfo/dev-tech-crypto/" title="https://lists.mozilla.org/listinfo/dev-tech-crypto/">mozilla.dev.tech.crypto</a>.</p> - -<p>A biblioteca NSS e suas ferramentas de linha de comando de suporte são escritas na linguagem de programação C. Seu sistema de compilação e os testes automatizados são baseados em makefiles e scripts bash.</p> - -<p>Ao longo do tempo, muitos documentos foram produzidos que descrevem vários aspectos do NSS. Você pode começar com:</p> - -<ul> - <li>a <a href="/en-US/docs/NSS" title="/en-US/docs/NSS">página principal de documentação NSS</a> atual a partir da qual nós linkamos para outra documentação.</li> - <li>uma <a href="/en-US/docs/Overview_of_NSS" title="/en-US/docs/Overview_of_NSS">Visão Geral</a> das aplicações que usam o NSS e os recursos que ele fornece.</li> - <li>Uma <a href="/en-US/docs/An_overview_of_NSS_Internals" title="/en-US/docs/An_overview_of_NSS_Internals">Introdução</a> de alto nível para o Internals do NSS.</li> - <li>Aprender sobre como obter os<a href="/en-US/docs/NSS_Sources_Building_Testing" title="/en-US/docs/NSS_Sources_Building_Testing"> codigos-fonte, builds e testes do NSS.</a></li> - <li><a href="http://www-archive.mozilla.org/projects/security/pki/nss/">Documentação antiga </a>que está arquivada no site mozilla.org..</li> -</ul> - -<p>(Infelizmente, o projeto NSS não tem um escritor técnico neste momento, então nossa documentação não é tão organizada como gostaríamos que fosse. Você poderia contribuir organizando-a de uma maneira melhor.)</p> - -<h2 id="Amostra_de_código_do_NSS">Amostra de código do NSS</h2> - -<p>Um bom lugar para começar a aprender a escrever aplicativos NSS são as ferramentas de linha de comando mantidas pelos desenvolvedores do NSS. Você pode encontrá-los no subdiretório mozilla/security/nss/cmd</p> - -<p>Ou dê uma olhada em algum <a href="/docs/Mozilla/Projects/NSS/NSS_Sample_Code">código de amostra NSS </a>básico.</p> - -<p>Um novo conjunto de amostras está atualmente em desenvolvimento e revisão, consulte <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=490238">Criar novas amostras NSS</a>.</p> - -<p>Você é bem-vindo para baixar as amostras via: hg clone https://hg.mozilla.org/projects/nss; cd nss; hg update SAMPLES_BRANCH</p> - -<h2 id="Oportunidades_para_contribuir">Oportunidades para contribuir:</h2> - -<p>... (esta seção ainda está em construção, mas há muitas oportunidades de contribuição)</p> - -<p>Você pode dar uma olhada na nossa <a href="https://wiki.mozilla.org/NSS:BurnDownList" title="https://wiki.mozilla.org/NSS:BurnDownList">recente lista ToDo</a>.</p> diff --git a/files/pt-br/mozilla/projects/nss/index.html b/files/pt-br/mozilla/projects/nss/index.html deleted file mode 100644 index 22e30aeb88..0000000000 --- a/files/pt-br/mozilla/projects/nss/index.html +++ /dev/null @@ -1,184 +0,0 @@ ---- -title: Network Security Services -slug: Mozilla/Projects/NSS -tags: - - JSS - - NSS - - NeedsMigration -translation_of: Mozilla/Projects/NSS ---- -<p><strong>Network Security Services</strong> (<strong>NSS</strong>), ou serviços de segurança de rede, é um conjunto de bibliotecas projetadas para oferecer suporte ao desenvolvimento multiplataforma de aplicativos cliente e servidor com implementações de segurança. Aplicativos compilados com NSS possuem suporte a certificados SSL v2 e v3, TLS, PKCS #5, PKCS #7, PKCS #11, PKCS #12, S/MIME, X.509 v3 e outros padrões de segurança.</p> - -<p>Para informações detalhadas sobre os padrões aos quais se oferece suporte, veja <a href="NSS/Overview" title="Overview_of_NSS">Visão Geral do NSS</a>. Para uma lista de perguntas frequentes, veja o <a href="NSS/FAQ" title="NSS_FAQ">FAQ</a>.</p> - -<p>NSS está disponível sob a Licença Pública da Mozilla. Para informações sobre baixar lançamentos do NSS como arquivos tar, veja <a href="NSS/NSS_Sources_Building_Testing">Baixando fontes PKI</a>.</p> - -<p>Se você é um desenvolvedor e gostaria de contribuir para NSS, você pode ler os documentos <a href="NSS/An_overview_of_NSS_Internals" title="/en-US/docs/An_overview_of_NSS_Internals">visão geral de alto nível de detalhes internos do NSS</a> e <a href="NSS/Getting_started_with_NSS" title="/en-US/docs/Getting_Started_With_NSS">primeiros passos com NSS</a>.</p> - -<table class="topicpage-table"> - <tbody> - <tr> - <td> - <h2 class="Documentation" id="Documentation" name="Documentation">Documentação</h2> - - <h3 id="Informação_base">Informação base</h3> - - <dl> - <dt><a href="NSS/Overview">Visão geral do NSS</a></dt> - <dd>Fornece um breve resumo do NSS e suas capacidades.</dd> - <dt><a href="NSS/FAQ">FAQ do NSS</a></dt> - <dd>Responde algumas perguntas básicas sobre o NSS.</dd> - <dt><a href="/docs/Introduction_to_Public-Key_Cryptography">Introdução à Criptografia de Chave pública</a></dt> - <dd>Explica os conceitos básicos de criptografia de chave pública por baixo do NSS.</dd> - <dt><a href="/docs/Introduction_to_SSL">Introdução ao SSL</a></dt> - <dd>Introduz o protocolo SSL, incluindo informações sobre as cifras criptográficas às quais SSL oferecer suporte, e os passos envolvidos na negociação SSL.</dd> - </dl> - - <h3 id="Primeiros_passos">Primeiros passos</h3> - - <dl> - <dt><a href="NSS/NSS_Releases" title="NSS_releases">Lançamentos do NSS</a></dt> - <dd>Essa página contém informações sobre os lançamentos passados e atual do NSS.</dd> - <dt><a href="NSS/NSS_Sources_Building_Testing">Obtendo o código-fonte e compilando-o</a></dt> - <dd>Instruções e como compilar NSS em diferentes plataformas.</dd> - <dt><a href="/docs/Mozilla/Developer_guide/Source_Code/Mercurial">Obtendo o código-fonte da Mozilla usando o Mercurial</a></dt> - <dd>Informações sobre usar o Mercurial.</dd> - <dt><a href="/docs/Mozilla/Developer_guide/Source_Code/CVS">Obtendo o código-fonte da Mozilla usando o CVS (obsoleto)</a></dt> - <dd>Documentação antiga e obsoleta sobre CVS.</dd> - </dl> - - <h3 id="APIs_do_NSS">APIs do NSS</h3> - - <dl> - <dt><a href="NSS/Introduction_to_Network_Security_Services">Introdução ao Network Security Services</a></dt> - <dd>Fornece uma visão geral das bibliotecas do NSS e o que você precisa saber para usá-las.</dd> - <dt><a href="NSS/SSL_functions">Funções Públicas do NSS</a></dt> - <dd>Resume as APIs exportadas pelas bibliotecas compartilhadas do NSS.</dd> - <dt><a href="NSS/Reference">Referência do NSS</a></dt> - <dd>API usada para invocar as operações SSL.</dd> - <dt><a href="NSS/NSS_API_GUIDELINES">Diretrizes de API do NSS</a></dt> - <dd>Explica como as bibliotecas e códigos são organizados, e diretrizes para o desenvolvimento de código (convenção de nomenclatura, tratamento de erro, segurança de threads, etc.)</dd> - <dt><a href="NSS/nss_tech_notes">Notas Técnicas do NSS</a></dt> - <dd>Link para as notas técnicas do NSS, as quais fornecem as últimas informações sobre os novos recursos do NSS e documentação suplementar para tópicos avançados quanto a programação com NSS.</dd> - </dl> - - <h3 id="Ferramentas_testes_e_outros_detalhes_técnicos">Ferramentas, testes e outros detalhes técnicos</h3> - - <dl> - <dt><a href="NSS/NSS_Sources_Building_Testing">Instruções de Compilação do NSS</a></dt> - <dd>Descreve como obter e compilar lançamentos do NSS.</dd> - </dl> - - <dl> - <dt><a href="NSS/NSS_Developer_Tutorial">Tutorial do Desenvolvedor do NSS</a></dt> - <dd>Como fazer alterações no NSS. Estilo de codificação, manutenção de compatibilidade da ABI.</dd> - </dl> - - <dl> - <dt><a href="NSS/Tools">Ferramentas de Segurança do NSS</a></dt> - <dd>Ferramentas para desenvolvimento, depuração e manutenção de aplicativos que usam NSS.</dd> - <dt><a href="NSS/NSS_Sample_Code">Exemplo de Código</a></dt> - <dd>Demonstra como o NSS pode ser usado para operações criptográficas, tratamento de certificados, SSL, etc.</dd> - <dt><a href="http://www-archive.mozilla.org/projects/security/pki/nss/testnss_32.html">Suíte de Teste do NSS 3.2</a></dt> - <dd><strong>Versão arquivada.</strong> Descreve como executar os testes padrões do NSS.</dd> - <dt><a href="http://www-archive.mozilla.org/projects/security/pki/nss/performance_reports.html">Relatórios de desempenho do NSS</a></dt> - <dd><strong>Versão arquivada.</strong> Links para relatórios de desempenho para NSS 3.2 e lançamentos posteriores.</dd> - <dt><a href="http://www-archive.mozilla.org/projects/security/pki/nss/nss-3.11/nss-3.11-algorithms.html">Tecnologias de Criptografia Disponíveis no NSS 3.11</a></dt> - <dd><strong>Versão arquivada.</strong> List os algoritmos criptográficos usados pelo NSS 3.11.</dd> - <dt><a href="http://www-archive.mozilla.org/projects/security/pki/nss/loadable_certs.html">Certificados Raízes Carregáveis pelo NSS 3.1</a></dt> - <dd><strong>Versão arquivada.</strong> Descreve o esquema para carregar certificados raízes de AC.</dd> - <dt><a href="http://www-archive.mozilla.org/projects/security/pki/nss/db_formats.html">cert7.db</a></dt> - <dd><strong>Versão arquivada.</strong> Formato geral do banco de dados cert7.db.</dd> - </dl> - - <h3 id="Informação_do_PKCS_11">Informação do PKCS #11</h3> - - <ul> - <li><a href="NSS/PKCS11" title="PKCS11">Documentação sobre módulos PKCS #11</a></li> - <li><a href="NSS/PKCS11_Implement">Implementando PKCS #11 para NSS</a></li> - <li><a href="NSS/PKCS11/Module_Specs" title="PKCS11_Module_Specs">As strings que o NSS usa para carregar módulos PKCS #11</a></li> - <li><a href="NSS/PKCS11/FAQ">FAQ do PKCS #11</a></li> - <li><a href="NSS/PKCS11/Module_Installation">Usando o Gerenciador de Instalação de JAR para Instalar um Módulo Criptográfico PKCS #11</a></li> - <li><a href="http://www-archive.mozilla.org/projects/security/pki/pkcs11/">Teste de Conformidade com PKCS #11 - Versão arquivada</a></li> - </ul> - - <dl> - </dl> - - <h3 id="Certificados_de_AC_pré-carregados_no_NSS">Certificados de AC pré-carregados no NSS</h3> - - <ul> - <li><a href="http://www.mozilla.org/projects/security/certs/policy/">Política de certificado AC da Mozilla</a></li> - <li><a href="http://www.mozilla.org/projects/security/certs/included/">Lista de certificados AC pré-carregados</a> - <ul> - <li>Usuários desta lista devem considerar a configuração do bit de confiança para cada certificado raiz incluído. <a href="https://www.imperialviolet.org/2012/01/30/mozillaroots.html">Mais informações</a>, <a href="https://github.com/agl/extract-nss-root-certs">Extraindo raízes e seus bits de confiança</a></li> - </ul> - </li> - </ul> - - <dl> - </dl> - - <h3 id="NSS_é_construído_em_cima_da_Netscape_Portable_Runtime_(NSPR)">NSS é construído em cima da Netscape Portable Runtime (NSPR)</h3> - - <dl> - <dt><a href="NSPR">Netscape Portable Runtime</a></dt> - <dd>Página do projeto NSPR.</dd> - <dt><a href="/en-US/docs/Mozilla/Projects/NSPR/Reference">Referência do NSPR</a></dt> - <dd>Documentação da API do NSPR.</dd> - </dl> - - <h3 id="Informações_adicionais">Informações adicionais</h3> - - <ul> - <li><a href="/en-US/docs/JavaScript_crypto" title="JavaScript_crypto">Usando o objeto window.crypto do JavaScript</a></li> - <li><a href="NSS/HTTP_delegation" title="HTTP_Delegation">Delegação do download HTTP para OCSP</a></li> - <li><a href="NSS/TLS_Cipher_Suite_Discovery" title="TLS_Cipher_Suite_Discovery">TLS Cipher Suite Discovery</a></li> - <li><a href="NSS/Certificate_Download_Specification" title="NSS_Certificate_Download_Specification">Especificação de Download de Certificado do NSS</a></li> - <li><a href="NSS/FIPS_Mode_-_an_explanation" title="FIPS Mode - an explanation">Modo FIPS - uma explicação</a></li> - <li><a href="NSS/Key_Log_Format" title="NSS Key Log Format">Formato de arquivos de registro log de chaves</a></li> - <li>Veja <a href="en_US/docs/tag/NSS" title="/en-US/docs/tag/NSS">todos os artigos em inglês relacionados ao NSS no MDN</a> (e em <a href="/docs/tag/NSS">português</a>)</li> - </ul> - - <h3 id="Teste">Teste</h3> - - <ul> - <li><a href="/en-US/docs/Testing_third-party_PKCS#11_modules.2Ftokens_with_NSS" title="Testing_third-party_PKCS#11_modules.2Ftokens_with_NSS">Testando módulos/tokens PKCS #11 de terceiros com NSS</a></li> - </ul> - - <h3 id="Planejamento">Planejamento</h3> - - <p>Informações sobre o planejamento do NSS podem ser encontradas em <a class="external" href="http://wiki.mozilla.org/NSS">wiki.mozilla.org</a>, incluindo:</p> - - <ul> - <li><a class="external" href="http://wiki.mozilla.org/FIPS_Validation">Validação FIPS</a></li> - <li><a class="external" href="http://wiki.mozilla.org/NSS:Roadmap">Página de Roadmap do NSS</a></li> - <li><a href="https://fedoraproject.org/wiki/User:Mitr/NSS:DeveloperFriendliness" title="https://fedoraproject.org/wiki/User:Mitr/NSS:DeveloperFriendliness">Projeto de Melhoria do NSS</a></li> - </ul> - </td> - <td> - <h2 class="Community" id="Community" name="Community">Communidade</h2> - - <ul> - <li>Veja os fóruns da Mozilla Security...</li> - </ul> - - <p>{{ DiscussionList("dev-security", "mozilla.dev.security") }}</p> - - <ul> - <li>Veja os fóruns da Mozilla Cryptography...</li> - </ul> - - <p>{{ DiscussionList("dev-tech-crypto", "mozilla.dev.tech.crypto") }}</p> - - <h2 class="Related_Topics" id="Related_Topics" name="Related_Topics">Tópicos relacionados</h2> - - <ul> - <li><a href="/docs/Web/Security" title="Security">Segurança</a></li> - </ul> - </td> - </tr> - </tbody> -</table> - -<p> </p> diff --git a/files/pt-br/mozilla/projects/nss/nss_3.16.4_release_notes/index.html b/files/pt-br/mozilla/projects/nss/nss_3.16.4_release_notes/index.html deleted file mode 100644 index 5873639121..0000000000 --- a/files/pt-br/mozilla/projects/nss/nss_3.16.4_release_notes/index.html +++ /dev/null @@ -1,32 +0,0 @@ ---- -title: NSS 3.16.4 release notes -slug: Mozilla/Projects/NSS/NSS_3.16.4_release_notes -translation_of: Mozilla/Projects/NSS/NSS_3.16.4_release_notes ---- -<h2 id="Introdrução">Introdrução</h2> -<p>Network Security Services (NSS) 3.16.4 is a patch release for NSS 3.16. The bug fixes in NSS 3.16.4 are described in the "Bugs Fixed" section below.</p> -<h2 id="Distribution_Information">Distribution Information</h2> -<p>The HG tag is NSS_3_16_4_RTM. NSS 3.16.4 requires NSPR 4.10.6 or newer.</p> -<p>NSS 3.16.4 source distributions are available on ftp.mozilla.org for secure HTTPS download:</p> -<ul> - <li>Source tarballs:<br> - <a href="https://ftp.mozilla.org/pub/mozilla.org/security/nss/releases/NSS_3_16_4_RTM/src/">https://ftp.mozilla.org/pub/mozilla.org/security/nss/releases/NSS_3_16_4_RTM/src/</a></li> -</ul> -<h2 id="New_in_NSS_3.16.4">New in NSS 3.16.4</h2> -<p>This release consists primarily of CA certificate changes as listed below, and includes a small number of bug fixes.</p> -<h2 id="Notable_Changes_in_NSS_3.16.4">Notable Changes in NSS 3.16.4</h2> -<ul> - <li>The following <strong>1024-bit</strong> root CA certificate was <strong>restored</strong> to allow more time to develop a better transition strategy for affected sites. It was removed in <a href="https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS/NSS_3.16.3_release_notes">NSS 3.16.3</a>, but discussion in the mozilla.dev.security.policy forum led to the decision to keep this root included longer in order to give website administrators more time to update their web servers. - <ul> - <li>CN = GTE CyberTrust Global Root - <ul> - <li>SHA1 Fingerprint: 97:81:79:50:D8:1C:96:70:CC:34:D8:09:CF:79:44:31:36:7E:F4:74</li> - </ul> - </li> - </ul> - </li> - <li>In <a href="https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS/NSS_3.16.3_release_notes">NSS 3.16.3</a>, the <strong>1024-bit </strong>"Entrust.net Secure Server Certification Authority" root CA certificate (SHA1 Fingerprint: 99:A6:9B:E6:1A:FE:88:6B:4D:2B:82:00:7C:B8:54:FC:31:7E:15:39) was removed. In NSS 3.16.4, a <strong>2048-bit </strong>intermediate CA certificate has been included, without explicit trust. The intention is to mitigate the effects of the previous removal of the 1024-bit Entrust.net root certificate, because many public Internet sites still use the "USERTrust Legacy Secure Server CA" intermediate certificate that is signed by the 1024-bit Entrust.net root certificate. The inclusion of the intermediate certificate is a temporary measure to allow those sites to function, by allowing them to find a trust path to another <strong>2048-bit</strong> root CA certificate. The temporarily included intermediate certificate expires November 1, 2015.</li> -</ul> -<h2 id="Bugs_fixed_in_NSS_3.16.4">Bugs fixed in NSS 3.16.4</h2> -<p>This Bugzilla query returns all the bugs fixed in NSS 3.16.4:</p> -<p><a href="https://bugzilla.mozilla.org/buglist.cgi?resolution=FIXED&classification=Components&query_format=advanced&product=NSS&target_milestone=3.16.4">https://bugzilla.mozilla.org/buglist.cgi?resolution=FIXED&classification=Components&query_format=advanced&product=NSS&target_milestone=3.16.4</a></p> diff --git a/files/pt-br/mozilla/projects/nss/nss_sample_code/index.html b/files/pt-br/mozilla/projects/nss/nss_sample_code/index.html deleted file mode 100644 index 89f7fca802..0000000000 --- a/files/pt-br/mozilla/projects/nss/nss_sample_code/index.html +++ /dev/null @@ -1,26 +0,0 @@ ---- -title: NSS Sample Code -slug: Mozilla/Projects/NSS/NSS_Sample_Code -tags: - - NSS -translation_of: Mozilla/Projects/NSS/NSS_Sample_Code ---- -<h2 id="Código_NSS">Código NSS</h2> - -<p>As seções seguintes mostram como NSS pode ser utilizada para operações criptográficas, gerenciamento de certificados, SSL, etc. Apresenta também, boas práticas em aplicações de criptografia.</p> - -<ol> - <li><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS/nss_sample_code/NSS_Sample_Code_Sample1">Código fonte 1: Geração de chave e transporte entre servidores</a></li> - <li><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS/nss_sample_code/NSS_Sample_Code_sample2">Código fonte 2: Encriptação simétrica</a></li> - <li><a href="nss_sample_code/NSS_Sample_Code_sample3">Código fonte 3: Hashing, MAC</a></li> - <li><a href="nss_sample_code/NSS_Sample_Code_sample4">Código fonte 4: Encriptação PKI</a></li> - <li><a href="nss_sample_code/NSS_Sample_Code_sample5">Código fonte 5: Encriptação PKI com chave pública private em formato DER</a></li> - <li><a href="nss_sample_code/NSS_Sample_Code_sample6">Código fonte 6: Chaves simétricas persistentes em banco de dados NSS</a></li> -</ol> - -<p><br> - Alguns exemplos muito antigos precisam ser atualizados. Segue o link: https://bugzilla.mozilla.org/show_bug.cgi?id=490238</p> - -<p>Um repositório git temporário com trabalho em andamento</p> - -<pre class="bz_comment_text" id="comment_text_42">git clone git://fedorapeople.org/~emaldonado/samples.git</pre> diff --git a/files/pt-br/mozilla/projects/nss/tools/index.html b/files/pt-br/mozilla/projects/nss/tools/index.html deleted file mode 100644 index 37966e2234..0000000000 --- a/files/pt-br/mozilla/projects/nss/tools/index.html +++ /dev/null @@ -1,100 +0,0 @@ ---- -title: NSS Tools -slug: Mozilla/Projects/NSS/tools -tags: - - NSS -translation_of: Mozilla/Projects/NSS/tools ---- -<h2 id="NSS_Security_Tools">NSS Security Tools</h2> - -<p>Newsgroup: <a href="news://news.mozilla.org/mozilla.dev.tech.crypto">mozilla.dev.tech.crypto</a></p> - -<h3 id="VISÃO_GERAL">VISÃO GERAL</h3> - -<p>As NSS Security Tools permitem que desenvolvedores testem, depurem e gerenciem aplicações que usem NSS. A tabela <a href="#Tools">Informação das Ferramentas</a> abaixo descreve as ferramentas que estão atualmente funcionando e aquelas que ainda estão em desenvolvimento. Os links para cada ferramenta leva você ao código fonte, documentação, planos e links relacionados para cada ferramenta. Os links ficarão ativos assim que houver informação disponível.</p> - -<p>Atualmente, você deve baixar o fonte e compilá-lo para criar arquivos binários para as ferramentas NSS. Para informação sobre baixar o fonte de NSS, veja <a href="https://developer.mozilla.org/NSS/Building">https://developer.mozilla.org/NSS/Building</a>.</p> - -<p>Se você tiver algum feedback ou perguntas, por favor sinta-se à vontade para postar em<a href="news://news.mozilla.org/mozilla.dev.tech.crypto"> mozilla.dev.tech.crypto</a>. Esse newsgroup é o fórum preferido para todas as questões sobre NSS e as ferramentas NSS.</p> - -<h3 id="Objetivos_Globais">Objetivos Globais</h3> - -<ol> - <li>Prover uma ferramenta para analizar e reparar banco de dados de certificados (<a href="#dbck">dbck</a>).</li> - <li>Migrar ferramentas da interface secutil.h para a interface PKCS #11.</li> - <li>Eliminar funcionalidade redundantes em ferramentas. Muitas ferramentas implementam versões privadas de PKCS11Init(), OpenCertDB(), etc.</li> - <li>Eliminar uso de getopt() e substituir por chamadas NSPR para obter opções de comando (para eliminar dependências de plataforma com getopt()).</li> -</ol> - -<h3 id="Informação_das_Ferramentas"><a name="Tools">Informação das Ferramentas</a></h3> - -<table style="width: 90%;"> - <tbody> - <tr> - <th><strong>Ferramenta</strong></th> - <th><strong>Descrição</strong></th> - <th><strong>Links</strong></th> - </tr> - <tr> - <td><a name="certutil">certutil 2.0</a></td> - <td>Gerenciar banco de dados de certificados e chaves (cert7.db e key3.db).</td> - <td><font size="-1"><a href="http://lxr.mozilla.org/mozilla/source/security/nss/cmd/certutil/">Fonte</a>, <a href="tools/NSS_Tools_certutil">Documentação</a>, <a href="tools/NSS_Tools_certutil-tasks">Tarefas/Planos</a> </font></td> - </tr> - <tr> - <td><a name="cmsutil">cmsutil 1.0</a></td> - <td><font size="-1">Realiza operações básicas de CMS básicas, como criptografar, descriptografar e assinar mensagens</font>.</td> - <td><font size="-1"><a href="http://lxr.mozilla.org/mozilla/source/security/nss/cmd/smimetools/">Fonte</a>, <a href="tools/NSS_Tools_cmsutil">Documentação</a> </font></td> - </tr> - <tr> - <td><a name="crlutil">crlutil</a></td> - <td><font size="-1">Gerenciar listas de revogação de certificados </font>(CRLs).</td> - <td><font size="-1"><a href="http://lxr.mozilla.org/mozilla/source/security/nss/cmd/crlutil/">Fonte</a>, <a href="tools/NSS_Tools_crlutil">Documentação</a>, </font></td> - </tr> - <tr> - <td><a name="dbck">dbck 1.0</a></td> - <td><font size="-1">Analizar e reparar banco de dados de certificados </font>(não funciona em NSS 3.2)</td> - <td><font size="-1"><a href="http://lxr.mozilla.org/mozilla/source/security/nss/cmd/dbck/">Fonte</a>, <a href="tools/NSS_Tools_dbck-tasks">Tarefas/Planos</a> </font></td> - </tr> - <tr> - <td><a name="modutil">modutil 1.1</a></td> - <td><font size="-1">Gerenciar o banco de dados de módulos </font>PKCS11 (secmod.db). Adicionar módulos e modificar as propriedades de módulos existentes (tal como se um módulo é o provedor padrão de algum serviço de criptografia).</td> - <td><font size="-1"><a href="http://lxr.mozilla.org/mozilla/source/security/nss/cmd/modutil/">Fonte</a>, <a href="tools/NSS_Tools_modutil">Documentação</a>, <a href="tools/NSS_Tools_modutil-tasks">Tarefas/Planos</a> </font></td> - </tr> - <tr> - <td><a name="pk12util">pk12util 1.0</a></td> - <td>Importar e exportar chaves e certificados entre os bancos de dados de certificados/chaves e arquivos no formato PKCS12.</td> - <td><font size="-1"><a href="http://lxr.mozilla.org/mozilla/source/security/nss/cmd/pk12util/">Fonte</a>, <a href="tools/NSS_Tools_pk12util">Documentação</a>, <a href="tools/NSS_Tools_pk12util-tasks">Tarefas/Planos</a> </font></td> - </tr> - <tr> - <td><a name="signtool">signtool 1.3</a></td> - <td><font size="-1">Criar arquivos jar assinados digitalmente, contendo arquivos e/ou código</font>.</td> - <td><font size="-1"><a href="http://lxr.mozilla.org/mozilla/source/security/nss/cmd/signtool/">Fonte</a>, <a href="http://docs.sun.com/source/816-5531-10/app_sign.htm"> Documentação</a>, </font></td> - </tr> - <tr> - <td><a name="signver">signver 1.1</a></td> - <td>Verificar assinaturas em objetos assinados digitalmente.</td> - <td><font size="-1"><a href="http://lxr.mozilla.org/mozilla/source/security/nss/cmd/signver/">Fonte</a>, <a href="http://docs.sun.com/source/816-6153-10/signver.htm"> Documentação</a>, <a href="tools/NSS_Tools_signver-tasks">Tarefas/Planos</a> </font></td> - </tr> - <tr> - </tr> - <tr> - <td><a name="sslstrength">sslstrength</a></td> - <td><font size="-1">Força de </font>SSL</td> - <td><font size="-1"><a href="tools/NSS_Tools_sslstrength">Documentação</a> </font></td> - </tr> - <tr> - <td><a name="ssltap">ssltap 3.2</a></td> - <td> - <p><font size="-1">Intermediar requisições para um servidor SSL e exibe o conteúdo das mensagens trocadas</font> entre o cliente e o servidor. A ferramenta sstap não descriptografa os dados, mas mostra coisas como o tipo de mensagem SSL (clientHello, serverHello, etc) e dados da conexão (versão do protocolo, suíte de cifras, etc). Essa ferramenta é muito útil para depuração.</p> - </td> - <td><font size="-1"><a href="http://lxr.mozilla.org/mozilla/source/security/nss/cmd/ssltap/">Fonte</a>, <a href="tools/NSS_Tools_ssltap">Documentação</a> </font></td> - </tr> - </tbody> -</table> - -<p> </p> - -<ol> - <li><font size="-1"><a name="note1"></a> Atualmente aponta para o Netscape Certificate Management System Administration Guide em docs.sun.com. Para mais informações sobre essa ferramenta, veja <a href="http://developer.netscape.com/docs/manuals/security.html#OBJ">Object Signing</a>. </font></li> - <li><font size="-1"><a name="note2"></a> Atualmente aponta para a documentação de signver no developer.netscape.com. Para informações adicionais sobre essa ferramenta, veja <a href="http://developer.netscape.com/docs/manuals/security.html#FORM">Form Signing</a> .</font></li> -</ol> diff --git a/files/pt-br/mozilla/projects/nss/tools/nss_tools_certutil-tasks/index.html b/files/pt-br/mozilla/projects/nss/tools/nss_tools_certutil-tasks/index.html deleted file mode 100644 index ed643929d0..0000000000 --- a/files/pt-br/mozilla/projects/nss/tools/nss_tools_certutil-tasks/index.html +++ /dev/null @@ -1,25 +0,0 @@ ---- -title: NSS Tools certutil-tasks -slug: Mozilla/Projects/NSS/tools/NSS_Tools_certutil-tasks -translation_of: Mozilla/Projects/NSS/tools/NSS_Tools_certutil-tasks ---- -<h1 id="Tarefas_do_NSS_Security_Tools_certutil">Tarefas do NSS Security Tools: certutil</h1> - -<p>Newsgroup: <a href="news://news.mozilla.org/mozilla.dev.tech.crypto">mozilla.dev.tech.crypto</a></p> - -<h1 id="Lista_de_tarefas">Lista de tarefas</h1> - -<ol> - <li>Melhor relatório de erro. A maioria dos erros do certutil fornece nenhum detalhe. Erros com opções de linha de comandos exibem apenas uma mensagem de uso.</li> - <li>Melhorar listagem de certificados. Permitir ordenação por nome e confiança. Ordenação por confiança vai retornar primeiro certificados de AC.</li> - <li>Permitir listagem e procura por chaves por índice e alcunha.</li> - <li>Melhorar coerência de alcunhas de chave e certificado.</li> - <li>Remover chaves "encalhadas" sem um certificado (exceto para a iminente (????) chave de criptografia para arquivos de senha).</li> - <li>Suporte a importação de chaves de um arquivo.</li> - <li>Melhorar suporte a token de hardware.</li> - <li>(correção de erro) Algumas extensões de certificados fazem o certutil travar.</li> - <li>(correção de erro) Entradas de certificados exigem um número de série; um deveria ser gerado automaticamente, se não fornecido.</li> - <li>(correção de erro) Senha nula é dada a um novo <code class="filename">key3.db</code>; deveria perguntar o usuário por uma senha inicial.</li> - <li>(correção de erro) Listagem de chaves privadas não funciona: exige autenticação por senha.</li> - <li>(correção de erro) Listagem de extensões de certificado possui erros de escrita e não fornece muita informação.</li> -</ol> diff --git a/files/pt-br/mozilla/projects/nss/tools/nss_tools_certutil/index.html b/files/pt-br/mozilla/projects/nss/tools/nss_tools_certutil/index.html deleted file mode 100644 index b7f6dd34ca..0000000000 --- a/files/pt-br/mozilla/projects/nss/tools/nss_tools_certutil/index.html +++ /dev/null @@ -1,677 +0,0 @@ ---- -title: NSS Tools certutil -slug: Mozilla/Projects/NSS/tools/NSS_Tools_certutil -translation_of: Mozilla/Projects/NSS/tools/NSS_Tools_certutil ---- -<h2 id="Usando_a_Ferramenta_de_Banco_de_Dados_de_Certificado">Usando a Ferramenta de Banco de Dados de Certificado</h2> - -<p>A Ferramenta de Banco de Dados de Certificado (em inglês, "Certificate Database Tool") é um utilitário de linha de comando que pode criar e modificar os arquivos de banco de dados <code>cert8.db</code> e <code>key3.db do </code>Netscape Communicator. Ela também pode listar, gerar, modificar ou excluir certificados do arquivo <code>cert8.db e criar ou alterar a senha, gerar novos pares de chaves públicas e privadas, exibir o conteúdo do banco de dados de chave, ou excluir os pares de chaves do arquivo<font face="Open Sans, Arial, sans-serif"> </font></code><code>key3.db</code>.</p> - -<p>O processo de gerenciamento de chave e certificado geralmente começa com a criação de chaves no banco de dados de chave e, então, geração e gerenciamento de certificados no banco de dados de certificado.</p> - -<p>Esse documento discute gerenciamento de banco de dados de chave e certificado. Para gerenciamento de banco de dados de módulo de segurança de informações, veja <a href="/en-US/docs/NSS_reference/NSS_tools_:_modutil">Usando a Ferramenta de Banco de Dados de Segurança.</a></p> - -<h2 id="Disponibilidade">Disponibilidade</h2> - -<p>Veja as notas de lançamento para as plataformas para as quais essa ferramenta está disponível.</p> - -<h2 id="Sintaxe">Sintaxe</h2> - -<p>Para executar a Ferramenta de Banco de Dados de Certificado, digite o comando</p> - -<pre><code>certutil </code><em>opção</em> [<em>argumentos</em> ]</pre> - -<p>sendo <em> opção</em> e<em> argumentos</em> combinações das opções e argumentos listados na seção a seguir. Cada comando leva uma opção. Cada opção pode levar zero ou mais argumentos. Para ver uma mensagem sobre o uso, execute o comando sem opções ou com a opçaõ -H.</p> - -<h3 id="Opções_e_Argumentos">Opções e Argumentos</h3> - -<p>Opções especificam uma ação e estão em letras maiúsculas. Argumentos de opções modificam uma ação e estão em letras minúsculas. As opções do comando de Ferramenta de Banco de Dados de Certificado e seus argumentos são definidos abaixo:</p> - -<table> - <tbody> - <tr> - <td> <strong>Opções</strong></td> - <td> - - </td> - </tr> - <tr> - <td> - <p><code>-N</code></p> - </td> - <td> - <p>Cria novos bancos de dados de certificado e de chave.</p> - </td> - </tr> - <tr> - <td> - <p><code>-S</code></p> - </td> - <td> - <p>Cria um certificado individual e o adiciona a um banco de dados de certificado.</p> - </td> - </tr> - <tr> - <td> - <p><code>-R</code></p> - </td> - <td> - <p>Cria um arquivo de requisição de certificado (certificate-request) que pode ser enviado a uma Autoridade Certificadora (AC) para processamento em um certificado final. A saída padrão é para a saída padrão, a menos que você use o argumento <code>-o</code><em>output-file</em>. Use o argumento <code>-a</code> para especificar a saída em ASCII.</p> - </td> - </tr> - <tr> - <td> - <p><code>-C</code></p> - </td> - <td> - <p>Cria um novo arquivo binário de certificado a partir do arquivo binário de requisição de certificado. Use o argumento <code>-i</code> para especificar o arquivo de requisição de certificado. Se esse argumento não for usado, a Ferramenta de Banco de Dados de Certificado pergunta por um nome de arquivo.</p> - </td> - </tr> - <tr> - <td> - <p><code>-G</code></p> - </td> - <td> - <p>Gera um novo par de chaves pública e privada. O banco de dados de chave já deve existir; se um não estiver presente, essa opção vai inicializar um por padrão. Alguns cartões inteligentes (por exemplo, o cartão Litronic) podem armazenar apenas um par de chaves. Se você criar um novo par de chaves para tal cartão, o par anterior é sobrescrito.</p> - </td> - </tr> - <tr> - <td> - <p><code>-F</code></p> - </td> - <td> - <p>Exclui uma chave privada de um banco de dados de chave. Especifique a chave para excluir com o argumento <code>-n</code>. Especifique o banco de dados do qual a chave será excluída com o argumento <code>-d</code>.</p> - - - - <p>Use o argumento <code>-k</code> para especificar explicitamente se deve-se excluir uma chave DSA ou RSA. Se você não usar o argumento <code>-k</code>, a opção procura por uma chave RSA que corresponda com o apelido.</p> - - - - <p>Quando você excluir chaves, certifique-se de remover quaisquer certificados associados àquelas chaves do banco de dados de certificado, usando <code>-D</code>.</p> - - - - <p>Alguns cartões inteligentes (por exemplo, o cartão Litronic) não permite que você remova uma chave pública que você gerou. Neste caso, apenas a chave privada é excluída do par de chaves. Você pode exibir a chave pública com o comando <code>certutil -K -h</code><em>tokenname</em> .</p> - </td> - </tr> - <tr> - <td> - <p><code>-K</code></p> - </td> - <td> - <p>Lista o keyID das chaves no banco de dados de chave. Uma keyID é o modulus da chave RSA ou o <code>publicValue</code> da chave DSA. IDs são exibidos em hexadecimal ("0x" não é mostrado).</p> - </td> - </tr> - <tr> - <td> - <p><code>-A</code></p> - </td> - <td> - <p>Adiciona um certificado existente a um banco de dados de certificado. O banco de dados de certificado já deve existir; se um não estiver presente, essa opção vai inicializar um por padrão.</p> - </td> - </tr> - <tr> - <td> - <p><code>-D</code></p> - </td> - <td> - <p>Exclui um certificado do banco de dados de certificado.</p> - </td> - </tr> - <tr> - <td> - <p><code>-L</code></p> - </td> - <td> - <p>Lista todos os certificados ou exibe informações sobre um certificado nomeado, em um banco de dados de certificado.</p> - - - - <p>Use o argumento <code>-h</code><em>tokenname</em> para especificar o banco de dados de certificado em um token de hardware ou software em particular.</p> - </td> - </tr> - <tr> - <td> - <p><code>-V</code></p> - </td> - <td> - <p>Verifica a validade de um certificado e seus atributos.</p> - </td> - </tr> - <tr> - <td> - <p><code>-M</code></p> - </td> - <td> - <p>Modifica os atributos de confiança de um certificado usando os valores do argumento <code>-t</code>.</p> - </td> - </tr> - <tr> - <td> - <p><code>-H</code></p> - </td> - <td> - <p>Exibe uma lista das opções e argumentos usados pela Ferramenta de Banco de Dados de Certificado.</p> - </td> - </tr> - <tr> - <td> - <p><code>-W</code></p> - </td> - <td> - <p>Altera a senha para um banco de dados de chave.</p> - </td> - </tr> - <tr> - <td> - <p><code>-U</code></p> - </td> - <td> - <p>Lista todos os módulos disponíveis ou exibe um módulo específico nomeado.</p> - </td> - </tr> - <tr> - <td> - <p><strong>Argumentos</strong></p> - </td> - <td> - - </td> - </tr> - <tr> - <td> - <p><code>-a</code></p> - </td> - <td> - <p>Usa formato ASCII ou permite o uso de formato ASCII para entrada ou saída. Essa formatação segue {{rfc(1113)}}. Para requisições de certificados, saída ASCII padrão vai para a saída padrão, a menos que seja redirecionada.</p> - </td> - </tr> - <tr> - <td> - <p><code>-b </code><em>validity-time</em></p> - </td> - <td> - <p>Especifica um tempo até o qual um certificado é exigido ser válido. Use ao verificar a validade de certificado com a opção <code>-V</code>. O formato do argumento <em>tempo-validade</em> é "YYMMDDHHMMSS[+HHMM|-HHMM|Z]". Especificação de segundos (SS) é opcional. Ao especificar um tempo explícito, use "YYMMDDHHMMSSZ". Ao especificar um tempo de compensação, use "YYMMDDHHMMSS+HHMM" ou "YYMMDDHHMMSS-HHMM". Se essa opção não for usada, a verificação de validade tem como padrão o tempo de sistema atual.</p> - </td> - </tr> - <tr> - <td> - <p><code>-c </code><em>issuer</em></p> - </td> - <td> - <p>Identifica o certificado da AC a partir da qual um novo certificado derivará sua autenticidade. Use o apelido exato do certificado da AC, ou use o endereço de email da AC. Coloque a string <em>emissor</em> entre aspas se ela contiver espaços.</p> - </td> - </tr> - <tr> - <td> - <p><code>-d </code><em>directory</em></p> - </td> - <td> - <p>Especifica o diretório de banco de dados contendo os arquivos de banco de dados de certificado e chave. No Unix, a Ferramenta de Banco de Dados de Certificado usa como padrão <code>$HOME/.netscape</code> (isto é, <code>~/.netscape</code>). No Windows NT usa como padrão o diretório atual.</p> - - - - <p>Os arquivos de banco de dados <code>cert8.db</code> e <code>key3.db devem residir no mesmo diretório</code>.</p> - </td> - </tr> - <tr> - <td> - <p><code>-P </code><em>dbprefix</em></p> - </td> - <td> - <p>Especifica o prefixo usado nos <code>cert8.db</code> e <code>key3.db</code> (por exemplo, <code>my_cert8.db</code> e <code>my_key3.db</code>). Essa opção é fornecida como um caso especial. Alterar os nomes dos bancos de dados de certificado e chave não é recomendado.</p> - </td> - </tr> - <tr> - <td> - <p><code>-e</code></p> - </td> - <td> - <p>Verifica a assinatura do certificado durante o processo de validação de um certificado.</p> - </td> - </tr> - <tr> - <td> - <p><code>-f </code><em>password-file</em></p> - </td> - <td> - <p>Especifica um arquivo que fornecerá automaticamente a senha para incluir um certificado ou para acessar um banco de dados de certificado. Esse é um arquivo texto simples contendo uma senha. Certifique-se de evitar acesso não autorizado a este arquivo.</p> - </td> - </tr> - <tr> - <td> - <p><code>-g </code><em>keysize</em></p> - </td> - <td> - <p>Define um tamanho de chave para usar ao gerar novos pares de chave pública e privada. O mínimo é 512 bits e o máximo é 8192 bits. O padrão é 1024 bits. qualquer tamanho que seja um múltiplo de 8 entre o mínimo e o máximo é permitido.</p> - </td> - </tr> - <tr> - <td> - <p><code>-h </code><em>tokenname</em></p> - </td> - <td> - <p>Especifica o nome de um token para usar ou agir sobre. A menos que especificado, o token padrão é um slot interno (especialmente, slot interno 2). Esse slot também pode ser nomeado explicitamente com a string <code>"internal"</code>. Um slot interno é um slot virtual mantido por software, em vez de por dispositivo hardware. Slot interno 2 é usado por serviços de chave e certificado. Slot interno 1 é usado por serviços critográficos.</p> - </td> - </tr> - <tr> - <td> - <p><code>-i </code><em>cert|cert-request-file</em></p> - </td> - <td> - <p>Especifica um certificado ou um arquivo de requisição de certificado.</p> - </td> - </tr> - <tr> - <td> - <p><code>-k rsa|dsa|all</code></p> - </td> - <td> - <p>Especifica o tipo de uma chave: RSA, DSA ou ambos. O valor padrão é <code>rsa</code>. Ao especificar o tipo de chave você pode evitar erros causados por apelidos duplicados.</p> - </td> - </tr> - <tr> - <td> - <p><code>-l</code></p> - </td> - <td> - <p>Exibe informações detalhdadas ao validar um certificado com a opção <code>-V</code>.</p> - </td> - </tr> - <tr> - <td> - <p><code>-m </code><em>serial-number</em></p> - </td> - <td> - <p>Atribui um número de série único para um certificao sendo criado. Essa opção deve ser realizada por um AC. O número de série padrão é 0 (zero). Números de séries são limitados a inteiros.</p> - </td> - </tr> - <tr> - <td> - <p><code>-n </code><em>nickname</em></p> - </td> - <td> - <p>Especifica o apelido de um certificado ou chave para listar, criar, adicionar a um banco de dados, modificar ou validar. Coloque a string <em>nickname</em> entre aspas se ela contiver espaços.</p> - </td> - </tr> - <tr> - <td> - <p><code>-o </code><em>output-file</em></p> - </td> - <td> - <p>Especifica o nome de arquivo de saída para novos certificados ou requisições binárias de certificados. Coloque a string <em>output-file</em> entre aspas se ela contiver espaços. Se esse argumento não foi usado, o destino de saída usado por padrão é a saída padrão.</p> - </td> - </tr> - <tr> - <td> - <p><code>-p </code><em>phone</em></p> - </td> - <td> - <p>Especifica um número de telefone de contato a ser incluído em novos certificados ou requisições de certificados. Coloque a string <em>phone</em> entre aspas se ela contiver espaços.</p> - </td> - </tr> - <tr> - <td> - <p><code>-q </code><em>pqgfile</em></p> - </td> - <td> - <p>Lê um valor PQG alternativo a partir do arquivo especificado ao gerar pares de chaves DSA. Se esse argumento não for usado, a Ferramenta de Banco de Dados de Chave gera seu próprio valor de PQG. Arquivos PQG são criados com um utilitário DSA separado.</p> - </td> - </tr> - <tr> - <td> - <p><code>-r</code></p> - </td> - <td> - <p>Exibe uma codificação DER binária do certificado ao listar informações sobre aquele certificado com a opção <code>-L</code>.</p> - </td> - </tr> - <tr> - <td> - <p><code>-s </code><em>subject</em></p> - </td> - <td> - <p>Identifica um dono de um certificado em particular para novos certificados ou requisições de certificados. Coloque a string <em>subject</em> entre aspas se ela contiver espaços. O formato de identificação do sujeito segue {{rfc(1485)}}.</p> - </td> - </tr> - <tr> - <td> - <p><code>-t </code><em>trustargs</em></p> - </td> - <td> - <p>Especifica os atributos de confiança a serem modificados em um certificado existente ou para serem aplicados em um certificado ao criá-lo ou adicioná-lo a um banco de dados.</p> - - - - <p>Há três categorias de confiança disponíveis para cada certificado, expressado nesta ordem: "<em>SSL</em> ,<em>email</em> ,<em>assinatura de objeto</em> ". Em cada posição de categoria use zero ou mais para os seguintes códigos de atributos:</p> - - - - <p><code>p</code> Proibido (explicitamente não confiada)<br> - <code>P</code> Par confiável<br> - <code>c</code> AC válida<br> - <code>T</code> AC confiável para emitir certificados de clientes (implica em <code>c</code>)<br> - <code>C</code> AC confiável para emitir certificados de servidores (SSL apenas)<br> - (implica em <code>c</code>)<br> - <code>u</code> Certificado pode ser usado para autenticação ou assinatura<br> - <code>w</code> Envia aviso (use com outros atributos para incluir um aviso quando o certificado é usado naquele contexto)</p> - - - - <p>Os códigos de atributos para as categorias são separados por vírgulas, e todo o conjunto de atributos é envolto por aspas. Por exemplo:</p> - - <p><code>-t "TCu,Cu,Tuw"</code></p> - - - - <p>Use a opção <code>-L</code> para ver uma lista de certificados e atributos confiáveis atuais em um banco de dados de certificado.</p> - </td> - </tr> - <tr> - <td> - <p><code>-u </code><em>certusage</em></p> - </td> - <td> - <p>Especifica um contexto de uso a ser aplicado ao validade um certificado com a opção <code>-V</code>. Os contextos são os seguintes:</p> - - - - <p><code>C</code> (como um cliente SSL)<br> - <code>V</code> (como um servidor SSL)<br> - <code>S</code> (como um assinador de email)<br> - <code>R</code> (como um destinatário de email)</p> - </td> - </tr> - <tr> - <td> - <p><code>-v </code><em>valid-months</em></p> - </td> - <td> - <p>Define o número de meses nos quais um novo certificado será válido. O período de validade começa no horário atual do sistema, a menos que uma compensação seja adicionada ou substraída com a opção <code>-w</code>. Se esse argumento não for usado, o período de validade padrão é três meses. Quando esse argumento é usado, período padrão de três meses é automaticamente adicionado a qualquer valor dado no argumento <em>valid-month</em>. Por exemplo, usar essa opção para definir um valor de 3 causaria 3 ser adicionado ao padrão de três meses, criando um período de validade de seis meses. Você pode usar valores negativos para reduzir o período padrão. Por exemplo, definir um valor de -2 subtrairia 2 do padrão e criaria um período de validade de um mês.</p> - </td> - </tr> - <tr> - <td> - <p><code>-w </code><em>offset-months</em></p> - </td> - <td> - <p>Define uma compensação a partir do horário atual do sistema, em meses, para o começo de um período de validade do certificado. Use ao criar o certificado ou adicioná-lo a um banco de dados. Expresse a compensação em inteiros, usando um sinal de menos (<code>-</code>) para indicar uma compensação negativa. Se esse argumento não foi usado, o período de validade começa no horário atual do sistema. O tamanho da validade é definida com o argumento <code>-v</code>.</p> - </td> - </tr> - <tr> - <td> - <p><code>-x</code></p> - </td> - <td> - <p>Usa a Ferramenta de Banco de Dados de Certificado para gerar a assinatura para um certificado sendo criado ou adicionado a um banco de dados, em vez de obter uma assinatura a partir de uma AC separada.</p> - </td> - </tr> - <tr> - <td> - <p><code>-y </code><em>exp</em></p> - </td> - <td> - <p>Define um valor de exponente alternativo a ser usado na geração de uma nova chave pública de RSA para um banco de dados, em vez do valor padrão de 65537. Os valores alternativos disponíveis são 3 e 17.</p> - </td> - </tr> - <tr> - <td> - <p><code>-z </code><em>noise-file</em></p> - </td> - <td> - <p>Lê um valor inicial a partir do arquivo do arquivo binário especificado a ser usado na geração de um novo par de chaves privada e pública RSA. Esse argumento torna possível usar valores iniciais gerados por hardware e desnecessário criar manualmente um valor do teclado. O tamanho mínimo de arquivo é 20 bytes.</p> - </td> - </tr> - <tr> - <td> - <p><code>-1</code></p> - </td> - <td> - <p>Adiciona uma extensão de uso da chave a um certificado que está sendo criado ou adicionado a um banco de dados. Essa extensão permite que uma chave do certificado seja dedicada a dar suporte a operações específicas tais como um servidor SSL ou assinatura de objeto. A Ferramenta de Banco de Dados de Certificado vai lhe solicitar um uso em particular para o chave do certificado. Esses usos são descritas sob <a href="https://access.redhat.com/documentation/en-US/Red_Hat_Certificate_System/9/html/Administration_Guide/Standard_X.509_v3_Certificate_Extensions.html">Standard X.509 v3 Certificate Extensions</a> no Apêndice A.3 do <em>Guia de Administração do Sistema de Certificados da Red Hat.</em></p> - </td> - </tr> - <tr> - <td> - <p><code>-2</code></p> - </td> - <td> - <p>Adiciona uma extensão de restrição básica a um certificado que está sendo criado ou adicionado a um banco de dados. Essa extensão oferece suporte ao processo de verificação da cadeia de certificados. A Ferramenta de Banco de Dados de Certificado solicitará que você selecione a extensão de restrição de certificado. Extensões de restrição são descritas sob <a href="https://access.redhat.com/documentation/en-US/Red_Hat_Certificate_System/9/html/Administration_Guide/Standard_X.509_v3_Certificate_Extensions.html">Standard X.509 v3 Certificate Extensions</a> no Apêndice A.3 do <em>Guia de Administração do Sistema de Certificados da Red Hat.</em></p> - </td> - </tr> - <tr> - <td> - <p><code>-3</code></p> - </td> - <td> - <p>Adiciona uma extensão de keyID de autoridade a um certificado que está sendo criado ou adicionado a um banco de dados. Essa extensão oferece suporte à identificação de um certificado em particular, no meio de múltiplos certificados associados a um nome de sujeito, como o emissor correto de um certificado. A Ferramenta de Banco de Dados de Certificado solicitará que você selecione a extensão de keyID de autoridade. Extensões de restrição são descritas sob <a href="https://access.redhat.com/documentation/en-US/Red_Hat_Certificate_System/9/html/Administration_Guide/Standard_X.509_v3_Certificate_Extensions.html">Standard X.509 v3 Certificate Extensions</a> no Apêndice A.3 do <em>Guia de Administração do Sistema de Certificados da Red Hat.</em></p> - </td> - </tr> - <tr> - <td> - <p><code>-4</code></p> - </td> - <td> - <p>Adiciona uma extensão de ponto de distribuição de CRL a um certificado que está sendo criado ou adicionado a um banco de dados. Essa extensão identifica a URL de uma lista de revogação de certificados (CRL) associados do certificado. A Ferramenta de Banco de Dados de Certificado solicitará que você informe uma URL. Estensões de pontos de distribuição de CRL são descritas sob <a href="https://access.redhat.com/documentation/en-US/Red_Hat_Certificate_System/9/html/Administration_Guide/Standard_X.509_v3_Certificate_Extensions.html">Standard X.509 v3 Certificate Extensions</a> no Apêndice A.3 do <em>Guia de Administração do Sistema de Certificados da Red Hat.</em></p> - </td> - </tr> - <tr> - <td> - <p><code>-5</code></p> - </td> - <td> - <p>Adiciona uma extensão de tipo de certificado Netscape a um certificado que está sendo criado ou adicionado ao banco de dados. Extensões de tipo de certificado Netscape são descritas sob <a href="https://access.redhat.com/documentation/en-US/Red_Hat_Certificate_System/9/html/Administration_Guide/Standard_X.509_v3_Certificate_Extensions.html">Standard X.509 v3 Certificate Extensions</a> no Apêndice A.3 do <em>Guia de Administração do Sistema de Certificados da Red Hat.</em></p> - </td> - </tr> - <tr> - <td> - <p><code>-6</code></p> - </td> - <td> - <p>Adiciona uma extensão de uso estendido da chave a um certificado que está sendo criado ou adicionado ao banco de dados. Extensões de uso estendido de chave são descritas sob <a href="https://access.redhat.com/documentation/en-US/Red_Hat_Certificate_System/9/html/Administration_Guide/Standard_X.509_v3_Certificate_Extensions.html">Standard X.509 v3 Certificate Extensions</a> no Apêndice A.3 do <em>Guia de Administração do Sistema de Certificados da Red Hat</em></p> - </td> - </tr> - <tr> - <td> - <p><code>-7 </code><em>emailAddrs</em></p> - </td> - <td> - <p>Adiciona uma lista de endereços de email, separados por vírgula, à extensão de nome alternativo do sujeito de um certificado ou requisição de certificado que está sendo criado ou adicionado ao banco de dados. Extensões de nome alternativo do sujeito são descritas na Seção 4.2.1.7 do {{rfc(32800)}}.</p> - </td> - </tr> - <tr> - <td> - <p><code>-8 </code><em>dns-names</em></p> - </td> - <td> - <p>Adiciona uma lista de nomes de DNS, separados por vírgula, à extensão de nome alternativo do sujeito de um certificado ou requisição de certificado que está sendo criado ou adicionado ao banco de dados. Extensões de nome alternativo do sujeito são descritas na Seção 4.2.1.7 do {{rfc(32800)}}</p> - </td> - </tr> - </tbody> -</table> - -<h2 id="Uso">Uso</h2> - -<p>As capacidades da Ferramenta de Banco de Dados de Certificado estão agrupadas a seguir, usando essa combinações de opções e argumentos. Opções e argumentos entre colchetes são opcionais; aqueles sem colchetes são obrigatórios.</p> - -<pre><code>-N [-d </code><em>certdir</em> <code>] </code></pre> - -<pre><code>-S -k rsa|dsa -n </code><em>certname</em> <code>-s </code><em>subject</em> -<code>[-c </code><em>issuer</em> <code>|-x] -t </code><em>trustargs</em> <code>[-h </code><em>tokenname</em> <code>] -[-m </code><em>serial-number</em> <code>] [-v </code><em>valid-months</em> <code>] [-w </code><em>offset-months</em> <code>] -[-d </code><em>certdir</em> <code>] [-p </code><em>phone</em> <code>] [-f </code><em>password-file</em> <code>] [-1] [-2] [-3] [-4] </code></pre> - -<pre><code>-R -k rsa|dsa -s </code><em>subject</em> <code>[-h </code><em>tokenname</em> <code>] -[-d </code><em>certdir</em> <code>] [-p </code><em>phone</em> <code>] [-o </code><em>output-file</em> <code>] [-f </code><em>password-file</em> <code>] </code></pre> - -<pre><code>-C -c </code><em>issuer</em> <code>[-f </code><em>password-file</em> <code>] -[-h </code><em>tokenname</em> <code>] -i </code><em>cert-request-file</em> <code>-o </code><em>output-file</em> <code>[-m </code><em>serial-number</em> <code>] -[-v </code><em>valid-months</em> <code>] [-w </code><em>offset-months</em> <code>] [-d </code><em>certdir</em> <code>] [-1] [-2] [-3] -[-4] </code></pre> - -<pre><code>-A -n </code><em>certname</em> <code>-t </code><em>trustargs</em> <code>[-h </code><em>tokenname</em> <code>] [-d </code><em>certdir</em> <code>] [-a] -[-i </code><em>cert-request-file</em> <code>] </code></pre> - -<pre><code>-L [-n </code><em>certname</em> <code>] [-d </code><em>certdir</em> <code>] [-r] [-a] </code></pre> - -<pre><code>-V -n </code><em>certname</em> <code>-b </code><em>validity-time</em> <code>-u </code><em>certusage</em> <code>[-e] [-l] [-d </code><em>certdir</em> <code>] </code></pre> - -<pre><code>-M -n </code><em>certname</em> <code>-t </code><em>trustargs</em> <code>[-d </code><em>certdir</em> <code>] </code></pre> - -<pre><code>-H </code></pre> - -<ul> - <li>Criando um novo arquivo <code>cert8.db</code>:</li> - <li>Criando um novo certificado e adicionando-o ao banco de dados com um comando:</li> - <li>Fazendo uma requisição de certificado separada:</li> - <li>Criando um novo certificado binário a partir de uma requisição binária de certificado:</li> - <li>Adicionando um certificado a um banco de dados existente:</li> - <li>Listando todos certificados ou um certificado determinado:</li> - <li>Validando um certificado:</li> - <li>Modificando um atributo de confiança do certificado:</li> - <li>Exibindo uma lista das opções e argumetnos usados pela Ferramenta de Banco de Dados de Certificado:</li> -</ul> - -<h2 id="Exemplos">Exemplos</h2> - -<h3 id="Criando_um_novo_Banco_de_Dados_de_Certificado">Criando um novo Banco de Dados de Certificado</h3> - -<p>Esse exemplo cria um novo banco de dados de certificado (arquivo <code>cert8.db</code>) no diretório especificado:</p> - -<pre><code>certutil -N -d </code><em>certdir</em></pre> - -<p>Você deve gerar os arquivos <code>key3.db</code> e <code>secmod.db</code> associados usando a Ferramenta de Banco de Dados de Chave e outras ferramentas.</p> - -<h3 id="Listando_Certificados_em_um_Banco_de_Dados">Listando Certificados em um Banco de Dados</h3> - -<p>Esss exemplo lista todos os certificados no arquivo <code>cert8.db</code> no diretório especificado:</p> - -<pre><code>certutil -L -d </code><em>certdir</em></pre> - -<p>A Ferramenta de Banco de Dados de Certificado exibe uma saída similar a esta:</p> - -<p><code>Certificate Name Trust Attributes </code><br> - <code>Uptime Group Plc. Class 1 CA C,C,<br> - VeriSign Class 1 Primary CA ,C,<br> - VeriSign Class 2 Primary CA C,C,C<br> - AT&T Certificate Services C,C,<br> - GTE CyberTrust Secure Server CA C,,<br> - Verisign/RSA Commercial CA C,C,<br> - AT&T Directory Services C,C,<br> - BelSign Secure Server CA C,,<br> - Verisign/RSA Secure Server CA C,C,<br> - GTE CyberTrust Root CA C,C,<br> - Uptime Group Plc. Class 4 CA ,C,<br> - VeriSign Class 3 Primary CA C,C,C<br> - Canada Post Corporation CA C,C,<br> - Integrion CA C,C,C<br> - IBM World Registry CA C,C,C<br> - GTIS/PWGSC, Canada Gov. Web CA C,C,<br> - GTIS/PWGSC, Canada Gov. Secure CA C,C,C<br> - MCI Mall CA C,C,<br> - VeriSign Class 4 Primary CA C,C,C<br> - KEYWITNESS, Canada CA C,C,<br> - BelSign Object Publishing CA ,,C<br> - BBN Certificate Services CA Root 1 C,C,<br> - p prohibited (explicitly distrusted)<br> - P Trusted peer<br> - c Valid CA<br> - T Trusted CA to issue client certs (implies c)<br> - C Trusted CA to issue server certs(for ssl only) (implies c)<br> - u User cert<br> - w Send warning </code></p> - -<h3 id="Criando_uma_Requisição_de_Certificado">Criando uma Requisição de Certificado</h3> - -<p>Esse exemplo gera um arquivo de requisição binária de certificado chamado <code>e95c.req</code> no diretório especificado:</p> - -<pre><code>certutil -R -s "CN=John Smith, O=Netscape, L=Mountain View, ST=California, C=US" -p "650-555-8888" -o meucert.req -d </code><em>certdir</em></pre> - -<p>Antes de criar o arquivo de requisição, a Ferramenta de Banco de Dados solicita uma senha:</p> - -<pre><code>Enter Password or Pin for "Communicator Certificate DB": </code></pre> - -<h3 id="Criando_um_Certificado">Criando um Certificado</h3> - -<p>Um certificado válido deve ser emitido por uma AC confiável. Se um par de chaves de AC não estiver disponível, você pode criar um certificado auto-assinado (para o propósito deste exemplo) com o argumento <code>-x</code>. Esse exemplo cria um novo certificado de AC binário e auto-assinado chamado <code>meuemissor</code>, no diretório especificado.</p> - -<pre><code>certutil -S -s "CN=Meu emissor" -n meuemissor -x -t "C,C,C" -1 -2 -5 -m 1234 -f </code><em>password-file</em> <code>-d </code><em>certdir</em></pre> - -<p>O exemplo a seguir cria um novo certificado binário chamado <code>meucert.crt</code>, a partir de uma requisição binária de certificado chamada <code>meucert.req</code>, no diretório especificado. Ele é emitido pelo certificado auto-assinado criado assim, <code>meuemissor</code>.</p> - -<pre><code>certutil -C -m 2345 -i meucert.req -o meucert.crt -c meuemissor -d </code><em>certdir</em></pre> - -<h3 id="Adicionando_um_Certificado_ao_Banco_de_Dados">Adicionando um Certificado ao Banco de Dados</h3> - -<p>Esse exemplo adiciona um certificado ao banco de dados de certificado:</p> - -<pre><code>certutil -A -n jsmith@netscape.com -t "p,p,p" -i meucert.crt -d </code><em>certdir</em></pre> - -<p>Você pode ver esse certificado no banco de dados com esse comando:</p> - -<pre><code>certutil -L -n jsmith@netscape.com -d </code><em>certdir</em></pre> - -<p>A Ferramenta de Banco de Dados de Certificado exibe uma saída similiar a esta:</p> - -<p><code>Certificate:<br> - Data:<br> - Version: 3 (0x2)<br> - Serial Number: 0 (0x0)<br> - Signature Algorithm: PKCS #1 MD5 With RSA Encryption<br> - Issuer: CN=John Smith, O=Netscape, L=Mountain View, ST=California, C=US<br> - Validity:<br> - Not Before: Thu Mar 12 00:10:40 1998<br> - Not After: Sat Sep 12 00:10:40 1998<br> - Subject: CN=John Smith, O=Netscape, L=Mountain View, ST=California, C=US </code><br> - <code>Subject Public Key Info:<br> - Public Key Algorithm: PKCS #1 RSA Encryption<br> - RSA Public Key:<br> - Modulus:<br> - 00:da:53:23:58:00:91:6a:d1:a2:39:26:2f:06:3a:<br> - 38:eb:d4:c1:54:a3:62:00:b9:f0:7f:d6:00:76:aa:<br> - 18:da:6b:79:71:5b:d9:8a:82:24:07:ed:49:5b:33:<br> - bf:c5:79:7c:f6:22:a7:18:66:9f:ab:2d:33:03:ec:<br> - 63:eb:9d:0d:02:1b:da:32:ae:6c:d4:40:95:9f:b3:<br> - 44:8b:8e:8e:a3:ae:ad:08:38:4f:2e:53:e9:e1:3f:<br> - 8e:43:7f:51:61:b9:0f:f3:a6:25:1e:0b:93:74:8f:<br> - c6:13:a3:cd:51:40:84:0e:79:ea:b7:6b:d1:cc:6b:<br> - 78:d0:5d:da:be:2b:57:c2:6f<br> - Exponent: 65537 (0x10001)<br> - Signature Algorithm: PKCS #1 MD5 With RSA Encryption<br> - Signature:<br> - 44:15:e5:ae:c4:30:2c:cd:60:89:f1:1d:22:ed:5e:5b:10:c8:<br> - 7e:5f:56:8c:b4:00:12:ed:5f:a4:6a:12:c3:0d:01:03:09:f2:<br> - 2f:e7:fd:95:25:47:80:ea:c1:25:5a:33:98:16:52:78:24:80:<br> - c9:53:11:40:99:f5:bd:b8:e9:35:0e:5d:3e:38:6a:5c:10:d1:<br> - c6:f9:54:af:28:56:62:f4:2f:b3:9b:50:e1:c3:a2:ba:27:ee:<br> - 07:9f:89:2e:78:5c:6d:46:b6:5e:99:de:e6:9d:eb:d9:ff:b2:<br> - 5f:c6:f6:c6:52:4a:d4:67:be:8d:fc:dd:52:51:8e:a2:d7:15:<br> - 71:3e </code><br> - <code>Certificate Trust Flags:<br> - SSL Flags:<br> - Valid CA<br> - Trusted CA<br> - Email Flags:<br> - Valid CA<br> - Trusted CA<br> - Object Signing Flags:<br> - Valid CA<br> - Trusted CA </code></p> - -<h3 id="Validando_um_Certificado">Validando um Certificado</h3> - -<p>Esse exemplo valida um certificado:</p> - -<pre><code>certutil -V -n jsmith@netscape.com -b 9803201212Z -u SR -e -l -d </code><em>certdir</em></pre> - -<p>A Ferramenta de Banco de Dados de Certificado mostra resultdos similares a</p> - -<pre><code>Certificate:'jsmith@netscape.com' is valid.</code></pre> - -<p>ou</p> - -<pre><code>UID=jsmith, E=jsmith@netscape.com, CN=John Smith, O=Netscape Communications Corp., C=US : Expired certificate</code></pre> - -<p>ou</p> - -<pre><code>UID=jsmith, E=jsmith@netscape.com, CN=John Smith, O=Netscape Communications Corp., C=US : Certificate not approved for this operation</code></pre> diff --git a/files/pt-br/mozilla/projects/rhino/index.html b/files/pt-br/mozilla/projects/rhino/index.html deleted file mode 100644 index d005d7660a..0000000000 --- a/files/pt-br/mozilla/projects/rhino/index.html +++ /dev/null @@ -1,26 +0,0 @@ ---- -title: Rhino -slug: Mozilla/Projects/Rhino -tags: - - JavaScript - - Mozilla - - Rhino -translation_of: Mozilla/Projects/Rhino ---- -<p><img alt="Image:rhino.jpg" class="internal" src="/@api/deki/files/832/=Rhino.jpg"></p> - -<p><span class="seoSummary"><strong>Rhino</strong> é uma implementação de código aberto do <a href="/en/JavaScript" title="en/JavaScript">JavaScript</a> escrita inteiramente em Java. </span><span id="result_box" lang="pt"><span class="hps">É normalmente</span> <span class="hps">embutido em</span> <span class="hps">aplicações</span> <span class="hps">Java para fornecer</span> <span class="hps">scripting</span> <span class="hps">para usuários finais</span></span><span class="seoSummary">.</span><span id="result_box" lang="pt"><span class="hps">Ele está incorporado</span> <span class="hps">no</span> <span class="hps">J2SE</span> <span class="hps">6 como</span> <span class="hps">o mecanismo de script</span> <span class="hps">padrão</span> <span class="hps">Java</span></span><span class="seoSummary">.</span></p> - -<h4 id="Rhino_downloads" name="Rhino_downloads">Baixar Rhino</h4> - -<p>Como <a class="internal" href="/en/RhinoDownload" title="en/RhinoDownload">obter as fontes e os binarios</a>. </p> - -<h4 id="Rhino_documentation" name="Rhino_documentation">Documentação do Rhino</h4> - -<p>Veja <a href="/en/Rhino_documentation" title="en/Rhino_documentation">Informação sobre Rhino</a> para escrever scripts e embedders.</p> - -<h4 id="Rhino_help" name="Rhino_help">Ajuda do Rhino</h4> - -<p><a href="/en/Rhino/Community" title="en/Rhino/Community">Alguns recursos</a> se você ficar perdido.</p> - -<p>{{ languages( { "ja": "ja/Rhino" } ) }}</p> diff --git a/files/pt-br/mozilla/projects/spidermonkey/index.html b/files/pt-br/mozilla/projects/spidermonkey/index.html deleted file mode 100644 index d859385d11..0000000000 --- a/files/pt-br/mozilla/projects/spidermonkey/index.html +++ /dev/null @@ -1,110 +0,0 @@ ---- -title: SpiderMonkey -slug: Mozilla/Projects/SpiderMonkey -tags: - - SpiderMonkey -translation_of: Mozilla/Projects/SpiderMonkey ---- -<div>{{SpiderMonkeySidebar}}</div> - -<div></div> - -<div class="summary"> -<p><strong>SpiderMonkey é o engine <a href="/docs/Web/JavaScript">JavaScript</a> da Mozilla escrito em C/C++. É usado em varios produtos Mozilla, incluindo Firefox, e está disponível sob a MPL2.</strong></p> -</div> - -<p>Lançamentos do código-fonte autônomo podem ser encontrados na <a href="/pt-BR/docs/Mozilla/Projects/SpiderMonkey/Releases">página de Lançamentos</a>.</p> - -<div class="column-container"> -<div class="column-half"> -<h2 id="Creating" name="Creating">Guias</h2> - -<h3 id="Compilação">Compilação</h3> - -<dl> - <dt><a href="SpiderMonkey/Build_Documentation" title="SpiderMonkey build documentation">Documentação de compilação do SpiderMonkey</a></dt> - <dd>Como obter o código fonte do SpiderMonkey, compilá-lo, e executar a suíte de teste.</dd> -</dl> - -<h3 id="Usando_o_SpiderMonkey">Usando o SpiderMonkey</h3> - -<dl> - <dt><a href="SpiderMonkey/Introduction_to_the_JavaScript_shell" title="Introduction to the JavaScript shell">Introdução ao JavaScript shell</a></dt> - <dd>Documentação do JavaScript shell de linha de comando, <code>js</code>.</dd> - <dt><a href="SpiderMonkey/JSAPI_User_Guide" title="en-US/docs/JSAPI_User_Guide">Guia de usuário JSAPI</a></dt> - <dd>Esse guia fornece uma visão geral do SpiderMonkey e descreve como você pode embutir chamadas da engine em seus aplicativos, habilitando neles o reconhecimento de JavaScript.</dd> - <dt><a href="/en-US/docs/Mozilla/Projects/SpiderMonkey/JSAPI_Cookbook" title="en-US/docs/SpiderMonkey/JSAPI_Phrasebook">Guia do JSAPI</a></dt> - <dd>Mostra a tradução JSAPI de algumas expressões e declarações JavaScript comumente usadas.</dd> - <dt><a href="SpiderMonkey/GC_Rooting_Guide">Guia de enraizamento de GC</a></dt> - <dd>Guia sobre como escrever código compatível com o Generational GC no SpiderMonkey.</dd> - <dt><a href="SpiderMonkey/How_to_embed_the_JavaScript_engine" title="en-US/docs/How_to_embed_the_JavaScript_engine">Como embutir o motor de JavaScript</a></dt> - <dd>Um tutorial mais antigo sobre embutir o SpiderMonkey.</dd> -</dl> - -<h2 id="Hacking_on_SpiderMonkey">Hacking on SpiderMonkey</h2> - -<dl> - <dt><a class="link-https" href="https://wiki.mozilla.org/JavaScript:New_to_SpiderMonkey" title="https://wiki.mozilla.org/JavaScript:New_to_SpiderMonkey">Novo no SpiderMonkey</a></dt> - <dd>A guide to hacking on SpiderMonkey.</dd> - <dt><a href="/en-US/docs/SpiderMonkey/Setting_up_CDT_to_work_on_SpiderMonkey" title="en-US/docs/SpiderMonkey/Setting up CDT to work on SpiderMonkey">Setting up CDT to work on SpiderMonkey</a></dt> - <dd>How to configure Eclipse to work on the SpiderMonkey code.</dd> - <dt><a href="http://blog.cdleary.com/2011/11/contributing-to-spidermonkey/">Contribuindo com SpiderMonkey</a></dt> - <dd>A slidecast that is less than four minutes long.</dd> -</dl> - -<dl> - <dt><a href="/en-US/docs/SpiderMonkey/Running_Automated_JavaScript_Tests" title="Running automated JavaScript tests">Running Automated JavaScript Tests</a></dt> - <dd>How to run the JavaScript test suites.</dd> - <dt><a href="/en-US/docs/SpiderMonkey/Creating_JavaScript_tests" title="en-US/docs/SpiderMonkey/Creating JavaScript tests">Creating JavaScript tests</a></dt> - <dd>How to add tests to the JavaScript test suites.</dd> -</dl> -</div> - -<div class="column-half"> -<h2 id="Referência">Referência</h2> - -<dl> - <dt><a href="/en-US/docs/Mozilla/Projects/SpiderMonkey/JSAPI_reference" title="en-US/docs/SpiderMonkey/JSAPI_Reference">JSAPI Reference</a></dt> - <dd>SpiderMonkey API reference.</dd> - <dt><a href="/en-US/docs/SpiderMonkey/JS_Debugger_API_Reference" title="en-US/docs/SpiderMonkey/JS Debugger API Reference">JS Debugger API Reference</a></dt> - <dd>API reference for the <code>Debugger</code> object introduced in SpiderMonkey 1.8.6, which corresponds to Gecko 8.0 {{ geckoRelease("8.0") }}.</dd> - <dt><a href="/en-US/docs/Mozilla/Projects/SpiderMonkey/Internals/Bytecode">Bytecode descriptions</a></dt> - <dd>Listing of SpiderMonkey's bytecodes.</dd> - <dt><a href="/en-US/docs/Mozilla/Projects/SpiderMonkey/Parser_API">Parser API</a></dt> - <dd>Reflection of the SpiderMonkey parser, made available as a JavaScript API.</dd> -</dl> - -<h2 id="Tips_tricks_and_philosophy">Tips, tricks and philosophy</h2> - -<dl> - <dt><a href="/en-US/docs/SpiderMonkey/Future_directions" title="en-US/docs/SpiderMonkey/Future_directions">Direções futuras</a></dt> - <dd>Futuras direções para funcionalidade, design, e prática de código.</dd> - <dt><a href="/en-US/docs/SpiderMonkey/Internals" title="en-US/docs/SpiderMonkey_Internals">SpiderMonkey Internals</a></dt> - <dd>A design overview and a file-by-file walkthrough of the implementation.</dd> - <dt><a href="/en-US/docs/SpiderMonkey/Bytecodes" title="en-US/docs/SpiderMonkey/Bytecodes">Bytecode Reference</a></dt> - <dd>SpiderMonkey bytecode reference.</dd> - <dt><a href="/en-US/docs/SpiderMonkey/Internals/Garbage_collection" title="en-US/docs/SpiderMonkey/Internals/GC">SpiderMonkey Internals: GC</a></dt> - <dd>Separate internals article on the GC</dd> - <dt><a href="/en-US/docs/SpiderMonkey/Hacking_Tips" title="en-US/docs/SpiderMonkey/Hacking_Tips">SpiderMonkey Internals: Hacking Tips </a></dt> - <dd>Collection of helpful tips & tools for hacking on the engine</dd> -</dl> - -<h2 class="Related_Topics" id="Related_Topics" name="Related_Topics">Related Topics</h2> - -<ul> - <li><a href="/en-US/docs/JavaScript" title="en-US/docs/JavaScript">JavaScript</a></li> - <li><a href="/en-US/docs/SpiderMonkey/FOSS" title="en-US/docs/SpiderMonkey/FOSS">FOSS projects using or based on SpiderMonkey</a></li> -</ul> - -<h2 id="Releases">Releases</h2> - -<dl> - <dt><a href="/en-US/docs/Mozilla/Projects/SpiderMonkey/Releases">SpiderMonkey release notes</a></dt> - <dd>Current and past versions: <a href="/en-US/docs/Mozilla/Projects/SpiderMonkey/Releases/45">45</a>, <a href="/en-US/docs/Mozilla/Projects/SpiderMonkey/Releases/38">38</a>, <a href="/en-US/docs/Mozilla/Projects/SpiderMonkey/Releases/31">31</a>, <a href="/en-US/docs/Mozilla/Projects/SpiderMonkey/Releases/24">24</a>, <a href="/en-US/docs/Mozilla/Projects/SpiderMonkey/Releases/17">17</a></dd> -</dl> - -<dl> - <dt></dt> -</dl> -</div> -</div> diff --git a/files/pt-br/mozilla/projects/spidermonkey/releases/index.html b/files/pt-br/mozilla/projects/spidermonkey/releases/index.html deleted file mode 100644 index 95a09a605a..0000000000 --- a/files/pt-br/mozilla/projects/spidermonkey/releases/index.html +++ /dev/null @@ -1,37 +0,0 @@ ---- -title: Lançamentos do SpiderMonkey -slug: Mozilla/Projects/SpiderMonkey/Releases -tags: - - SpiderMonkey -translation_of: Mozilla/Projects/SpiderMonkey/Releases ---- -<div>{{SpiderMonkeySidebar("Releases")}}</div> - -<div class="summary"> -<p>Essa página lista as notas de lançamento do <a href="/docs/Mozilla/Projects/SpiderMonkey">SpiderMonkey</a>.</p> -</div> - -<h2 id="Lançamento_atual">Lançamento atual</h2> - -<ul> - <li><a href="Releases/45">SpiderMonkey 45</a></li> -</ul> - -<h2 id="Lançamento_futuro">Lançamento futuro</h2> - -<ul> - <li><a href="Releases/52">SpiderMonkey 52</a></li> -</ul> - -<h2 id="Lançamentos_anteriores">Lançamentos anteriores</h2> - -<ul> - <li><a href="Releases/38">SpiderMonkey 38</a></li> - <li><a href="Releases/31">SpiderMonkey 31</a></li> - <li><a href="Releases/24">SpiderMonkey 24</a></li> - <li><a href="Releases/17">SpiderMonkey 17</a></li> - <li><a href="Releases/1.8.8">SpiderMonkey 1.8.8</a></li> - <li><a href="Releases/1.8.7">SpiderMonkey 1.8.7</a></li> - <li><a href="Releases/1.8.5">SpiderMonkey 1.8.5</a></li> - <li><a href="Releases/1.8">SpiderMonkey 1.8</a></li> -</ul> diff --git a/files/pt-br/mozilla/projetos-do-mozilla-no-github/index.html b/files/pt-br/mozilla/projetos-do-mozilla-no-github/index.html deleted file mode 100644 index bb0223e440..0000000000 --- a/files/pt-br/mozilla/projetos-do-mozilla-no-github/index.html +++ /dev/null @@ -1,129 +0,0 @@ ---- -title: Projetos do Mozilla no Github -slug: Mozilla/projetos-do-mozilla-no-github -tags: - - GitHub - - Guia do Desenvolvedor - - Guia(2) - - Mozilla - - Source code -translation_of: Mozilla/Mozilla_on_GitHub ---- -<p><span class="seoSummary">Embora a Mozilla possua boa parte de seu <em>core</em> localizado nos servidores da Mozilla <a href="/en-US/docs/Mercurial">Mercurial</a>. Existem projetos como o <a href="/en-US/docs/mozilla-central">mozilla-central</a> e outras ferramentes e serviços hospedadas no <a href="https://github.com/">GitHub</a>. Este artigo oferece um guia rápido de como contribuir para o Mozilla no GitHub, e também uma lista dos repositórios mais bacanas no GitHub que envolve a Mozilla.</span></p> - -<h2 id="Vamos_começar">Vamos começar</h2> - -<p>Você pode dar uma olhada no código hospedado no GitHub, sem possuir uma conta; esta é a primeira coisa que deve saber. Fazer mais—isto é, contribuir no código já existente, ou <em>forkar</em> o repositório e começar a escrever o seu próprio em cima do existente.—para isso você precisará de uma conta no GitHub. Você pode ver como <a href="https://help.github.com/articles/set-up-git/">criar uma conta</a> no site do GitHub.</p> - -<p>A maioria dos projetos da Mozilla estão localizados em repositórios gerenciados pela <a href="https://github.com/mozilla/">organização Mozilla</a>. Este é um ótimo lugar para dar uma olhada em repositórios que não estão listados abaixo.</p> - -<h2 id="Projetos">Projetos</h2> - -<p>Esta lista cobre os maiores e também os mais importantes projetos que nós temos hospedados no GitHub. Isto não é uma lista completa, até porque, é díficil para nós acompanharmos os projetos menores e adiciona-los aqui (e as vezes, até mesmo os projetos grandes!). Você pode ver a <a href="https://github.com/mozilla">lista completa dos projetos da Mozilla no Github</a>.</p> - -<table class="standard-table"> - <thead> - <tr> - <th scope="col">Nome do Projeto</th> - <th scope="col">Descrição</th> - </tr> - </thead> - <tbody> - <tr> - <td><a href="https://github.com/mozilla/pdf.js">PDF.js</a></td> - <td>Um leitor portátil de arquivos (PDF) escrito totalmente em <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript">JavaScript</a>.</td> - </tr> - <tr> - <td><a href="https://github.com/mozilla/shumway">Shumway</a></td> - <td><a href="https://github.com/mozilla/shumway">Shumway</a> é uma Flash VM e um auto-executável escrito em JavaScript.</td> - </tr> - <tr> - <td><a href="https://github.com/mozilla/addon-sdk">addon-sdk</a></td> - <td>A extensão SDK da Mozilla.</td> - </tr> - <tr> - <td><a href="https://github.com/jdm/asknot">asknot</a></td> - <td>O "<a href="http://whatcanidoformozilla.org/#!/progornoprog/translate">O que eu posso fazer para a Mozilla?</a>" web site, que lhe mostrará como contribuir para o Mozilla.</td> - </tr> - <tr> - <td><a href="https://github.com/jdm/bugsahoy">bugsahoy</a></td> - <td>Uma <a class="external" href="https://codetribute.mozilla.org/">página que ajudará novos contribuidores da Mozilla</a> a encontrar bugs a serem corrigidos.</td> - </tr> - <tr> - <td><a href="https://github.com/Yoric/bugzilla-dashboard">bugzilla-dashboard</a></td> - <td>Um <em>dashboard</em> muito bacana feito para te ajudar a ter uma noção do que esta acontecendo com os seus bugs.</td> - </tr> - <tr> - <td><a href="https://github.com/bbondy/codefirefox">codefirefox</a></td> - <td>O site do <a href="http://codefirefox.com/">CodeFirefox</a>, possui vídeos e tutoriais sobre como contribuir para o Firefox e outros projetos da Mozilla em geral.</td> - </tr> - <tr> - <td><a href="https://github.com/mozilla/dxr">dxr</a></td> - <td>Uma ferramenta inteligente para depuração de código.</td> - </tr> - <tr> - <td><a href="https://github.com/kripken/emscripten">emscripten</a></td> - <td>O <a href="/en-US/docs/Mozilla/Projects/Emscripten">Emscripten</a> é um compilador LLVM para JavaScript.</td> - </tr> - <tr> - <td><a href="https://github.com/campd/fxdt-adapters">fxdt-adapters</a></td> - <td>O <em>Firefox Developer Tools Adapter</em> permite que você depure seus códigos de lugares variados pelo <em>Firefox Developer Tools</em>.</td> - </tr> - <tr> - <td><a href="https://github.com/mozilla/gecko-dev">gecko-dev</a></td> - <td>Apenas um manual dos repositórios de código-fechado da Mozilla hospedados no <a href="/en-US/docs/Mozilla/Mercurial">Mercurial</a>.</td> - </tr> - <tr> - <td><a href="https://github.com/mozilla/kitsune">kitsune</a></td> - <td><a href="http://kitsune.readthedocs.org/">Kitsune</a> é uma plataforma que gerencia o <a href="https://support.mozilla.org/pt-BR/">suporte da Mozilla</a>, SUMO.</td> - </tr> - <tr> - <td><a href="https://github.com/mozilla/kuma">kuma</a></td> - <td>O projeto <a href="https://www.djangoproject.com/">Django</a> que compõem este site (MDN).</td> - </tr> - <tr> - <td><a href="https://github.com/mdn">mdn</a></td> - <td>Code samples for the <a href="https://developer.mozilla.org/">MDN Web site</a>. Exemplos de código para o <a href="https://developer.mozilla.org/pt-BR/">site da MDN</a>.</td> - </tr> - <tr> - <td><a href="https://github.com/mozbrick">mozbrick</a></td> - <td>O projeto <a href="/en-US/Apps/app_layout/Mozilla_Brick_ready_made_UI_components">Brick</a> da Mozilla.</td> - </tr> - <tr> - <td><a href="https://github.com/mozilla-b2g">mozilla-B2G</a></td> - <td>O projeto <a href="/pt-BR/docs/Archive/B2G_OS">Firefox OS</a>.</td> - </tr> - <tr> - <td><a href="https://github.com/mozilla-appmaker">mozilla-appmaker</a></td> - <td>O projeto Appmaker -- uma ferramenta Web que ajuda os não-programadores a criarem seus aplicativos.</td> - </tr> - <tr> - <td><a href="https://github.com/mozilla-l10n/">mozilla-l10n</a></td> - <td>Ferramentas e scripts criados pelos <em>drivers</em> de <a href="https://developer.mozilla.org/pt-BR/docs/Mozilla/Localization">localização</a>.</td> - </tr> - <tr> - <td><a href="https://github.com/mozilla-metrics">mozilla-metrics</a></td> - <td>Ferramentas usadas para coletar dados sobre os códigos da Mozilla.</td> - </tr> - <tr> - <td><a href="https://github.com/mozilla-services">mozilla-services</a></td> - <td>O projeto de <a href="https://blog.mozilla.org/services/">Serviços na Núvem</a> da Mozilla.</td> - </tr> - <tr> - <td><a href="https://github.com/opennews">opennews</a></td> - <td>O projeto Knight-Mozilla, ajuda a comunidade de jornalismo/tecnologia a fazer seu melhor em compartilhamento de código e conhecimento.</td> - </tr> - <tr> - <td><a href="https://github.com/mozilla/pluotsorbet">PluotSorbet</a></td> - <td>Uma máquina virtual compátivel com J2ME, escrito totalmente em JavaScript.</td> - </tr> - <tr> - <td><a href="https://github.com/rust-lang">rust-lang</a></td> - <td>A linguagem de programação Rust, criada para um código seguro.</td> - </tr> - <tr> - <td><a href="https://github.com/servo">servo</a></td> - <td>A próxima geração de mecanismo de renderização.</td> - </tr> - </tbody> -</table> diff --git a/files/pt-br/mozilla/rust/index.html b/files/pt-br/mozilla/rust/index.html deleted file mode 100644 index 51420e8d2b..0000000000 --- a/files/pt-br/mozilla/rust/index.html +++ /dev/null @@ -1,47 +0,0 @@ ---- -title: A linguagem de programação Rust -slug: Mozilla/Rust -tags: - - Desenvolvimento Web - - Mozilla - - linguagens - - paralelismo - - rust - - sistemas -translation_of: Mozilla/Rust ---- -<p><img alt="Rust logo" src="https://www.rust-lang.org/logos/rust-logo-blk.svg" style="float: left; height: 150px; width: 150;"><a href="https://www.rust-lang.org/pt-BR/">Rust</a> é uma nova linguagem de programação para sistemas <em>open-source</em> criada pela Mozilla juntamente com uma comunidade de voluntários, projetada para ajudar desenvolvedores a criarem aplicações rápidas e seguras, que queiram aproveitar ao máximo as poderosas funcionalidades dos processadores modernos multi-cores. Ela previne falhas de segmentação e garante a segurança nas <em>Threads</em>, tudo através de uma sintaxe fácil de aprender.</p> - -<p>Além disso, Rust oferece custo zero nas suas abstrações, mudanças de semânticas, garantia de segurança de memória, <em>threads</em> sem condições de corrida, <em>generics</em> baseados em traços, <em>pattern matching</em> (casamento de padrões), inferência de tipos e <em>binding</em> eficiente para C, com o menor tamanho em tempo de execução.</p> - -<p>Para aprender mais sobre Rust, você pode:</p> - -<ul> - <li>Assistir os vídeos abaixo para um olhar mais de perto no poder e nos benefícios que Rust provê.</li> - <li>Ler o livro online <em><a href="https://doc.rust-lang.org/book/">The Rust Programming Language</a></em>.</li> - <li>Baixar o compilador de Rust, ver os exemplos, e aprender tudo que você poderia desejar saber, através do <a href="https://www.rust-lang.org/pt-BR/">site oficial de Rust</a>.</li> -</ul> - -<h2 id="Rust_e_o_futuro_da_programação_de_sistemas">Rust e o futuro da programação de sistemas</h2> - -<p>{{EmbedYouTube("8EPsnf_ZYU0")}}</p> - -<h2 id="Desbloqueando_o_poder_do_paralelismo_com_Rust">Desbloqueando o poder do paralelismo com Rust</h2> - -<p>{{EmbedYouTube("cNeIOt8ZdAY")}}</p> - -<h2 id="Rust_para_desenvolvedores_web">Rust para desenvolvedores web</h2> - -<p>{{EmbedYouTube("FfoXFnzZbBM")}}</p> - -<h2 id="Programação_de_sistemas_seguros_com_Rust">Programação de sistemas seguros com Rust</h2> - -<p>{{EmbedYouTube("P3sfNGtpuxc")}}</p> - -<h2 id="Crescendo_a_comunidade_Rust">Crescendo a comunidade Rust</h2> - -<p>{{EmbedYouTube("duv0tuPAnO0")}}</p> - -<h2 id="Colocando_Rust_em_produção_na_Mozilla">Colocando Rust em produção na Mozilla</h2> - -<p>{{EmbedYouTube("2RhbYpgVpg0")}}</p> diff --git a/files/pt-br/mozilla/segurança/index.html b/files/pt-br/mozilla/segurança/index.html deleted file mode 100644 index 1aa95fef95..0000000000 --- a/files/pt-br/mozilla/segurança/index.html +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: Segurança do navegador -slug: Mozilla/Segurança -tags: - - Desenvolvimento Firefox - - Firefox - - Mozilla - - Segurança -translation_of: Mozilla/Security ---- -<p><span class="seoSummary">Um importante aspecto do desenvolvimento de código para qualquer navegador, incluindo o Firefox, assim como qualquer projeto orientado à Web, é sua segurança. Esses artigos fornecem importantes guias e referências para garantir que o código que você escrever é seguro, incluindo recomendações de design e diretrizes de teste.</span></p> - -<p>{{LandingPageListSubpages}}</p> - -<section id="Quick_Links"> -<ol> - <li><a href="http://www.mozilla.org/security/bug-bounty.html" title="We appreciate all bug reports, but we back up our appreciation of reports of severe security problems with a $3000 reward!">Programa de recompensa por bug</a></li> - <li><a href="http://www.mozilla.org/projects/security/known-vulnerabilities.html" title="Learn from our past mistakes.">Vulnerabilidade e soluções conhecidas no Mozilla</a></li> - <li><a href="/en-US/docs/Mozilla/Security">Depurando e testando</a> - <ol> - <li>{{Link("/pt-BR/docs/Mozilla/Testing/Analise_estatica_Clang")}}</li> - <li>{{Link("/en-US/docs/Debugging_Mozilla_with_Valgrind")}}</li> - <li>{{Link("/en-US/docs/Mozilla/Testing/Firefox_and_Address_Sanitizer")}}</li> - <li>{{Link("/pt-BR/docs/Mozilla/QA/Fuzzing")}}</li> - </ol> - </li> - <li>{{Link("/pt-BR/docs/Developer_Guide")}}</li> - <li>{{Link("/pt-BR/docs/Web/Security")}}</li> -</ol> -</section> diff --git a/files/pt-br/mozilla/segurança/travamentos_exploráveis/index.html b/files/pt-br/mozilla/segurança/travamentos_exploráveis/index.html deleted file mode 100644 index 0a943d7c67..0000000000 --- a/files/pt-br/mozilla/segurança/travamentos_exploráveis/index.html +++ /dev/null @@ -1,51 +0,0 @@ ---- -title: Travamentos exploráveis -slug: Mozilla/Segurança/Travamentos_exploráveis -translation_of: Mozilla/Security/Exploitable_crashes ---- -<p><span class="seoSummary">Este artigo ajudará você a determinar se um travamento é exploravel, encontrar falhas que são exploráveis para corrigir falhas exploráveis.</span></p> - -<h2 id="O_que_é_um_travamento_explorável">O que é um travamento explorável?</h2> - -<p>Um relatório de falha do seu depurador, seu SO, ou <a href="https://crash-stats.mozilla.com/" title="https://crash-stats.mozilla.com/">Status de travamento Mozilla</a> pode dizer muito sobre a existência ou nao se um travamento é potencialmente explorável. Você precisa olhar principalmente para três coisas , nessa ordem :</p> - -<ol> - <li>Analise <strong>a estrutura superior do rastreamento de pilha</strong>. Se você ver um endereço hexadecimal como 0x292c2830 em vez de um nome de função como nsListBoxBodyFrame::GetRowCount no topo da pilha, o bug motivou o programa para transferir o controle para um "Aleatória" parte da memoória que nao faz parte do programa. Essas interrupções são quase sempre possiveis de serem exploradas para executar um código arbitrário.</li> - <li>Olhe o motivo do travamento, será normalmente algo como "KERN_PROTECTION_FAILURE (0x0002) em 0x00000000". Este é normalmente localizado à direita acima do rastreamento de pilha. O último numero, neste caso 0x00000000, é <strong> o endereço de memória que o Firefox foi impedido de acessar</strong>. Se o endereço é sempre zero (ou próximo de zero, como 0x0000001c), provavelmente é um bug de referência nula.Estes erros fazem com que o navegador trave, mas fazem isso de forma previsível, de modo que nao são exploráveis. A maioria dos travamentos se enquadram nessa categoria.</li> - <li>Verifique o <strong>comprimento do rastreamento de pilha</strong>. Se for mais de 300 funçoes no tempo, é provavel que seja um acidente de recursão demais. Como de referência nula, essas falhas não são exploráveis.</li> -</ol> - -<p>Qualquer outro travamento onde o Firefox tenta usar a memória que nao têm acesso indica algum tipo de erro de segurança de memória. Essas interrupções podem muitas vezes serem exploradas para executar código arbitrário, mas você nao pode ser tão certo como no caso de ver um endereço falso no topo da pilha na etapa 1.</p> - -<h2 id="Procurando_travamentos_exploráveis">Procurando travamentos exploráveis</h2> - -<p>Travamentos exploráveis são frequentemente descobertos através de testes normais e uso, quando os desenvolvedores reconhecem uma pilha de travamento em gdb ou submetidos a um erro que pode ser explorado.</p> - -<p>Além disso, os desenvolvedores Mozilla fazem uso pesado de duas ferramentas em particular para encontrar situaçoes exploráveis antes que eles apareçam em relatórios de falhas exploráveis.</p> - -<p>A primeira ferramenta é o <a href="http://www.chromium.org/developers/testing/addresssanitizer" title="http://www.chromium.org/developers/testing/addresssanitizer">AddressSanitizer (ASAN)</a>. Há <a href="https://developer.mozilla.org/en-US/docs/Building_Firefox_with_Address_Sanitizer" title="ASAN with Mozilla Projects">um artigo MDN </a> documentando seu uso com projetos Mozilla.</p> - -<p>A outra ferramenta é o <a href="http://valgrind.org/" title="http://valgrind.org/">Valgrind</a>. Há <a href="https://developer.mozilla.org/en-US/docs/Debugging_Mozilla_with_Valgrind" title="Valgrind with Mozilla Projects">um artigo no MDN</a> documentando seu uso com projetos Mozilla.</p> - -<h2 id="Próximos_passos">Próximos passos</h2> - -<p>Uma vez que você tenha determinado que a falha é potencialmente explorável , tome as seguintes medidas. Se você precisar de ajuda com qualquer um das etapas (Por exempl talvez necessite previlégios bugzilla) Envie um email <a href="mailto:security@mozilla.org" title="mailto:security@mozilla.org">security@mozilla.org</a><strong>.</strong></p> - -<ol> - <li>Certifique-se que o erro é no arquivo.</li> - <li>Marque o erro como segurança sensivel colocando o erro no grupo de "Segurança Sensivel". Faça isso antes de realizar comentários ou tomar ações que exponha publicamente a exploração.</li> - <li>Coloque uma <a href="https://wiki.mozilla.org/Security_Severity_Ratings" title="Security Severity Rating">classificação de segurança grave </a>nas palavras chaves do erro.Se você nao tiver certeza de qual classificação dar, coloque na mais alta de modo que o erro obtenha mais atençao.</li> - <li>Explique em um comentário por qual razão a questão parecer ser explorável.</li> -</ol> - -<h2 id="Outras_ferramentas">Outras ferramentas</h2> - -<p>A Apple tem uma ferramenta chamada "crashwrangler" que ainda é mantida desde 2012. Há pouca informação pública sobre ela, e é dificil encontrar mesmo no site de desenvolvedor Apple. Para obtê-lo vá em Seçao de Downloads Do Centro de Desenvolvimento Apple -> Outros Downloads -> procure por "crashwrangler".</p> - -<p>A Microsoft lançou uma ferramenta de extensão de depurador em 2009 chamado "!exploitable". Ele não foi atualizado desde 2009.</p> - -<h2 id="Veja_também">Veja também</h2> - -<ul> - <li><a class="external" href="http://www.squarefree.com/2006/11/02/determining-whether-a-crash-looks-exploitable/" title="http://www.squarefree.com/2006/11/02/determining-whether-a-crash-looks-exploitable/">Post no blog de Jesse Runderman's sobre a possibilidade de exploração em 2006.</a></li> -</ul> diff --git a/files/pt-br/mozilla/tech/index.html b/files/pt-br/mozilla/tech/index.html deleted file mode 100644 index 8a54865338..0000000000 --- a/files/pt-br/mozilla/tech/index.html +++ /dev/null @@ -1,15 +0,0 @@ ---- -title: Mozilla technologies -slug: Mozilla/Tech -tags: - - Landing - - Mozilla - - NeedsTranslation - - Reference - - TopicStub - - XUL -translation_of: Mozilla/Tech ---- -<p>Mozilla has several technologies used as components of its projects. These are documented here.</p> - -<p>{{LandingPageListSubpages}}</p> diff --git a/files/pt-br/mozilla/tech/xpcom/como_construir_um_componente_xpcom_em_javascript/index.html b/files/pt-br/mozilla/tech/xpcom/como_construir_um_componente_xpcom_em_javascript/index.html deleted file mode 100644 index f1c6757292..0000000000 --- a/files/pt-br/mozilla/tech/xpcom/como_construir_um_componente_xpcom_em_javascript/index.html +++ /dev/null @@ -1,221 +0,0 @@ ---- -title: Como construir um componente XPCOM em Javascript -slug: Mozilla/Tech/XPCOM/Como_construir_um_componente_XPCOM_em_Javascript -translation_of: Mozilla/Tech/XPCOM/Guide/Building_components_in_JavaScript ---- -<p><span id="result_box" lang="pt"><span class="hps">Este é um tutorial</span> <span class="hps">"Olá Mundo"</span> <span class="hps">para a criação de</span> <span class="hps">um componente</span> <span class="hps">XPCOM</span> <span class="hps">em</span> <span class="hps">JavaScript</span><span>.</span> <span class="hps">Este</span> <span class="hps">tutorial</span> <span class="hps">não descreve</span> <span class="hps">como e por que</span> <span class="hps">XPCOM</span> <span class="hps">funciona da maneira que</span> <span class="hps">faz, ou</span> <span class="hps">o que cada</span> <span class="hps">bit</span> <span class="hps">do código de exemplo</span> <span class="hps">faz.</span> <span class="hps">Isso</span> <span class="hps">foi detalhado</span> <span class="hps">em outro lugar.</span> <span class="hps">Este</span> <span class="hps">tutorial</span> <span class="hps">irá mostrar-lhe</span> <span class="hps">o que você precisa</span> <span class="hps">fazer para obter um</span> <span class="hps">componente</span> <span class="hps">de trabalho</span> <span class="hps">como</span> <span class="hps">poucos e</span> <span class="hps">como passos</span> <span class="hps">mais simples possível.</span></span></p> -<h2 id="Implementation" name="Implementation"><span class="short_text" id="result_box" lang="pt"><span class="hps">Implementação</span></span></h2> -<p><span id="result_box" lang="pt"><span class="hps">Este componente</span> <span class="hps">exemplo,</span> <span class="hps">irá expor</span> <span class="hps">um único método</span><span>, que retorna a</span> <span class="hps atn">string "</span><span>Olá</span> <span class="hps">Mundo!"</span><span>.</span></span></p> -<h3 id="Defining_the_Interface" name="Defining_the_Interface"><span class="short_text" id="result_box" lang="pt"><span class="hps">Definindo</span> <span class="hps">a Interface</span></span></h3> -<p><span id="result_box" lang="pt"><span class="hps">Se você</span> <span class="hps">quiser usar o</span> <span class="hps">componente</span> <span class="hps">em outras</span> <span class="hps">componentes XPCOM</span><span>, você deve definir</span> <span class="hps">as interfaces que</span> <span class="hps">você</span> <span class="hps">deseja expor</span><span>.</span> <span class="hps">Se você</span> <span class="hps">quiser usar o seu</span> <span class="hps">único componente</span> <span class="hps">de</span> <span class="hps">JavaScript,</span> <span class="hps">você pode</span> <span class="hps">pular para</span> <span class="hps">a</span></span> <a href="#Using_XPCOMUtils"><span class="short_text" id="result_box" lang="pt"><span class="hps">próxima seção</span></span></a>.</p> -<p><span id="result_box" lang="pt"><span class="hps">Há</span> <span class="hps">muitas interfaces</span> <span class="hps">já</span> <span class="hps">definidas nos aplicativos</span> <span class="hps">Mozilla</span><span>, então</span> <span class="hps">você pode não precisar</span> <span class="hps">de definir</span> <span class="hps">um novo.</span> <span class="hps">Você pode procurar</span> <span class="hps">as interfaces</span> <span class="hps">XPCOM</span> <span class="hps">existentes</span> <span class="hps">em vários locais</span> <span class="hps">no código fonte</span> <span class="hps">Mozilla,</span> <span class="hps">ou</span> <span class="hps">usando </span></span><a class="external" href="http://www.ondrejd.info/projects/xpcomviewer/" title="http://www.ondrejd.info/projects/xpcomviewer/">XPCOMViewer</a>, <span id="result_box" lang="pt"><span class="hps">uma interface gráfica</span> <span class="hps">para navegar</span> <span class="hps">interfaces e</span> <span class="hps">componentes</span> <span class="hps">registrados.</span> <span class="hps">Você pode baixar</span> <span class="hps">uma versão antiga do</span> <span class="hps">XPCOMViewer</span> <span class="hps">que funciona</span> <span class="hps">com</span> <span class="hps">Firefox 1.5</span> <span class="hps">a partir de</span></span> <a class="external" href="http://downloads.mozdev.org/xpcomviewer/">mozdev mirrors</a>.</p> -<p><span id="result_box" lang="pt"><span class="hps">Se</span> <span class="hps">existe</span> <span class="hps">uma interface</span> <span class="hps">que atenda às suas</span> <span class="hps">necessidades, então</span> <span class="hps">você não</span> <span class="hps">precisa escrever</span> <span class="hps">uma</span> <span class="hps">IDL</span><span>,</span> <span class="hps">ou</span> <span class="hps">compilar uma</span> <span class="hps">biblioteca de tipos</span><span>,</span> <span class="hps">e pode</span> <span class="hps">pular para</span> <span class="hps">a</span></span> <a href="#Using_XPCOMUtils"><span class="short_text" id="result_box" lang="pt"><span class="hps">próxima seção</span></span></a>.</p> -<p><span id="result_box" lang="pt"><span class="hps">Se você não</span> <span class="hps">encontrar</span> <span class="hps">uma relação</span> <span class="hps">pré-existente</span> <span class="hps">adequada,</span> <span class="hps">em seguida,</span> <span class="hps">você deve definir</span> <span class="hps">o seu próprio.</span> <span class="hps">XPCOM</span> <span class="hps">usa</span> <span class="hps">um dialeto do</span> <span class="hps">IDL</span> <span class="hps">para</span> <span class="hps">definir interfaces</span><span>, chamada</span></span> <a href="/en/XPIDL" title="en/XPIDL">XPIDL</a>. <span id="result_box" lang="pt"><span class="hps">Aqui está a</span> <span class="hps">definição</span> <span class="hps">XPIDL</span> <span class="hps">para o nosso</span> <span class="hps">componente</span> <span class="hps">Olá Mundo</span></span>:</p> -<p>HelloWorld.idl</p> -<pre>#include "nsISupports.idl" - -[scriptable, uuid(xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx)] -interface nsIHelloWorld : nsISupports -{ - string hello(); -}; -</pre> -<p><span id="result_box" lang="pt"><span class="hps">Observe que você deve</span> <span class="hps">gerar</span> <span class="hps">um novo</span> <span class="hps">UUID</span> <span class="hps">para cada componente</span> <span class="hps">XPCOM</span> <span class="hps">que você criar.</span> <span class="hps">ver</span></span> <a href="/en/Generating_GUIDs" title="en/Generating_GUIDs">Generating GUIDs</a> <span class="short_text" id="result_box" lang="pt"><span class="hps">para mais informações</span></span>.</p> -<h3 id="Compiling_the_Typelib" name="Compiling_the_Typelib"><span class="short_text" id="result_box" lang="pt"><span class="hps">Compilando o</span> <span class="hps">Typelib</span></span></h3> -<p><span id="result_box" lang="pt"><span class="hps">Sua</span> <span class="hps">definição de interface</span> <span class="hps">deve ser compilado</span> <span class="hps">em um formato binário</span> <span class="hps atn">(</span><span>XPT)</span><span>, a fim de</span> <span class="hps">ser registrado e</span> <span class="hps">usado</span> <span class="hps">em aplicativos</span> <span class="hps">Mozilla</span><span>.</span> <span class="hps">A compilação</span> <span class="hps">pode ser feito</span> <span class="hps">usando o</span> <span class="hps">Gecko</span> <span class="hps">SDK.</span> <span class="hps">Você pode aprender</span> <span class="hps">como obter</span> <span class="hps">Mac</span><span>, Linux e</span> <span class="hps">versões</span> <span class="hps">do Windows do</span> <span class="hps">Gecko</span> <span class="hps">SDK</span> <span class="hps">lendo o artigo</span></span> <a href="/en/Gecko_SDK" title="en/Gecko_SDK">Gecko SDK</a>.</p> -<h4 id="Para_o_código_de_fora_da_árvore"><span class="short_text" id="result_box" lang="pt"><span class="hps">Para o código de</span> <span class="hps">fora da árvore</span></span></h4> -<div class="note"> - <span id="result_box" lang="pt"><span class="hps"><strong>Nota</strong>: No Windows</span><span>, se você</span> <span class="hps">baixar o</span> <span class="hps">Gecko</span> <span class="hps">SDK</span><span>, sem</span> <span class="hps">toda</span> <span class="hps">a árvore de criação</span><span>, você vai</span> <span class="hps">estar faltando</span> <span class="hps">algumas</span> <span class="hps">DLLs</span> <span class="hps">necessárias para</span> <span class="hps">xpidl.exe</span> <span class="hps">e ele será executado</span> <span class="hps">sem erros</span><span>, mas não</span> <span class="hps">fazer nada.</span> <span class="hps">Para corrigir</span> <span class="hps">esta transferência</span> <span class="hps">o </span></span><a class="external" href="http://ftp.mozilla.org/pub/mozilla.org/mozilla/source/wintools.zip">Mozilla build <span class="short_text" id="result_box" lang="pt"><span class="hps">ferramentas para</span></span> Windows</a> <span id="result_box" lang="pt"><span class="hps">e copiar as</span> <span class="hps">DLLs</span> <span class="hps">do</span> <span class="hps">windows \</span> <span class="hps">bin \</span> <span class="hps">x86</span> <span class="hps">dentro do</span> <span class="hps">zip</span> <span class="hps">para o diretório</span> <span class="hps">bin</span> <span class="hps">do</span> <span class="hps">Gecko</span> <span class="hps">SDK.</span></span></div> -<div class="note"> - <span id="result_box" lang="pt"><span class="hps"><strong>Nota</strong>: A versão</span> <span class="hps">Mac</span> <span class="hps">do</span> <span class="hps">SDK</span> <span class="hps">fornecido</span> <span class="hps">para download</span> <span class="hps">é</span> <span class="hps">apenas para</span> <span class="hps">PowerPC</span><span>.</span> <span class="hps">Se você precisa de</span> <span class="hps">uma versão</span> <span class="hps">Intel</span><span>,</span> <span class="hps">você precisa</span> <span class="hps">compilá-lo</span> <span class="hps">como descrito</span> <span class="hps">na página.</span></span></div> -<p><span id="result_box" lang="pt"><span class="hps">Executar este comando</span> <span class="hps">para compilar o</span> <span class="hps">typelib</span><span>.</span> <span class="hps">Aqui,</span></span> <code>{sdk_dir}</code> <span id="result_box" lang="pt"><span class="hps">é o</span> <span class="hps">diretório no qual você</span> <span class="hps">descompactou o</span> <span class="hps">Gecko</span> <span class="hps">SDK.</span></span></p> -<pre class="eval">{sdk_dir}/bin/xpidl -m typelib -w -v -I {sdk_dir}/idl -e HelloWorld.xpt HelloWorld.idl -</pre> -<div class="note"> - <span id="result_box" lang="pt"><span class="hps"><strong>Nota</strong>: No</span> <span class="hps">Windows, você deve</span> <span class="hps">usar barras</span> <span class="hps">para o caminho</span> <span class="hps">de inclusão.</span></span></div> -<div class="note"> - <strong>Nota:</strong> (o -I flag é um uppercase i, <span class="short_text" id="result_box" lang="pt"><span class="hps">não é um</span></span> lowercase L.)</div> -<p><span id="result_box" lang="pt"><span class="hps">Isto irá criar</span> <span class="hps">o</span> <span class="hps">arquivo</span> <span class="hps">HelloWorld.xpt</span> <span class="hps">typelib</span> <span class="hps">no diretório de trabalho</span> <span class="hps">atual.</span></span></p> -<h4 id="Para_um_novo_componente_em_FirefoxThunderbirdB2G"><span class="short_text" id="result_box" lang="pt"><span class="hps">Para um novo</span> <span class="hps">componente</span> <span class="hps">em</span> <span class="hps">Firefox/Thunderbird/B2G</span></span></h4> -<p><span id="result_box" lang="pt"><span class="hps">Se você estiver adicionando</span> <span class="hps">uma nova funcionalidade</span> <span class="hps">para</span> <span class="hps">aplicações no</span> <span class="hps">repositório</span> <span class="hps atn">mozilla-</span><span>central,</span> <span class="hps">você pode criar um</span> <span class="hps">Makefile</span> <span class="hps">listando os arquivos</span> <span class="hps">IDL</span> <span class="hps">e</span> <span class="hps">o sistema de compilação</span> <span class="hps">irá gerar</span> <span class="hps">automaticamente o</span> <span class="hps">typelib</span><span>.</span> <span class="hps">A</span> <span class="hps">amostra</span> <span class="hps">Makefile.in</span></span></p> -<pre># This Source Code Form is subject to the terms of the Mozilla Public -# License, v. 2.0. If a copy of the MPL was not distributed with this -# file, You can obtain one at http://mozilla.org/MPL/2.0/. -DEPTH = @DEPTH@ -topsrcdir = @top_srcdir@ -srcdir = @srcdir@ -VPATH = @srcdir@ - -include $(DEPTH)/config/autoconf.mk - - -<span id="the-code"># MODULE specifies where header files from this Makefile are installed</span> -# Use dom if your component implements a DOM API -MODULE = dom - -# Name of the typelib -XPIDL_MODULE = dom_apps - -# Set to 1 if the module should be part of the Gecko Runtime common to all applications -GRE_MODULE = 1 - -# The IDL sources -XPIDLSRCS = \ - HelloWorld.idl \ - $(NULL) - -include $(topsrcdir)/config/rules.mk - -XPIDL_FLAGS += \ - -I$(topsrcdir)/dom/interfaces/base \ - -I$(topsrcdir)/dom/interfaces/events \ - $(NULL)</pre> -<h3 id="Using_XPCOMUtils" name="Using_XPCOMUtils"><span class="short_text" id="result_box" lang="pt"><span class="hps">Criando o</span> <span class="hps">componente usando</span> <span class="hps">XPCOMUtils</span></span></h3> -<p>{{ Fx_minversion_inline(3) }} em <a href="/en/Firefox_3_for_developers" title="en/Firefox_3_for_developers">Firefox 3</a> <span class="short_text" id="result_box" lang="pt"><span class="hps">e mais tarde</span> <span class="hps">você pode usar</span> <span class="hps">importação </span></span><a href="/en/JavaScript_code_modules/XPCOMUtils.jsm" title="en/XPCOMUtils.jsm">XPCOMUtils.jsm</a> <span class="short_text" id="result_box" lang="pt"><span class="hps">utilização</span></span> <a href="/en/Components.utils.import" title="en/Components.utils.import">Components.utils.import</a> <span id="result_box" lang="pt"><span class="hps">para simplificar o processo</span> <span class="hps">de escrever o seu</span> <span class="hps">componente</span> <span class="hps">ligeiramente.</span> <span class="hps">A biblioteca</span> <span class="hps">importada</span> <span class="hps">contém funções para</span> <span class="hps">gerar o</span> <span class="hps">módulo</span><span>, a fábrica,</span> <span class="hps">e</span> <span class="hps">os</span> <span class="hps">NSGetModule</span> <span class="hps">e</span> <span class="hps">QueryInterface</span> <span class="hps">funções para você</span><span>.</span> <span class="hps"><strong>Nota</strong>:</span> <span class="hps">ele não faz</span> <span class="hps">o trabalho de criar</span> <span class="hps">o arquivo de</span> <span class="hps">definição de interface</span> <span class="hps">ou</span> <span class="hps">a biblioteca de tipos</span> <span class="hps">para você, então</span> <span class="hps">você ainda tem que</span> <span class="hps">passar por essas</span> <span class="hps">etapas anteriores</span><span>, caso não tenham</span> <span class="hps">sido feito.</span> <span class="hps">A biblioteca</span> <span class="hps">proporciona</span> <span class="hps">um exemplo simples de</span> <span class="hps">sua utilização</span> <span class="hps">no código fonte</span></span> ({{ Source("js/src/xpconnect/loader/XPCOMUtils.jsm") }}), <span id="result_box" lang="pt"><span class="hps">mas aqui é</span> <span class="hps">outro usando</span> <span class="hps">este exemplo.</span> <span class="hps">Para começar</span><span>, inclua uma linha</span> <span class="hps">no topo da</span> <span class="hps">sua interface</span> <span class="hps">para importar a biblioteca</span> <span class="hps">XPCOMUtils</span><span>:</span></span></p> -<pre class="brush: js">Components.utils.import("resource://gre/modules/XPCOMUtils.jsm"); -</pre> -<p><span id="result_box" lang="pt"><span class="hps">em seguida, implementar</span> <span class="hps">a interface</span> <span class="hps">da mesma forma que</span> <span class="hps">fiz</span> <span class="hps">acima, exceto</span> <span class="hps">com algumas modificações</span> <span class="hps">para que</span> <span class="hps">XPCOMUtils</span> <span class="hps">pode configurá-lo</span> <span class="hps">corretamente:</span></span></p> -<pre class="brush: js">/*********************************************************** -class definition -***********************************************************/ - -//class constructor -function HelloWorld() { -// If you only need to access your component from Javascript, uncomment the following line: -//this.wrappedJSObject = this; -} - -// class definition -HelloWorld.prototype = { - - // properties required for XPCOM registration: - classDescription: "My Hello World Javascript XPCOM Component", - classID: Components.ID("{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}"), - contractID: "@dietrich.ganx4.com/helloworld;1", - - // [optional] custom factory (an object implementing nsIFactory). If not - // provided, the default factory is used, which returns - // |(new MyComponent()).QueryInterface(iid)| in its createInstance(). - _xpcom_factory: { ... }, - - // [optional] an array of categories to register this component in. - _xpcom_categories: [{ - - // Each object in the array specifies the parameters to pass to - // nsICategoryManager.addCategoryEntry(). 'true' is passed for both - // aPersist and aReplace params. - category: "some-category", - - // optional, defaults to the object's classDescription - entry: "entry name", - - // optional, defaults to the object's contractID (unless 'service' is specified) - value: "...", - - // optional, defaults to false. When set to true, and only if 'value' is not - // specified, the concatenation of the string "service," and the object's contractID - // is passed as aValue parameter of addCategoryEntry. - service: true - }], - - // QueryInterface implementation, e.g. using the generateQI helper (remove argument if skipped steps above) - QueryInterface: XPCOMUtils.generateQI([Components.interfaces.nsIHelloWorld]), - - // Optional, but required if you want your component to be exposed to DOM - classInfo: XPCOMUtils.generateCI({classID: Components.ID("{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}"), - contractID: "@dietrich.ganx4.com/helloworld;1", - interfaces: [Ci.nsIHelloWorld], - flags: Ci.nsIClassInfo.DOM_OBJECT}), - - // ...component implementation... - // define the function we want to expose in our interface - hello: function() { - return "Hello World!"; - }, -}; -</pre> -<p><span id="result_box" lang="pt"><span class="hps">XPCOMUtils</span> <span class="hps">faz o trabalho de</span> <span class="hps">criação do</span> <span class="hps">módulo</span> <span class="hps">e da fábrica</span> <span class="hps">para você</span> <span class="hps">depois disso.</span> <span class="hps">Finalmente, você cria</span> <span class="hps">uma matriz</span> <span class="hps">de</span> <span class="hps">seus</span> <span class="hps">componentes a serem criados</span><span>:</span></span></p> -<pre class="brush: js"> var components = [HelloWorld]; -</pre> -<p><span id="result_box" lang="pt"><span class="hps">e substituir</span> <span class="hps">NSGetFactory</span> <span class="hps">/</span> <span class="hps">NSGetModule</span> <span class="hps">usar</span> <span class="hps">essa matriz</span> <span class="hps">e</span> <span class="hps">XPCOMUtils</span><span>:</span></span></p> -<pre class="brush: js"> if ("generateNSGetFactory" in XPCOMUtils) - var NSGetFactory = XPCOMUtils.generateNSGetFactory(components); // Firefox 4.0 and higher - else - var NSGetModule = XPCOMUtils.generateNSGetModule(components); // Firefox 3.x -</pre> -<p><span id="result_box" lang="pt"><span class="hps">Assim, a versão</span> <span class="hps">simplificada do</span> <span class="hps">total de</span> <span class="hps">seu componente</span> <span class="hps">agora</span> <span class="hps">parece</span> <span class="hps">(é claro que</span> <span class="hps">a documentação</span> <span class="hps">e os comentários</span> <span class="hps">não são uma coisa</span> <span class="hps">ruim, mas</span> <span class="hps">como um modelo</span> <span class="hps">algo menor</span> <span class="hps">é bom ter</span><span>)</span><span>:</span></span></p> -<pre class="brush: js">Components.utils.import("resource://gre/modules/XPCOMUtils.jsm"); - -function HelloWorld() { } - -HelloWorld.prototype = { - classDescription: "My Hello World Javascript XPCOM Component", - classID: Components.ID("{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}"), - contractID: "@dietrich.ganx4.com/helloworld;1", - QueryInterface: XPCOMUtils.generateQI([Components.interfaces.nsIHelloWorld]), - hello: function() { return "Hello World!"; } -}; -var components = [HelloWorld]; -if ("generateNSGetFactory" in XPCOMUtils) - var NSGetFactory = XPCOMUtils.generateNSGetFactory(components); // Firefox 4.0 and higher -else - var NSGetModule = XPCOMUtils.generateNSGetModule(components); // Firefox 3.x -</pre> -<div class="note"> - <span id="result_box" lang="pt"><span class="hps"><strong>Nota</strong>:</span> <span class="hps">A partir do</span> <span class="hps">Firefox 4.0</span> <span class="hps">será necessário</span> <span class="hps">declarar</span> <span class="hps">o componente</span> <span class="hps">em</span> <span class="hps">chrome.manifest</span><span>;</span> <span class="hps">classDescription</span> <span class="hps">e</span> <span class="hps">propriedades</span> <span class="hps">contractID</span> <span class="hps">por outro lado,</span> <span class="hps">não são mais necessários</span><span>.</span> <span class="hps">ver </span></span><a href="/en/XPCOM/XPCOM_changes_in_Gecko_2.0" title="XPCOM changes in Gecko 2.0">XPCOM changes in Gecko 2.0</a> <span class="short_text" id="result_box" lang="pt"><span class="hps">para mais detalhes</span></span>.</div> -<h2 id="Installation" name="Installation"><span class="short_text" id="result_box" lang="pt"><span class="hps">Instalação</span></span></h2> -<h3 id="For_extensions:" name="For_extensions:"><span class="short_text" id="result_box" lang="pt"><span class="hps">para extensões</span></span>:</h3> -<ol> - <li><span id="result_box" lang="pt"><span class="hps">Helloworld.js</span> <span class="hps">copiar e</span> <span class="hps">HelloWorld.xpt</span> <span class="hps atn">(</span><span>só</span> <span class="hps">se você tiver definido</span> <span class="hps">e</span> <span class="hps">compilou o</span> <span class="hps">IDL</span><span>) para</span></span> <code>{extensiondir}/components/</code>.</li> - <li><span id="result_box" lang="pt"><span class="hps">Excluir</span> <span class="hps">compreg.dat</span> <span class="hps">e</span> <span class="hps">xpti.dat</span> <span class="hps">do seu</span> <span class="hps">diretório de perfil</span></span>.</li> - <li><span class="short_text" id="result_box" lang="pt"><span class="hps">reinicie o</span> <span class="hps">aplicativo</span></span>.</li> -</ol> -<h3 id="For_Firefox" name="For_Firefox">Para Firefox:</h3> -<ol> - <li><span id="result_box" lang="pt"><span class="hps">Helloworld.js</span> <span class="hps">copiar e</span> <span class="hps">HelloWorld.xpt</span> <span class="hps atn">(</span><span>só</span> <span class="hps">se você tiver definido</span> <span class="hps">e</span> <span class="hps">compilou o</span> <span class="hps">IDL</span><span>) para</span> <span class="hps">o</span></span> <code>{objdir}/dist/bin/components</code> directory, <span class="short_text" id="result_box" lang="pt"><span class="hps">se</span> <span class="hps">correr a partir da</span> <span class="hps">fonte</span><span>.</span></span></li> - <li><span id="result_box" lang="pt"><span class="hps">Excluir</span> <span class="hps">compreg.dat</span> <span class="hps">e</span> <span class="hps">xpti.dat</span> <span class="hps">do diretório</span> <span class="hps">componentes</span></span>.</li> - <li><span id="result_box" lang="pt"><span class="hps">Excluir</span> <span class="hps">compreg.dat</span> <span class="hps">e</span> <span class="hps">xpti.dat</span> <span class="hps">do seu</span> <span class="hps">diretório de perfil</span></span>.</li> - <li><span class="short_text" id="result_box" lang="pt"><span class="hps">reinicie o</span> <span class="hps">aplicativo</span></span>.</li> -</ol> -<h2 id="Using_Your_Component" name="Using_Your_Component"><span class="short_text" id="result_box" lang="pt"><span class="hps">Usando o</span> <span class="hps">Componente</span></span></h2> -<h3 id="Using_wrappedJSObject" name="Using_wrappedJSObject"><span class="short_text" id="result_box" lang="pt"><span class="hps">Usando</span> <span class="hps">wrappedJSObject</span></span></h3> -<p><span id="result_box" lang="pt"><span class="hps">Se</span> <span class="hps">você só pretende</span> <span class="hps">aceder à sua</span> <span class="hps">componente</span> <span class="hps">de</span> <span class="hps">Javascript</span><span>, ou seja,</span> <span class="hps">você pulou</span> <span class="hps">as seções</span> <span class="hps">"Definindo</span> <span class="hps">a</span> <span class="hps">Interface"</span> <span class="hps atn">e "</span><span>Compilando o</span> <span class="hps">Typelib</span><span>" acima</span><span>, é</span> <span class="hps">comentada</span> <span class="hps atn">a linha "</span><span>wrappedJSObject</span><span>"</span> <span class="hps">no construtor da classe</span><span>, e</span> <span class="hps">removido</span> <span class="hps">o</span></span> "[Components.interfaces.nsIHelloWorld]" <span class="short_text" id="result_box" lang="pt"><span class="hps">argumento para</span> <span class="hps">a chamada para </span></span>XPCOMUtils.generateQI() em QueryInterface, <span id="result_box" lang="pt"><span class="hps">então você pode acessar</span> <span class="hps">o seu componente</span> <span class="hps">da seguinte forma:</span></span></p> -<pre class="brush: js">try { - var myComponent = Components.classes['@dietrich.ganx4.com/helloworld;1'] - .getService().wrappedJSObject; - - alert(myComponent.hello()); -} catch (anError) { - dump("ERROR: " + anError); -} -</pre> -<p><span id="result_box" lang="pt"><span class="hps">Para mais informações sobre</span> <span class="hps">wrappedJSObject</span><span>, veja</span></span> <a href="/en/wrappedJSObject" title="en/wrappedJSObject">aqui</a>.</p> -<h3 id="Using_XPCOM_instantiation" name="Using_XPCOM_instantiation"><span class="short_text" id="result_box" lang="pt"><span class="hps">Usando</span> <span class="hps">instanciação</span> <span class="hps">XPCOM</span></span></h3> -<pre class="brush: js">try { - var myComponent = Components.classes['@dietrich.ganx4.com/helloworld;1'] - .createInstance(Components.interfaces.nsIHelloWorld); - - alert(myComponent.hello()); -} catch (anError) { - dump("ERROR: " + anError); -} -</pre> -<h2 id="Other_resources" name="Other_resources"><span class="short_text" id="result_box" lang="pt"><span class="hps">Outros</span> <span class="hps">recursos</span></span></h2> -<ul> - <li><span id="result_box" lang="pt"><span class="hps">Dois</span> <span class="hps">fóruns</span> <span class="hps">tópicos</span> <span class="hps">mozillazine</span> <span class="hps">sobre a implementação de</span> <span class="hps">componentes XPCOM</span> <span class="hps">em</span> <span class="hps">JS</span> <span class="hps">com algumas</span> <span class="hps">explicações,</span> <span class="hps">exemplo</span> <span class="hps">de código</span> <span class="hps">e dicas</span> <span class="hps">para solução de problemas</span><span>:</span></span> - <ul> - <li><a class="external" href="http://forums.mozillazine.org/viewtopic.php?t=308369" rel="freelink">http://forums.mozillazine.org/viewtopic.php?t=308369</a></li> - <li><a class="external" href="http://forums.mozillazine.org/viewtopic.php?t=367298" rel="freelink">http://forums.mozillazine.org/viewtopic.php?t=367298</a></li> - </ul> - </li> - <li><a class="external" href="http://kb.mozillazine.org/Implementing_XPCOM_components_in_JavaScript">Implementing XPCOM components in JavaScript</a> at kb.mozillazine.org</li> - <li><a class="external" href="http://www.mozilla.org/scriptable/avoiding-leaks.html">Using XPCOM in JavaScript without leaking</a> - A must-read.</li> - <li><a class="external" href="http://lxr.mozilla.org/seamonkey/source/xpcom/sample/nsSample.js">An example component</a></li> - <li><a class="external" href="http://www.mozilla.org/scriptable/js-components-status.html">Older JS+XPCOM notes</a> - <span class="short_text" id="result_box" lang="pt"><span class="hps">inclui algumas informações</span> <span class="hps">wrappedJSObject</span></span>.</li> - <li><a class="external" href="http://weblogs.mozillazine.org/weirdal/archives/019620.html" title="http://weblogs.mozillazine.org/weirdal/archives/019620.html">Writing an XPCOM <em><u>Service</u></em> in javascript</a></li> -</ul> -<p>{{ languages( { "fr": "fr/compiler_un_composant_xpcom_javascript", "zh-cn": "cn/How_to_Build_an_XPCOM_Component_in_Javascript", "ja": "ja/How_to_Build_an_XPCOM_Component_in_Javascript" } ) }}</p> -<p> </p> -<p><strong>Tradução para o portugues(Brasil) : Josimar de souza</strong></p> -<p>contato : portaldobarulho@hotmail.com</p> -<p>site : <a href="http://facebook.com/soundbrasil" title="http://facebook.com/soundbrasil">Portal do Barulho</a></p> diff --git a/files/pt-br/mozilla/tech/xpcom/guide/index.html b/files/pt-br/mozilla/tech/xpcom/guide/index.html deleted file mode 100644 index 63fcce03c0..0000000000 --- a/files/pt-br/mozilla/tech/xpcom/guide/index.html +++ /dev/null @@ -1,21 +0,0 @@ ---- -title: XPCOM guide -slug: Mozilla/Tech/XPCOM/Guide -tags: - - Add-ons - - Extensions - - Guide - - Landing - - Mozilla - - NeedsTranslation - - TopicStub - - XPCOM -translation_of: Mozilla/Tech/XPCOM/Guide ---- -<p><span class="seoSummary">These articles provide tutorials and usage documentation for XPCOM, including how to use it in your own projects and how to build XPCOM components for your Firefox add-ons and the like.</span></p> - -<div class="warning"> -<p><strong>WebExtensions are becoming the new standard for creating add-ons. </strong>Eventually support for XPCOM add-ons will be deprecated, so you should begin to investigate porting your add-ons to use the <a href="/en-US/docs/Mozilla/Add-ons/WebExtensions">WebExtensions</a> API, and <a href="https://mzl.la/webext-feature-needed">report any missing functionality</a> so we can be sure to address your concerns. Work is ongoing on WebExtension capabilities, so your input will help prioritize and plan the work. To learn more about the kinds of changes that will be needed, see <a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/Comparison_with_XUL_XPCOM_extensions">Comparison with XUL/XPCOM extensions</a>. In addition, any binaries you use will then need to be converted for use with the WebExtensions <a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/Native_messaging">native messaging</a> API, or compiled using <a href="https://webassembly.github.io/">WebAssembly</a> or <a href="/en-US/docs/Mozilla/Projects/Emscripten">Emscripten</a>.</p> -</div> - -<p>{{LandingPageListSubpages}}</p> diff --git a/files/pt-br/mozilla/tech/xpcom/index.html b/files/pt-br/mozilla/tech/xpcom/index.html deleted file mode 100644 index 07687c0f82..0000000000 --- a/files/pt-br/mozilla/tech/xpcom/index.html +++ /dev/null @@ -1,47 +0,0 @@ ---- -title: XPCOM -slug: Mozilla/Tech/XPCOM -tags: - - Landing - - Mozilla - - NeedsTranslation - - TopicStub - - XPCOM -translation_of: Mozilla/Tech/XPCOM ---- -<p><span class="seoSummary"><strong>XPCOM</strong> is a cross platform component object model, similar to Microsoft COM. It has multiple <a href="/en-US/docs/XPCOM/Language_Bindings" title="XPCOM/Language_Bindings">language bindings</a>, allowing XPCOM components to be used and implemented in JavaScript, Java, and Python in addition to C++.</span> Interfaces in XPCOM are defined in a dialect of IDL called <a href="/en-US/docs/XPIDL" title="XPIDL">XPIDL</a>.</p> - -<div class="warning"> -<p><strong>XPCOM is no longer available for use by Firefox extensions. Use <a href="/en-US/Add-ons/WebExtensions">WebExtensions</a> instead.</strong></p> -</div> - -<p>XPCOM itself provides a set of core components and classes, e.g. file and memory management, threads, basic data structures (strings, arrays, variants), etc. The majority of XPCOM components are not part of this core set and are provided by other parts of the platform (e.g. <a href="/en-US/docs/Gecko" title="Gecko">Gecko</a> or <a href="/en-US/docs/Necko" title="Necko">Necko</a>) or by an application or even by an extension.</p> - -<div class="row topicpage-table"> - <div class="section"><dl><dl><dt class="landingPageList"><a href="/en-US/docs/Mozilla/Tech/XPCOM/Accessing_the_Windows_Registry_Using_XPCOm">Accessing the Windows Registry Using XPCOM</a></dt><dd class="landingPageList">When implementing Windows-specific functionality, it is often useful to access the Windows registry for information about the environment or other installed programs. To this end, there exist <a href="/en/XPCOM" title="en/XPCOM">XPCOM</a> interfaces to read and write registry data. This article will show you how to use the available interfaces in several Mozilla products.</dd><dt class="landingPageList"><a href="/en-US/docs/Mozilla/Tech/XPCOM/Aggregating_the_In-Memory_Datasource">Aggregating the In-Memory Datasource</a></dt><dd class="landingPageList"></dd><dt class="landingPageList"><a href="/en-US/docs/Mozilla/Tech/XPCOM/already_AddRefed">already_AddRefed</a></dt><dd class="landingPageList"><code>already_AddRefed</code> in association with <code><a href="/en-US/docs/NsCOMPtr">nsCOMPtr</a></code> allows you to assign in a pointer <strong>without</strong> <code>AddRef</code>ing it.</dd><dt class="landingPageList"><a href="/en-US/docs/Mozilla/Tech/XPCOM/Binary_compatibility">Binary compatibility</a></dt><dd class="landingPageList">If Mozilla decides to upgrade to a compiler that does not have the same ABI as the current version, any built component may fail. It is a possiblity that is introduced when upgrading to a new compiler without recompiling everything. Effectively, it is a different platform.</dd><dt class="landingPageList"><a href="/en-US/docs/Mozilla/Tech/XPCOM/Bundling_multiple_binary_components">Bundling multiple binary components</a></dt><dd class="landingPageList">Binary XPCOM components are sometimes required to implement low-level features for extensions. Since binary components are linked against a single Gecko SDK, a dependency to a particular version of Gecko is created. If the component uses only "frozen" XPCOM interfaces, there is a good chance the same binary component will work with different versions of Gecko (version 1.8 and 1.9, for example). The more likely case is that the component uses "unfrozen" interfaces and those interfaces can change between Gecko versions. This can create a difficult situation for extension developers trying to support multiple Gecko versions (Firefox 2 and 3, for example).</dd><dt class="landingPageList"><a href="/en-US/docs/Mozilla/Tech/XPCOM/Creating_a_Python_XPCOM_component">Creating a Python XPCOM component</a></dt><dd class="landingPageList"><a href="http://books.mozdev.org/html"><em>Creating Applications with Mozilla</em></a> already provides <a href="http://books.mozdev.org/html/mozilla-chp-8-sect-2.html">a tutorial</a> for making a simple JavaScript or C++ component (implementing the <code>nsISimple</code> interface). Here is how to make the same component in Python using <a href="/en-US/docs/PyXPCOM" title="PyXPCOM">PyXPCOM</a>.</dd><dt class="landingPageList"><a href="/en-US/docs/Mozilla/Tech/XPCOM/Fun_with_XBL_and_XPConnect">Fun With XBL and XPConnect</a></dt><dd class="landingPageList"></dd><dt class="landingPageList"><a href="/en-US/docs/Mozilla/Tech/XPCOM/Generating_GUIDs">Generating GUIDs</a></dt><dd class="landingPageList"><strong>GUID</strong>s are used in Mozilla programming for identifying several types of entities, including XPCOM <a href="/en-US/docs/Interfaces">Interfaces</a> (this type of GUIDs is callled IID), components (CID), and legacy add-ons—like <a href="/en-US/docs/Extensions">extensions</a> and <a href="/en-US/docs/Themes">themes</a>—that were created prior to Firefox 1.5. <a href="/en-US/docs/Install_Manifests#id">Add-ons can (and should) be identified with IDs of the form <code><var>extensionname</var>@<var>organization</var>.<var>tld</var></code></a> since <a href="/en-US/docs/Firefox_1.5_for_developers">Firefox 1.5</a>.</dd><dt class="landingPageList"><a href="/en-US/docs/Mozilla/Tech/XPCOM/Generic_factory">Generic factory</a></dt><dd class="landingPageList">Most XPCOM factories can be very simple. Rick Potts wrote a templated-based generic factory (nsFactory<t>) that simplifies the factory creation process that just requires writing a CreateInstance() method. The new nsIGenericFactory interface takes this a step further, by providing a single interface that can be reused anytime a simple implementation of nsIFactory is needed. Here is the interface, and a description of its use.</t></dd><dt class="landingPageList"><a href="/en-US/docs/Mozilla/Tech/XPCOM/How_to_build_a_binary_XPCOM_component_using_Visual_Studio">How to build a binary XPCOM component using Visual Studio</a></dt><dd class="landingPageList">This is a simple tutorial for building XPCOM objects in C++ using Visual Studio. XPCOM is Mozilla’s cross platform component object model, similar to Microsoft’s COM technology. XPCOM components can be implemented in C, C++, and JavaScript, and can be used from C, C++, and JavaScript. That means you can call JavaScript methods from C++ and vice versa. For more information on the workings of XPCOM look <a href="en/XPCOM">elsewhere</a>.</dd><dt class="landingPageList"><a href="/en-US/docs/Mozilla/Tech/XPCOM/How_to_pass_an_XPCOM_object_to_a_new_window">How To Pass an XPCOM Object to a New Window</a></dt><dd class="landingPageList">If you want to be able to call functions within an XPCOM object from a XUL window's code, you can do so if you pass the XPCOM object as one of the arguments to the window creation method.</dd><dt class="landingPageList"><a href="/en-US/docs/Mozilla/Tech/XPCOM/Interfacing_with_the_XPCOM_cycle_collector">Interfacing with the XPCOM cycle collector</a></dt><dd class="landingPageList">This is a quick overview of the cycle collector introduced into XPCOM for Firefox 3, including a description of the steps involved in modifying an existing C++ class to participate in XPCOM cycle collection. If you have a class that you think is involved in a cyclical-ownership leak, this page is for you.</dd><dt class="landingPageList"><a href="/en-US/docs/Mozilla/Tech/XPCOM/Introduction_to_XPCOM_for_the_DOM">Introduction to XPCOM for the DOM</a></dt><dd class="landingPageList">Warning: this document has not yet been reviewed by the DOM gurus, it might contain some errors.</dd><dt class="landingPageList"><a href="/en-US/docs/Mozilla/Tech/XPCOM/Language_Bindings">Language bindings</a></dt><dd class="landingPageList">An <strong>XPCOM Language Binding</strong> is a bridge between a particular language and <a href="/en/XPCOM" title="en/XPCOM">XPCOM</a> to provide access to XPCOM objects from that language, and to let modules written in that language be used as XPCOM objects by all other languages for which there are XPCOM bindings.</dd><dt class="landingPageList"><a href="/en-US/docs/Mozilla/Tech/XPCOM/Monitoring_HTTP_activity">Monitoring HTTP activity</a></dt><dd class="landingPageList">Gecko includes the <code><a href="/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIHttpActivityObserver" title="">nsIHttpActivityObserver</a></code> interface, which you can implement in your code to monitor <a href="/en/HTTP" title="en/HTTP">HTTP</a> transactions in real time, receiving a callback as the transactions take place.</dd><dt class="landingPageList"><a href="/en-US/docs/Mozilla/Tech/XPCOM/nsCOMPtr_versus_RefPtr">nsCOMPtr versus RefPtr</a></dt><dd class="landingPageList">Gecko code uses both <code>nsCOMPtr</code> and <code>RefPtr</code> as smart pointers. This guide provides some explanation and advice on how to choose between them.</dd><dt class="landingPageList"><a href="/en-US/docs/Mozilla/Tech/XPCOM/Observer_Notifications">Observer Notifications</a></dt><dd class="landingPageList">The following are topics that you can observe during the course of an application. Unless otherwise noted you register for the topics using the <code><a href="/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIObserverService" title="">nsIObserverService</a></code>.</dd><dt class="landingPageList"><a href="/en-US/docs/Mozilla/Tech/XPCOM/Setting_HTTP_request_headers">Setting HTTP request headers</a></dt><dd class="landingPageList"><a href="/en-US/docs/HTTP">HTTP</a> is one of the core technologies behind the Web. In addition to the actual content, <a href="/en-US/docs/HTTP/Headers">some important information</a> is passed with HTTP headers for both HTTP requests and responses.</dd><dt class="landingPageList"><a href="/en-US/docs/Mozilla/Tech/XPCOM/Storage">Storage</a></dt><dd class="landingPageList"><strong>Storage</strong> is a <a class="external" href="http://www.sqlite.org/">SQLite</a> database API. It is available to trusted callers, meaning extensions and Firefox components only.</dd><dt class="landingPageList"><a href="/en-US/docs/Mozilla/Tech/XPCOM/The_Thread_Manager">The Thread Manager</a></dt><dd class="landingPageList">The Thread Manager, introduced in Firefox 3, offers an easy to use mechanism for creating threads and dispatching events to them for processing.</dd></dl></dl></div> - <div class="section"><dl><dt class="landingPageList"><a href="/en-US/docs/Mozilla/Tech/XPCOM/Troubleshooting_XPCOM_components_registration">Troubleshooting XPCOM components registration</a></dt><dd class="landingPageList">Often the first time you create an XPCOM component, it may fail to register correctly.</dd><dt class="landingPageList"><a href="/en-US/docs/Mozilla/Tech/XPCOM/Using_nsCOMPtr">Using nsCOMPtr</a></dt><dd class="landingPageList">This document is the sum total of everything written down about <code>nsCOMPtr</code>. If you have a question about <code>nsCOMPtr</code>, and this document doesn't answer it, there probably isn't a document that answers it. You'll have to turn to <a class="external" href="news:mozilla.dev.tech.xpcom">the XPCOM newsgroup</a> or another experienced <code>nsCOMPtr</code> user, or find the answer by experimentation.</dd><dt class="landingPageList"><a href="/en-US/docs/Mozilla/Tech/XPCOM/Using_nsIClassInfo">Using nsIClassInfo</a></dt><dd class="landingPageList">If you use a C++ class which implements <code>nsIClassInfo</code> from JavaScript, then you don't have to explicitly call <code>QueryInterface</code> on the JavaScript object to access the object's interfaces.</dd><dt class="landingPageList"><a href="/en-US/docs/Mozilla/Tech/XPCOM/Using_nsIDirectoryService">Using nsIDirectoryService</a></dt><dd class="landingPageList">nsDirectoryService implements the <code><a href="/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIProperties" title="">nsIProperties</a></code> interface. This implementation will allow you to <code>Get()</code>, <code>Set()</code>, <code>Define()</code>, and <code>Undefine()</code> <code><a href="/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIFile" title="">nsIFile</a></code>.</dd><dt class="landingPageList"><a href="/en-US/docs/Mozilla/Tech/XPCOM/Using_nsIPasswordManager">Using nsIPasswordManager</a></dt><dd class="landingPageList">Technical review completed.</dd><dt class="landingPageList"><a href="/en-US/docs/Mozilla/Tech/XPCOM/Using_nsISimpleEnumerator">Using nsISimpleEnumerator</a></dt><dd class="landingPageList"></dd><dt class="landingPageList"><a href="/en-US/docs/Mozilla/Tech/XPCOM/Using_the_clipboard">Using the clipboard</a></dt><dd class="landingPageList">This section provides information about cutting, copying, and pasting to and from the clipboard.</dd><dt class="landingPageList"><a href="/en-US/docs/Mozilla/Tech/XPCOM/Using_the_Gecko_SDK">Using the Gecko SDK</a></dt><dd class="landingPageList"></dd><dt class="landingPageList"><a href="/en-US/docs/Mozilla/Tech/XPCOM/Weak_reference">Weak reference</a></dt><dd class="landingPageList">In <a href="/en-US/docs/XPCOM">XPCOM</a>, a <strong>weak reference</strong> is a special object that contains a pointer to an XPCOM object, but does<em>not</em> keep that object alive. If the referent object is destroyed before the weak reference, the pointer inside the weak reference is set to <code>nsnull</code>.</dd><dt class="landingPageList"><a href="/en-US/docs/Mozilla/Tech/XPCOM/Working_with_multiple_versions_of_interfaces">Working with Multiple Versions of Interfaces</a></dt><dd class="landingPageList">In this short note we illustrate how one can update an XPCOM module in -order for it to work in both Firefox 2 and Firefox 3, even if the interfaces have -changed in the interim.</dd><dt class="landingPageList"><a href="/en-US/docs/Mozilla/Tech/XPCOM/Working_with_out_parameters">Working with out parameters</a></dt><dd class="landingPageList"></dd><dt class="landingPageList"><a href="/en-US/docs/Mozilla/Tech/XPCOM/wrappedJSObject">wrappedJSObject</a></dt><dd class="landingPageList"><code>wrappedJSObject</code> is a property sometimes available on <a href="en/XPConnect">XPConnect</a> wrappers. When available, it lets you access the JavaScript object hidden by the wrapper.</dd><dt class="landingPageList"><a href="/en-US/docs/Mozilla/Tech/XPCOM/XPCOM_ABI">XPCOM ABI</a></dt><dd class="landingPageList"><a href="/en/XPCOM" title="en/XPCOM">XPCOM</a> <abbr title="Application Binary Interface">ABI</abbr> is the binary interface of XPCOM components. While XPCOM components written in a scripting language (such as <a href="/en/JavaScript" title="en/JavaScript">JavaScript</a>) can be moved across platforms (such as Windows and OS X) without adaptation, those written in a compiled language (such as C++) require recompilation when moving to a different platform. Often, compiled XPCOM components are called 'binary' or 'native'.</dd><dt class="landingPageList"><a href="/en-US/docs/Mozilla/Tech/XPCOM/XPCOM_category_image-sniffing-services">XPCOM category image-sniffing-services</a></dt><dd class="landingPageList">In versions of Firefox prior to Firefox 3, extensions could add decoders for new image types. However, such decoders relied on servers sending correct MIME types; images sent with incorrect MIME types would not be correctly displayed.</dd><dt class="landingPageList"><a href="/en-US/docs/Mozilla/Tech/XPCOM/Glue">XPCOM glue</a></dt><dd class="landingPageList">The XPCOM Glue is a static library which component developers and embedders can link against. It allows developers to link only against the frozen XPCOM method symbols and maintain compatibility with multiple versions of XPCOM.</dd><dt class="landingPageList"><a href="/en-US/docs/Mozilla/Tech/XPCOM/Guide">XPCOM guide</a></dt><dd class="landingPageList">These articles provide tutorials and usage documentation for XPCOM, including how to use it in your own projects and how to build XPCOM components for your Firefox add-ons and the like.</dd><dt class="landingPageList"><a href="/en-US/docs/Mozilla/Tech/XPCOM/XPCOM_ownership_guidelines">XPCOM ownership guidelines</a></dt><dd class="landingPageList">...naturally. If you create a temporary object, obviously it's up to you to destroy it. That's a sure sign of ownership. If you create an object with a longer lifespan, you will own it until you give ownership away.</dd><dt class="landingPageList"><a href="/en-US/docs/Mozilla/Tech/XPCOM/Reference">XPCOM reference</a></dt><dd class="landingPageList">This reference describes the interfaces and functions provided by the <a href="/en-US/docs/Mozilla/Tech/XPCOM">XPCOM</a> library. In addition, it details the various helper classes and functions, as well as the components, provided by the <a href="/en-US/docs/Mozilla/Tech/XPCOM/Glue">XPCOM glue</a> library. The contents herein are oriented primarily toward extension developers and people embedding XPCOM in other projects.</dd><dt class="landingPageList"><a href="/en-US/docs/Mozilla/Tech/XPCOM/XPCOM_tasks">XPCOM tasks</a></dt><dd class="landingPageList">The XPCOM module roughly parallels the C/C++ standard libraries. It overlaps them significantly, but goes beyond them in capabilities. XPCOM sits above the standard libraries. Its role is to extend them with facilities tailored to XPCOM development in general, and specifically the needs of Mozilla. Like the standard libraries, XPCOM must be a fairly self-contained library, so as not to encumber clients with any unnecessary external dependencies.</dd><dt class="landingPageList"><a href="/en-US/docs/Mozilla/Tech/XPCOM/Thread_synchronization">XPCOM Thread Synchronization</a></dt><dd class="landingPageList">XPCOM thread synchronization primitives have the same semantics as those in NSPR, and each method of these synchronization objects (e.g. <code>Mutex::Lock()</code>) has a matching function in NSPR (<code>PR_Lock()</code>). This is no accident, as mozilla:: primitives are merely bare-minimum wrappers around NSPR's.</dd><dt class="landingPageList"><a href="/en-US/docs/Mozilla/Tech/XPCOM/xptcall_FAQ">xptcall FAQ</a></dt><dd class="landingPageList"><code>xptcall</code> is a small low level XPCOM method call library. It is implemented using platform specific C/C++ and assembly language code. It is used to facilitate cross language and cross thread method calls. Porting this code is required in order to make Mozilla run on any given platform.</dd><dt class="landingPageList"><a href="/en-US/docs/Mozilla/Tech/XPCOM/xptcall_porting_guide">Xptcall Porting Guide</a></dt><dd class="landingPageList">Original Author: John Bandhauer, 31 May 1999.</dd><dt class="landingPageList"><a href="/en-US/docs/Mozilla/Tech/XPCOM/xptcall_porting_status">Xptcall Porting Status</a></dt><dd class="landingPageList">This is a status page for the multiplatform porting of xptcall. xptcall has a <a href="/En/Xptcall_FAQ">FAQ</a> and a <a href="/En/Xptcall_Porting_Guide">Porting Guide</a>.</dd></dl></div> - </div> - -<div class="blockIndicator communitybox" dir="ltr"> - - <div class="column-container"> - <h2 id="Join_the_XPCOM_community">Join the XPCOM community</h2> - <div class="column-half"> - <div class="communitysubhead">Choose your preferred method for joining the discussion:</div> - <ul class="communitymailinglist"> - <li><a href="https://lists.mozilla.org/listinfo/dev-tech-xpcom">Mailing list</a></li> - - - <li><a href="http://groups.google.com/group/mozilla.dev.tech.xpcom">Newsgroup</a></li> - <li><a href="http://groups.google.com/group/mozilla.dev.tech.xpcom/feeds">RSS feed</a></li> -</ul> - </div> - <div class="column-half"> - <ul class="communitycontact"><li><strong>IRC: </strong><a href="irc://irc.mozilla.org/developers">#developers</a> <span class="smaller">(<a href="https://wiki.mozilla.org/IRC">learn more</a>)</span></li><li><strong>Tools: </strong><a href="http://ted.mielczarek.org/code/mozilla/jscomponentwiz/">JavaScript Component Wizard</a>, <a href="http://www.mytools360.com-a.googlepages.com/home#XPComPro">Visual C++ Component Wizard</a>, <a href="http://www.yutools.com/wp/tools/yuxpcomwizard/?lang=en">Visual C++ Component Wizard for Visual Studio 2010</a>, <a href="https://addons.mozilla.org/en-US/firefox/addon/xpcomviewer/">XPCOMViewer addon: browse XPCOM interfaces easily</a></li></ul> - </div> - </div> -</div> - -<section id="Quick_Links"><ol><li><a href="http://www.ibm.com/developerworks/library/os-xpcomfirefox/">Tutorial from IBM DeveloperWorks</a></li><li><a href="https://developer.mozilla.org/en-US/docs/Creating_Custom_Firefox_Extensions_with_the_Mozilla_Build_System">Binary components tutorial</a></li><li><a href="http://www.iosart.com/firefox/xpcom/">Linux and Windows how-to guide</a></li><li><a href="http://starkravingfinkle.org/blog/2006/10/mozilla-platform-xpcom-in-c/">Windows example blog post</a></li><li><a href="http://wanderingstan.com/2007-11-16/geekout_how_to_make_a_c_xpcom_component">Another Windows example</a></li><li><a href="http://rcrowley.org/2007/07/17/cross-platform-xpcom-a-howto.html">Mac OS X example</a></li><li><a href="/en-US/docs/Web/JavaScript" title="JavaScript (JS) is a lightweight interpreted or JIT-compiled programming language with first-class functions. While it is most well-known as the scripting language for Web pages, many non-browser environments also use it, such as Node.js, Apache CouchDB and Adobe Acrobat.">JavaScript</a></li></ol></section> diff --git a/files/pt-br/mozilla/tech/xpcom/reference/index.html b/files/pt-br/mozilla/tech/xpcom/reference/index.html deleted file mode 100644 index 3d8f2b9b64..0000000000 --- a/files/pt-br/mozilla/tech/xpcom/reference/index.html +++ /dev/null @@ -1,18 +0,0 @@ ---- -title: XPCOM reference -slug: Mozilla/Tech/XPCOM/Reference -tags: - - Landing - - Mozilla - - NeedsTranslation - - Reference - - TopicStub - - XPCOM -translation_of: Mozilla/Tech/XPCOM/Reference ---- -<p>This reference describes the interfaces and functions provided by the <a href="/en-US/docs/Mozilla/Tech/XPCOM">XPCOM</a> library. In addition, it details the various helper classes and functions, as well as the components, provided by the <a href="/en-US/docs/Mozilla/Tech/XPCOM/Glue">XPCOM glue</a> library. The contents herein are oriented primarily toward extension developers and people embedding XPCOM in other projects.</p> -<div class="note"> - <p><strong>Note:</strong> If you're working on a module in the Mozilla codebase that's compiled with the <code>MOZILLA_INTERNAL_API</code> flag set, some of these APIs -- the string functions and classes in particular -- are not the ones you should be using. See the <a href="/en-US/docs/Mozilla/Tech/XPCOM/Guide/Internal_strings">XPCOM internal string guide</a> for documentation of the internal string API used within the Mozilla codebase.</p> -</div> -<p>{{LandingPageListSubpages}}</p> -<p>Many XPCOM pages return an <code><a href="/en-US/docs/Mozilla/Tech/XPCOM/Reference/Core_functions/nsresult">nsresult</a></code>. Prior to Gecko 19 {{geckoRelease(19)}}, this was an integer that simply returned an error code. It is now a strongly typed <code>enum</code> when XPCOM is built using a C++11 compiler. This causes compile-time errors to occur when improper values are returned as nsresult values, thereby making it easier to catch many bugs.</p> diff --git a/files/pt-br/mozilla/tech/xpcom/reference/interface/index.html b/files/pt-br/mozilla/tech/xpcom/reference/interface/index.html deleted file mode 100644 index 9adc0e0157..0000000000 --- a/files/pt-br/mozilla/tech/xpcom/reference/interface/index.html +++ /dev/null @@ -1,17 +0,0 @@ ---- -title: XPCOM Interface Reference -slug: Mozilla/Tech/XPCOM/Reference/Interface -tags: - - NeedsTranslation - - TopicStub - - XPCOM - - XPCOM Interface Reference -translation_of: Mozilla/Tech/XPCOM/Reference/Interface ---- -<p>This is a reference to the XPCOM interfaces provided by the Mozilla platform.</p> -<div class="cols-3"> - {{tree('','1')}}</div> -<h2 id="See_also" name="See_also">See also</h2> -<ul> - <li><a href="/en-US/docs/XPCOM_Interface_Reference_group" title="XPCOM_Interface_Reference_group">Interfaces grouped by function</a></li> -</ul> diff --git a/files/pt-br/mozilla/tech/xpcom/reference/interface/nsidevicemotion/index.html b/files/pt-br/mozilla/tech/xpcom/reference/interface/nsidevicemotion/index.html deleted file mode 100644 index 4eef5f2942..0000000000 --- a/files/pt-br/mozilla/tech/xpcom/reference/interface/nsidevicemotion/index.html +++ /dev/null @@ -1,129 +0,0 @@ ---- -title: nsIDeviceMotion -slug: Mozilla/Tech/XPCOM/Reference/Interface/nsIDeviceMotion -translation_of: Mozilla/Tech/XPCOM/Reference/Interface/nsIDeviceMotion ---- -<p></p><div style="border: solid #ddd 2px; margin-bottom: 12px;"> -<div style="background: #eee; padding: 2px;"><code><a href="https://dxr.mozilla.org/mozilla-central/source/xpcom/system/nsIDeviceMotion.idl" rel="custom">xpcom/system/nsIDeviceMotion.idl</a></code><span style="text-align: right; float: right;"><a href="/en-US/docs/Interfaces/About_Scriptable_Interfaces" style="color: #00cc00; font-weight: 700;">Scriptable</a></span></div> -<span style="padding: 4px 2px;"> - -Essa interface é usada para implementar o suporte acelerômetro. -</span> - - <div style="height: 42px; position: relative; padding: 2px; width: auto;"> - - <div style="top: 22px; font-size: 11px; position: absolute;">1.0</div> - - <div style="top: 22px; font-size: 11px; position: absolute; left: 0px; text-align: right; float: right; width: 100%;">66</div> - - <div style="height: 8px; top: 16px; background: #dd0000; left: 0px; position: absolute; width: 10.476190285714287%;"></div> - -<div style="height: 8px; top: 16px; left: 10.476190285714287%; background: #00dd00; position: absolute; width: 89.52380971428572%;" title="Introduced in Gecko 1.9.2 (Firefox 3.6 / Thunderbird 3.1 / Fennec 1.0)"></div> - -<div style="top: 0px; font-size: 11px; position: absolute; left: 10.476190285714287%;">Introduced</div> -<div style="top: 22px; font-size: 11px; position: absolute; left: 10.476190285714287%;">Gecko 1.9.2</div> - - <div style="height: 8px; top: 16px; left: 13.785714285714285%; background: #eeee00; position: absolute; width: 1%; border-radius: 4px; -webkit-border-radius: 4px;" title="Last changed in Gecko 6.0 (Firefox 6.0 / Thunderbird 6.0 / SeaMonkey 2.3)"></div> - -</div> - -<div style="background: #eee; padding: 2px;"> -Inherits from: <code><a href="/pt-BR/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsISupports" title="">nsISupports</a></code> -<span style="text-align: right; float: right;">Last changed in Gecko 6.0 (Firefox 6.0 / Thunderbird 6.0 / SeaMonkey 2.3)</span></div> -</div><p></p> - -<div class="note"><strong>Note:</strong> This interface was named <code>nsIDeviceMotion</code> prior to Gecko 6.0 (Firefox 6.0 / Thunderbird 6.0 / SeaMonkey 2.3).</div> - -<h2 id="Method_overview" name="Method_overview">Visão Geral</h2> - -<table class="standard-table"> - <tbody> - <tr> - <td><code>void <a href="#addListener()">addListener</a>(in nsIDeviceMotionListener aListener);</code></td> - </tr> - <tr> - <td><code>void <a href="#addWindowListener()">addWindowListener</a>(in nsIDOMWindow aWindow);</code> <span class="inlineIndicator noscript noscriptInline" title="This method may only be called from C++; don't use it from JavaScript.">Native code only!</span></td> - </tr> - <tr> - <td><code>void <a href="#removeListener()">removeListener</a>(in nsIDeviceMotionListener aListener);</code></td> - </tr> - <tr> - <td><code>void <a href="#removeWindowListener()">removeWindowListener</a>(in nsIDOMWindow aWindow);</code> <span class="inlineIndicator noscript noscriptInline" title="This method may only be called from C++; don't use it from JavaScript.">Native code only!</span></td> - </tr> - </tbody> -</table> - -<h2 id="Methods" name="Methods">Métodos</h2> - -<h3 id="addListener()" name="addListener()">addListener()</h3> - -<p>Quando chamado, a implementação do suporte acelerômetro deve começar a notificar o que foi especificado <code><a href="/pt-BR/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIDeviceMotionListener" title="">nsIDeviceMotionListener</a></code> chamando seu <code><a href="https://developer.mozilla.org/pt-BR/docs/XPCOM_Interface_Reference/nsIDeviceMotionListener#onAccelerationChange()">nsIDeviceMotionListener.onAccelerationChange()</a></code> método apropriado para compartilhar dados de aceleração atualizados.</p> - -<pre class="eval">void addListener( - in nsIDeviceMotionListener aListener -); -</pre> - -<h6 id="Parameters" name="Parameters">Parâmetro</h6> - -<dl> - <dt><code>aListener</code></dt> - <dd>O <code><a href="/pt-BR/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIDeviceMotionListener" title="">nsIDeviceMotionListener</a></code> objeto cujo <code><a href="https://developer.mozilla.org/pt-BR/docs/XPCOM_Interface_Reference/nsIDeviceMotionListener#onAccelerationChange()">nsIDeviceMotionListener.onAccelerationChange()</a></code> método deve ser chamado com dados de aceleração atualizados.</dd> -</dl> - -<p></p><div><span class="indicatorInHeadline noscript noscriptMethod" title="This method may only be called from C++; don't use it from JavaScript.">Native code only!</span><h3 id="addWindowListener">addWindowListener</h3></div><p></p> - -<p>Definir o <code>nsIAccelerometer</code> da raiz para <code>MozOrientation</code> eventos sobre um específico DOM <a href="/pt-BR/docs/Web/API/Window" title="O objeto window representa uma janela que contém um elemento DOM; a propriedade document aponta para o documento DOM document carregado naquela janela."><code>window</code></a>.</p> - -<pre class="eval">void addWindowListener( - in nsIDOMWindow aWindow -); -</pre> - -<h6 id="Parameters" name="Parameters">Parâmetro</h6> - -<dl> - <dt><code>aWindow</code></dt> - <dd><span id="result_box" lang="pt"><span>A janela de</span> <span>DOM</span> <span>que o</span> <span>acelerômetro</span> <span>deverá</span> <span>começar a enviar</span></span> para o evento <code>MozOrientation</code>.</dd> -</dl> - -<h3 id="removeListener()" name="removeListener()">removeListener()</h3> - -<p><span id="result_box" lang="pt"><span>Diz</span> a<span>o acelerômetro para</span> <span>parar de enviar</span> <span>atualizações para o</span> quem foi <span>especificado</span></span> <code><a href="/pt-BR/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIDeviceMotionListener" title="">nsIDeviceMotionListener</a></code>.</p> - -<pre class="eval">void removeListener( - in nsIDeviceMotionListener aListener -); -</pre> - -<h6 id="Parameters" name="Parameters">Parâmetro</h6> - -<dl> - <dt><code>aListener</code></dt> - <dd>O <code><a href="/pt-BR/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIDeviceMotionListener" title="">nsIDeviceMotionListener</a></code> <span id="result_box" lang="pt"><span>objeto para o qual</span> <span>não há</span> <span>mais atualizações</span> para <span>serem enviadas.</span></span></dd> -</dl> - -<p></p><div><span class="indicatorInHeadline noscript noscriptMethod" title="This method may only be called from C++; don't use it from JavaScript.">Native code only!</span><h3 id="removeWindowListener">removeWindowListener</h3></div><p></p> - -<p>Remover o <code>nsIAccelerometer</code> como fonte para o evento <code>MozOrientation</code> de um DOM especificado <a href="/pt-BR/docs/Web/API/Window" title="O objeto window representa uma janela que contém um elemento DOM; a propriedade document aponta para o documento DOM document carregado naquela janela."><code>window</code></a>.</p> - -<pre class="eval">void removeWindowListener( - in nsIDOMWindow aWindow -); -</pre> - -<h6 id="Parameters" name="Parameters">Parâmetro</h6> - -<dl> - <dt><code>aWindow</code></dt> - <dd><span id="result_box" lang="pt"><span>A janela de</span> <span>DOM</span> <span>que o</span> <span>acelerômetro</span> <span>deve</span> <span>parar de enviar</span></span> <code>para o evento MozOrientation</code>.</dd> -</dl> - -<h2 id="See_also" name="See_also">Veja também</h2> - -<ul> - <li><a href="/en/DOM/MozOrientation" title="en/DOM/MozOrientation"><code>MozOrientation</code></a></li> - <li><code><a href="/pt-BR/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIDOMOrientationEvent" title="">nsIDOMOrientationEvent</a></code></li> - <li><code><a href="/pt-BR/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIDeviceMotionData" title="">nsIDeviceMotionData</a></code></li> - <li><code><a href="/pt-BR/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIDeviceMotionListener" title="">nsIDeviceMotionListener</a></code></li> -</ul> diff --git a/files/pt-br/mozilla/testing/analise_estatica_clang/index.html b/files/pt-br/mozilla/testing/analise_estatica_clang/index.html deleted file mode 100644 index 41e019a53e..0000000000 --- a/files/pt-br/mozilla/testing/analise_estatica_clang/index.html +++ /dev/null @@ -1,92 +0,0 @@ ---- -title: Análise estática do Clang -slug: Mozilla/Testing/Analise_estatica_Clang -tags: - - analisador estático - - clang -translation_of: Mozilla/Testing/Clang_static_analysis ---- -<div class="warning"> -<p><strong>Boas novas:</strong> Se você quer fazer o build com o plugin Mozilla Clang (localizado em <code>/build/clang-plugin</code> e associado com o <code>MOZ_CLANG_PLUGIN</code> e os atributos em <code>/mfbt/Attributes.h</code>), é muito mais fácil que isso: apenas adicionar <code>--enable-clang-plugin</code> ao seu mozconfig!</p> -</div> - -<p>O Clang tem um <a class="external" href="http://clang-analyzer.llvm.org/" title="http://clang-analyzer.llvm.org/">analisador estático embutido</a>. A ideia principal é você adicionar um empacotador no compilador que direciona todos os resultados da análise estácica para um local comum. No fim do build, esses relatórios são juntos em um documento único mostrando todos os possíveis problemas.</p> - -<p>Essas instruções irão apenas funcionar onde o Mozilla já compila com o Clang. No momento que isto é escrito, o Mac OS X e o GNU/Linux tem um suporte mais forte. Por favor, perceba que a maior parte do esforço do analisador estático no Clang são majoritariamente feitos em <a href="http://clang.llvm.org/extra/clang-tidy/">clang-tidy</a>, uma vez que os verificadores são muito mais fáceis de escrever.</p> - -<p>Idealmente, a análise estática seria feita independentemente da compilação. Veja {{ bug("663442") }} para localizar uma solução alternativa que facilita a análise estática.</p> - -<h2 class="ace-line" id="Instalando_o_Clang">Instalando o Clang</h2> - -<p>O primeiro passo para executar uma análise estática é instalando o Clang. Atualmente, ele está disponível para a maioria das distribuições GNU/Linux mas também está disponível com Xcode como o compilador padrão.</p> - -<h2 id="Configurando_o_ambiente_de_build">Configurando o ambiente de build</h2> - -<p>Uma vez que você tiver o build do seu Clang pronto, você irá precisar preparar ferramentas para usá-lo. Veja um .mozconfig totalmente funcional para o navegador desktop:</p> - -<pre>. $topsrcdir/browser/config/mozconfig -mk_add_options MOZ_OBJDIR=@TOPSRCDIR@/obj-ff-dbg - -ac_add_options --enable-debug -</pre> - -<p>Tentativas de usar o <code><a href="/en/ccache" title="ccache">ccache</a></code> irá muito provavelmente resultar em falhas de compilação. É também necessário evitar builds otimizados, uma vez que estes irão modificar as macros no que resulta em muitos falso-positivos.</p> - -<p>Nessa altura, o ambiente build do seu Mozilla deve estar configurado para compilar através do analisador estático do Clang!</p> - -<h2 id="Realizando_scan_no_build">Realizando scan no build</h2> - -<p>Não é o suficiente simplesmente iniciar o build do forma normal. Em vez disso, você precisa executar o build através de um script utilitário do Clang que irá acompanhar toda a análise produzida e consolidá-la automaticamente.</p> - -<p>Esse scritp é o scan-build. Você pode encontrá-lo em $clang_source/tools/scan-build/scan-build.</p> - -<p>Tente executar o seu build com o scan-build:</p> - -<pre>$ cd /path/to/mozilla/source - -# Blow away your object directory because incremental builds don't make sense -$ rm -rf obj-dir - -# To start the build: -scan-build --show-description ./mach build -v - -# The above should execute without any errors. However, it should take longer than -# normal because all compilation will be executing through Clang's static analyzer, -# which adds overhead. -</pre> - -<p>Se tudo estiver ocorrendo bem, você deve ver muitas informações no console, assim como qualquer build.</p> - -<p>Na primeira vez que você rodar o scan-build, dê CTRL+C depois que alguns arquivos forem compilados. Você deve ver uma saída como essa:</p> - -<pre>scan-build: 3 bugs found. -scan-build: Run 'scan-view /Users/gps/tmp/mcsb/2011-12-15-3' to examine bug reports. -</pre> - -<p>Se você ver uma mensagem como essa:</p> - -<pre>scan-build: Removing directory '/var/folders/s2/zc78dpsx2rz6cpc_21r9g5hr0000gn/T/scan-build-2011-12-15-1' because it contains no reports. -</pre> - -<p>ou nenhum resultado de análise estática está disponível ainda ou seu ambiente não está configurado corretamente.</p> - -<p>Por padrão, <code>scan-build</code> produz resultados em um diretório em uma localização pseudo-temporária. Você pode controlar onde os resultados vão ao passar o argumento <code>-o /path/to/output</code> no script <code>scan-build</code>.</p> - -<p>Você pode também querer executar <code>scan-build --help</code> para ver todas as opções disponíveis. É possível habilitar ou desabilitar seletivamente analisadores individuais, por exemplo.</p> - -<h2 id="Analisando_a_saída">Analisando a saída</h2> - -<p>Uma vez que o build estiver completado, o script <code>scan-build</code> irá produzir um relatório resumindo tudo que foi encontrado. Este é chamado de <code>index.html</code> no diretório de saída. Você pode executar o <code>scan-view</code> (em <code>$clang_source/tools/scan-view/scan-view</code>) como a saída do <code>scan-build</code> sugere; isso meramente ativa um servidor HTTP local. Ou você deve poder abrir o <code>index.html</code> diretamente no seu navegador.</p> - -<h2 id="Falso-positivos">Falso-positivos</h2> - -<p>Há muitos falso-positivos atualmente no analisador estático. Muitos deles são devido ao analisador ter dificuldades em seguir o relativamente complicado tratamento de erros em várias macros do pré-processador. Por exemplo, a maioria das nossas macros <code>ASSERT()</code> chamam outras funções as quais elas chamam <code>assert()</code> ou fazem alguma outra coisa.</p> - -<p>A longo-prazo, nós devemos adicionar um conjunto de macros habilidados via <code>#ifdef</code> o que fornece simples e compreensíveis macros. Há também algumas <code>pragma</code>s e extensões do compilador que podemos investigar usando avisos silenciosos.</p> - -<h2 id="Veja_também">Veja também</h2> - -<ul> - <li><a href="/en/Configuring_Build_Options" title="Configuring Build Options">Configurando Opções de Build</a></li> - <li><a href="/En/Developer_Guide" title="Developer Guide">Guia do Desenvolvedor</a></li> -</ul> diff --git a/files/pt-br/mozilla/testing/index.html b/files/pt-br/mozilla/testing/index.html deleted file mode 100644 index 694d1a2b9a..0000000000 --- a/files/pt-br/mozilla/testing/index.html +++ /dev/null @@ -1,13 +0,0 @@ ---- -title: Testing Mozilla code -slug: Mozilla/Testing -tags: - - Landing - - Mozilla - - NeedsTranslation - - Testing - - TopicStub -translation_of: Mozilla/Testing ---- -<p><span class="seoSummary">Testing your code is important! Before you can even get your code committed into the source tree, you have to test it, and larger patches have to have automated tests. These articles will help you master (and continue to excel at) testing Mozilla code.</span></p> -<p>{{LandingPageListSubpages}}</p> diff --git a/files/pt-br/mozilla/thunderbird/autoconfiguration/fileformat/definition/index.html b/files/pt-br/mozilla/thunderbird/autoconfiguration/fileformat/definition/index.html deleted file mode 100644 index 382994aa23..0000000000 --- a/files/pt-br/mozilla/thunderbird/autoconfiguration/fileformat/definition/index.html +++ /dev/null @@ -1,6 +0,0 @@ ---- -title: Autoconfig file format definition -slug: Mozilla/Thunderbird/Autoconfiguration/FileFormat/Definition -translation_of: Mozilla/Thunderbird/Autoconfiguration/FileFormat/Definition ---- -<p>Por favor veja <a href="https://wiki.mozilla.org/Thunderbird:Autoconfiguration:ConfigFileFormat" class="link-https" title="https://wiki.mozilla.org/Thunderbird:Autoconfiguration:ConfigFileFormat">https://wiki.mozilla.org/Thunderbird:Autoconfiguration:ConfigFileFormat</a>.</p> diff --git a/files/pt-br/mozilla/thunderbird/autoconfiguration/fileformat/index.html b/files/pt-br/mozilla/thunderbird/autoconfiguration/fileformat/index.html deleted file mode 100644 index 23ab347d21..0000000000 --- a/files/pt-br/mozilla/thunderbird/autoconfiguration/fileformat/index.html +++ /dev/null @@ -1,9 +0,0 @@ ---- -title: Autoconfig file format -slug: Mozilla/Thunderbird/Autoconfiguration/FileFormat -translation_of: Mozilla/Thunderbird/Autoconfiguration/FileFormat ---- -<ul> - <li><a href="/en/Thunderbird/Autoconfiguration/FileFormat/HowTo" title="en/Thunderbird/Autoconfiguration/FileFormat/HowTo">Como criar um arquivo de configuração</a></li> - <li><a href="https://developer.mozilla.org/pt-BR/docs/Mozilla/Thunderbird/Autoconfiguration/FileFormat/Definition" title="en/Thunderbird/Autoconfiguration/FileFormat/Definition">Definição de formato de arquivo</a></li> -</ul> diff --git a/files/pt-br/mozilla/thunderbird/autoconfiguration/index.html b/files/pt-br/mozilla/thunderbird/autoconfiguration/index.html deleted file mode 100644 index 196fb9e443..0000000000 --- a/files/pt-br/mozilla/thunderbird/autoconfiguration/index.html +++ /dev/null @@ -1,166 +0,0 @@ ---- -title: Autoconfiguration in Thunderbird -slug: Mozilla/Thunderbird/Autoconfiguration -tags: - - Administration - - NeedsTranslation - - TopicStub - - enterprise -translation_of: Mozilla/Thunderbird/Autoconfiguration ---- -<p>Author: Ben Bucksch<br> - Please do not change this document without consulting the author</p> - -<p>Thunderbird 3.1 and later (and 3.0 to some degree) includes mail account autoconfiguration functionality. The goal of autoconfiguration is to make it very easy for users to configure the connection of Thunderbird to their email servers. In many cases, people should be able to download and install Thunderbird, enter their real name, email address and password in the Account Setup Wizard and have a fully functioning mail client and get and send their mail as securely as possible.</p> - -<p>See also:</p> - -<ul> - <li>the <a class="link-https" href="https://wiki.mozilla.org/Thunderbird:Autoconfiguration" title="https://wiki.mozilla.org/Thunderbird:Autoconfiguration">project page on the Mozilla wiki</a> for background, design, implementation and project details</li> - <li>for instructions for users, see <a class="external" href="http://support.mozillamessaging.com/en-US/kb/Automatic-Account-Configuration" title="http://support.mozillamessaging.com/en-US/kb/Automatic+Account+Configuration">Automatic Account Configuration</a> on the Thunderbird Knowledge Base.</li> - <li>the configuration file <a href="/en/Thunderbird/Autoconfiguration/FileFormat/HowTo" title="en/Thunderbird/Autoconfiguration/FileFormat/HowTo">description</a> and <a href="https://wiki.mozilla.org/Thunderbird:Autoconfiguration:ConfigFileFormat" title="en/Thunderbird/Autoconfiguration/FileFormat/Definition">definition</a></li> -</ul> - -<p>This document describes how Autoconfiguration in Thunderbird works, and what to do to allow mail servers to be autoconfigured.</p> - -<h1 id="Mechanisms">Mechanisms</h1> - -<p>Thunderbird gets the server settings via different means, each of which is intended for different cases:</p> - -<ul> - <li>ISPDB<br> - The ISPDB is a central database, currently hosted by Mozilla Messaging, but free to use for any client. It contains settings for the world's largest ISPs. We hope that the database will soon have enough information to autoconfigure approximately 50% of our user's email accounts.<br> - It was added merely because we cannot assume that all big ISPs (including Microsoft) will immediately set up a configuration server for Thunderbird.</li> - <li>Configuration server at ISP<br> - ISPs have the option to provide their configuration information themselves directly to users, by setting up a web server at autoconfig.<domain>, which simply returns a static XML file with the configuration, as described below. For more complicated setups, for example when the login name does not appear in the the email address, the XML file can also be generated by the ISP. In such complicated cases, this is the only way to allow an automatic setup.</li> - <li>Configuration file on harddisk<br> - Administrators may place a configuration file in the Thunderbird installation folder. This is mainly intended for companies who install Thunderbird on their employees' computers and want to enable easy account setup without having to set up a configuration server. This method is not practical for other use cases, because it is difficult to update the configuration file. Therefore, public ISPs should use a configuration server.</li> - <li>Guessing<br> - If all other mechanisms failed, Thunderbird tries to guess the configuration, by trying common server names like imap.<domain>, smtp.<domain>, mail.<domain> etc., and, when a mail server answers, checking whether it supports SSL, STARTTLS and encrypted passwords (CRAM-MD5).</li> - <li>Manual configuration<br> - If guessing fails the user must manually enter the configuration information. Users can may also manually modify the account settings even if configuration information is successfully obtained by the methods described above.</li> -</ul> - -<p>All the lookup mechanisms use the email address domain as base for the lookup. For example, for the email address <a class="moz-txt-link-abbreviated link-mailto" href="mailto:fred@example.com">fred@example.com</a> , the lookup is performed as (in this order):</p> - -<ol> - <li><em>tb-install-dir</em>/isp/example.com.xml on the harddisk</li> - <li>check for autoconfig.example.com</li> - <li>look up of "example.com" in the ISPDB</li> - <li>look up "MX example.com" in DNS, and for mx1.mail.hoster.com, look up "hoster.com" in the ISPDB</li> - <li>try to guess (imap.example.com, smtp.example.com etc.)</li> -</ol> - -<p>We may in the future add DNS SRV records as supported mechanism in the future, but we currently do not.</p> - -<h1 id="How_to_add_support_for_your_domain">How to add support for your domain</h1> - -<h2 id="Classification">Classification</h2> - -<p>If you are a big ISP (> 100,000 users) providing email addresses solely under a few domains like "example.com" and "example.de", you may either submit the configuration to the ISPDB or set up a configuration server.<br> - <br> - If you support email aliases and the user's login name is not part of the email address (for example, users may have <a class="moz-txt-link-rfc2396E link-mailto" href="mailto:hero@example.com">"hero@example.com"</a> as email address, but the IMAP/POP/SMTP login name is neither "hero" nor <a class="moz-txt-link-rfc2396E link-mailto" href="mailto:hero@example.com">"hero@example.com"</a>, but "u67578"), you need to set up a configuration server, which does the email address -> login name lookup.<br> - <br> - If you host customer domains, i.e. you are "hoster.com", but your customers have <a class="moz-txt-link-rfc2396E link-mailto" href="mailto:fred@flintstone.com">"fred@flintstone.com"</a> and <a class="moz-txt-link-rfc2396E link-mailto" href="mailto:louis@kent.com">"louis@kent.com"</a> as domains, with only a few users per domain, you need to set up a configuration server (or rely on DNS MX).<br> - <br> - If you are a small company installing Thunderbird on your employees' desktops, you can place a configuration file in the Thunderbird installation folder.</p> - -<h2 id="ISPDB">ISPDB</h2> - -<p>Database URL is <a class="moz-txt-link-rfc2396E link-https" href="https://live.mozillamessaging.com/autoconfig/v1.1/" title="https://live.mozillamessaging.com/autoconfig/v1.1/"><https://live.mozillamessaging.com/autoconfig/v1.1/></a>, append domain name, e.g. <a class="moz-txt-link-rfc2396E link-https" href="https://live.mozillamessaging.com/autoconfig/v1.1/freenet.de" title="https://live.mozillamessaging.com/autoconfig/v1.1/freenet.de"><https://live.mozillamessaging.com/autoconfig/v1.1/freenet.de></a>.<br> - <br> - Current process: File a bug in <a class="link-https" href="https://bugzilla.mozilla.org/enter_bug.cgi?product=Webtools&component=ISPDB%20Database%20Entries&op_sys=All&rep_platform=All">Bugzilla</a>, Product "Webtools", Component "ISPDB Database Entries", with a configuration file that matches the requirements described below. The component is actively watched for new bugs (as of November 2015) so there is no need to request review on the file.</p> - -<h2 id="Configuration_server_at_ISP">Configuration server at ISP</h2> - -<p>Given the email address <a class="moz-txt-link-rfc2396E link-mailto" href="mailto:fred@example.com">"fred@example.com"</a>, Thunderbird first checks <<span class="external free"><a class="moz-txt-link-freetext external" href="http://autoconfig.example.com/mail/config-v1.xml?emailaddress=fred@example.com">http://autoconfig.example.com/mail/config-v1.1.xml?emailaddress=fred@example.com</a></span>> and then <a class="moz-txt-link-rfc2396E external" href="http://example.com/.well-known/autoconfig/mail/config-v1.1.xml" title="http://example.com/.well-known/autoconfig/mail/config-v1.1.xml"><http://example.com/.well-known/autoconfig/mail/config-v1.1.xml></a>.</p> - -<h3 id="Small_company">Small company</h3> - -<p>If you are a small company, you can put the XML configuration file on your web server, at URL <a class="moz-txt-link-rfc2396E external" href="http://example.com/.well-known/autoconfig/mail/config-v1.1.xml"><http://example.com/.well-known/autoconfig/mail/config-v1.1.xml></a>. (This is not yet finalized and subject to change.)</p> - -<h3 id="Domain_hoster">Domain hoster</h3> - -<p>If you are an ISP that hosts domains for your customers - for example, you are hoster.com and your customer registers fancy.com or example.com, and your servers accept and serve the mail for example.com -, you should set up an autoconfig server.</p> - -<h4 id="DNS">DNS</h4> - -<p>For each customer domain, you add a DNS record (in addition to the existing MX, A www etc. DNS records):<br> - <code>autoconfig IN A 10.2.3.4</code><br> - or<br> - <code>autoconfig IN CNAME autoconfig.hoster.com</code>.<br> - ... where 10.2.3.4 and autoconfig.hoster.com are IP addresses / hostnames you own.<br> - This allows Thunderbird to find you as hoster.</p> - -<p>To make the Version without an autoconfig DNS Entry work you have to make sure that example.com points to the Webserver you will place the config-v1.1.xml on.</p> - -<p>Example: <span style="font-family: courier new,andale mono,monospace; line-height: normal;">example.com A 10.2.3.4</span></p> - -<h4 id="Web_server">Web server</h4> - -<p>You set up a web server bound to a physical IP address. This may be on the same machine as other web servers, but the web server must be configured to the content to any requested domain.<br> - <br> - You must use an virtual host that match all autoconfig.* domains of your customers. In Apache terms, you can use a "ip-based virtual host". In the Apache configuration files, that means something like: Listen 10.2.3.4:80 (of course, you use a public IP address that you own)</p> - -<pre><VirtualHost 10.2.3.4:80> #Must be the first and only virtual host with this ip! - DocumentRoot /var/www/autoconfig/ - ServerName autoconfig.hoster.com - <Directory /var/www/autoconfig> - Order allow,deny - allow from all - </Directory> -</VirtualHost></pre> - -<p>Place the configuration file at the URL /mail/config-v1.1.xml on that host.</p> - -<p>All config files must be served as <code>Content-Type: text/xml</code> (or <code>application/xml</code>), otherwise the file will be ignored. Also, they must use charset UTF-8 (esp. if there are any non-ASCII-characters).</p> - -<p>If you like to use name-based virtual hosts. You probably don't want to setup the autoconfig subdomain for every domain of your customers.<br> - You can add a Rewriterule in the default virtual host (on debian /etc/apache2/sites-enabled/000-default) to match all autoconfig.* subdomains:</p> - -<pre><VirtualHost *:80> #Must be the first Virtual host - ServerAdmin webmaster@hoster.com - ServerName www - DocumentRoot /var/www - RewriteEngine On - RewriteCond %{HTTP_HOST} ^autoconfig\. [NC] - RewriteRule ^/(.*) http://autoconfig.hoster.com/$1 [L,R=301,NE] - #... -</VirtualHost> -<VirtualHost *:80> - DocumentRoot /var/www/autoconfig/ - ServerName autoconfig.hoster.com - <Directory /var/www/autoconfig> - Order allow,deny - allow from all - </Directory> -</VirtualHost> -</pre> - -<p>If you use nginx, you can easily add a subdomain to all your Domains, which does the same as above. Either, you can redirect them to a common hostname:</p> - -<pre>server { - listen 10.2.3.4:80; #use your server's public IP here! - server_name autoconfig.*; - return 301 http://autoconfig.hoster.com$request_uri; -} -</pre> - -<p>Or serve them directly from a common directory:</p> - -<pre>server { - listen 10.2.3.4:80; #again, use your server's public IP here! - server_name autoconfig.*; - location / { - root /var/www/autoconfig; - } -} -</pre> - -<p> </p> - -<h2 id="Configuration_file">Configuration file</h2> - -<p>This is described at <a href="/en/Thunderbird/Autoconfiguration/FileFormat/HowTo" title="en/Thunderbird/Autoconfiguration/FileFormat/HowTo">How to create a configuration file</a> and <a href="/en/Thunderbird/Autoconfiguration/FileFormat/Definition" title="en/Thunderbird/Autoconfiguration/FileFormat/Definition">defined</a> on the sub-pages.</p> - -<p>{{ languages( { "ja": "ja/Thunderbird/Autoconfiguration" } ) }}</p> diff --git a/files/pt-br/mozilla/thunderbird/index.html b/files/pt-br/mozilla/thunderbird/index.html deleted file mode 100644 index c154f29271..0000000000 --- a/files/pt-br/mozilla/thunderbird/index.html +++ /dev/null @@ -1,69 +0,0 @@ ---- -title: Thunderbird -slug: Mozilla/Thunderbird -tags: - - NeedsTranslation - - TopicStub - - thunderbird -translation_of: Mozilla/Thunderbird ---- -<p><span class="seoSummary"><strong>Thunderbird</strong> is Mozilla's mail/messaging application. These pages document Thunderbird and also provide links to documentation about the <a href="/en-US/docs/tag/MailNews" title="tag/MailNews">MailNews</a> backend which is also used in other projects such as <a href="http://wiki.mozilla.org/Penelope">Eudora/Penelope</a>, <a href="http://www.seamonkey-project.org/">Seamonkey</a>, <a href="http://www.mozillazine.org/talkback.html?article=22774">Correo</a>, etc.</span></p> - -<p>Thunderbird is Firefox's kid sibling, and is built on the same technical platform as the web browser. In development for many years, and currently one of the most popular open source email clients, it is used by millions of people around the world to bring together all their email accounts, newsgroup and feed reading in a familiar high-productivity environment. (From early 2007 to early 2011 Thunderbird was developed by <a class="link-https" href="https://en.wikipedia.org/wiki/Mozilla_Messaging" title="https://en.wikipedia.org/wiki/Mozilla_Messaging">Mozilla Messaging</a>, a subsidiary that was owned by Mozilla.)</p> - -<table class="topicpage-table"> - <tbody> - <tr> - <td> - <h2 class="Documentation" id="Documentation" name="Documentation">Documentation</h2> - - <dl> - <dt><a href="https://developer.mozilla.org/en-US/docs/Simple_Thunderbird_build" title="Simple Thunderbird build">Building Thunderbird</a></dt> - <dd>Information about building Thunderbird with the <a href="/en-US/docs/comm-central" title="comm-central">comm-central</a> repository. There's also information about <a href="/en-US/docs/How_comm-central%27s_build_system_works" title="How_comm-central's_build_system_works">how comm-central works</a>, how the <a href="/en-US/docs/Mailnews_and_Mail_code_review_requirements" title="Mailnews and Mail code review requirements">review process works</a> and how to use the <a href="/en-US/docs/Using_the_Mozilla_symbol_server" title="Using the Mozilla symbol server">Mozilla symbol server</a> to help with debugging.</dd> - <dt><a href="/en-US/docs/MailNews_Protocols" title="MailNews_Protocols">MailNews Protocols</a></dt> - <dd>Rough documentation about mail protocols..</dd> - <dt><a href="/en-US/docs/DB_Views_%28message_lists%29" title="DB_Views_(message_lists)">Database views</a></dt> - <dd>Backend information about {{ Interface("nsIMsgDBView") }} and related interfaces..</dd> - <dt><a href="/en-US/docs/Thunderbird/Thunderbird_API_documentation" title="Thunderbird API documentation">Thunderbird API documentation</a></dt> - <dd><a href="/en-US/docs/Thunderbird/Thunderbird_API_documentation" title="Thunderbird API documentation">Thunderbird API documentation</a></dd> - <dt><a href="/en-US/docs/Extensions/Thunderbird" title="Extensions/Thunderbird/">Extension documentation</a></dt> - <dd>Tutorials and tips for building Thunderbird extensions</dd> - <dt><a href="/en-US/docs/Thunderbird/Thunderbird_Automated_Testing" title="Thunderbird Automated Testing">Automated Testing</a></dt> - <dd>Details of Thunderbird's automated testing facilities</dd> - <dt><a href="/en-US/docs/Thunderbird/Thunderbird_in_the_Enterprise" title="Thunderbird in the Enterprise">Thunderbird in the Enterprise</a></dt> - <dd>Help with deploying Thunderbird in large organizations</dd> - </dl> - - <p><span class="alllinks"><a href="/en-US/docs/tag/Thunderbird" title="tag/Thunderbird">View All...</a></span></p> - </td> - <td> - <h2 class="Community" id="Community" name="Community">Community</h2> - - <ul> - <li>Support is handled at <a href="https://support.mozilla.org/en-US/products/thunderbird">Mozilla Support</a></li> - <li>Extensions questions are frequently discussed on the dev-apps-thunderbird group: {{ DiscussionList("dev-apps-thunderbird", "mozilla.dev.apps.thunderbird") }}</li> - <li>Development discussion happens on the tb-planning mailing list: - <ul> - <li><a class="link-https" href="https://mail.mozilla.org/listinfo/tb-planning" title="https://mail.mozilla.org/listinfo/tb-planning">subscribe</a></li> - <li><a class="link-https" href="https://mail.mozilla.org/pipermail/tb-planning/" title="https://mail.mozilla.org/pipermail/tb-planning/">archives</a></li> - </ul> - </li> - <li><a href="http://forums.mozillazine.org/viewforum.php?f=50">Mozillazine forums</a></li> - <li><a href="http://www.mozillamessaging.com/">Mozilla Messaging web page</a></li> - <li><a class="link-irc" href="irc://irc.mozilla.org/thunderbird">#thunderbird on irc.mozilla.org</a> (for Users)</li> - <li><a class="link-irc" href="irc://irc.mozilla.org/maildev">#maildev on irc.mozilla.org</a> (for Developers)</li> - <li>a list of all <a href="http://wiki.mozilla.org/Thunderbird/CommunicationChannels" title="Thunderbird communication channels">Thunderbird communication channels</a></li> - </ul> - - <h2 class="Tools" id="Tools" name="Tools">Tools</h2> - - <ul> - <li><a href="http://ted.mielczarek.org/code/mozilla/extensiondev/">Extension developer's extension</a></li> - <li><a href="/en-US/docs/DOM_Inspector" title="DOM_Inspector">DOM Inspector</a></li> - </ul> - </td> - </tr> - </tbody> -</table> - -<p> </p> diff --git a/files/pt-br/novas_tabelas_de_compatibilidade_beta/index.html b/files/pt-br/novas_tabelas_de_compatibilidade_beta/index.html deleted file mode 100644 index 9044d61714..0000000000 --- a/files/pt-br/novas_tabelas_de_compatibilidade_beta/index.html +++ /dev/null @@ -1,26 +0,0 @@ ---- -title: 'Novas Tabelas de Compatibilidade [Beta]' -slug: Novas_Tabelas_de_Compatibilidade_Beta -translation_of: Archive/MDN/New_Compatibility_Tables_Beta ---- -<p> </p> - -<p>Você provavelmete chegou aqui através do link nos avisos beta das nossas novas tabelas de compatibilidade. (Não? Quer ver as novas tabelas? <a href="https://developer.mozilla.org/en-US/docs/MDN/Contribute/Howto/Be_a_beta_tester">Torne-se um testador beta.</a>)</p> - -<p>Agradecemos por nos ajudar a testá-las. Elas são parte de um grande projeto, no qual estamos transformado todos os nossos <a href="https://github.com/mdn/browser-compat-data">dados de compatibilidade em JSON estruturado</a>.</p> - -<p>As novas tabelas aparecerão nas páginas à medida que os dados forem convertidos para o novo formato.</p> - -<h2 id="Editando">Editando</h2> - -<p>Nossos dados de compatibilidade foram movidos para arquivos JSON no<a href="https://github.com/mdn/browser-compat-data"> repositório browser-compat-data no GitHub</a>.</p> - -<p>Para contribuir com os dados de compatibilidade, agora você pode enviar uma <em>pull request</em> ou reportar um erro no repositório.</p> - -<h2 id="Como_ajudar">Como ajudar</h2> - -<p>Se você encontrar um problema com os dados, por favor <a href="https://github.com/mdn/browser-compat-data">reporte o erro no repositório do GitHub</a>.</p> - -<p>Se a aparência ou funcionalidade das tabelas não parecem adequadas, clique no botão "<strong>Reportar um erro</strong>" no menu acima da tabela.</p> - -<p>Se você tiver um tempo, agradeceremos se você puder <a class="external external-icon" href="http://www.surveygizmo.com/s3/2342437/0b5ff6b6b8f6">completar nossa pesquisa</a>.</p> diff --git a/files/pt-br/nspr/index.html b/files/pt-br/nspr/index.html deleted file mode 100644 index 51a4540a75..0000000000 --- a/files/pt-br/nspr/index.html +++ /dev/null @@ -1,58 +0,0 @@ ---- -title: NSPR -slug: NSPR -translation_of: Mozilla/Projects/NSPR ---- -<p><strong>Netscape Portable Runtime (NSPR)</strong> provides a platform-neutral API for system level and libc-like functions. The API is used in the Mozilla clients, many of Red Hat's and Sun's server applications, and other software offerings.</p> -<h2 id="Getting_NSPR">Getting NSPR</h2> -<p>NSPR is available in various source and binary packages, depending on your platform:</p> -<ul> - <li><strong>Windows:</strong> Build the source package, using the <a href="/en-US/docs/NSPR_build_instructions" title="NSPR_build_instructions">NSPR build instructions</a>.</li> - <li><strong>Mac:</strong> Install the <a href="http://www.macports.org/" title="http://www.macports.org/">MacPorts</a> <em>nspr</em> package, or the <a href="http://mxcl.github.com/homebrew/" title="http://mxcl.github.com/homebrew/">Homebrew</a> <em>nspr</em> package.</li> - <li><strong>Ubuntu:</strong> Install the <em>libnspr4-dev</em> package via <code>apt-get.</code></li> - <li><strong>Debian:</strong> Install the <em>libnspr4-dev</em> package via <code>apt-get</code>.</li> -</ul> -<table class="topicpage-table"> - <tbody> - <tr> - <td> - <h2 class="Documentation" id="Documentation" name="Documentation">Documentation</h2> - <dl> - <dt> - <a href="/en-US/docs/NSPR/About_NSPR" title="NSPR/About_NSPR">About NSPR</a></dt> - <dd> - <small>This topic describes, in general terms, the goals of NSPR and a bit about how it does it.</small></dd> - <dt> - <a href="/en-US/docs/NSPR_API_Reference" title="NSPR_API_Reference">NSPR API Reference</a></dt> - <dd> - <small>The reference describes each API public macro, structure and function in the NSPR API.</small></dd> - <dt> - <a href="/en-US/docs/NSPR_build_instructions" title="NSPR_build_instructions">NSPR build instructions</a></dt> - <dd> - <small>How to checkout and build from source.</small></dd> - <dt> - <a href="/en-US/docs/NSPR_release_process" title="NSPR_release_process">NSPR release process</a></dt> - <dd> - <small>How to prepare an NSPR release.</small></dd> - <dt> - <a href="http://viewvc.svn.mozilla.org/vc/projects/mozilla.org/trunk/projects/nspr/" title="http://viewvc.svn.mozilla.org/vc/projects/mozilla.org/trunk/projects/nspr/">Legacy NSPR Content</a></dt> - <dd> - <small>Older NSPR content is available in SVN for browsing and/or migration to this site</small></dd> - </dl> - <p><span class="alllinks"><a href="/en-US/docs/tag/NSPR" title="tag/NSPR">View All...</a></span></p> - </td> - <td> - <h2 class="Community" id="Community" name="Community">Community</h2> - <ul> - <li>View Mozilla forums...</li> - </ul> - <p>{{DiscussionList("dev-tech-nspr", "mozilla.dev.tech.nspr")}}</p> - <h2 class="Related_Topics" id="Related_Topics" name="Related_Topics">Related Topics</h2> - <ul> - <li><a href="/en-US/docs/Necko" title="Necko">Necko</a>, <a href="/en-US/docs/NSS" title="NSS">NSS</a></li> - </ul> - </td> - </tr> - </tbody> -</table> -<p> </p> diff --git a/files/pt-br/nspr_api_reference/index.html b/files/pt-br/nspr_api_reference/index.html deleted file mode 100644 index e44caced40..0000000000 --- a/files/pt-br/nspr_api_reference/index.html +++ /dev/null @@ -1,686 +0,0 @@ ---- -title: Referência da API NSPR -slug: NSPR_API_Reference -translation_of: Mozilla/Projects/NSPR/Reference ---- -<p> </p> -<h3 id="Initial_Notes" name="Initial_Notes">Observações Preliminares</h3> -<div class="note"> - <ul> - <li>Estamos migrando a referência d<a class="external" href="http://www.mozilla.org/projects/nspr/reference/html/index.html">aqui</a> Se você estiver propenso a nos ajudar com essa migração, sua ajuda seria de grande estima.</li> - </ul> - <ul> - <li>Por favor, acrescente <span class="nowiki"><section id="Quick_Links"> -<ol> - <li><a href="/pt-BR/docs/Mozilla/Projects/NSPR">NSPR</a></li> - <li><a href="/pt-BR/docs/Mozilla/Projects/NSPR/About_NSPR">About NSPR</a></li> - <li><a href="/pt-BR/docs/Mozilla/Projects/NSPR/Reference">NSPR API Reference</a></li> - <li><a href="/pt-BR/docs/Mozilla/Projects/NSPR/NSPR_build_instructions">NSPR Build Instruction</a></li> - <li><a href="/pt-BR/docs/Mozilla/Projects/NSPR/Release_process">NSPR Release Process</a></li> - <li class="toggle"> - <details> - <summary>Introduction to NSPR</summary> - <ol> - <li><a href="/pt-BR/docs/Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR#NSPR_Naming_Conventions">NSPR Naming Conventions</a></li> - <li><a href="/pt-BR/docs/Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR#NSPR_Threads">NSPR Threads</a> - <ol> - <li><a href="/pt-BR/docs/Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR#Thread_Schedoling">Thread Scheduling</a> - <ol> - <li><a href="/pt-BR/docs/Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR#Setting_Thread_Priorities">Setting Thread Priorities</a></li> - <li><a href="/pt-BR/docs/Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR#Preempting_Threads">Preempting Threads</a></li> - <li><a href="/pt-BR/docs/Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR#Interrupting_Threads">Interrupting Threads</a></li> - </ol> - </li> - </ol> - </li> - <li><a href="/pt-BR/docs/Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR#NSPR_Thread_Synchronization">NSPR Thread Synchronization</a> - <ol> - <li><a href="/pt-BR/docs/Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR#Locks_and_Monitors">Locks and Monitors</a></li> - <li><a href="/pt-BR/docs/Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR#Condition_Variables">Condition Variables</a></li> - </ol> - </li> - <li><a href="/pt-BR/docs/Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR#NSPR_Sample_Code">NSPR Sample Code</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>NSPR Types</summary> - <ol> - <li><a href="/pt-BR/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Calling_Convention_Types">Calling Convention Types</a></li> - <li><a href="/pt-BR/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Algebraic_Types">Algebraic Types</a> - <ol> - <li><a href="/pt-BR/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#8-.2C_16-.2C_and_32-bit_Integer_Types">8-, 16-, and 32-bit Integer Types</a> - <ol> - <li><a href="/pt-BR/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Signed_Integers">Signed Integers</a></li> - <li><a href="/pt-BR/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Unsigned_Integers">Unsigned Integers</a></li> - </ol> - </li> - <li><a href="/pt-BR/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#64-bit_Integer_Types">64-bit Integer Types</a></li> - <li><a href="/pt-BR/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Floating-Point_Number_Type">Floating-Point Integer Type</a></li> - <li><a href="/pt-BR/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Native_OS_Integer_Types">Native OS Integer Types</a></li> - </ol> - </li> - <li><a href="/pt-BR/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Miscellaneous_Types">Miscellaneous Types</a> - <ol> - <li><a href="/pt-BR/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Size_Type">Size Type</a></li> - <li><a href="/pt-BR/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Pointer_Difference_Types">Pointer Difference Types</a></li> - <li><a href="/pt-BR/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Boolean_Types">Boolean Types</a></li> - <li><a href="/pt-BR/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Status_Type_for_Return_Values">Status Type for Return Values</a></li> - </ol> - </li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Threads</summary> - <ol> - <li><a href="/pt-BR/docs/Mozilla/Projects/NSPR/Reference/Threads#Threading_Types_and_Constants">Threading Types and Constants</a></li> - <li><a href="/pt-BR/docs/Mozilla/Projects/NSPR/Reference/Threads#Threading_Functions">Threading Functions</a> - <ol> - <li><a href="/pt-BR/docs/Mozilla/Projects/NSPR/Reference/Threads#Creating.2C_Joining.2C_and_Identifying_Threads">Creating, Joining, and Identifying Threads</a></li> - <li><a href="/pt-BR/docs/Mozilla/Projects/NSPR/Reference/Threads#Controlling_Thread_Priorities">Controlling Thread Priorities</a></li> - <li><a href="/pt-BR/docs/Mozilla/Projects/NSPR/Reference/Threads#Controlling_Per-Thread_Private_Data">Controlling Per-Thread Private Data</a></li> - <li><a href="/pt-BR/docs/Mozilla/Projects/NSPR/Reference/Threads#Interrupting_and_Yielding">Interrupting and Yielding</a></li> - <li><a href="/pt-BR/docs/Mozilla/Projects/NSPR/Reference/Threads#Setting_Global_Thread_Concurrency">Setting Global Thread Concurrency</a></li> - <li><a href="/pt-BR/docs/Mozilla/Projects/NSPR/Reference/Threads#Getting_a_Thread.27s_Scope">Getting a Thread's Scope</a></li> - </ol> - </li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Process Initialization</summary> - <ol> - <li><a href="/pt-BR/docs/Mozilla/Projects/NSPR/Reference/Process_Initialization#Identity_and_Versioning">Identity and Versioning</a> - <ol> - <li><a href="/pt-BR/docs/Mozilla/Projects/NSPR/Reference/Process_Initialization#Name_and_Version_Constants">Name and Version Constants</a></li> - </ol> - </li> - <li><a href="/pt-BR/docs/Mozilla/Projects/NSPR/Reference/Process_Initialization#Initialization_and_Cleanup">Initialization and Cleanup</a></li> - <li><a href="/pt-BR/docs/Mozilla/Projects/NSPR/Reference/Process_Initialization#Module_Initialization">Module Initialization</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Locks</summary> - <ol> - <li><a href="/pt-BR/docs/Mozilla/Projects/NSPR/Reference/Locks#Lock_Type">Lock Type</a></li> - <li><a href="/pt-BR/docs/Mozilla/Projects/NSPR/Reference/Locks#Lock_Functions">Lock Functions</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Condition Variables</summary> - <ol> - <li><a href="/pt-BR/docs/Mozilla/Projects/NSPR/Reference/Condition_Variables#Condition_Variable_Type">Condition Variable Type</a></li> - <li><a href="/pt-BR/docs/Mozilla/Projects/NSPR/Reference/Condition_Variables#Condition_Variable_Functions">Condition Variable Functions</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Monitors</summary> - <ol> - <li><a href="/pt-BR/docs/Mozilla/Projects/NSPR/Reference/Monitors#Monitor_Type">Monitor Type</a></li> - <li><a href="/pt-BR/docs/Mozilla/Projects/NSPR/Reference/Monitors#Monitor_Functions">Monitor Functions</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Cached Monitors</summary> - <ol> - <li><a href="/pt-BR/docs/Mozilla/Projects/NSPR/Reference/Cached_Monitors#Cached_Monitor_Functions">Cached Monitor Functions</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>I/O Types</summary> - <ol> - <li><a href="/pt-BR/docs/Mozilla/Projects/NSPR/Reference/I_O_Types#Directory_Type">Directory Type</a></li> - <li><a href="/pt-BR/docs/Mozilla/Projects/NSPR/Reference/I_O_Types#File_Descriptor_Types">File Descriptor Types</a></li> - <li><a href="/pt-BR/docs/Mozilla/Projects/NSPR/Reference/I_O_Types#File_Info_Types">File Info Types</a></li> - <li><a href="/pt-BR/docs/Mozilla/Projects/NSPR/Reference/I_O_Types#Network_Address_Types">Network Address Types</a></li> - <li><a href="/pt-BR/docs/Mozilla/Projects/NSPR/Reference/I_O_Types#Types_Used_with_Socket_Options_Functions">Types Used with Socket Options Functions</a></li> - <li><a href="/pt-BR/docs/Mozilla/Projects/NSPR/Reference/I_O_Types#Type_Used_with_Memory-Mapped_I.2FO">Type Used with Memory-Mapped I/O</a></li> - <li><a href="/pt-BR/docs/Mozilla/Projects/NSPR/Reference/I_O_Types#Offset_Interpretation_for_Seek_Functions">Offset Interpretation for Seek Functions</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>I/O Functions</summary> - <ol> - <li><a href="/pt-BR/docs/Mozilla/Projects/NSPR/Reference/I_O_Functions#Functions_that_Operate_on_Pathnames">Functions that Operate on Pathnames</a></li> - <li><a href="/pt-BR/docs/Mozilla/Projects/NSPR/Reference/I_O_Functions#Functions_that_Act_on_File_Descriptors">Functions that Act on File Descriptors</a></li> - <li><a href="/pt-BR/docs/Mozilla/Projects/NSPR/Reference/I_O_Functions#Directory_I.2FO_Functions">Directory I/O Functions</a></li> - <li><a href="/pt-BR/docs/Mozilla/Projects/NSPR/Reference/I_O_Functions#Socket_Manipolation_Functions">Socket Manipolation Functions</a></li> - <li><a href="/pt-BR/docs/Mozilla/Projects/NSPR/Reference/I_O_Functions#Converting_Between_Host_and_Network_Addresses">Converting Between Host and Network Addresses</a></li> - <li><a href="/pt-BR/docs/Mozilla/Projects/NSPR/Reference/I_O_Functions#Memory-Mapped_I.2FO_Functions">Memory-Mapped I/O Functions</a></li> - <li><a href="/pt-BR/docs/Mozilla/Projects/NSPR/Reference/I_O_Functions#Anonymous_Pipe_Function">Anonymous Pipe Function</a></li> - <li><a href="/pt-BR/docs/Mozilla/Projects/NSPR/Reference/I_O_Functions#Polling_Functions">Polling Functions</a></li> - <li><a href="/pt-BR/docs/Mozilla/Projects/NSPR/Reference/I_O_Functions#Pollable_Events">Pollable Events</a></li> - <li><a href="/pt-BR/docs/Mozilla/Projects/NSPR/Reference/I_O_Functions#Manipulating_Layers">Manipulating Layers</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Network Addresses</summary> - <ol> - <li><a href="/pt-BR/docs/Mozilla/Projects/NSPR/Reference/Network_Addresses#Network_Address_Types_and_Constants">Network Address Types and Constants</a></li> - <li><a href="/pt-BR/docs/Mozilla/Projects/NSPR/Reference/Network_Addresses#Network_Address_Functions">Network Address Functions</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Atomic Operations</summary> - <ol> - <li><a href="/pt-BR/docs/Mozilla/Projects/NSPR/Reference/PR_AtomicIncrement">PR_AtomicIncrement</a></li> - <li><a href="/pt-BR/docs/Mozilla/Projects/NSPR/Reference/PR_AtomicDecrement">PR_AtomicDecrement</a></li> - <li><a href="/pt-BR/docs/Mozilla/Projects/NSPR/Reference/PR_AtomicSet">PR_AtomicSet</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Interval Timing</summary> - <ol> - <li><a href="/pt-BR/docs/Mozilla/Projects/NSPR/Reference/Interval_Timing#Interval_Time_Type_and_Constants">Interval Time Type and Constants</a></li> - <li><a href="/pt-BR/docs/Mozilla/Projects/NSPR/Reference/Interval_Timing#Interval_Functions">Interval Functions</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Date and Time</summary> - <ol> - <li><a href="/pt-BR/docs/Mozilla/Projects/NSPR/Reference/Date_and_Time#Types_and_Constants">Types and Constants</a></li> - <li><a href="/pt-BR/docs/Mozilla/Projects/NSPR/Reference/Date_and_Time#Time_Parameter_Callback_Functions">Time Parameter Callback Functions</a></li> - <li><a href="/pt-BR/docs/Mozilla/Projects/NSPR/Reference/Date_and_Time#Functions">Functions</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Memory Management Operations</summary> - <ol> - <li><a href="/pt-BR/docs/Mozilla/Projects/NSPR/Reference/Memory_Management_Operations#Memory_Allocation_Functions">Memory Allocation Functions</a></li> - <li><a href="/pt-BR/docs/Mozilla/Projects/NSPR/Reference/Memory_Management_Operations#Memory_Allocation_Macros">Memory Allocation Macros</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>String Operations</summary> - <ol> - <li><a href="/pt-BR/docs/Mozilla/Projects/NSPR/Reference/PL_strlen">PL_strlen</a></li> - <li><a href="/pt-BR/docs/Mozilla/Projects/NSPR/Reference/PL_strcpy">PL_strcpy</a></li> - <li><a href="/pt-BR/docs/Mozilla/Projects/NSPR/Reference/PL_strdup">PL_strdup</a></li> - <li><a href="/pt-BR/docs/Mozilla/Projects/NSPR/Reference/PL_strfree">PL_strfree</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Floating Point Number to String Conversion</summary> - <ol> - <li><a href="/pt-BR/docs/Mozilla/Projects/NSPR/Reference/PR_strtod">PR_strtod</a></li> - <li><a href="/pt-BR/docs/Mozilla/Projects/NSPR/Reference/PR_dtoa">PR_dtoa</a></li> - <li><a href="/pt-BR/docs/Mozilla/Projects/NSPR/Reference/PR_cnvtf">PR_cnvtf</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Linked Lists</summary> - <ol> - <li><a href="/pt-BR/docs/Mozilla/Projects/NSPR/Reference/Linked_Lists#Linked_List_Types">Linked List Types</a> - <ol> - <li><a href="/pt-BR/docs/Mozilla/Projects/NSPR/Reference/PRCList">PRCList</a></li> - </ol> - </li> - <li><a href="/pt-BR/docs/Mozilla/Projects/NSPR/Reference/Linked_Lists#Linked_List_Macros">Linked List Macros</a> - <ol> - <li><a href="/pt-BR/docs/Mozilla/Projects/NSPR/Reference/PR_INIT_CLIST">PR_INIT_CLIST</a></li> - <li><a href="/pt-BR/docs/Mozilla/Projects/NSPR/Reference/PR_INIT_STATIC_CLIST">PR_INIT_STATIC_CLIST</a></li> - <li><a href="/pt-BR/docs/Mozilla/Projects/NSPR/Reference/PR_APPEND_LINK">PR_APPEND_LINK</a></li> - <li><a href="/pt-BR/docs/Mozilla/Projects/NSPR/Reference/PR_INSERT_LINK">PR_INSERT_LINK</a></li> - <li><a href="/pt-BR/docs/Mozilla/Projects/NSPR/Reference/PR_NEXT_LINK">PR_NEXT_LINK</a></li> - <li><a href="/pt-BR/docs/Mozilla/Projects/NSPR/Reference/PR_PREV_LINK">PR_PREV_LINK</a></li> - <li><a href="/pt-BR/docs/Mozilla/Projects/NSPR/Reference/PR_REMOVE_LINK">PR_REMOVE_LINK</a></li> - <li><a href="/pt-BR/docs/Mozilla/Projects/NSPR/Reference/PR_REMOVE_AND_INIT_LINK">PR_REMOVE_AND_INIT_LINK</a></li> - <li><a href="/pt-BR/docs/Mozilla/Projects/NSPR/Reference/PR_INSERT_BEFORE">PR_INSERT_BEFORE</a></li> - <li><a href="/pt-BR/docs/Mozilla/Projects/NSPR/Reference/PR_INSERT_AFTER">PR_INSERT_AFTER</a></li> - </ol> - </li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Dynamic Library Linking</summary> - <ol> - <li><a href="/pt-BR/docs/Mozilla/Projects/NSPR/Reference/Dynamic_Library_Linking#Library_Linking_Types">Library Linking Types</a> - <ol> - <li><a href="/pt-BR/docs/Mozilla/Projects/NSPR/Reference/PRLibrary">PRLibrary</a></li> - <li><a href="/pt-BR/docs/Mozilla/Projects/NSPR/Reference/PRStaticLinkTable">PRStaticLinkTable</a></li> - </ol> - </li> - <li><a href="/pt-BR/docs/Mozilla/Projects/NSPR/Reference/Dynamic_Library_Linking#Library_Linking_Functions">Library Linking Functions</a> - <ol> - <li><a href="/pt-BR/docs/Mozilla/Projects/NSPR/Reference/PR_SetLibraryPath">PR_SetLibraryPath</a></li> - <li><a href="/pt-BR/docs/Mozilla/Projects/NSPR/Reference/PR_GetLibraryPath">PR_GetLibraryPath</a></li> - <li><a href="/pt-BR/docs/Mozilla/Projects/NSPR/Reference/PR_GetLibraryName">PR_GetLibraryName</a></li> - <li><a href="/pt-BR/docs/Mozilla/Projects/NSPR/Reference/PR_FreeLibraryName">PR_FreeLibraryName</a></li> - <li><a href="/pt-BR/docs/Mozilla/Projects/NSPR/Reference/PR_LoadLibrary">PR_LoadLibrary</a></li> - <li><a href="/pt-BR/docs/Mozilla/Projects/NSPR/Reference/PR_UnloadLibrary">PR_UnloadLibrary</a></li> - <li><a href="/pt-BR/docs/Mozilla/Projects/NSPR/Reference/PR_FindSymbol">PR_FindSymbol</a></li> - <li><a href="/pt-BR/docs/Mozilla/Projects/NSPR/Reference/PR_FindSymbolAndLibrary">PR_FindSymbolAndLibrary</a></li> - <li><a href="/pt-BR/docs/Mozilla/Projects/NSPR/Reference/Dynamic_Library_Linking#Finding_Symbols_Defined_in_the_Main_Executable_Program">Finding Symbols Defined in the Main Executable Program</a></li> - </ol> - </li> - <li><a href="/pt-BR/docs/Mozilla/Projects/NSPR/Reference/Dynamic_Library_Linking#Platform_Notes">Platform Notes</a> - <ol> - <li><a href="/pt-BR/docs/Mozilla/Projects/NSPR/Reference/Dynamic_Library_Linking#Dynamic_Library_Search_Path">Dynamic Library Search Path</a></li> - <li><a href="/pt-BR/docs/Mozilla/Projects/NSPR/Reference/Dynamic_Library_Linking#Exporting_Symbols_from_the_Main_Executable_Program">Exporting Symbols from the Main Executable Program</a></li> - </ol> - </li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Process Management and Interprocess Communication</summary> - <ol> - <li><a href="/pt-BR/docs/Mozilla/Projects/NSPR/Reference/Process_Management_and_Interprocess_Communication#Process_Management_Types_and_Constants">Process Management Types and Constants</a> - <ol> - <li><a href="/pt-BR/docs/Mozilla/Projects/NSPR/Reference/PRProcess">PRProcess</a></li> - <li><a href="/pt-BR/docs/Mozilla/Projects/NSPR/Reference/PRProcessAttr">PRProcessAttr</a></li> - </ol> - </li> - <li><a href="/pt-BR/pt-BR/docs/Mozilla/Projects/NSPR/Reference/Process_Management_and_Interprocess_Communication#Process_Management_Functions">Process Management Functions</a> - <ol> - <li><a href="/pt-BR/docs/Mozilla/Projects/NSPR/Reference/Process_Management_and_Interprocess_Communication#Setting_the_Attributes_of_a_New_Process">Setting the Attributes of a New Process</a></li> - <li><a href="/pt-BR/docs/Mozilla/Projects/NSPR/Reference/Process_Management_and_Interprocess_Communication#Creating_and_Managing_Processes">Creating and Managing Processes</a></li> - </ol> - </li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Logging</summary> - <ol> - <li><a href="/pt-BR/docs/Mozilla/Projects/NSPR/Reference/Logging#Conditional_Compilation_and_Execution">Conditional Compilation and Execution</a></li> - <li><a href="/pt-BR/docs/Mozilla/Projects/NSPR/Reference/Logging#Log_Types_and_Variables">Log Types and Variables</a> - <ol> - <li><a href="/pt-BR/docs/Mozilla/Projects/NSPR/Reference/PRLogModoleInfo">PRLogModoleInfo</a></li> - <li><a href="/pt-BR/docs/Mozilla/Projects/NSPR/Reference/PRLogModoleLevel">PRLogModoleLevel</a></li> - <li><a href="/pt-BR/docs/Mozilla/Projects/NSPR/Reference/NSPR_LOG_MODULES">NSPR_LOG_MODULES</a></li> - <li><a href="/pt-BR/docs/Mozilla/Projects/NSPR/Reference/NSPR_LOG_FILE">NSPR_LOG_FILE</a></li> - </ol> - </li> - <li><a href="/pt-BR/docs/Mozilla/Projects/NSPR/Reference/Logging#Logging_Functions_and_Macros">Logging Functions and Macros</a> - <ol> - <li><a href="/pt-BR/docs/Mozilla/Projects/NSPR/Reference/PR_NewLogModole">PR_NewLogModole</a></li> - <li><a href="/pt-BR/docs/Mozilla/Projects/NSPR/Reference/PR_SetLogFile">PR_SetLogFile</a></li> - <li><a href="/pt-BR/docs/Mozilla/Projects/NSPR/Reference/PR_SetLogBuffering">PR_SetLogBuffering</a>/li> - </li><li><a href="/pt-BR/docs/Mozilla/Projects/NSPR/Reference/PR_LogPrint">PR_LogPrint</a></li> - <li><a href="/pt-BR/docs/Mozilla/Projects/NSPR/Reference/PR_LogFlush">PR_LogFlush</a></li> - <li><a href="/pt-BR/docs/Mozilla/Projects/NSPR/Reference/PR_LOG_TEST">PR_LOG_TEST</a></li> - <li><a href="/pt-BR/docs/Mozilla/Projects/NSPR/Reference/PR_LOG">PR_LOG</a></li> - <li><a href="/pt-BR/docs/Mozilla/Projects/NSPR/Reference/PR_Assert_">PR_Assert</a></li> - <li><a href="/pt-BR/docs/Mozilla/Projects/NSPR/Reference/PR_ASSERT">PR_ASSERT</a></li> - <li><a href="/pt-BR/docs/Mozilla/Projects/NSPR/Reference/PR_NOT_REACHED">PR_NOT_REACHED</a></li> - </ol> - </li> - <li><a href="/pt-BR/docs/Mozilla/Projects/NSPR/Reference/Logging#Use_Example">Use Example</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Named Shared Memory</summary> - <ol> - <li><a href="/pt-BR/docs/Mozilla/Projects/NSPR/Reference/Named_Shared_Memory#Shared_Memory_Protocol">Shared Memory Protocol</a></li> - <li><a href="/pt-BR/docs/Mozilla/Projects/NSPR/Reference/Named_Shared_Memory#Named_Shared_Memory_Functions">Named Shared Memory Functions</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Anonymous Shared Memory</summary> - <ol> - <li><a href="/pt-BR/docs/Mozilla/Projects/NSPR/Reference/Anonymous_Shared_Memory#Anonymous_Memory_Protocol">Anonymous Memory Protocol</a></li> - <li><a href="/pt-BR/docs/Mozilla/Projects/NSPR/Reference/Anonymous_Shared_Memory#Anonymous_Shared_Memory_Functions">Anonymous Shared Memory Functions</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>IPC Semaphores</summary> - <ol> - <li><a href="/pt-BR/docs/Mozilla/Projects/NSPR/Reference/IPC_Semaphores#IPC_Semaphore_Functions">IPC Semaphore Functions</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Thread Pools</summary> - <ol> - <li><a href="/pt-BR/docs/Mozilla/Projects/NSPR/Reference/Thread_Pools#Thread_Pool_Types">Thread Pool Types</a></li> - <li><a href="/pt-BR/docs/Mozilla/Projects/NSPR/Reference/Thread_Pools#Thread_Pool_Functions">Thread Pool Functions</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Random Number Generator</summary> - <ol> - <li><a href="/pt-BR/docs/Mozilla/Projects/NSPR/Reference/Random_Number_Generator#Random_Number_Generator_Function">Random Number Generator Function</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Hash Tables</summary> - <ol> - <li><a href="/pt-BR/docs/Mozilla/Projects/NSPR/Reference/Hash_Tables#Hash_Tables_and_Type_Constants">Hash Tables and Type Constants</a></li> - <li><a href="/pt-BR/docs/Mozilla/Projects/NSPR/Reference/Hash_Tables#Hash_Table_Functions">Hash Table Functions</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>NSPR Error Handling</summary> - <ol> - <li><a href="/pt-BR/docs/Mozilla/Projects/NSPR/Reference/NSPR_Error_Handling#Error_Type">Error Type</a></li> - <li><a href="/pt-BR/docs/Mozilla/Projects/NSPR/Reference/NSPR_Error_Handling#Error_Functions">Error Functions</a></li> - <li><a href="/pt-BR/docs/Mozilla/Projects/NSPR/Reference/NSPR_Error_Handling#Error_Codes">Error Codes</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Contribute</summary> - <ol> - <li><a href="/pt-BR/docs/MDN/Doc_status/NSPR"></a></li> - <li><a href="/pt-BR/docs/MDN">The MDN Project</a></li> - </ol> - </details> - </li> - </ol> -</section></span> logo após breadcrumbs [trilha de pão]. Isso vai acrescentar um link [vínculo] temporário de volta a essa página (até que possamos usar a extensão breadcrumbs para isso).</li> - </ul> - <ul> - <li>Estou prpenso a adiar <strong>QUAISQUER</strong> edições do texto, até que esse maciço texto seja migrago para cá (com redirecionamentos e tudo mais) de modo que esse texto se torne a "única" fonte de Referência da NSPR API.</li> - </ul> -</div> -<p> </p> -<h3 id="Introduction_to_NSPR" name="Introduction_to_NSPR"><a href="/en/NSPR_API_Reference/Introduction_to_NSPR" title="en/NSPR_API_Reference/Introduction_to_NSPR">Introdução a NSPR</a></h3> -<ul> - <li><a href="/en/NSPR_API_Reference/Introduction_to_NSPR#NSPR_Naming_Conventions" title="en/NSPR_API_Reference/Introduction_to_NSPR#NSPR_Naming_Conventions">Convenções de nomeação da NSPR</a></li> - <li><a href="/en/NSPR_API_Reference/Introduction_to_NSPR#NSPR_Threads" title="en/NSPR_API_Reference/Introduction_to_NSPR#NSPR_Threads">Encadeamentos [Threads] em NSPR</a> - <ul> - <li><a href="/en/NSPR_API_Reference/Introduction_to_NSPR#Thread_Scheduling" title="en/NSPR_API_Reference/Introduction_to_NSPR#Thread_Scheduling">Agendamento de Encadeamentos [Thread Scheduling]</a> - <ul> - <li><a href="/en/NSPR_API_Reference/Introduction_to_NSPR#Setting_Thread_Priorities" title="en/NSPR_API_Reference/Introduction_to_NSPR#Setting_Thread_Priorities">Estabelecendo as Prioridades dos Encadeamentos</a></li> - <li><a href="/en/NSPR_API_Reference/Introduction_to_NSPR#Preempting_Threads" title="en/NSPR_API_Reference/Introduction_to_NSPR#Preempting_Threads">Encdeamentos Preemptivos</a></li> - <li><a href="/en/NSPR_API_Reference/Introduction_to_NSPR#Interrupting_Threads" title="en/NSPR_API_Reference/Introduction_to_NSPR#Interrupting_Threads">Interrompendo Encadeamentos</a></li> - </ul> - </li> - </ul> - </li> - <li><a href="/en/NSPR_API_Reference/Introduction_to_NSPR#NSPR_Thread_Synchronization" title="en/NSPR_API_Reference/Introduction_to_NSPR#NSPR_Thread_Synchronization">Sincronização de Encadeamentos em NSPR</a> - <ul> - <li><a href="/en/NSPR_API_Reference/Introduction_to_NSPR#Locks_and_Monitors" title="en/NSPR_API_Reference/Introduction_to_NSPR#Locks_and_Monitors">Travas [Locks] e Monitores [Monitors]</a></li> - <li><a href="/en/NSPR_API_Reference/Introduction_to_NSPR#Condition_Variables" title="en/NSPR_API_Reference/Introduction_to_NSPR#Condition_Variables">Variáveis Condicionais</a></li> - </ul> - </li> - <li><a href="/en/NSPR_API_Reference/Introduction_to_NSPR#NSPR_Sample_Code" title="en/NSPR_API_Reference/Introduction_to_NSPR#NSPR_Sample_Code">Código de amostra da NSPR</a></li> -</ul> -<h3 id="NSPR_Types" name="NSPR_Types"><a href="/en/NSPR_API_Reference/NSPR_Types" title="en/NSPR_API_Reference/NSPR_Types">Tipos em NSPR</a></h3> -<ul> - <li><a href="/en/NSPR_API_Reference/NSPR_Types#Calling_Convention_Types" title="en/NSPR_API_Reference/NSPR_Types#Calling_Convention_Types">Tipos de Convenções de Chamada</a></li> - <li><a href="/en/NSPR_API_Reference/NSPR_Types#Algebraic_Types" title="en/NSPR_API_Reference/NSPR_Types#Algebraic_Types">Typos Algebricos</a> - <ul> - <li><a href="/en/NSPR_API_Reference/NSPR_Types#8-.2C_16-.2C_and_32-bit_Integer_Types" title="en/NSPR_API_Reference/NSPR_Types#8-.2C_16-.2C_and_32-bit_Integer_Types">Tipos Integrais de 8-, 16-, and 32-bit</a> - <ul> - <li><a href="/en/NSPR_API_Reference/NSPR_Types#Signed_Integers" title="en/NSPR_API_Reference/NSPR_Types#Signed_Integers">Inteiros com Sinal</a></li> - <li><a href="/en/NSPR_API_Reference/NSPR_Types#Unsigned_Integers" title="en/NSPR_API_Reference/NSPR_Types#Unsigned_Integers">Inteiros sem Sinal</a></li> - </ul> - </li> - <li><a href="/en/NSPR_API_Reference/NSPR_Types#64-bit_Integer_Types" title="en/NSPR_API_Reference/NSPR_Types#64-bit_Integer_Types">Tipos Inteiros de 64-bit</a></li> - <li><a href="/en/NSPR_API_Reference/NSPR_Types#Floating-Point_Number_Type" title="en/NSPR_API_Reference/NSPR_Types#Floating-Point_Number_Type">Tipo Inteiro em Ponto Flutuante</a></li> - <li><a href="/en/NSPR_API_Reference/NSPR_Types#Native_OS_Integer_Types" title="en/NSPR_API_Reference/NSPR_Types#Native_OS_Integer_Types">Tipos Integrais do Sistema Operacional Nativo</a></li> - </ul> - </li> - <li><a href="/en/NSPR_API_Reference/NSPR_Types#Miscellaneous_Types" title="en/NSPR_API_Reference/NSPR_Types#Miscellaneous_Types">Tipos Diversos</a> - <ul> - <li><a href="/en/NSPR_API_Reference/NSPR_Types#Size_Type" title="en/NSPR_API_Reference/NSPR_Types#Size_Type">Tipo para Medida</a></li> - <li><a href="/en/NSPR_API_Reference/NSPR_Types#Pointer_Difference_Types" title="en/NSPR_API_Reference/NSPR_Types#Pointer_Difference_Types">Tipos para Diferença de Ponteiro</a></li> - <li><a href="/en/NSPR_API_Reference/NSPR_Types#Boolean_Types" title="en/NSPR_API_Reference/NSPR_Types#Boolean_Types">Tipos Booleanos</a></li> - <li><a href="/en/NSPR_API_Reference/NSPR_Types#Status_Type_for_Return_Values" title="en/NSPR_API_Reference/NSPR_Types#Status_Type_for_Return_Values">Tipo Status para Valores de Retorno</a></li> - </ul> - </li> -</ul> -<h3 id="Threads" name="Threads"><a href="/en/NSPR_API_Reference/Threads" title="en/NSPR_API_Reference/Threads">Encadeamentos [Threads</a>]</h3> -<ul> - <li><a href="/en/NSPR_API_Reference/Threads#Threading_Types_and_Constants" title="en/NSPR_API_Reference/Threads#Threading_Types_and_Constants">Constantes e Tipos para Encadeamento </a></li> - <li><a href="/en/NSPR_API_Reference/Threads#Threading_Functions" title="en/NSPR_API_Reference/Threads#Threading_Functions">Funções de Encadeamento</a> - <ul> - <li><a href="/en/NSPR_API_Reference/Threads#Creating.2C_Joining.2C_and_Identifying_Threads" title="en/NSPR_API_Reference/Threads#Creating.2C_Joining.2C_and_Identifying_Threads">Criando, unindo e identificando Encadeamentos</a></li> - <li><a href="/en/NSPR_API_Reference/Threads#Controlling_Thread_Priorities" title="en/NSPR_API_Reference/Threads#Controlling_Thread_Priorities">Controlando as Prioridades do Encadeamento</a></li> - <li><a href="/en/NSPR_API_Reference/Threads#Controlling_Per-Thread_Private_Data" title="en/NSPR_API_Reference/Threads#Controlling_Per-Thread_Private_Data">Controlando Dados Privados por Encadeamento</a></li> - <li><a href="/en/NSPR_API_Reference/Threads#Interrupting_and_Yielding" title="en/NSPR_API_Reference/Threads#Interrupting_and_Yielding">Interrompendo e Produzindo</a></li> - <li><a href="/en/NSPR_API_Reference/Threads#Setting_Global_Thread_Concurrency" title="en/NSPR_API_Reference/Threads#Setting_Global_Thread_Concurrency">Estabelendo a Concorrência de Encadeamento Global</a></li> - <li><a href="/en/NSPR_API_Reference/Threads#Getting_a_Thread.27s_Scope" title="en/NSPR_API_Reference/Threads#Getting_a_Thread.27s_Scope">Obtendo o Escoppo de um Encadeamento</a></li> - </ul> - </li> -</ul> -<h3 id="Process_Initialization" name="Process_Initialization"><a href="/en/NSPR_API_Reference/Process_Initialization" title="en/NSPR_API_Reference/Process_Initialization">Inicialização de Processo</a></h3> -<ul> - <li><a href="/en/NSPR_API_Reference/Process_Initialization#Identity_and_Versioning" title="en/NSPR_API_Reference/Process_Initialization#Identity_and_Versioning">Identidade e Versão</a> - <ul> - <li><a href="/en/NSPR_API_Reference/Process_Initialization#Name_and_Version_Constants" title="en/NSPR_API_Reference/Process_Initialization#Name_and_Version_Constants">Constantes de Nome e Versão</a></li> - </ul> - </li> - <li><a href="/en/NSPR_API_Reference/Process_Initialization#Initialization_and_Cleanup" title="en/NSPR_API_Reference/Process_Initialization#Initialization_and_Cleanup">Initialização e Limpeza</a></li> - <li><a href="/en/NSPR_API_Reference/Process_Initialization#Module_Initialization" title="en/NSPR_API_Reference/Process_Initialization#Module_Initialization">Inicialização de Módulo</a></li> -</ul> -<h3 id="Locks" name="Locks"><a href="/en/NSPR_API_Reference/Locks" title="en/NSPR_API_Reference/Locks">Travas [Locks</a>]</h3> -<ul> - <li><a href="/en/NSPR_API_Reference/Locks#Lock_Type" title="en/NSPR_API_Reference/Locks#Lock_Type">Tipo para Trava</a></li> - <li><a href="/en/NSPR_API_Reference/Locks#Lock_Functions" title="en/NSPR_API_Reference/Locks#Lock_Functions">Funções para Trava</a></li> -</ul> -<h3 id="Condition_Variables" name="Condition_Variables"><a href="/en/NSPR_API_Reference/Condition_Variables" title="en/NSPR_API_Reference/Condition_Variables">Variáveis Condicionais</a></h3> -<ul> - <li><a href="/en/NSPR_API_Reference/Condition_Variables#Condition_Variable_Type" title="en/NSPR_API_Reference/Condition_Variables#Condition_Variable_Type">Tipo para Variável Condicional</a></li> - <li><a href="/en/NSPR_API_Reference/Condition_Variables#Condition_Variable_Functions" title="en/NSPR_API_Reference/Condition_Variables#Condition_Variable_Functions">Funções para Variável Condicional</a></li> -</ul> -<h3 id="Monitors" name="Monitors"><a href="/en/NSPR_API_Reference/Monitors" title="en/NSPR_API_Reference/Monitors">Monitores</a></h3> -<ul> - <li><a href="/en/NSPR_API_Reference/Monitors#Monitor_Type" title="en/NSPR_API_Reference/Monitors#Monitor_Type">Tipo para Monitor</a></li> - <li><a href="/en/NSPR_API_Reference/Monitors#Monitor_Functions" title="en/NSPR_API_Reference/Monitors#Monitor_Functions">Funções para Monitor</a></li> -</ul> -<h3 id="Cached_Monitors" name="Cached_Monitors"><a href="/en/NSPR_API_Reference/Cached_Monitors" title="en/NSPR_API_Reference/Cached_Monitors">Monitores em Cache [esconderijo]</a></h3> -<ul> - <li><a href="/en/NSPR_API_Reference/Cached_Monitors#Cached_Monitor_Functions" title="en/NSPR_API_Reference/Cached_Monitors#Cached_Monitor_Functions">Funções para Monitor em Cache</a></li> -</ul> -<h3 id="I.2FO_Types" name="I.2FO_Types"><a href="/en/NSPR_API_Reference/I_O_Types" title="en/NSPR_API_Reference/I_O_Types">Tipos de E/S [I/O] </a></h3> -<ul> - <li><a href="/en/NSPR_API_Reference/I_O_Types#Directory_Type" title="en/NSPR_API_Reference/I_O_Types#Directory_Type">Tipo para Diretório</a></li> - <li><a href="/en/NSPR_API_Reference/I_O_Types#File_Descriptor_Types" title="en/NSPR_API_Reference/I_O_Types#File_Descriptor_Types">Tipos para Descritores de Arquivo</a></li> - <li><a href="/en/NSPR_API_Reference/I_O_Types#File_Info_Types" title="en/NSPR_API_Reference/I_O_Types#File_Info_Types">Tipos paraInformação de Arquivo</a></li> - <li><a href="/en/NSPR_API_Reference/I_O_Types#Network_Address_Types" title="en/NSPR_API_Reference/I_O_Types#Network_Address_Types">Tipos para Endereço de Rede</a></li> - <li><a href="/en/NSPR_API_Reference/I_O_Types#Types_Used_with_Socket_Options_Functions" title="en/NSPR_API_Reference/I_O_Types#Types_Used_with_Socket_Options_Functions">Tipos usados com Funções de Opções de Soquete</a></li> - <li><a href="/en/NSPR_API_Reference/I_O_Types#Type_Used_with_Memory-Mapped_I.2FO" title="en/NSPR_API_Reference/I_O_Types#Type_Used_with_Memory-Mapped_I.2FO">Tipo usado com E/S baseada em Mapa de Memória</a></li> - <li><a href="/en/NSPR_API_Reference/I_O_Types#Offset_Interpretation_for_Seek_Functions" title="en/NSPR_API_Reference/I_O_Types#Offset_Interpretation_for_Seek_Functions">Interpretação de Deslocamento pra Funções de Busca</a></li> -</ul> -<h3 id="I.2FO_Functions" name="I.2FO_Functions"><a href="/en/NSPR_API_Reference/I_O_Functions" title="en/NSPR_API_Reference/I_O_Functions">Funções de E/S</a></h3> -<ul> - <li><a href="/en/NSPR_API_Reference/I_O_Functions#Functions_that_Operate_on_Pathnames" title="en/NSPR_API_Reference/I_O_Functions#Functions_that_Operate_on_Pathnames">Funções que Operam em Nomes de Caminhos</a></li> - <li><a href="/en/NSPR_API_Reference/I_O_Functions#Functions_that_Act_on_File_Descriptors" title="en/NSPR_API_Reference/I_O_Functions#Functions_that_Act_on_File_Descriptors">Funções que Agem sobre Descriptores de Arquivo</a></li> - <li><a href="/en/NSPR_API_Reference/I_O_Functions#Directory_I.2FO_Functions" title="en/NSPR_API_Reference/I_O_Functions#Directory_I.2FO_Functions">Funções de E/S de Diretório</a></li> - <li><a href="/en/NSPR_API_Reference/I_O_Functions#Socket_Manipulation_Functions" title="en/NSPR_API_Reference/I_O_Functions#Socket_Manipulation_Functions">Funções de Manipulação de Soquete</a></li> - <li><a href="/en/NSPR_API_Reference/I_O_Functions#Converting_Between_Host_and_Network_Addresses" title="en/NSPR_API_Reference/I_O_Functions#Converting_Between_Host_and_Network_Addresses">Conversão entre Endereços de Host e Rede</a></li> - <li><a href="/en/NSPR_API_Reference/I_O_Functions#Memory-Mapped_I.2FO_Functions" title="en/NSPR_API_Reference/I_O_Functions#Memory-Mapped_I.2FO_Functions">Funções de E/S baseada em Mapa de Memória</a></li> - <li><a href="/en/NSPR_API_Reference/I_O_Functions#Anonymous_Pipe_Function" title="en/NSPR_API_Reference/I_O_Functions#Anonymous_Pipe_Function">Funções Anônimas de Pipe [Canalização]</a></li> - <li><a href="/en/NSPR_API_Reference/I_O_Functions#Polling_Functions" title="en/NSPR_API_Reference/I_O_Functions#Polling_Functions">Funções de Escrutinio [Polling]</a></li> - <li><a href="/en/NSPR_API_Reference/I_O_Functions#Pollable_Events" title="en/NSPR_API_Reference/I_O_Functions#Pollable_Events">Eventos Escrutináveis</a></li> - <li><a href="/en/NSPR_API_Reference/I_O_Functions#Manipulating_Layers" title="en/NSPR_API_Reference/I_O_Functions#Manipulating_Layers">Manipulando Camadas</a></li> -</ul> -<h3 id="Network_Addresses" name="Network_Addresses"><a href="/en/NSPR_API_Reference/Network_Addresses" title="en/NSPR_API_Reference/Network_Addresses">Endereços de Rede</a></h3> -<ul> - <li><a href="/en/NSPR_API_Reference/Network_Addresses#Network_Address_Types_and_Constants" title="en/NSPR_API_Reference/Network_Addresses#Network_Address_Types_and_Constants">Tipos e Constantes de Endereços de Rede</a></li> - <li><a href="/en/NSPR_API_Reference/Network_Addresses#Network_Address_Functions" title="en/NSPR_API_Reference/Network_Addresses#Network_Address_Functions">Funções para Endereços de Rede</a></li> -</ul> -<h3 id="Atomic_Operations" name="Atomic_Operations"><a href="/en/NSPR_API_Reference/Atomic_Operations" title="en/NSPR_API_Reference/Atomic_Operations">Operações Atómicas</a></h3> -<ul> - <li><a href="/en/PR_AtomicIncrement" title="en/PR_AtomicIncrement">PR_AtomicIncrement</a></li> - <li><a href="/en/PR_AtomicDecrement" title="en/PR_AtomicDecrement">PR_AtomicDecrement</a></li> - <li><a href="/en/PR_AtomicSet" title="en/PR_AtomicSet">PR_AtomicSet</a></li> -</ul> -<h3 id="Interval_Timing" name="Interval_Timing"><a href="/en/NSPR_API_Reference/Interval_Timing" title="en/NSPR_API_Reference/Interval_Timing">Cronometragem de Intervalo</a></h3> -<ul> - <li><a href="/en/NSPR_API_Reference/Interval_Timing#Interval_Time_Type_and_Constants" title="en/NSPR_API_Reference/Interval_Timing#Interval_Time_Type_and_Constants">Tipo e Constantes de Tempo de Intervalo</a></li> - <li><a href="/en/NSPR_API_Reference/Interval_Timing#Interval_Functions" title="en/NSPR_API_Reference/Interval_Timing#Interval_Functions">Funções para Intervalo</a></li> -</ul> -<h3 id="Date_and_Time" name="Date_and_Time"><a href="/en/NSPR_API_Reference/Date_and_Time" title="en/NSPR_API_Reference/Date_and_Time">Data e Hora</a></h3> -<ul> - <li><a href="/en/NSPR_API_Reference/Date_and_Time#Types_and_Constants" title="en/NSPR_API_Reference/Date_and_Time#Types_and_Constants">Tipos e Constantes</a></li> - <li><a href="/en/NSPR_API_Reference/Date_and_Time#Time_Parameter_Callback_Functions" title="en/NSPR_API_Reference/Date_and_Time#Time_Parameter_Callback_Functions">Parâmetro Tempo de Funções de Retrochamada</a></li> - <li><a href="/en/NSPR_API_Reference/Date_and_Time#Functions" title="en/NSPR_API_Reference/Date_and_Time#Functions">Funções</a></li> -</ul> -<h3 id="Memory_Management_Operations" name="Memory_Management_Operations"><a href="/en/NSPR_API_Reference/Memory_Management_Operations" title="en/NSPR_API_Reference/Memory_Management_Operations">Operações de Gerenciamento de Memória</a></h3> -<ul> - <li><a href="/en/NSPR_API_Reference/Memory_Management_Operations#Memory_Allocation_Functions" title="en/NSPR_API_Reference/Memory_Management_Operations#Memory_Allocation_Functions">Funções para Alocação de Memória</a></li> - <li><a href="/en/NSPR_API_Reference/Memory_Management_Operations#Memory_Allocation_Macros" title="en/NSPR_API_Reference/Memory_Management_Operations#Memory_Allocation_Macros">Macros para Alocação de Memória</a></li> -</ul> -<h3 id="String_Operations" name="String_Operations"><a href="/en/NSPR_API_Reference/String_Operations" title="en/NSPR_API_Reference/String_Operations">Operações com Cadeias [String]</a></h3> -<ul> - <li><a href="/en/PL_strlen" title="en/PL_strlen">PL_strlen</a></li> - <li><a href="/en/PL_strcpy" title="en/PL_strcpy">PL_strcpy</a></li> - <li><a href="/en/PL_strdup" title="en/PL_strdup">PL_strdup</a></li> - <li><a href="/en/PL_strfree" title="en/PL_strfree">PL_strfree</a></li> -</ul> -<h3 id="Floating_Point_Number_to_String_Conversion" name="Floating_Point_Number_to_String_Conversion"><a href="/en/NSPR_API_Reference/Floating_Point_Number_to_String_Conversion" title="en/NSPR_API_Reference/Floating_Point_Number_to_String_Conversion">Conversão de Números em Ponto Flutuante para String</a></h3> -<ul> - <li><a href="/en/PR_strtod" title="en/PR_strtod">PR_strtod</a></li> - <li><a href="/en/PR_dtoa" title="en/PR_dtoa">PR_dtoa</a></li> - <li><a href="/en/PR_cnvtf" title="en/PR_cnvtf">PR_cnvtf</a></li> -</ul> -<h3 id="Long_Long_.2864-bit.29_Integers" name="Long_Long_.2864-bit.29_Integers">Long Long (64-bit) Integers</h3> -<h3 id="BitMaps" name="BitMaps">BitMaps</h3> -<h3 id="Formatted_Printing" name="Formatted_Printing">Impressão Formatada</h3> -<h3 id="Linked_Lists" name="Linked_Lists"><a href="/en/NSPR_API_Reference/Linked_Lists" title="en/NSPR_API_Reference/Linked_Lists">Listas Vinculadas [Linked Lists</a>]</h3> -<ul> - <li><a href="/en/NSPR_API_Reference/Linked_Lists#Linked_List_Types" title="en/NSPR_API_Reference/Linked_Lists#Linked_List_Types">Tipos para Lista Vinculada</a> - <ul> - <li><a href="/en/PRCList" title="en/PRCList">PRCList</a></li> - </ul> - </li> - <li><a href="/en/NSPR_API_Reference/Linked_Lists#Linked_List_Macros" title="en/NSPR_API_Reference/Linked_Lists#Linked_List_Macros">Macros para Listas Vinculadas</a> - <ul> - <li><a href="/en/PR_INIT_CLIST" title="en/PR_INIT_CLIST">PR_INIT_CLIST</a></li> - <li><a href="/en/PR_INIT_STATIC_CLIST" title="en/PR_INIT_STATIC_CLIST">PR_INIT_STATIC_CLIST</a></li> - <li><a href="/en/PR_APPEND_LINK" title="en/PR_APPEND_LINK">PR_APPEND_LINK</a></li> - <li><a href="/en/PR_INSERT_LINK" title="en/PR_INSERT_LINK">PR_INSERT_LINK</a></li> - <li><a href="/en/PR_NEXT_LINK" title="en/PR_NEXT_LINK">PR_NEXT_LINK</a></li> - <li><a href="/en/PR_PREV_LINK" title="en/PR_PREV_LINK">PR_PREV_LINK</a></li> - <li><a href="/en/PR_REMOVE_LINK" title="en/PR_REMOVE_LINK">PR_REMOVE_LINK</a></li> - <li><a href="/en/PR_REMOVE_AND_INIT_LINK" title="en/PR_REMOVE_AND_INIT_LINK">PR_REMOVE_AND_INIT_LINK</a></li> - <li><a href="/en/PR_INSERT_BEFORE" title="en/PR_INSERT_BEFORE">PR_INSERT_BEFORE</a></li> - <li><a href="/en/PR_INSERT_AFTER" title="en/PR_INSERT_AFTER">PR_INSERT_AFTER</a></li> - </ul> - </li> -</ul> -<h3 id="Dynamic_Library_Linking" name="Dynamic_Library_Linking"><a href="/en/NSPR_API_Reference/Dynamic_Library_Linking" title="en/NSPR_API_Reference/Dynamic_Library_Linking">Vinculação de Biblioteca Dinâmica</a></h3> -<ul> - <li><a href="/en/NSPR_API_Reference/Dynamic_Library_Linking#Library_Linking_Types" title="en/NSPR_API_Reference/Dynamic_Library_Linking#Library_Linking_Types">Tipos para Vinculação de Bibliotecas</a> - <ul> - <li><a href="/en/PRLibrary" title="en/PRLibrary">PRLibrary</a></li> - <li><a href="/en/PRStaticLinkTable" title="en/PRStaticLinkTable">PRStaticLinkTable</a></li> - </ul> - </li> - <li><a href="/en/NSPR_API_Reference/Dynamic_Library_Linking#Library_Linking_Functions" title="en/NSPR_API_Reference/Dynamic_Library_Linking#Library_Linking_Functions">Funções para Vinculação de Bibliotecas</a> - <ul> - <li><a href="/en/PR_SetLibraryPath" title="en/PR_SetLibraryPath">PR_SetLibraryPath</a></li> - <li><a href="/en/PR_GetLibraryPath" title="en/PR_GetLibraryPath">PR_GetLibraryPath</a></li> - <li><a href="/en/PR_GetLibraryName" title="en/PR_GetLibraryName">PR_GetLibraryName</a></li> - <li><a href="/en/PR_FreeLibraryName" title="en/PR_FreeLibraryName">PR_FreeLibraryName</a></li> - <li><a href="/en/PR_LoadLibrary" title="en/PR_LoadLibrary">PR_LoadLibrary</a></li> - <li><a href="/en/PR_UnloadLibrary" title="en/PR_UnloadLibrary">PR_UnloadLibrary</a></li> - <li><a href="/en/PR_FindSymbol" title="en/PR_FindSymbol">PR_FindSymbol</a></li> - <li><a href="/en/PR_FindSymbolAndLibrary" title="en/PR_FindSymbolAndLibrary">PR_FindSymbolAndLibrary</a></li> - <li><a href="/en/NSPR_API_Reference/Dynamic_Library_Linking#Finding_Symbols_Defined_in_the_Main_Executable_Program" title="en/NSPR_API_Reference/Dynamic_Library_Linking#Finding_Symbols_Defined_in_the_Main_Executable_Program">Simbolos de Descoberta [Finding Symbols] Definidos no Programa Executável Principal</a></li> - </ul> - </li> - <li><a href="/en/NSPR_API_Reference/Dynamic_Library_Linking#Platform_Notes" title="en/NSPR_API_Reference/Dynamic_Library_Linking#Platform_Notes">Observações da Plataforma</a> - <ul> - <li><a href="/en/NSPR_API_Reference/Dynamic_Library_Linking#Dynamic_Library_Search_Path" title="en/NSPR_API_Reference/Dynamic_Library_Linking#Dynamic_Library_Search_Path">Caminho de busca de Biblioteca Dinâmica</a></li> - <li><a href="/en/NSPR_API_Reference/Dynamic_Library_Linking#Exporting_Symbols_from_the_Main_Executable_Program" title="en/NSPR_API_Reference/Dynamic_Library_Linking#Exporting_Symbols_from_the_Main_Executable_Program">Exportando Símbolos do Programa Executável Principal </a></li> - </ul> - </li> -</ul> -<h3 id="Process_Management_and_Interprocess_Communication" name="Process_Management_and_Interprocess_Communication"><a href="/En/NSPR_API_Reference/Process_Management_and_Interprocess_Communication" title="en/NSPR_API_Reference/Process_Management_and_Interprocess_Communication">Gerenciamento de Processo e Comunicação Interprocesso</a></h3> -<ul> - <li><a class="internal" href="/En/NSPR_API_Reference/Process_Management_and_Interprocess_Communication#Process_Management_Types_and_Constants" title="En/NSPR API Reference/Process Management and Interprocess Communication#Process Management Types and Constants">Tipos e Constantes para Gerenciamento de Processo</a> - <ul> - <li><a class="internal" href="/En/PRProcess" title="En/PRProcess">PRProcess</a></li> - <li><a class="internal" href="/En/PRProcessAttr" title="En/PRProcessAttr">PRProcessAttr</a></li> - </ul> - </li> - <li><a class="internal" href="/En/NSPR_API_Reference/Process_Management_and_Interprocess_Communication#Process_Management_Functions" title="En/NSPR API Reference/Process Management and Interprocess Communication#Process Management Functions">Funções para Gerenciamento de Processo</a> - <ul> - <li><a class="internal" href="/En/NSPR_API_Reference/Process_Management_and_Interprocess_Communication#Setting_the_Attributes_of_a_New_Process" title="En/NSPR API Reference/Process Management and Interprocess Communication#Setting the Attributes of a New Process">Estabelecendo os Atributos de um Novo Processo</a></li> - <li><a class="internal" href="/En/NSPR_API_Reference/Process_Management_and_Interprocess_Communication#Creating_and_Managing_Processes" title="En/NSPR API Reference/Process Management and Interprocess Communication#Creating and Managing Processes">Criando e Gerenciando Processos</a></li> - </ul> - </li> -</ul> -<h3 id="Multiwait_Receive" name="Multiwait_Receive">Recepção Multiespera</h3> -<h3 id="System_Information_and_Environment_Variables" name="System_Information_and_Environment_Variables">Informação do Sistema e Variáveis de Ambiente</h3> -<h3 id="Logging" name="Logging">Logging</h3> -<h3 id="Instrumentation_Counters" name="Instrumentation_Counters">Balcões de Instrumentalização</h3> -<h3 id="Named_Shared_Memory" name="Named_Shared_Memory"><a href="/en/NSPR_API_Reference/Named_Shared_Memory" title="en/NSPR_API_Reference/Named_Shared_Memory">Memória Compartilhada Nomeada</a></h3> -<ul> - <li><a href="/en/NSPR_API_Reference/Named_Shared_Memory#Shared_Memory_Protocol" title="en/NSPR_API_Reference/Named_Shared_Memory#Shared_Memory_Protocol">Protocolo de Memória Compartilhada</a></li> - <li><a href="/en/NSPR_API_Reference/Named_Shared_Memory#Named_Shared_Memory_Functions" title="en/NSPR_API_Reference/Named_Shared_Memory#Named_Shared_Memory_Functions">Funções para Memória Compartilhada Nomeada</a></li> -</ul> -<h3 id="Anonymous_Shared_Memory" name="Anonymous_Shared_Memory"><a href="/en/NSPR_API_Reference/Anonymous_Shared_Memory" title="en/NSPR_API_Reference/Anonymous_Shared_Memory">Memória Compartilhada Anônima</a></h3> -<ul> - <li><a href="/en/NSPR_API_Reference/Anonymous_Shared_Memory#Anonymous_Memory_Protocol" title="en/NSPR_API_Reference/Anonymous_Shared_Memory#Anonymous_Memory_Protocol">Protocolo de Memória Anônima</a></li> - <li><a href="/en/NSPR_API_Reference/Anonymous_Shared_Memory#Anonymous_Shared_Memory_Functions" title="en/NSPR_API_Reference/Anonymous_Shared_Memory#Anonymous_Shared_Memory_Functions">Funções para Memória Compartilhada Anônima</a></li> -</ul> -<h3 id="IPC_Semaphores" name="IPC_Semaphores"><a href="/en/NSPR_API_Reference/IPC_Semaphores" title="en/NSPR_API_Reference/IPC_Semaphores">Semáforos para CIP [IPC]</a></h3> -<ul> - <li><a href="/en/NSPR_API_Reference/IPC_Semaphores#IPC_Semaphore_Functions" title="en/NSPR_API_Reference/IPC_Semaphores#IPC_Semaphore_Functions">Funções para CIP para Semáforos</a></li> -</ul> -<h3 id="Thread_Pools" name="Thread_Pools"><a href="/en/NSPR_API_Reference/Thread_Pools" title="en/NSPR_API_Reference/Thread_Pools">Reservatório de Encadeamento</a></h3> -<ul> - <li><a href="/en/NSPR_API_Reference/Thread_Pools#Thread_Pool_Types" title="en/NSPR_API_Reference/Thread_Pools#Thread_Pool_Types">Tipos para Reservatório de Encadeamento</a></li> - <li><a href="/en/NSPR_API_Reference/Thread_Pools#Thread_Pool_Functions" title="en/NSPR_API_Reference/Thread_Pools#Thread_Pool_Functions">Funções para Reservatório de Encadeamento</a></li> -</ul> -<h3 id="Random_Number_Generator" name="Random_Number_Generator"><a href="/en/NSPR_API_Reference/Random_Number_Generator" title="en/NSPR_API_Reference/Random_Number_Generator">Gerador de Número Aleatório</a></h3> -<ul> - <li><a href="/en/NSPR_API_Reference/Random_Number_Generator#Random_Number_Generator_Function" title="en/NSPR_API_Reference/Random_Number_Generator#Random_Number_Generator_Function">Função para Gerador de Número Aleatório</a></li> -</ul> -<h3 id="Hash_Tables" name="Hash_Tables"><a href="/en/NSPR_API_Reference/Hash_Tables" title="en/NSPR_API_Reference/Hash_Tables">Tabelas de Dispersão [Hash Tables]</a></h3> -<ul> - <li><a href="/en/NSPR_API_Reference/Hash_Tables#Hash_Tables_and_Type_Constants" title="en/NSPR_API_Reference/Hash_Tables#Hash_Tables_and_Type_Constants">Tabelas de Dispersão [Hash Tables] e Constantes de Tipo</a></li> - <li><a href="/en/NSPR_API_Reference/Hash_Tables#Hash_Table_Functions" title="en/NSPR_API_Reference/Hash_Tables#Hash_Table_Functions">Funções para Tabela de Dispersão [Hash Table]</a></li> -</ul> -<h3 id="NSPR_Error_Handling" name="NSPR_Error_Handling"><a href="/en/NSPR_API_Reference/NSPR_Error_Handling" title="en/NSPR_API_Reference/NSPR_Error_Handling">Manipulação de Erro em NSPR</a></h3> -<ul> - <li><a href="/en/NSPR_API_Reference/NSPR_Error_Handling#Error_Type" title="en/NSPR_API_Reference/NSPR_Error_Handling#Error_Type">Tipo Erro</a></li> - <li><a href="/en/NSPR_API_Reference/NSPR_Error_Handling#Error_Functions" title="en/NSPR_API_Reference/NSPR_Error_Handling#Error_Functions">Funções para Erro</a></li> - <li><a href="/en/NSPR_API_Reference/NSPR_Error_Handling#Error_Codes" title="en/NSPR_API_Reference/NSPR_Error_Handling#Error_Codes">Códigos de Erro</a></li> -</ul> diff --git a/files/pt-br/pacotes/index.html b/files/pt-br/pacotes/index.html deleted file mode 100644 index 36c9967535..0000000000 --- a/files/pt-br/pacotes/index.html +++ /dev/null @@ -1,164 +0,0 @@ ---- -title: Estruturas de um Pacote de Instalação -slug: Pacotes -translation_of: Archive/Mozilla/Bundles ---- -<p><a href="/en/XUL_Application_Packaging" title="en/XUL_Application_Packaging">Aplicações XULRunner</a>, <a href="/en/Extensions" title="en/Extensions">extensões</a>, e <a href="/en/Themes" title="en/Themes">temas</a> Compartilham uma mesma estrutura de arquivos, e em alguns casos o mesmo pacote pode ser usado como uma aplicação XULRunner independente, Por Exemplo, a instalação de uma aplicação ou extensão.</p> - -<h3 id="Basic_Structure_of_a_Bundle" name="Basic_Structure_of_a_Bundle">Estrutura Básica de um Pacote</h3> - -<p>A bundle may include any of the following files:</p> - -<table class="standard-table"> - <thead> - <tr> - <th>Path from the root of the bundle</th> - <th>Description</th> - <th>Version information</th> - </tr> - </thead> - <tbody> - <tr> - <td><code>/<a href="/en/Install_Manifests" title="en/Install_Manifests">install.rdf</a></code></td> - <td>Extension/Theme Install Manifest</td> - <td> </td> - </tr> - <tr> - <td><code>/<a href="/en/XUL_Application_Packaging" title="en/XUL_Application_Packaging">application.ini</a></code></td> - <td>Application Launch Manifest</td> - <td> </td> - </tr> - <tr> - <td><code>/<a href="/en/Extensions/Bootstrapped_extensions" title="en/Extensions/Bootstrapped extensions">bootstrap.js</a></code></td> - <td>The bootstrap script for extensions not requiring a restart (those with <code><em:bootstrap>true</em:bootstrap></code> in their <code>install.rdf</code>). Note that other files and directories (e.g. <code>chrome.manifest</code>, <code>components</code>, <code>defaults</code>) in bootstrapped extensions are not processed by a supporting application.</td> - <td><a href="/en/Gecko#Versions_of_Gecko" title="en/Gecko#Versions_of_Gecko">(>=2.0)</a></td> - </tr> - <tr> - <td><code>/<a href="/en/Chrome_Registration#The_Chrome_Registry" title="en/Chrome_Registration#The_Chrome_Registry">chrome.manifest</a></code></td> - <td>Chrome Registration Manifest</td> - <td><a href="/en/Gecko#Versions_of_Gecko" title="en/Gecko#Versions_of_Gecko">(>=1.8)</a></td> - </tr> - <tr> - <td><code>/components/*</code></td> - <td>XPCOM components (*.js, *.dll), and interface files from *.xpt</td> - <td><a href="/en/Gecko#Versions_of_Gecko" title="en/Gecko#Versions_of_Gecko">(>=1.7)</a></td> - </tr> - <tr> - <td><code><a href="/en/Building_an_Extension#Defaults_Files" title="en/Building_an_Extension#Defaults_Files">/defaults/preferences/*.js</a></code></td> - <td>Default Preferences</td> - <td><a href="/en/Gecko#Versions_of_Gecko" title="en/Gecko#Versions_of_Gecko">(>=1.7)</a></td> - </tr> - <tr> - <td><code>/plugins/*</code></td> - <td><a href="/en/Plugins" title="en/Plugins">NPAPI Plugins</a></td> - <td><a href="/en/Gecko#Versions_of_Gecko" title="en/Gecko#Versions_of_Gecko">(>=1.8)</a></td> - </tr> - <tr> - <td><code>/<a href="/en/Window_icons" title="en/Window_icons">chrome/icons/default/*</a></code></td> - <td>Window Icons</td> - <td><a href="/en/Gecko#Versions_of_Gecko" title="en/Gecko#Versions_of_Gecko">(>=1.8)</a></td> - </tr> - <tr> - <td><code>/<a href="/en/Extensions/Inline_Options" title="/en/Extensions/Inline_Options">options.xul</a></code></td> - <td>Extension options, for display in the Add-ons Manager</td> - <td><a href="/en/Gecko#Versions_of_Gecko" title="en/Gecko#Versions_of_Gecko">(>=7.0)</a></td> - </tr> - <tr> - <td>...</td> - <td>Additional resources (such as chrome:// or resource:// providers can be registered in the <a href="/en/Chrome_Registration" title="en/Chrome registration">chrome.manifest</a>)</td> - <td> </td> - </tr> - <tr> - <th colspan="3">Application-specific</th> - </tr> - <tr> - <td><code>/searchplugins/*.src</code></td> - <td>Sherlock search plugins</td> - <td><a href="/en/Firefox_1.5_for_developers" title="en/Firefox_1.5_for_developers">Firefox 1.5</a> and greater.</td> - </tr> - <tr> - <td><code>/searchplugins/*.xml</code></td> - <td><a href="/en/Creating_MozSearch_plugins" title="en/Creating_MozSearch_plugins">MozSearch and OpenSearch plugins</a></td> - <td><a href="/en/Firefox_2_for_developers" title="en/Firefox_2_for_developers">Firefox 2</a> and greater</td> - </tr> - <tr> - <td><code>/dictionaries/*.{aff|dic}</code></td> - <td>Myspell dictionaries</td> - <td><a href="/en/Firefox_2_for_developers" title="en/Firefox_2_for_developers">Firefox 2</a> and greater</td> - </tr> - </tbody> -</table> - -<p>Of course, an extension need not (and normally won't) have all of these directories. Themes are limited for security reasons, and can normally only provide a <a href="/en/Chrome_Registration" title="en/Chrome_Registration">chrome.manifest</a> which registers the theme and a JAR file.</p> - -<h3 id="Platform-specific_files">Platform-specific files</h3> - -<p>Gecko 2.0 (Firefox 4 / Thunderbird 3.3 / SeaMonkey 2.1) removed support for platform-specific subdirectories, described below. Instead, you need to use manifest flags, such as the <a href="/en/Chrome_Registration#os" title="en/Chrome Registration#os"><code>OS</code></a> and <a href="/en/Chrome_Registration#abi" title="en/Chrome Registration#abi"><code>ABI</code></a> flags, in your <a href="/en/Chrome_Registration" title="en/Chrome Registration">chrome manifest</a> to specify components that should be loaded for specific platforms.</p> - -<p>For example:</p> - -<pre>binary-component components/windows/mycomponent.dll ABI=WINNT_x86-msvc -binary-component components/mac/mycomponent.dylib ABI=Darwin_x86-gcc3 -binary-component components/mac/mycomponent64.dylib ABI=Darwin_x86_64-gcc3 -binary-component components/linux/mycomponent.so ABI=Linux_x86-gcc3 -</pre> - -<p>This also means you can no longer have platform-specific preference files in your bundle.</p> - -<h4 id="Platform-specific_subdirectories_Gecko_1.9.2.x_and_earlier">Platform-specific subdirectories: Gecko 1.9.2.x and earlier</h4> - -<div class="note"> -<p><strong>Note:</strong> Platform-specific subdirectory support was removed in <span title="(Firefox 4 / Thunderbird 3.3 / SeaMonkey 2.1)">Gecko 2.0</span>. See the section <a href="/en/Bundles#Platform-specific_files" title="en/Bundles#Platform-specific files">Platform-specific files</a> to learn how to use platform-specific files.</p> -</div> - -<p>In some cases a single extension or application may wish to include binary component or plugins for multiple platforms, or theme authors might want to include multiple platform-specific JAR files. To facilitate the first case, the extension/app loader has special sub-directories specifically for platform-specific files (starting with Toolkit/Gecko 1.8, Firefox/Thunderbird 1.5). The platform string is defined during the toolkit build process to a value unique for the combination of operating system, processor architecture and compiler. The format of the platform string is:</p> - -<pre class="eval"><em>{<a href="/en/OS_TARGET" title="en/OS_TARGET">OS_TARGET</a>}</em>_<em>{<a href="/en/XPCOM_ABI" title="en/XPCOM_ABI">TARGET_XPCOM_ABI</a>}</em> -</pre> - -<p>All of the files which are loaded from the main extension directory are loaded from the subdirectory</p> - -<pre class="eval">/platform/<em>{platform string}</em> -</pre> - -<p>if it exists. For example, if a plugin vendor wanted to make a plugin available for consumer computers running Linux(of the form: /platform/Linux*/), Macintosh(of the form: /platform/Darwin*/), and Windows(of the form: /platform/WIN*/), it would provide the following files:</p> - -<pre class="eval">/platform/Linux_x86-gcc3/plugins/libMyPlugin.so -/platform/WINNT_x86-msvc/plugins/MyPlugin.dll -/platform/Darwin_ppc-gcc3/plugins/libMyPlugin.dylib -</pre> - -<p>Because XPT files are not platform-specific, any associated XPT files would go in the generic components directory:</p> - -<pre class="eval">/components/MyPlugin.xpt -</pre> - -<p>If an extension has non-binary platform-specific code (such as code which uses the windows registry from script), it can also use just the operating system identifier as a platform-subdirectory:</p> - -<pre class="eval">/platform/WINNT/components/registerDoctype.js -</pre> - -<p>When platform-specific JAR files are used, each platform directory should have its own <code>chrome.manifest</code> file:</p> - -<pre class="eval">chrome.manifest -chrome/mytheme-base.jar -platform/Darwin/chrome.manifest -platform/Darwin/chrome/mytheme-mac.jar -platform/WINNT/chrome.manifest -platform/WINNT/chrome/mytheme-win.jar -</pre> - -<p>The app/extension loader processes the base directory first, followed by the applicable platform directories (first /{OS_TARGET}/, then /{<a href="/en/OS_TARGET" title="en/OS_TARGET">OS_TARGET</a>}_{<a href="/en/XPCOM_ABI" title="en/XPCOM_ABI">TARGET_XPCOM_ABI</a>}/). When default preferences are defined in several directories, the ones loaded later overwrite the earlier ones.</p> - -<h3 id="Official_References_for_Toolkit_API" name="Official_References_for_Toolkit_API">Official references for <a href="/en/Toolkit_API" title="en/Toolkit_API">toolkit API</a></h3> - -<p> - </p><ul> - <li><a href="/en/Bundles" title="en/Bundles">Structure of an Installable Bundle</a>: describes the common structure of installable bundles, including extensions, themes, and XULRunner applications</li> - <li><a href="/en/Extension_Packaging" title="en/Extension_Packaging">Extension Packaging</a>: specific information about how to package extensions</li> - <li><a href="/en/Theme_Packaging" title="en/Theme_Packaging">Theme Packaging</a>: specific information about how to package themes</li> - <li><a href="/en/Multiple_Item_Packaging" title="en/Multiple_Item_Packaging">Multiple-item Extension Packaging</a>: specific information about multiple-item extension XPIs</li> - <li><a href="/en/XUL_Application_Packaging" title="en/XUL_Application_Packaging">XUL Application Packaging</a>: specific information about how to package XULRunner applications</li> - <li><a href="/en/Chrome_Registration" title="en/Chrome_Registration">Chrome Registration</a></li> - <li><a href="/en-US/docs/Mozilla/Tech/XUL/Printing">Printing in XUL Apps</a></li> - </ul> diff --git a/files/pt-br/preparando_um_ambiente_para_desenvolvimento_de_extensoes/index.html b/files/pt-br/preparando_um_ambiente_para_desenvolvimento_de_extensoes/index.html deleted file mode 100644 index 71b25c9faf..0000000000 --- a/files/pt-br/preparando_um_ambiente_para_desenvolvimento_de_extensoes/index.html +++ /dev/null @@ -1,179 +0,0 @@ ---- -title: Preparando um ambiente para o desenvolvimento de extensões -slug: Preparando_um_ambiente_para_desenvolvimento_de_extensoes -translation_of: Archive/Add-ons/Setting_up_extension_development_environment ---- -<p>Esse artigo dá sugestões de como preparar seu aplicativo Mozilla para o desenvolvimento de extensões. A menos que seja dito o contrário, essas sugestões se aplicam tanto ao Firefox quanto ao Thunderbird, assim como ao SeaMonkey versão 2.0 e superior.</p> - -<h3 id="Visão_Geral">Visão Geral</h3> - -<ul> - <li>Crie um <a href="#Development_profile">peril de usuário</a> para desenvolvimento para executar sua sessão de desenvolvimento do Firefox, com <a href="#Development_preferences">preferência de desenvolvimento</a> especiais em <code>about:config</code>.</li> - <li>Instale alumas <a href="#Development_extensions">extensões de desenvolvimento</a> para Firefox em seu perfil de desenvolvimento.</li> - <li>Edite arquivos na pasta de extensões de seu perfil e reinicie o aplicativo com o perfil de desenvolvimento.</li> -</ul> - -<h3 id="Perfil_de_Desenvolvimento">Perfil de Desenvolvimento</h3> - -<p>Para evitar a degradação de desempenho das extensões e prefs relacionadas ao desenvolvimento, e para evitar perder seus dados pessoais, você pode usar um perfil a parte para o trabalho de desenvolvimento.</p> - -<p>Você pode executar duas instâncias do Thunderbird ou do Firefox ao mesmo tempo usando perfis diferentes e iniciando o aplicativo com o parâmetro <code>-no-remote</code>. Por exemplo, o seguinte comando vai iniciar o Firfox com um perfil chamado "dev" quer uma instância do firefox já esteja em execução ou não.</p> - -<p>No Ubuntu (e muitas outras distro do Linux):</p> - -<pre>/usr/bin/firefox -no-remote -P dev</pre> - -<p>Em algumas outras distros do Linux/Unix:</p> - -<pre>/usr/local/bin/firefox -no-remote -P dev -</pre> - -<p>No Mac OS Snow Leopard (10.6) e mais recentes:</p> - -<pre class="eval">/Applications/Firefox.app/Contents/MacOS/firefox-bin -no-remote -P dev & -</pre> - -<p>No Mac OS Leopard (10.5) e versões mais antigas, você requisitar a porção de 32-bit portion do Binário Universal (Universal Binary) (<a class="link-https" href="https://bugzilla.mozilla.org/show_bug.cgi?id=622970" title="https://bugzilla.mozilla.org/show_bug.cgi?id=622970">https://bugzilla.mozilla.org/show_bug.cgi?id=622970</a>):</p> - -<pre class="eval">arch -arch i386 /Applications/Firefox.app/Contents/MacOS/firefox-bin -no-remote -P dev & -</pre> - -<p>No Windows:</p> - -<pre class="eval">Start -> Run "%ProgramFiles%\Mozilla Firefox\firefox.exe" -no-remote -P dev -</pre> - -<p>No Windows 64 bit:</p> - -<pre class="eval">Start -> Run "%ProgramFiles(x86)%\Mozilla Firefox\firefox.exe" -no-remote -P dev</pre> - -<p>Para inicar o Thunderbird ou o SeaMonkey ao invés do Firefox, substitua "firefox" por "thunderbird" ou "seamonkey" nos exemplos acima.</p> - -<p>Se o perfil especificado não existir (ou se nennhum perfill for especificado), o Thunderbird ou Firefox irá exibir o Profile Manager (Gerenciador de Perfis). Para executar com o perfil padrão (default), especifique "default" como sendo o perfil (ou omita a chave "-P" ).</p> - -<p>(Existe uma linha (thread) no <a class="external" href="http://forums.mozillazine.org/" title="http://forums.mozillazine.org/">Mozillazine forums</a> que explica como usar tanto a versão estável como a de desenvolvimento do Firefox para verificar a compatibilidade da extensão Veja <a class="external" href="http://forums.mozillazine.org/viewtopic.php?t=613873">Instalando o Firefox 3 ou Campo minado ao se manter o Firefox 2</a>.)</p> - -<p>Para tornar as numerosas reinicializações mais suaves, você pode criar um para ler a documentação / para uso regular, e o outro para testar as extensões, e executar ambos ao mesmo tempo usando a chave de comando <code>no-remote </code>como descrito em <a class="external" href="http://kb.mozillazine.org/Command_line_arguments" title="http://kb.mozillazine.org/Command_line_arguments">http://<span>kb.mozillazine.org/Command_line_arguments</span></a> .<span> O segundo geralmente requer muitas reinicializações, e você pode abrir ambos ao mesmo tempo, ccomo nesses dois atalhos no Windows:</span></p> - -<p><code><span>...firefox.exe -no-remote -p "profile1"</span></code></p> - -<p><code><span>...firefox.exe -no-remote -p "profile2"</span></code></p> - -<div class="note">Essas linhas são específicas do Windows. Se você encontrar as mesmas instruções para Linux / Mac OS / etc , por favor coloque-as aqui também.</div> - -<p>No Mac, crie um bash script, nomei-o com a extensão (de arquivo) ".command". A opção de perfil é "-P" (maiúsculo).</p> - -<p><code>#!/bin/bash</code></p> - -<p><code>"..."/Contents/MacOS/firefox -P "profile1"</code></p> - -<p>substitua os "..." com o caminho verdadeiro (para a pasta de instalação do seu aplicativo mozilla - firefox, thunderbird, etc.). É simples - basta dois atalhos na Área de Trabalho (desktop) - e você fica com um dos perfis sempre aberto.</p> - -<h3 id="Sinalizadores_(flags)_de_comando_para_desenvolvimento">Sinalizadores (flags) de comando para desenvolvimento</h3> - -<p>A partir do Gecko 2 (Firefox 4), os arquivos JavaScript files são postos em cache ("fastload" - "carga rápida"). O sinalizador de comando <code>-purgecaches</code> disablita esse comportamento. Como alternativa, você pode ajustar a variável de ambiente MOZ_PURGE_CACHES. See <a class="link-https" href="https://bugzilla.mozilla.org/show_bug.cgi?id=531886" title="https://bugzilla.mozilla.org/show_bug.cgi?id=531886">esse bug</a> para mais informações.</p> - -<h3 id="Preferências_para_desenvolvimento">Preferências para desenvolvimento</h3> - -<p>Instarlar a extensão <a href="https://addons.mozilla.org/en-US/firefox/addon/developer-profile/" title="https://addons.mozilla.org/en-US/firefox/addon/developer-profile/">Developer Profile (Perfil do Desenvolvedor)</a> ajusta a maior parte do ambiente de desenvolvimento descrito abaixo.</p> - -<p>Há um conjunto de preferências de desenvolvimento que quando habilitadas permitem que você veja mais informação sobre a atividade do aplicativo, tornando, dessa forma, a depuração mais fácil. Contudo, essas preferências podem degradar o desempenho, de modo que você pode preferir usar um perfil diferente para desenvolvimento aonde você habilita essas preferências. Para mais informações sobre as preferências do Mozilla, veja o artigo da mozillaZine sobre "<a class="external" href="http://kb.mozillazine.org/About:config" title="http://kb.mozillazine.org/About:config">about:config</a>".</p> - -<p>Nem todas as preferências estão definidas por princípio, e portanto, nãos estão listadas em <code>about:config</code> a princípio. Você terá que criar novas entradas booleanas para elas.</p> - -<ul> - <li><strong>javascript.options.showInConsole</strong> = <strong>true</strong>. Envia os errors nos arquivos do chrome para o <a href="/en/Error_Console" title="en/Error_Console">Error Console (Console de Erros)</a>.</li> - <li><strong>nglayout.debug.disable_xul_cache</strong> = <strong>true</strong>. Desabilita o cache dos arquivos XUL de modo que as mudanças nas janelas e caixas de diálogos não exijam a reinicialização do aplicativo. Supõe-se que você esteja <a href="#Using_directories_rather_than_JARs">trabalhnado com diretórios ao invés de arquivos JAR</a>. Mudanças nos XUL overlays ainda exigirão que o documento seja carregado novamente.</li> - <li><strong>browser.dom.window.dump.enabled</strong> = <strong>true</strong>. Habilita o uso da função <span style="font-family: Courier New;">dump()</span> para imprimir no console padrão. Veja <span style="font-family: Courier New;">{{ Domxref("window.dump") }}</span> para mais informações. Você pode usar a interface <span style="font-family: Courier New;">{{ Interface("nsIConsoleService") }}</span> ao invés <code>dump()</code> a partir de um script privilegiado.</li> - <li><strong>javascript.options.strict</strong> = <strong>true</strong>. Habilita os avisos de modo strict de JavaScript no Console de Erro. Observe que muitas pessoas tem essa aspecto desabililtado ao desenvolver seus aplicativos, por isso você verá muitos avisos de problemas com os códigos deles além dos de sua própria extensão. Você poderá filtrá-los com a extensão <a class="link-https" href="https://addons.mozilla.org/en-US/firefox/addon/1815">Console<sup>2</sup></a>.</li> - <li><strong>devtools.chrome.enabled = true.</strong> Isso possibilita executar fragmentos de código JavaScript no contexto do chrome do Scratchpad a partir do menu Ferramentas. Não se esqueça de alterna o contexto de conteúdo para navegador.</li> - <li><strong>devtools.debugger.remote-enabled = true.</strong> Isso acrescenta uma entrada "Depurar" no submenu do menu "Desenvolvedor Web". O <a href="/en/Tools/Debugger" title="/en/Tools/Debugger">Browser Debugger (Depurador do Navegador)</a> pode ser usado para depurar o código JavaScript das extensões.</li> - <li><strong>extensions.logging.enabled</strong> = <strong>true</strong>. This will send more detailed information about installation and update problems to the <a href="/en/Error_Console" title="en/Error Console">Error Console</a>. (Note that the extension manager automatically restarts the application at startup sometimes, which may mean you won't have time to see the messages logged before the automatic restart happens. To see them, prevent the automatic restart by setting the environment NO_EM_RESTART to 1 before starting the application.)</li> - <li><strong>nglayout.debug.disable_xul_fastload = true</strong>. For Gecko 2.0+ (Firefox 4.0+). See <a class="link-https" href="https://bugzilla.mozilla.org/show_bug.cgi?id=531886" title="https://bugzilla.mozilla.org/show_bug.cgi?id=531886">this bug</a> for more information. Although the bug has been closed, it is believed that this pref is still relevant.</li> - <li>You might also want to set <strong>dom.report_all_js_exceptions = true</strong>. See <a class="internal" href="/en/Exception_logging_in_JavaScript" title="en/Exception logging in JavaScript">Exception logging in JavaScript</a> for details.</li> - <li><strong>devtools.errorconsole.deprecation_warnings</strong>. Detect deprecated code use.</li> -</ul> - -<p></p><div class="warning"><strong>Never</strong> set {{pref("nglayout.debug.disable_xul_fastload")}} to true in a production environment; it exists solely to aid in debugging. In particular, add-ons should never change this preference.</div>.<p></p> - -<div class="geckoVersionNote"> -<p>{{ gecko_callout_heading("2.0") }}</p> - -<p>The Error Console is disabled by default starting in Firefox 4. You can re-enable it by changing the <code>devtools.errorconsole.enabled</code> preference to <code>true</code> and restarting the browser. With this, <code>javascript.options.showInConsole</code> is also set to <code>true</code> by default.</p> -</div> - -<h4 id="Accessing_Firefox_development_preferences">Accessing Firefox development preferences</h4> - -<p>To change preference settings in Firefox or SeaMonkey, type <code>about:config </code>in the Location Bar. Alternatively, use the <a class="external" href="http://addons.mozilla.org/en-US/firefox/addon/7434/" title="http://addons.mozilla.org/en-US/firefox/addon/7434/">Extension Developer's Extension</a>, which provides a menu interface for Firefox settings.</p> - -<h4 id="Accessing_Thunderbird_development_preferences">Accessing Thunderbird development preferences</h4> - -<p>To change preference settings in Thunderbird, open the "Preferences" (Unix) or "Options" (Windows) interface. On the "Advanced" page, select the "General" tab then click the "Config Editor" button.</p> - -<h3 id="Extensões_para_Desenvolvimento">Extensões para Desenvolvimento</h3> - -<p>Essas extensões podem te ajudar com o desenvolvimento de extensões.</p> - -<ul> - <li><a class="link-https" href="https://addons.mozilla.org/en-US/firefox/addon/6622">DOM Inspector</a>, usada para inspecionar e editar o DOM vivo (em tempo real) de qualquer documento da web ou aplicativo XUL (Firefox and Thunderbird)</li> - <li><a class="external" href="http://www.hacksrus.com/%7Eginda/venkman/">Venkman</a>, um Depurador (Debugger) de JavaScript (<a class="external" href="http://addons.mozilla.org/en-US/firefox/addon/216" title="http://addons.mozilla.org/en-US/firefox/addon/216">versão para Firefox</a>, <a class="external" href="http://addons.mozilla.org/en-US/thunderbird/addon/216" title="http://addons.mozilla.org/en-US/thunderbird/addon/216">versão para Thunderbird</a>)</li> - <li><a href="http://kewisch.wordpress.com/2013/09/22/thunderbird-developer-tools-wrapup/">Thunderbird Developer Tools</a>, permite depurar o Thunderbird remotamente usando as ferramentas de desenvolvimento do Firefox</li> - <li><a class="link-https" href="https://addons.mozilla.org/en-US/firefox/addon/7434/">Extension Developer's Extension</a> a suite of tools for extension development (Firefox)</li> - <li><a class="link-https" href="https://addons.mozilla.org/en-US/firefox/addon/extension-test/">Extension Test</a> an add-on which makes it easier to detect problems which will lead to rejection by addons.mozilla.org</li> - <li><a class="external" href="http://console2.mozdev.org/">Console²</a> enhanced JavaScript console (<a class="external" href="http://addons.mozilla.org/en-US/firefox/addon/1815" title="http://addons.mozilla.org/en-US/firefox/addon/1815">Firefox version</a>, <a class="external" href="http://addons.mozilla.org/en-US/thunderbird/addon/1815" title="http://addons.mozilla.org/en-US/thunderbird/addon/1815">Thunderbird version</a>)</li> - <li><a class="link-https" href="https://addons.mozilla.org/firefox/addon/5058">Javascript Command</a> for writing/testing javascript on Firefox windows</li> - <li><a class="link-https" href="https://addons.mozilla.org/firefox/addon/5058">Inspect Context</a> Open <a class="link-https" href="https://addons.mozilla.org/en-US/firefox/addon/6622">DOM Inspector</a> at this node from Inspect on context menu.</li> - <li><a class="link-https" href="https://addons.mozilla.org/en-US/firefox/addon/4453/">Chrome List</a> navigate and view files in chrome:// (<a class="external" href="http://addons.mozilla.org/en-US/firefox/addon/4453" title="http://addons.mozilla.org/en-US/firefox/addon/4453">Firefox version</a>, <a class="external" href="http://addons.mozilla.org/en-US/thunderbird/addon/4453" title="http://addons.mozilla.org/en-US/thunderbird/addon/4453">Thunderbird version</a>)</li> - <li><a class="external" href="http://webdesigns.ms11.net/chromeditp.html">Chrome Edit Plus</a> a user file editor (Firefox and Thunderbird)</li> - <li><a class="link-https" href="https://addons.mozilla.org/en-US/developers/tools/builder">Add-on Builder</a> a web-based application that generates an extension skeleton (Firefox, Thunderbird, and others)</li> - <li><a class="link-https" href="https://addons.mozilla.org/firefox/addon/1843">Firebug</a> a variety of development tools (Firefox)</li> - <li><a class="external" href="http://dactyl.sf.net/pentadactyl/">Pentadactyl</a>, a general purpose extension with builtin tools for extension development, including a command line with chrome JavaScript evaluation (including property and function argument completion) and the ability to demand-load external JavaScript and CSS files into window chrome.</li> - <li><a class="external" href="http://getfirebug.com/releases/chromebug/">Chromebug</a> combines elements of a JavaScript debugger and DOM (Firefox, "kinda works for Thunderbird")</li> - <li><a class="link-https" href="https://github.com/bard/mozrepl/wiki">MozRepl</a> explore and modify Firefox and other Mozilla apps while they run (Firefox, Thunderbird version is <a href="https://github.com/bard/mozrepl/issues/47">not working</a>)</li> - <li><a class="external" href="http://www.mouseless.de/index.php?/content/view/18/31/">ExecuteJS</a> an enhanced JavaScript console (<a class="link-https" href="https://addons.mozilla.org/firefox/addon/1729">Firefox version</a>, <a class="external" href="http://xsidebar.mozdev.org/modifiedmisc.html#executejs">Thunderbird version</a> is <a href="https://code.google.com/p/executejs/issues/detail?id=6">not working</a>)</li> - <li><a class="external" href="http://xpcomviewer.mozdev.org">XPCOMViewer</a> an XPCOM inspector (Firefox and Thunderbird)</li> - <li><a class="internal" href="/en/JavaScript/Shells" title="En/JavaScript shells">JavaScript shells</a> to test snippets of JavaScript (Firefox and Thunderbird)</li> - <li><a class="link-https" href="https://addons.mozilla.org/en-US/firefox/addon/5817">SQLite Manager</a> to manage the SQLite database (Firefox and Thunderbird)</li> - <li><a class="external" href="http://www.rumblingedge.com/viewabout/">ViewAbout</a> enables access to various about: dialogs from the View menu (<a class="link-https" href="https://addons.mozilla.org/en-US/firefox/addon/9695">Firefox version</a>, <a class="link-https" href="https://addons.mozilla.org/en-US/thunderbird/addon/9695">Thunderbird version</a> )</li> - <li><a class="external" href="http://code.google.com/p/crashme/">Crash Me Now!</a> useful for testing debug symbols and the crash reporting system (Firefox and Thunderbird)</li> - <li><a href="https://addons.mozilla.org/en-US/firefox/addon/javascript-object-examiner/" title="https://addons.mozilla.org/en-US/firefox/addon/javascript-object-examiner/">Javascript Object Examiner</a> displays JavaScript object methods and properties for any available scope</li> - <li><a href="https://addons.mozilla.org/en-US/firefox/addon/developer-profile/" title="https://addons.mozilla.org/en-US/firefox/addon/developer-profile/">Developer Profile</a> sets up the development environment described above when installed (Firefox and Fennec)</li> -</ul> - -<h3 id="Firefox_extension_proxy_file">Firefox extension proxy file</h3> - -<p>Extension files are normally installed in the user profile. However, it is usually easier to place extension files in a temporary location, which also protects source files from accidental deletion. This section explains how to create a proxy file that points to an extension that is installed in a location other than the user profile.</p> - -<ol> - <li>Get the extension ID from the extension's install.rdf file.</li> - <li>Create a file in the "<code>extensions</code>" directory under your profile directory with the extension's ID as the file name (for example "<code>your_profile_directory/extensions/{46D1B3C0-DB7A-4b1a-863A-6EE6F77ECB58}</code>"). (<a class="external" href="http://kb.mozillazine.org/Profile_folder">How to find your profile directory</a>) Alternatively, rather than using a GUID, create a unique ID using the format "name@yourdomain" (for example <span class="nowiki"><code>chromebug@mydomain.com</code></span>) - then the proxy filename will be same as that ID, with no curly brackets {}.</li> - <li> - <p>The contents of this file should be the path to the directory that contains your install.rdf file, for example <code><span class="nowiki">/full/path/to/yourExtension/</span></code> on Mac and Linux, and <code><span class="nowiki">C:\full\path\to\yourExtension\</span></code> on Windows. Remember to include the closing slash and remove any trailing whitespace.</p> - - <ul> - <li>Note: If you already installed the extension via XPI, you should uninstall it first before creating the pointer file.</li> - <li>Also note that the use of proxy files requires that the extension's chrome.manifest defines its chrome urls using traditional directories, rather than a JARed structure. See below.</li> - </ul> - </li> - <li>Place the file in the extensions folder of your profile and restart the application.</li> -</ol> - -<h3 id="Using_directories_rather_than_JARs">Using directories rather than JARs</h3> - -<p>Regardless of whether you choose to eventually package your extension's chrome in a JAR or in directories, developing in directories is simpler. If you choose a JARed structure for releasing, you can still develop with a directory structure by editing your chrome.manifest. For example, rather than having</p> - -<pre class="eval">content myExtension jar:chrome/myExtension.jar!/content/ -</pre> - -<p>use</p> - -<pre class="eval">content myExtension chrome/content/ -</pre> - -<p>{{ h1_gecko_minversion("Preventing the first launch extension selector", "8.0") }}</p> - -<p>Starting in Firefox 8, on the first launch of a new version of Firefox, it presents user interface letting users select which third party add-ons to keep. This lets them weed out add-ons that were installed without their knowledge, or that are no longer needed.</p> - -<p>However, this interface can be disruptive when debugging add-ons. You can avoid this by setting the preference <code>extensions.autoDisableScopes</code> to 14.</p> - -<p>{{ languages( { "de": "de/Einrichten_einer_Entwicklungsumgebung_für_Erweiterungen", "fr": "fr/Configuration_d'un_environnement_de_développement_d'extensions", "ja": "ja/Setting_up_extension_development_environment", "zh-cn": "cn/Setting_up_extension_development_environment", "pl": "pl/Przygotowanie_środowiska_programowania_rozszerzenia", "ru": "ru/Настройка_среды_разработки_расширений" } ) }}</p> diff --git a/files/pt-br/sandbox/index.html b/files/pt-br/sandbox/index.html deleted file mode 100644 index b16043d457..0000000000 --- a/files/pt-br/sandbox/index.html +++ /dev/null @@ -1,39 +0,0 @@ ---- -title: Minha Sandbox -slug: Sandbox -tags: - - Sandox - - Tutorial -translation_of: Sandbox ---- -<h2 id="Hello_World" name="Hello_World">Olá Mundo</h2> - -<h3 id="Conteúdo_HTML">Conteúdo HTML</h3> - -<pre class="brush: css line-numbers language-css notranslate"><h1>Olá mundo</h1> -<code class="language-css"><ul class=<span class="string token">"list"</span>> - <li>Abacaxi</li> - <li>Limão</li> - <li>Batata</li> - <li>Alface</li> - <li>Paçoca</li> -</ul></code></pre> - -<h3 id="Conteúdo_CSS">Conteúdo CSS</h3> - -<pre class="notranslate">h1 { - color: lime; -} -</pre> - -<h2 id="Resultado"><strong>Resultado</strong></h2> - -<p>{{EmbedLiveSample('Hello_World','','','','Sandbox')}}</p> - -<ul class="htmlelt"> - <li><dfn>Conteúdo permitido</dfn> Nenhum, assim como este {{Glossary("elemento vazio")}}.</li> -</ul> - -<ul class="htmlelt"> - <li>Não há conteúdos aceitáveis, porque é um {{Glossary("elemento vazio")}}.</li> -</ul> diff --git a/files/pt-br/spidermonkey/jsapi_user_guide/index.html b/files/pt-br/spidermonkey/jsapi_user_guide/index.html deleted file mode 100644 index 724dfae781..0000000000 --- a/files/pt-br/spidermonkey/jsapi_user_guide/index.html +++ /dev/null @@ -1,917 +0,0 @@ ---- -title: JSAPI User Guide -slug: SpiderMonkey/JSAPI_User_Guide -translation_of: Mozilla/Projects/SpiderMonkey/JSAPI_User_Guide ---- -<p>{{SpiderMonkeySidebar("General")}}</p> - -<p><span id="result_box" lang="pt"><span class="hps">Este documento explica</span> <span class="hps">como incorporar</span> <span class="hps">SpiderMonkey</span><span>, o motor</span> <span class="hps">JavaScript</span> <span class="hps">do Mozilla</span><span>,</span> <span class="hps">em</span> <span class="hps">seu</span> <span class="hps">programa na linguagem C ++</span><span>.</span><br> - <br> - <span class="hps">JavaScript</span> <span class="hps">é amplamente utilizado para</span> <span class="hps">se executar scripts</span> <span class="hps">do lado do cliente</span> <span class="hps">que rodam</span> <span class="hps">no navegador.</span> <span class="hps">Mas</span> <span class="hps">motor de</span> <span class="hps">JavaScript</span> <span class="hps">da Mozilla</span> <span class="hps">é uma biblioteca</span> <span class="hps">que pode ser lincada</span> <span class="hps">a qualquer programa</span> <span class="hps">C</span> <span class="hps">+</span><span class="hps">+</span><span>, e não apenas</span> em <span class="hps">um navegador.</span> <span class="hps">Muitas aplicações</span> <span class="hps">podem se beneficiar disto</span><span>.</span> <span class="hps">Estes programas podem</span> <span class="hps">executar código</span> <span class="hps">JavaScript</span> <span class="hps">através da linguagem</span> <span class="hps">C</span> <span class="hps">+</span><span class="hps">+</span> <span class="hps">usando a API do</span> <span class="hps">SpiderMonkey</span><span>.</span></span></p> - -<div class="note"><strong>Nota:</strong> <span id="result_box" lang="pt"><span class="hps">A página</span> <span class="hps">wiki</span></span> <a class="internal" href="/En/SpiderMonkey/FOSS" title="En/SpiderMonkey/FOSS">FOSS</a> <span id="result_box" lang="pt"> <span class="hps">contém</span> <span class="hps">alguns links para</span> <span class="hps">outras bibliotecas</span> <span class="hps">e programas que</span> <span class="hps">podem tornar a vida</span> <span class="hps">mais fácil</span> <span class="hps">quando se utiliza</span> Spidermonkey <span class="hps">e</span> <span class="hps">JSAPI</span><span>.</span></span></div> - -<h2 id="What_SpiderMonkey_does" name="What_SpiderMonkey_does">Oque o SpiderMonkey faz</h2> - -<p><span id="result_box" lang="pt"><span class="hps">O motor de</span> <span class="hps">JavaScript</span> <span class="hps">compila e</span> <span class="hps">executa scripts</span> <span class="hps">que contêm</span> <span class="hps">instruções e funções</span> <span class="hps">de JavaScript.</span> <span class="hps">O motor</span> <span class="hps">lida com</span> <span class="hps">a alocação de memória</span> <span class="hps">para os objetos</span> <span class="hps">necessários para executar</span> <span class="hps">scripts,</span> <span class="hps">e</span> <span class="hps">ele tabém limpa</span> <span class="hps">o lixo e</span> <span class="hps">recolhe</span> <span class="hps">os objetos</span> <span class="hps">que já não</span> <span class="hps">necessita.</span><br> - <br> - <span class="hps">A palavra</span> <span class="hps">JavaScript</span> <span class="hps">pode trazer na</span> <span class="hps">mente <span id="result_box" lang="pt"> <span class="hps">características</span></span></span> <span class="hps">como manipuladores de eventos</span> <span class="hps">(como</span> <a href="https://developer.mozilla.org/en/DOM/element.onclick"><span class="hps">onclick</span><span>)</span></a><span>,</span> <span class="hps">objetos <a href="https://developer.mozilla.org/en/DOM">DOM</a></span><span>,</span> <a href="https://developer.mozilla.org/en/DOM/window.open"><span class="hps">window.open</span></a> <span class="hps">e</span> <span class="hps"><a href="https://developer.mozilla.org/en/DOM/XMLHttpRequest">XMLHttpRequest</a>.</span> <span class="hps">Mas no</span> <span class="hps">Mozilla,</span> <span class="hps">todos esses recursos</span> <span class="hps">são efetivamente prestados</span> <span class="hps">por outros componentes</span><span>, e não pelo</span> <span class="hps">SpiderMonkey</span> <span class="hps">em si</span><span>.</span> <span class="hps">SpiderMonkey</span> <span class="hps">fornece</span> <span class="hps">alguns</span> <span class="hps">tipos dados</span> <span class="hps">do núcleo do</span> <span class="hps">JavaScript</span> <span class="hps">como </span><span>números, strings,</span> <span class="hps">arrays</span><span>, objetos,</span> <span class="hps">e</span> <span class="hps">assim por diante,</span> <span class="hps">e alguns</span> <span class="hps">métodos, como</span> <span class="hps">Array.push</span><span>.</span> <span class="hps">Também torna mais</span> <span class="hps">fácil</span> <span class="hps">para cada</span> <span class="hps">aplicativo expor</span> <span class="hps">alguns de seus</span> <span class="hps">próprios objetos</span> <span class="hps">e funções</span> <span class="hps">no código</span> <span class="hps">JavaScript.</span> <span class="hps">Browsers</span> <span class="hps">expoem objetos</span> <span class="hps">DOM.</span> <span class="hps">O aplicativo</span> <span class="hps">irá expor</span> <span class="hps">objetos</span> <span class="hps">que são relevantes</span> <span class="hps">para o tipo de</span> <span class="hps">script que você</span> <span class="hps">desejar escrever.</span> <span class="hps">É até</span> <span class="hps">o desenvolvedor do aplicativo</span> <span class="hps">para decidir</span> <span class="hps">quais objetos</span> <span class="hps">e</span> <span class="hps">métodos</span> <span class="hps">serão expostos nos</span> <span class="hps">scripts.</span></span></p> - -<h2 id="Hello_world">Hello world</h2> - -<h3 id="Using_the_SpiderMonkey_library" name="Using_the_SpiderMonkey_library">Usando a biblioteca SpiderMonkey</h3> - -<p><span id="result_box" lang="pt"><span class="hps">Para construir</span> <span class="hps">SpiderMonkey</span> <span class="hps">a partir do código fonte</span><span>, consulte</span></span> <a href="/En/SpiderMonkey/Build_Documentation" title="en/SpiderMonkey_Build_Documentation">SpiderMonkey Build Documentation</a>.</p> - -<p><span id="result_box" lang="pt"><span class="hps">Alguns sistemas</span> <span class="hps">(como o</span> <span class="hps">Debian</span><span>) fornecem</span> <span class="hps">SpiderMonkey</span> <span class="hps">como um</span> <span class="hps">pacote pré-construído</span><span>,</span> <span class="hps">porém construí-lo</span> <span class="hps">a partir do fonte</span> tornará<span class="hps"> o seu</span> <span class="hps">programa</span> <span class="hps">mais fácil de depurar</span><span>.</span><br> - <br> - <span class="hps">Os código em linguagem</span> <span class="hps">C</span><span class="hps">+</span>+ <span class="hps">acessam o</span> <span class="hps">SpiderMonkey</span> <span class="hps">via</span> <span class="hps">JSAPI</span><span>, ao incluir</span> <span class="hps">o cabeçalho</span> <span class="atn hps">"</span><span>jsapi.h</span><span>"</span><span>.</span> <span class="hps">Uma visão geral da</span> <span class="hps">funcionalidade</span> da <span class="hps">JSAPI</span> virá a seguir<span class="hps">.</span> <span class="hps">Para mais detalhes</span><span>, consulte a</span></span> <a href="/en/SpiderMonkey/JSAPI_Reference" title="en/JSAPI_Reference">Referencia JSAPI </a>.</p> - -<h3 id="O_Universo_SpiderMonkey">O Universo SpiderMonkey</h3> - -<p><span id="result_box" lang="pt"><span title="In order to run any JavaScript code in SpiderMonkey, an application must have three key elements: a JSRuntime, a JSContext, and a global object.">A fim de executar qualquer código JavaScript em SpiderMonkey , um aplicativo deve ter três elementos-chave : a JSRuntime , um JSContext e um objeto global. </span><span title="This section describes what these things are.">Esta seção descreve o que são essas coisas. </span><span title="The next section explains how to set them up, using JSAPI functions.">A próxima seção explica como configurá-los , usando as funções JSAPI .</span><br> - <br> - <strong><span title="Runtimes.">Runtimes . </span></strong><span title="A JSRuntime, or runtime, is the space in which the JavaScript variables, objects, scripts, and contexts used by your application are allocated.">A JSRuntime , ou execução, é o espaço no qual as variáveis de JavaScript , objetos , scripts e contextos usados pelo seu aplicativo são alocados . </span><span title="Every JSContext and every object in an application lives within a JSRuntime.">Cada JSContext e cada objeto em um aplicativo vive dentro de uma JSRuntime . </span><span title="They cannot travel to other runtimes or be shared across runtimes.">Eles não podem viajar para outros tempos de execução ou ser compartilhado entre os tempos de execução . </span><span title="Most applications only need one runtime.">A maioria dos aplicativos só precisa de um tempo de execução.</span><br> - <br> - <strong><span title="Contexts.">Contextos. </span></strong><span title="A JSContext, or context, is like a little machine that can do many things involving JavaScript code and objects.">A JSContext , ou contexto, é como uma pequena máquina que pode fazer muitas coisas que envolvem código JavaScript e objetos. </span><span title="It can compile and execute scripts, get and set object properties, call JavaScript functions, convert JavaScript data from one type to another, create objects, and so on.">Ele pode compilar e executar scripts, obter e definir propriedades do objeto, chamar funções JavaScript , converter os dados em JavaScript a partir de um tipo para outro , criar objetos , e assim por diante . </span><span title="Almost all JSAPI functions require a JSContext * as the first argument, just like most <stdio.h> functions require a FILE *.">Quase todas as funções JSAPI exigem um JSContext * como o primeiro argumento , assim como a maioria das funções <stdio.h> requerem um arquivo * .</span><br> - <br> - <span title="There is a close association between contexts and threads.">Existe uma estreita associação entre contextos e threads. </span><span title="Simple, single-threaded applications can use a single context for everything.">Simples, aplicações single-threaded pode usar um único contexto para tudo. </span><span title="But each context can only do one thing at a time, so in a multithreaded application, only one thread at a time should use any given context.">Mas cada contexto só pode fazer uma coisa de cada vez , de modo que em um aplicativo multithread , apenas um thread por vez deve usar um determinado contexto. </span><span title="Such an application typically has one context per thread.">Esse pedido normalmente tem um contexto por segmento. </span><span title="JavaScript objects, on the other hand, are not permanently associated with the script, thread, or context that created them.">JavaScript objetos , por outro lado , não são permanentemente associado com o script , linha, ou o contexto que os criou. </span><span title="They can be shared among many scripts or even many threads, as shown in the figure below.">Eles podem ser compartilhados entre muitos scripts ou até mesmo muitos segmentos , como mostrado na figura abaixo .</span><br> - <br> - <span title="Figure 1.1 illustrates the relationship of scripts to the runtime, contexts, and objects.">A Figura 1.1 ilustra a relação de scripts para o tempo de execução , os contextos e objetos.</span></span></p> - -<div style="margin-left: 3em;"> -<p><strong><small>Figure 1.1</small></strong></p> - -<p><img alt="Image:Over3.gif" class="internal" src="/@api/deki/files/291/=Over3.gif"></p> -</div> - -<p><strong>Objetos Globais .</strong> <span id="result_box" lang="pt"><span class="hps">Por fim,</span> <span class="hps">o objeto global</span> <span class="hps">contém todas as classes</span><span>, funções e</span> <span class="hps">variáveis</span> <span class="hps">que estão disponíveis</span> <span class="hps">para o código</span> <span class="hps">JavaScript</span> <span class="hps">para uso.</span> <span class="hps">Sempre que</span> <span class="hps">o código JavaScript</span> <span class="hps">faz algo como</span> <span class="hps">window.open</span> <span class="atn hps">(</span><span class="atn hps">"</span><span>http://www.mozilla.org/</span><span>")</span><span>,</span> <span class="hps">ele está acessando</span> <span class="hps">uma propriedade</span> <span class="hps">global,</span> <span class="hps">nesta janela</span> <span class="hps">caso.</span> <span class="hps">Aplicações</span> <span class="hps">JSAPI</span> <span class="hps">tem total controle sobre</span> <span class="hps">o que</span> <span class="hps">os scripts</span> <span class="hps">propriedades</span> <span class="hps">globais</span> <span class="hps">podem ver.</span> <span class="hps">A aplicação</span> <span class="hps">começa</span> <span class="hps">com a criação de</span> <span class="hps">um objeto e</span> <span class="hps">preenchê-lo</span> <span class="hps">com as</span> <span class="hps">classes padrão</span> <span class="hps">do JavaScript</span><span>, como</span> <span class="hps">matriz</span> <span class="hps">e objeto.</span> <span class="hps">Em seguida</span><span>, adiciona os</span> <span class="hps">classes personalizadas</span><span>, funções e</span> <span class="atn hps">variáveis (</span><span>como a</span> <span class="hps">janela</span><span>)</span> <span class="hps">a aplicação</span> <span class="hps">quer oferecer</span><span>, ver</span> <span class="hps">objetos personalizados</span> <span class="hps">abaixo.</span> <span class="hps">Cada vez que o</span> <span class="hps">aplicativo é executado</span> <span class="hps">um script</span> <span class="hps">JS</span> <span class="hps">(usando</span><span>, por exemplo,</span> <span class="hps">JS_EvaluateScript</span><span>)</span><span>, ele fornece</span> <span class="hps">o objeto global</span> <span class="hps">para esse script</span> <span class="hps">de usar.</span> <span class="hps">Como</span> <span class="hps">o script é executado</span><span>, ele pode criar</span> <span class="hps">funções globais</span> <span class="hps">e variáveis</span> <span class="hps">próprias.</span> <span class="hps">Todas essas funções</span><span>, classes e</span> <span class="hps">variáveis</span> <span class="hps">são armazenados como</span> <span class="hps">propriedades do objeto</span> <span class="hps">global.</span></span></p> - -<h3 id="Um_pequeno_exemplo">Um pequeno exemplo</h3> - -<p><span id="result_box" lang="pt"><span class="hps">Cada um dos três</span> <span class="hps">elementos-chave</span> <span class="hps">descritos na seção</span> <span class="hps">anterior requer</span> <span class="hps">algumas chamadas</span> <span class="hps">JSAPI</span></span>:</p> - -<ul> - <li> - <p>O runtime: Usa <code><a href="/en/SpiderMonkey/JSAPI_Reference/JS_NewRuntime" title="en/JS_NewRuntime">JS_NewRuntime</a></code> para cria-lo and <code><a href="/en/SpiderMonkey/JSAPI_Reference/JS_DestroyRuntime" title="en/JS_DestroyRuntime">JS_DestroyRuntime</a></code> para limpa-lo quando finalizado. <span id="result_box" lang="pt"><span class="hps">Quando seu aplicativo</span> <span class="hps">é feito com</span> <span class="hps">SpiderMonkey</span> <span class="hps">completamente</span><span>, use</span> <code><a href="https://developer.mozilla.org/en/SpiderMonkey/JSAPI_Reference/JS_ShutDown" title="en/JS_ShutDown">JS_ShutDown</a></code> <span class="hps">para</span> <span class="hps">liberar quaisquer</span> <span class="hps">recursos restantes</span> <span class="hps">em cache.</span> <span class="hps">(Isto é uma</span> <span class="hps">mera</span> <span class="hps">minúcia</span> <span class="hps">se o processo</span> <span class="hps">está prestes a</span> <span class="hps">sair</span> <span class="hps">de qualquer maneira.</span> <span class="hps">Mas, como</span> <span class="hps">este nem sempre</span> <span class="hps">é o caso</span><span>, chamando</span> <span class="hps">JS_Shutdown</span> <span class="hps">é um bom</span> <span class="hps">hábito se entrar</span><span>.</span><span>)</span></span></p> - </li> - <li> - <p>O contexto: Usa <code><a href="/en/SpiderMonkey/JSAPI_Reference/JS_NewContext" title="en/JS_NewContext">JS_NewContext</a></code> e <code><a href="/en/SpiderMonkey/JSAPI_Reference/JS_DestroyContext" title="en/JS_DestroyContext">JS_DestroyContext</a></code>. <span id="result_box" lang="pt"><span class="hps">Para O</span> <span class="hps">Máximo</span> <span class="hps">conformidade com o padrão</span> <span class="hps">ECMAScript</span><span>,</span> <span class="hps">aplicativos também</span> <span class="hps">devem usar</span> <code><a href="https://developer.mozilla.org/en/SpiderMonkey/JSAPI_Reference/JS_SetOptions" title="en/JS_SetOptions">JS_SetOptions</a></code> <span class="hps">para permitir</span> <code><a href="https://developer.mozilla.org/en/SpiderMonkey/JSAPI_Reference/JS_SetOptions" title="en/JS_SetOptions">JSOPTION_VAROBJFIX</a></code><span>.</span> <span class="hps">Para</span> <span class="hps">obter os mais recentes</span> <span class="hps">recursos da linguagem</span> <span class="hps">JavaScript</span><span>,</span> <span class="hps">aplicativos podem</span> <span class="hps">usar</span> <span class="hps"><code><a href="https://developer.mozilla.org/en/SpiderMonkey/JSAPI_Reference/JS_SetVersion" title="en/JS_SetVersion">JS_SetVersion</a></code></span> <span class="hps">O relatório de erros</span> <span class="hps">também</span> <span class="hps">é</span> <span class="atn hps">"per-</span><span>context" e</span> <span class="hps">está habilitado</span> <span class="hps">usando</span> <span class="hps">J<code><a href="https://developer.mozilla.org/en/SpiderMonkey/JSAPI_Reference/JS_SetErrorReporter" title="en/JS_SetErrorReporter">JS_SetErrorReporter</a></code>.</span><span>.</span></span></p> - </li> - <li> - <p><span id="result_box" lang="pt"><span class="hps">O</span> <span class="hps">objeto global</span><span>:</span> <span class="hps">Para criar este</span> <span class="hps">objeto, você</span> <span class="hps">primeiro</span> <span class="hps">precisa de uma</span> <code><a href="https://developer.mozilla.org/en/SpiderMonkey/JSAPI_Reference/JSClass" title="en/JSClass">JSClass</a></code> <span class="hps">com a opção</span> <code><a href="https://developer.mozilla.org/en/SpiderMonkey/JSAPI_Reference/JSClass.flags" title="en/JSClass.flags">JSCLASS_GLOBAL_FLAGS</a></code><span>.</span> <span class="hps">O exemplo abaixo</span> <span class="hps">define um</span> <span class="hps"><code>JSClass</code></span> <span class="hps">muito básico</span> <span class="hps">(nomeado</span> <span class="hps">global_class</span><span>) sem</span> <span class="hps">métodos ou propriedades</span> <span class="hps">próprias.</span> <span class="hps">Use</span> <code><a href="https://developer.mozilla.org/en/SpiderMonkey/JSAPI_Reference/JS_NewGlobalObject" title="en/SpiderMonkey/JSAPI_Reference/JS_NewGlobalObject">JS_NewGlobalObject</a> </code><span class="hps">para criar um objeto</span> <span class="hps">global.</span> <span class="hps">Use</span> <code><a href="https://developer.mozilla.org/en/SpiderMonkey/JSAPI_Reference/JS_InitStandardClasses" title="en/JS_InitStandardClasses">JS_InitStandardClasses</a></code> <span class="hps">para preenchê-lo</span> <span class="hps">com</span> <span class="hps">os</span> <span class="hps">os objetos globals</span> <span class="hps">JavaScript</span> <span class="hps">padrão.</span></span></p> - </li> -</ul> - -<p><span id="result_box" lang="pt"><span class="hps">Isto pode parecer</span> <span class="hps">um monte de blocos</span> <span class="hps">para uma aplicação</span> <span class="hps">simples.</span> <span class="hps">Isso equivale a</span> <span class="hps">cerca de 50</span> <span class="hps">linhas de código,</span> <span class="hps">como mostrado abaixo.</span> <span class="hps">Mas o</span> <span class="hps">JSAPI</span> <span class="hps">é projetado</span> <span class="hps">para escalar</span> <span class="hps">aplicações que necessitam de</span> <span class="hps">muitos fios</span><span>,</span> <span class="hps">muitos contextos</span><span>, e muitos</span> <span class="hps">objetos globais</span><span>.</span> <span class="hps">É uma</span> <span class="hps">API</span> <span class="hps">refinada</span><span>, apoiando</span> <span class="hps">muitas combinações diferentes de</span> <span class="hps">peças</span><span>,</span> <span class="hps">e dando</span> <span class="hps">às aplicações um</span> <span class="hps">controle preciso sobre</span> <span class="hps">como</span> <span class="hps">SpiderMonkey</span> <span class="hps">se comporta.</span><br> - <br> - <span class="hps">Aqui está o código</span> <span class="hps"><span id="result_box" lang="pt"><span class="hps">clichê </span></span>necessário</span> <span class="hps">para uma aplicação</span> <span class="hps">JSAPI</span> <span class="hps">mínima.</span> <span class="hps">Ele contém tudo o</span> <span class="hps">descrito acima.</span></span></p> - -<pre class="brush: cpp">#include "jsapi.h" - -/* The class of the global object. */ -static JSClass global_class = { "global", - JSCLASS_NEW_RESOLVE | JSCLASS_GLOBAL_FLAGS, - JS_PropertyStub, - JS_DeletePropertyStub, - JS_PropertyStub, - JS_StrictPropertyStub, - JS_EnumerateStub, - JS_ResolveStub, - JS_ConvertStub, - NULL, - JSCLASS_NO_OPTIONAL_MEMBERS -}; - -/* The error reporter callback. */ -void reportError(JSContext *cx, const char *message, JSErrorReport *report) { - fprintf(stderr, "%s:%u:%s\n", - report->filename ? report->filename : "[no filename]", - (unsigned int) report->lineno, - message); -} - -int run(JSContext *cx) { - /* Enter a request before running anything in the context */ - JSAutoRequest ar(cx); - - /* Create the global object in a new compartment. */ - JSObject *global = JS_NewGlobalObject(cx, &global_class, NULL); - if (global == NULL) - return 1; - - /* Set the context's global */ - JSAutoCompartment ac(cx, global); - JS_SetGlobalObject(cx, global); - - /* Populate the global object with the standard globals, like Object and Array. */ - if (!JS_InitStandardClasses(cx, global)) - return 1; - - /* Your application code here. This may include JSAPI calls to create your own custom JS objects and run scripts. */ - - return 0; -} - -int main(int argc, const char *argv[]) { - /* Initialize the JS engine -- new/required as of SpiderMonkey 31. */ - if (!JS_Init()) - return 1; - - /* Create a JS runtime. */ - JSRuntime *rt = JS_NewRuntime(8L * 1024L * 1024L, JS_NO_HELPER_THREADS); - if (rt == NULL) - return 1; - - /* Create a context. */ - JSContext *cx = JS_NewContext(rt, 8192); - if (cx == NULL) - return 1; - JS_SetOptions(cx, JSOPTION_VAROBJFIX); - JS_SetErrorReporter(cx, reportError); - - int status = run(cx); - - JS_DestroyContext(cx); - JS_DestroyRuntime(rt); - - /* Shut down the JS engine. */ - JS_ShutDown(); - - return status; -} -</pre> - -<p><span id="result_box" lang="pt"><span title="Each JSNative has the same signature, regardless of what arguments it expects to receive from JavaScript.">Cada JSNative tem a mesma assinatura , independentemente de que argumentos ele espera receber a partir do JavaScript.</span><br> - <br> - <span title="The JavaScript arguments to the function are given in argc and vp.">Os argumentos de JavaScript para a função que são dadas em argc e vp.</span><span title="argc tells how many actual arguments the caller passed, and JS_ARGV(cx, vp) returns an array of those arguments.">argc dizem quantos argumentos reais o chamador passou, e JS_ARGV ( cx, vp ) retorna um array desses argumentos . </span><span title="The arguments do not have native C++ types like int and float; rather, they are jsvals, JavaScript values.">Os argumentos não têm tipos nativos C ++ como int e float , mas sim, eles são jsvals , valores de JavaScript. </span><span title="The native function uses JS_ConvertArguments to convert the arguments to C++ types and store them in local variables.">A função nativa usa JS_ConvertArguments para converter os argumentos para tipos C++ e armazená-los em variáveis locais. </span><span title="The native function uses JS_SET_RVAL(cx, vp, val) to store its JavaScript return value.">A função nativa usa JS_SET_RVAL ( cx, vp , val ) para armazenar o valor de retorno JavaScript.</span><br> - <br> - <span title="On success, a JSNative must call JS_SET_RVAL and return JS_TRUE.">Em caso de sucesso , um JSNative deve chamar JS_SET_RVAL e retornar JS_TRUE . </span><span title="The value passed to JS_SET_RVAL is returned to the JavaScript caller.">O valor transmitido JS_SET_RVAL é devolvido ao chamador JavaScript .</span><br> - <br> - <span title="On failure, a JSNative calls an error-reporting function, in this case JS_ReportError, and returns JS_FALSE.">Em caso de falha , um JSNative chama uma função de erro de comunicação , neste caso JS_ReportError e retorna JS_FALSE . </span><span title="This causes a JavaScript exception to be thrown.">Isso faz com que uma exceção JavaScript seja acionada. </span><span title="The caller can catch the exception using a JavaScript try/catch statement.">O chamador pode capturar a exceção usando uma instrução try / catch em JavaScript.</span><br> - <br> - <span title="To make native functions callable from JavaScript, declare a table of JSFunctionSpecs describing the functions.">Para chamar funções nativas do <span id="result_box" lang="pt"><span title="To make native functions callable from JavaScript, declare a table of JSFunctionSpecs describing the functions.">de JavaScript</span></span> pode-se declarar uma tabela <code style="font-size: 14px;"><a class="internal" href="https://developer.mozilla.org/En/SpiderMonkey/JSAPI_Reference/JSFunctionSpec" title="en/JSFunctionSpec">JSFunctionSpec</a>s</code> descrevendo as funções . </span><span title="Then call JS_DefineFunctions.">Em seguida, chamar <a class="internal" href="https://developer.mozilla.org/en/SpiderMonkey/JSAPI_Reference/JS_DefineFunctions" title="en/JS_DefineFunctions"><code style="font-size: 14px;">JS_DefineFunctions</code></a> .</span></span></p> - -<pre>static JSFunctionSpec myjs_global_functions[] = { - <a class="internal" href="../JS_FS">JS_FS</a>("rand", myjs_rand, 0, 0), - JS_FS("srand", myjs_srand, 0, 0), - JS_FS("system", myjs_system, 1, 0), - <a class="internal" href="../JS_FS_END">JS_FS_END</a> -}; - - ... - if (!<a class="internal" href="JSAPI_Reference/JS_DefineFunctions">JS_DefineFunctions</a>(cx, global, myjs_global_functions)) - return JS_FALSE; - ... -</pre> - -<p><span id="result_box" lang="pt"><span class="hps">Uma vez que as</span> <span class="hps">funções são definidas como</span> <span class="hps"><span style="color: #4d4e53; font-family: courier new,andale mono,monospace; line-height: normal;">global</span>,</span> <span class="hps">qualquer</span> <span class="hps">script que usa</span> <span class="hps"><span style="color: #4d4e53; font-family: courier new,andale mono,monospace; line-height: normal;">global</span> como</span> <span class="hps">o objeto global</span> <span class="hps">pode chamá-las</span><span>, assim como qualquer</span> <span class="hps">página da web</span> <span class="hps">pode chamar</span> uma caixa <span class="hps">de alerta.</span> <span class="hps">No ambiente</span> <span class="hps">que criamos</span><span>, o script</span> <span class="atn hps">"</span><span>Olá mundo</span><span>"</span> <span class="hps">ficaria assim</span><span>:</span></span></p> - -<pre>system("echo hello world"); -</pre> - -<h2 id="JSAPI_-_Conceitos">JSAPI - Conceitos</h2> - -<p>Esta seção tem como objetivo preencher as principais lacunas no quadro do JSAPI apresentado até agora. Para fazer qualquer coisa útil com SpiderMonkey, você deve ler todas as três seções.</p> - -<h3 id="Working_with_JS_Values" name="Working_with_JS_Values">JavaScript Valores</h3> - -<p>Artigo Principal : <code><a href="/En/SpiderMonkey/JSAPI_Reference/Jsval" title="en/jsval">JS::Value</a></code></p> - -<p>JavaScript é uma linguagem de tipagem dinâmica: as variáveis e propriedades não tem um tipo que é fixado em tempo de compilação. Como é possível que uma linguagem de tipagem estática, como C ou C + +, em que todas as variáveis têm tipos, interagir com JavaScript?O JSAPI fornece um tipo de dados, <a href="/En/SpiderMonkey/JSAPI_Reference/Jsval" style="font-family: 'Courier New', 'Andale Mono', monospace; line-height: normal;" title="en/jsval">JS::Value</a> (também com um typedef jsval obsoleto), que pode conter valores de JavaScript de qualquer tipo. Um <span style="font-family: courier new,andale mono,monospace; line-height: normal;">JS::Value</span> pode ser um número, uma string, um valor booleano, uma referência a um objeto (como um <code style="font-size: 14px;">Object</code>, <code style="font-size: 14px;">Array</code>, <code style="font-size: 14px;">Date</code>, ou <code style="font-size: 14px;">Function</code>), ou um dos valores especiais <code style="font-size: 14px;">null</code> ou <code style="font-size: 14px;">undefined</code>..</p> - -<p>Para inteiros e valores booleanos, um <span style="font-family: courier new,andale mono,monospace; line-height: normal;">jsval</span> contém o próprio valor. Em outros casos, o jsval é um ponteiro para um objeto, string ou número.</p> - -<div class="warning"> -<div><span style="color: #ffffff;"><strong>Atenção:</strong> Como ponteiros em C ++, ao contrário das variaveis JavaScript (JavaScript vars), um </span><span style="color: #ffffff; font-family: courier new,andale mono,monospace; line-height: normal;">JS::Value</span><span style="color: #ffffff;"> <strong>não</strong> é automaticamente inicializado para um valor seguro, e pode se tornar um "</span><span style="color: #ffffff;">dangling pointer" </span><span style="color: #ffffff;">!</span></div> - -<div> </div> - -<div><span style="color: #ffffff;">Um ponteiro dangling é um ponteiro que é utilizado para apontar para um objeto válido, mas não o faz porque o objeto não existe mais. Usando um ponteiro dangling um programa em C++ </span><span style="color: #ffffff; line-height: 1.5;">pode falhar </span><span style="color: #ffffff; line-height: 1.5;"> (ou pior). No caso de um </span><span style="color: #ffffff; font-family: courier new,andale mono,monospace; line-height: normal;">JS::Value</span><span style="color: #ffffff; line-height: 1.5;">, o coletor de lixo JavaScript recicla objetos, strings e números que não parecem estar em uso, e um </span><span style="color: #ffffff; font-family: courier new,andale mono,monospace; line-height: normal;">JS::Value</span><span style="color: #ffffff; line-height: 1.5;"> por si só não protege seu referente deste coletor de lixo. Veja a "garbage collenction" abaixo para obter informações cruciais sobre a forma de usar </span><span style="color: #ffffff; font-family: courier new,andale mono,monospace; line-height: normal;">JS::Value</span><span style="color: #ffffff; line-height: 1.5;"> com segurança.</span></div> -</div> - -<p><span style="font-family: courier new,andale mono,monospace; line-height: normal;">JS::Value</span><span style="line-height: 1.5;"> inclue membros de funções para testar tipos de dados JavaScript. Estes são </span><code style="font-size: 14px; color: rgb(77, 78, 83);">isObject()</code><span style="color: #4d4e53;">,</span><code style="font-size: 14px; color: rgb(77, 78, 83);">isNumber()</code><span style="color: #4d4e53;">, </span><code style="font-size: 14px; color: rgb(77, 78, 83);">isInt32()</code><span style="color: #4d4e53;">, </span><code style="font-size: 14px; color: rgb(77, 78, 83);">isDouble()</code><span style="color: #4d4e53;">, </span><code style="font-size: 14px; color: rgb(77, 78, 83);">isString()</code><span style="color: #4d4e53;">, </span><code style="font-size: 14px; color: rgb(77, 78, 83);">isBoolean()</code><span style="color: #4d4e53;">, </span><code style="font-size: 14px; color: rgb(77, 78, 83);">isNull()</code><span style="color: #4d4e53;">, e </span><code style="font-size: 14px; color: rgb(77, 78, 83);">isUndefined()</code><span style="line-height: 1.5;">.</span></p> - -<div> </div> - -<div>Se um <span style="font-family: courier new,andale mono,monospace; line-height: normal;">JS::Value</span> contém um <code style="font-size: 14px;"><a href="/en/SpiderMonkey/JSAPI_Reference/JSObject" title="en/JSObject">JSObject</a></code>, <code style="font-size: 14px;">double</code>, ou <code style="font-size: 14px;"><a href="/en/SpiderMonkey/JSAPI_Reference/JSString" title="en/JSString">JSString</a></code>, você pode lançá-lo para o seu tipo de dados subjacente usando os mesmobros de função <code style="font-size: 14px;">toObject()</code>, <code style="font-size: 14px;">toDouble()</code>, and <code style="font-size: 14px;">toString()</code>, respectivamente. Isso é útil em alguns casos onde o aplicativo ou uma função JSAPI requer uma variável ou argumento de um tipo de dados específico, em vez de um <span style="font-family: courier new,andale mono,monospace; line-height: normal;">JS::Value</span>. Da mesma forma, você pode criar um <span style="font-family: courier new,andale mono,monospace; line-height: normal;">JS::Value</span> envolvendo um ponteiro <code style="font-size: 14px;">JSObject</code>, <code style="font-size: 14px;">double</code>, ou <code style="font-size: 14px;">JSString</code> usando <code style="font-size: 14px;">JS::ObjectValue(JSObject&)</code><span style="line-height: 1.5;">, </span><code style="font-size: 14px;">JS::DoubleValue(double)</code><span style="line-height: 1.5;">, ou </span><code style="font-size: 14px;">JS::StringValue(JSString*)</code><span style="line-height: 1.5;">.</span></div> - -<div> </div> - -<div> </div> - -<h3 id="Garbage_collection">Garbage collection</h3> - -<p>As it runs, JavaScript code implicitly allocates memory for objects, strings, variables, and so on. Garbage collection is the process by which the JavaScript engine detects when those pieces of memory are no longer reachable—that is, they could not possibly ever be used again—and reclaims the memory.</p> - -<p>Garbage collection has two important consequences for JSAPI applications. First, the application must be very careful to ensure that any values it needs are GC-reachable. The garbage collector is rather eager about its job. Any object you leave lying around will be destroyed if you don't tell the JSAPI you're still using it. Second, the application should take steps to reduce the performance impact of garbage collection.</p> - -<h4 id="Keeping_objects_alive">Keeping objects alive</h4> - -<p>If your JSAPI application crashes, it is likely due to a GC-related error. The application must ensure that the garbage collector can reach all the objects, numbers, and strings that are still being used. Otherwise, the GC will free the memory occupied by those values, leading to a probable crash the next time your program tries to use them.</p> - -<p>There are many ways to ensure that a value is GC-reachable.</p> - -<ul> - <li>If you just need the value to remain reachable for the duration of a <code><a href="/en/SpiderMonkey/JSAPI_Reference/JSNative" title="en/JSNative">JSNative</a></code> call, store it in <code>*rval</code> or an element of the <code>argv</code> array. The values stored in those locations are always reachable. To get extra <code>argv</code> slots, use <code><a href="/En/SpiderMonkey/JSAPI_Reference/JSFunctionSpec" title="en/JSFunctionSpec">JSFunctionSpec</a>.extra</code>.</li> -</ul> - -<ul> - <li>If a custom object needs certain values to remain in memory, just store the values in <a href="/en/SpiderMonkey/JSAPI_Reference/JS_SetProperty" title="en/JS_SetProperty">properties</a> of the object. As long as the object is reachable, its properties will remain reachable. If these values must not be accessible from JavaScript, use <a href="/en/SpiderMonkey/JSAPI_Reference/JS_GetReservedSlot" title="en/JS_GetReservedSlot">reserved slots</a> instead. Or store the values in <a href="/en/SpiderMonkey/JSAPI_Reference/JS_SetPrivate" title="en/JS_SetPrivate">private data</a> and implement <code><a href="/en/SpiderMonkey/JSAPI_Reference/JSClass.mark" title="en/JSClass.mark">JSClass.mark</a></code>.</li> -</ul> - -<ul> - <li>If a function creates new objects, strings, or numbers, it can use <code><a href="/en/SpiderMonkey/JSAPI_Reference/JS_EnterLocalRootScope" title="en/JS_EnterLocalRootScope">JS_EnterLocalRootScope</a></code> and <code><a href="/en/SpiderMonkey/JSAPI_Reference/JS_LeaveLocalRootScope" title="en/JS_LeaveLocalRootScope">JS_LeaveLocalRootScope</a></code> to keep those values alive for the duration of the function.</li> -</ul> - -<ul> - <li>To keep a value alive permanently, store it in a <a href="/en/SpiderMonkey/JSAPI_Reference/JS_AddRoot" title="JS_AddRoot">GC root</a>.</li> -</ul> - -<p>Still, GC bugs do occur. These two functions, both available only in <code>DEBUG</code> builds, are especially useful for debugging GC-related crashes:</p> - -<ul> - <li>Use <code><a href="/en/SpiderMonkey/JSAPI_Reference/JS_SetGCZeal" title="en/JS_SetGCZeal">JS_SetGCZeal</a></code> to enable extra garbage collection. GC zeal usually causes a GC-related crash to occur much sooner (closer to its cause) and more reliably. It's for development and debugging only, because the extra garbage collection makes JS very slow.</li> -</ul> - -<ul> - <li>Use <code><a href="/en/SpiderMonkey/JSAPI_Reference/JS_DumpHeap" title="en/JS_DumpHeap">JS_DumpHeap</a></code> to dump the SpiderMonkey heap or specific interesting parts of it.</li> -</ul> - -<p>See <a href="/en/SpiderMonkey_Garbage_Collection_Tips" title="en/SpiderMonkey_Garbage_Collection_Tips">SpiderMonkey Garbage Collection Tips</a> for more details.</p> - -<h4 id="GC_performance">GC performance</h4> - -<p>Overly frequent garbage collection can be a performance issue. Some applications can reduce the frequency of garbage collection simply by increasing the initial size of the <code>JSRuntime</code>.</p> - -<p>Perhaps the best technique is to perform garbage collection during idle time, when it is least likely to have any impact on the user. By default, the JavaScript engine performs garbage collection when it has no other choice except to grow the process. This means that garbage collection typically happens when memory-intensive code is running, perhaps the worst possible time. An application can trigger garbage collection at a more convenient time by calling <code><a href="/en/SpiderMonkey/JSAPI_Reference/JS_GC" title="en/JS_GC">JS_GC</a></code> or <code><a href="/en/SpiderMonkey/JSAPI_Reference/JS_MaybeGC" title="en/JS_MaybeGC">JS_MaybeGC</a></code>. <code>JS_GC</code> forces garbage collection. <code>JS_MaybeGC</code> performs garbage collection only if it is likely to reclaim a worthwhile amount of memory.</p> - -<h3 id="Errors_and_exceptions">Errors and exceptions</h3> - -<p>The importance of checking the return value of JSAPI functions, of course, goes without saying. Almost every JSAPI function that takes a <code><a class="internal" href="/en/SpiderMonkey/JSAPI_Reference/JSRuntime" title="en/SpiderMonkey/JSAPI Reference/JSRuntime">JSContext</a> *</code> argument can fail. The system might run out of memory. There might be a syntax error in a script. Or a script might explicitly <code>throw</code> an exception.</p> - -<p>The JavaScript language has exceptions, and C++ has exceptions, but they are not the same thing. SpiderMonkey does not use C++ exceptions for anything. JSAPI functions never throw C++ exceptions, and when SpiderMonkey calls an application callback, the callback must not throw a C++ exception.</p> - -<h4 id="Throwing_and_catching_exceptions">Throwing and catching exceptions</h4> - -<p>We have already seen one example of how to throw an exception from a <code>JSNative</code> function. Simply call <a class="internal" href="/en/SpiderMonkey/JSAPI_Reference/JS_ReportError" title="en/SpiderMonkey/JSAPI Reference/JS ReportError"><code>JS_ReportError</code></a>, with <code>printf</code>-style arguments, and return <code>JS_FALSE</code>.</p> - -<pre> rc = system(cmd); - if (rc != 0) { - /* Throw a JavaScript exception. */ - <a class="internal" title="en/SpiderMonkey/JSAPI Reference/JS ReportError">JS_ReportError</a>(cx, "Command failed with exit code %d", rc); - return JS_FALSE; - } -</pre> - -<p>This is very much like the JavaScript statement <code>throw new Error("Command failed with exit code " + rc);</code>. Again, note that calling <code>JS_ReportError</code> does not cause a C++ exception to be thrown. It only creates a new JavaScript Error object and stores it in the context as the current <dfn>pending exception</dfn>. The application must also return JS_FALSE.</p> - -<p>Once the C++ function returns JS_FALSE, the JavaScript engine starts unwinding the JavaScript stack, looking for a <code>catch</code> or <code>finally</code> block to execute. But SpiderMonkey's stack unwinding never removes application's C++ functions from the stack. Instead, SpiderMonkey simply returns <code>JS_FALSE</code> or <code>NULL</code> to the application, which can then handle the error as it chooses—or just return <code>JS_FALSE</code> to let it propagate further up the stack.</p> - -<p>Several more examples of throwing and catching exceptions can be found in the <a class="internal" href="/En/SpiderMonkey/JSAPI_Cookbook" title="En/SpiderMonkey/JSAPI Phrasebook">JSAPI Phrasebook</a>.</p> - -<h4 id="Error_reports">Error reports</h4> - -<p>TODO your custom errorreporter</p> - -<p>TODO when errors are reported</p> - -<h4 id="Automatic_handling_of_uncaught_exceptions">Automatic handling of uncaught exceptions</h4> - -<p>The <code>JS_Compile</code>*, <code>JS_Call</code>*, <code>JS_Execute</code>*, and <code>JS_Evaluate</code>* functions automatically pass exceptions to the error reporter in certain cases. Each of these functions checks, just before it returns, to see if an exception is pending in the current <code>JSContext</code>. If so, it then checks to see if there is any other JavaScript script or function on the stack in that <code>JSContext</code>. If so, then the exception might yet be caught, so SpiderMonkey does nothing and returns JS_FALSE, allowing the exception to propagate. But if nothing is on the JavaScript stack, then the uncaught exception is passed to the error reporter and the pending exception is cleared.</p> - -<p>The basic consequence is that top-level application code can just set an error reporter and start calling JSAPI functions. It never has to explicitly handle uncaught exceptions; the error reporter is automatically called. An application can disable automatic uncaught-exception handling using the <a class="internal" href="/en/SpiderMonkey/JSAPI_Reference/JS_SetOptions" title="en/SpiderMonkey/JSAPI Reference/JS -SetOptions"><code>JSOPTION_DONT_REPORT_UNCAUGHT</code></a> option, but it must then deal with uncaught exceptions explicitly by calling <a class="internal" href="/en/SpiderMonkey/JSAPI_Reference/JS_IsExceptionPending" title="en/SpiderMonkey/JSAPI Reference/JS IsExceptionPending"><code>JS_IsExceptionPending</code></a>, <a class="internal" href="/en/SpiderMonkey/JSAPI_Reference/JS_GetPendingException" title="en/SpiderMonkey/JSAPI Reference/JS GetPendingException"><code>JS_GetPendingException</code></a>, <a class="internal" href="/en/SpiderMonkey/JSAPI_Reference/JS_ReportPendingException" title="en/SpiderMonkey/JSAPI Reference/JS_ReportPendingException"><code>JS_ReportPendingException</code></a>, and/or <a class="internal" href="/en/SpiderMonkey/JSAPI_Reference/JS_ClearPendingException" title="en/SpiderMonkey/JSAPI Reference/JS ClearPendingException"><code>JS_ClearPendingException</code></a> whenever a JSAPI function returns <code>JS_FALSE</code> or <code>NULL</code>.</p> - -<h4 id="Uncatchable_errors">Uncatchable errors</h4> - -<p>Another way for a <code>JSNative</code> callback to report an error is like this:</p> - -<pre> if (p == NULL) { - <a class="internal" title="en/SpiderMonkey/JSAPI Reference/JS ReportOutOfMemory">JS_ReportOutOfMemory</a>(cx); - return JS_FALSE; - } -</pre> - -<p>This does something subtly different from what <code>JS_ReportError</code> does.</p> - -<p>Most errors, including those raised by <code>JS_ReportError</code>, are represented as JavaScript exceptions and thus interact with the JavaScript exception-handling language features, <code>try</code>, <code>catch</code>, and <code>finally</code>. However, in some cases we do not want scripts to be able to <code>catch</code> an error; we want script execution to terminate right away. If the system runs out of memory in the middle of a script, we do not want <code>finally</code> blocks to execute, because almost anything a script does requires at least a little memory, and we have none. If a script has been running too long and we want to kill it, it's no good to throw an exception—the script could just <code>catch</code> it and keep going.</p> - -<p>Therefore <code><a class="internal" href="/en/SpiderMonkey/JSAPI_Reference/JS_ReportOutOfMemory" title="en/SpiderMonkey/JSAPI Reference/JS ReportOutOfMemory">JS_ReportOutOfMemory</a>(cx)</code> does <em>not</em> set the pending exception. It is an uncatchable error.</p> - -<p>If SpiderMonkey runs out of memory, or a JSAPI callback returns <code>JS_FALSE</code> without an exception pending, this is treated as an uncatchable error. The JavaScript stack is unwound in the normal way except that <code>catch</code> and <code>finally</code> blocks are ignored. The most recent JSAPI call returns <code>JS_FALSE</code> or <code>NULL</code> to the application.</p> - -<p>An uncatchable error leaves the <code>JSContext</code> in a good state. It can be used again right away. The application does not have to do anything to “recover” from the error, as far as the JSAPI is concerned. (Of course, if the error is that the system is out of memory, that problem remains to be dealt with.)</p> - -<p>Here is some example code that throws an uncatchable error.</p> - -<pre> /* Call the error reporter, if any. This part is optional. */ - <a class="internal" title="en/SpiderMonkey/JSAPI Reference/JS ReportError">JS_ReportError</a>(cx, "The server room is on fire!"); - JS_ReportPendingException(cx); - - /* Make sure the error is uncatchable. */ - <a class="internal" title="en/SpiderMonkey/JSAPI Reference/JS ClearPendingException">JS_ClearPendingException</a>(cx); - return JS_FALSE; -</pre> - -<p> </p> - -<p> </p> - -<h2 id="More sample code" name="More sample code">More sample code</h2> - -<p>The following examples illustrate how to achieve a few different effects using the JSAPI.</p> - -<p>Note that the most important example is in the "A minimal example" section above. More JSAPI code samples appear in the <a href="/En/SpiderMonkey/JSAPI_Cookbook" title="en/JSAPI_Phrasebook">JSAPI Phrasebook</a>.</p> - -<h3 id="Defining_objects_and_properties">Defining objects and properties</h3> - -<pre>/* Statically initialize a class to make "one-off" objects. */ -<a href="JSAPI_Reference/JSClass">JSClass</a> my_class = { - "MyClass", - - /* All of these can be replaced with the corresponding JS_*Stub - function pointers. */ - my_addProperty, my_delProperty, my_getProperty, my_setProperty, - my_enumerate, my_resolve, my_convert, my_finalize -}; - -<a href="JSAPI_Reference/JSObject">JSObject</a> *obj; - -/* - * Define an object named in the global scope that can be enumerated by - * for/in loops. The parent object is passed as the second argument, as - * with all other API calls that take an object/name pair. The prototype - * passed in is null, so the default object prototype will be used. - */ -obj = <a href="JSAPI_Reference/JS_DefineObject">JS_DefineObject</a>(cx, globalObj, "myObject", &my_class, NULL, - <a href="JSAPI_Reference/JS_GetPropertyAttributes">JSPROP_ENUMERATE</a>); - -/* - * Define a bunch of properties with a JSPropertySpec array statically - * initialized and terminated with a null-name entry. Besides its name, - * each property has a "tiny" identifier (MY_COLOR, e.g.) that can be used - * in switch statements (in a common my_getProperty function, for example). - */ -enum my_tinyid { - MY_COLOR, MY_HEIGHT, MY_WIDTH, MY_FUNNY, MY_ARRAY, MY_RDONLY -}; - -static <a href="JSAPI_Reference/JSPropertySpec">JSPropertySpec</a> my_props[] = { - {"color", MY_COLOR, JSPROP_ENUMERATE}, - {"height", MY_HEIGHT, JSPROP_ENUMERATE}, - {"width", MY_WIDTH, JSPROP_ENUMERATE}, - {"funny", MY_FUNNY, JSPROP_ENUMERATE}, - {"array", MY_ARRAY, JSPROP_ENUMERATE}, - {"rdonly", MY_RDONLY, JSPROP_READONLY}, - {0} -}; - -<a href="JSAPI_Reference/JS_DefineProperties">JS_DefineProperties</a>(cx, obj, my_props); - -/* - * Given the above definitions and call to JS_DefineProperties, obj will - * need this sort of "getter" method in its class (my_class, above). See - * the example for the "It" class in js.c. - */ -static JSBool -my_getProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) -{ - if (<a href="JSAPI_Reference/JSVAL_IS_INT">JSVAL_IS_INT</a>(id)) { - switch (<a href="JSAPI_Reference/JSVAL_TO_INT">JSVAL_TO_INT</a>(id)) { - case MY_COLOR: *vp = . . .; break; - case MY_HEIGHT: *vp = . . .; break; - case MY_WIDTH: *vp = . . .; break; - case MY_FUNNY: *vp = . . .; break; - case MY_ARRAY: *vp = . . .; break; - case MY_RDONLY: *vp = . . .; break; - } - } - return JS_TRUE; -} -</pre> - -<h3 id="Defining_classes" name="Defining_classes">Defining classes</h3> - -<p>This pulls together the above API elements by defining a constructor function, a prototype object, and properties of the prototype and of the constructor, all with one API call.</p> - -<p>Initialize a class by defining its constructor function, prototype, and per-instance and per-class properties. The latter are called "static" below by analogy to Java. They are defined in the constructor object's scope, so that <code>MyClass.myStaticProp</code> works along with <code>new MyClass()</code>.</p> - -<p><code><a href="/en/SpiderMonkey/JSAPI_Reference/JS_InitClass" title="en/JS_InitClass">JS_InitClass</a></code> takes a lot of arguments, but you can pass <code>NULL</code> for any of the last four if there are no such properties or methods.</p> - -<p>Note that you do not need to call <code>JS_InitClass</code> to make a new instance of that class—otherwise there would be a chicken-and-egg problem making the global object—but you should call <code>JS_InitClass</code> if you require a constructor function for script authors to call via <code>new</code>, and/or a class prototype object (<code>MyClass.prototype</code>) for authors to extend with new properties at run time. In general, if you want to support multiple instances that share behavior, use <code>JS_InitClass</code>.</p> - -<pre>protoObj = <a href="JSAPI_Reference/JS_InitClass">JS_InitClass</a>(cx, globalObj, NULL, &my_class, - - /* native constructor function and min arg count */ - MyClass, 0, - - /* prototype object properties and methods -- these - will be "inherited" by all instances through - delegation up the instance's prototype link. */ - my_props, my_methods, - - /* class constructor properties and methods */ - my_static_props, my_static_methods); -</pre> - -<h3 id="Running_scripts" name="Running_scripts">Running scripts</h3> - -<pre>/* These should indicate source location for diagnostics. */ -char *filename; -uintN lineno; - -/* - * The return value comes back here -- if it could be a GC thing, you must - * add it to the GC's "root set" with <a href="JSAPI_Reference/JS_AddRoot">JS_AddRoot</a>(cx, &thing) where thing - * is a JSString *, JSObject *, or jsdouble *, and remove the root before - * rval goes out of scope, or when rval is no longer needed. - */ -jsval rval; -JSBool ok; - -/* - * Some example source in a C string. Larger, non-null-terminated buffers - * can be used, if you pass the buffer length to JS_EvaluateScript. - */ -char *source = "x * f(y)"; - -ok = <a href="JSAPI_Reference/JS_EvaluateScript">JS_EvaluateScript</a>(cx, globalObj, source, strlen(source), - filename, lineno, &rval); - -if (ok) { - /* Should get a number back from the example source. */ - jsdouble d; - - ok = <a href="JSAPI_Reference/JS_ValueToNumber">JS_ValueToNumber</a>(cx, rval, &d); - . . . -} -</pre> - -<h4 id="Calling_functions" name="Calling_functions">Calling functions</h4> - -<pre>/* Call a global function named "foo" that takes no arguments. */ -ok = <a href="JSAPI_Reference/JS_CallFunctionName">JS_CallFunctionName</a>(cx, globalObj, "foo", 0, 0, &rval); - -jsval argv[2]; - -/* Call a function in obj's scope named "method", passing two arguments. */ -argv[0] = . . .; -argv[1] = . . .; -ok = <a href="JSAPI_Reference/JS_CallFunctionName">JS_CallFunctionName</a>(cx, obj, "method", 2, argv, &rval); -</pre> - -<h3 id="JSContext" name="JSContext">JSContext</h3> - -<p>Because there is a certain amount of overhead associated with allocating and maintaining contexts, a JSAPI application should:</p> - -<ol> - <li>Create only as many contexts as it needs at one time.</li> - <li>Keep contexts for as long as they may be needed, rather than destroying and recreating them as needed.</li> -</ol> - -<p>If your application creates multiple runtimes, the application may need to know which runtime a context is associated with. In this case, use <code><a href="/en/SpiderMonkey/JSAPI_Reference/JS_GetRuntime" title="en/JS_GetRuntime">JS_GetRuntime</a></code>.</p> - -<p>Use <code><a href="/en/SpiderMonkey/JSAPI_Reference/JS_GetContextPrivate" title="en/JS_GetContextPrivate">JS_SetContextPrivate</a></code> and <code><a href="/en/SpiderMonkey/JSAPI_Reference/JS_GetContextPrivate" title="en/JS_GetContextPrivate">JS_GetContextPrivate</a></code> to associate application-specific data with a context.</p> - -<h3 id="Initializing_built-in_and_global_JS_objects" name="Initializing_built-in_and_global_JS_objects">Initializing built-in and global JS objects</h3> - -<p>For a complete list of built-in objects provided by SpiderMonkey, see <code><a href="/en/SpiderMonkey/JSAPI_Reference/JS_InitStandardClasses" title="en/JS_InitStandardClasses">JS_InitStandardClasses</a></code>.</p> - -<p>The global object that an application provides to scripts largely determines what those scripts can do. For example, the Firefox browser uses its own global object, <code>window</code>. To change the global object for your application, call <code><a href="/en/SpiderMonkey/JSAPI_Reference/JS_SetGlobalObject" title="en/JS_SetGlobalObject">JS_SetGlobalObject</a></code>.</p> - -<h3 id="Creating_and_initializing_custom_objects" name="Creating_and_initializing_custom_objects">Creating and initializing custom objects</h3> - -<p>In addition to using the engine's built-in objects, you will create, initialize, and use your own JS objects. This is especially true if you are using the JS engine with scripts to automate your application. Custom JS objects can provide direct program services, or they can serve as interfaces to your program's services. For example, a custom JS object that provides direct service might be one that handles all of an application's network access, or might serve as an intermediary broker of database services. Or a JS object that mirrors data and functions that already exist in the application may provide an object-oriented interface to C code that is not otherwise, strictly-speaking, object-oriented itself. Such a custom object acts as an interface to the application itself, passing values from the application to the user, and receiving and processing user input before returning it to the application. Such an object might also be used to provide access control to the underlying functions of the application.</p> - -<p>There are two ways to create custom objects that the JS engine can use:</p> - -<ul> - <li>Write a JS script that creates an object, its properties, methods, and constructor, and then pass the script to the JS engine at run time.</li> - <li>Embed code in your application that defines the object's properties and methods, call the engine to initialize a new object, and then set the object's properties through additional engine calls. An advantage of this method is that your application can contain native methods that directly manipulate the object embedding.</li> -</ul> - -<p>In either case, if you create an object and then want it to persist in the run time where it can be used by other scripts, you must root the object by calling <code><a href="/en/SpiderMonkey/JSAPI_Reference/JS_AddRoot" title="en/JS_AddRoot">JS_AddRoot</a></code> or <code><a href="/en/SpiderMonkey/JSAPI_Reference/JS_AddRoot" title="en/JS_AddRoot">JS_AddNamedRoot</a></code>. Using these functions ensures that the JS engine will keep track of the objects and clean them up during garbage collection, if appropriate.</p> - -<h3 id="Creating_an_object_from_a_script" name="Creating_an_object_from_a_script">Creating an object from a script</h3> - -<p>One reason to create a custom JS object from a script is when you only need an object to exist as long as the script that uses it is executing. To create objects that persist across script calls, you can embed the object code in your application instead of using a script.</p> - -<p><strong>Note</strong>: You can also use scripts to create persistent objects, too.</p> - -<p>To create a custom object using a script:</p> - -<ol> - <li>Define and spec the object. What is it intended to do? What are its data members (properties)? What are its methods (functions)? Does it require a run time constructor function?</li> - <li>Code the JS script that defines and creates the object. For example: function myfun(){ var x = newObject(); . . . } <strong>NOTE</strong>: Object scripting using JavaScript occurs outside the context of embedding the JS engine in your applications. For more information about object scripting, see the <em>Client-Side JavaScript Guide</em> and the <em>Server-Side JavaScript Guide</em>. Embed the appropriate JS engine call(s) in your application to compile and execute the script. You have two choices: 1.) compile and execute a script with a single call to <code><a href="/en/SpiderMonkey/JSAPI_Reference/JS_EvaluateScript" title="en/JS_EvaluateScript">JS_EvaluateScript</a></code>, <code><a href="/en/SpiderMonkey/JSAPI_Reference/JS_EvaluateScript" title="en/JS_EvaluateScript">JS_EvaluateUCScript</a></code> or 2.) compile the script once with a call to <code><a href="/en/SpiderMonkey/JSAPI_Reference/JS_CompileScript" title="en/JS_CompileScript">JS_CompileScript</a></code> or <code><a href="/en/SpiderMonkey/JSAPI_Reference/JS_CompileScript" title="en/JS_CompileScript">JS_CompileUCScript</a></code>, and then execute it repeatedly with individual calls to <code><a href="/en/SpiderMonkey/JSAPI_Reference/JS_ExecuteScript" title="en/JS_ExecuteScript">JS_ExecuteScript</a></code>. The "UC" versions of these calls provide support for Unicode-encoded scripts.</li> -</ol> - -<p>An object you create using a script only can be made available only during the lifetime of the script, or can be created to persist after the script completes execution. Ordinarily, once script execution is complete, its objects are destroyed. In many cases, this behavior is just what your application needs. In other cases, however, you will want object persistence across scripts, or for the lifetime of your application. In these cases you need to embed object creation code directly in your application, or you need to tie the object directly to the global object so that it persists as long as the global object itself persists.</p> - -<h3 id="Custom_objects" name="Custom_objects">Custom objects</h3> - -<p>An application can create a custom object without bothering with a <code>JSClass</code>:</p> - -<ol> - <li>Implement the getters, setters, and methods for your custom object in C or C++. Write a <a class="internal" href="/En/SpiderMonkey/JSAPI_Reference/JSPropertyOp" title="en/JSPropertyOp"><code>JSPropertyOp</code></a> for each getter or setter. Write a <a class="internal" href="/en/SpiderMonkey/JSAPI_Reference/JSNative" title="En/JSNative"><code>JSNative</code></a> or <code>JSFastNative</code> for each method.</li> - <li>Declare a <code><a href="/en/SpiderMonkey/JSAPI_Reference/JSPropertySpec" title="en/JSPropertySpec">JSPropertySpec</a></code> array containing information about your custom object's properties, including getters and setters.</li> - <li>Declare a <code><a href="/En/SpiderMonkey/JSAPI_Reference/JSFunctionSpec" title="en/JSFunctionSpec">JSFunctionSpec</a></code> array containing information about your custom object's methods.</li> - <li>Call <code><a href="/en/SpiderMonkey/JSAPI_Reference/JS_NewObject" title="en/JS_NewObject">JS_NewObject</a></code>, <code><a href="/en/SpiderMonkey/JSAPI_Reference/JS_ConstructObject" title="en/JS_ConstructObject">JS_ConstructObject</a></code>, or <code><a href="/en/SpiderMonkey/JSAPI_Reference/JS_DefineObject" title="en/JS_DefineObject">JS_DefineObject</a></code> to create the object.</li> - <li>Call <code><a href="/en/SpiderMonkey/JSAPI_Reference/JS_DefineProperties" title="en/JS_DefineProperties">JS_DefineProperties</a></code> to define the object's properties.</li> - <li>Call <code><a href="/en/SpiderMonkey/JSAPI_Reference/JS_DefineFunctions" title="en/JS_DefineFunctions">JS_DefineFunctions</a></code> to define the object's methods.</li> -</ol> - -<p><code><a href="/en/SpiderMonkey/JSAPI_Reference/JS_SetProperty" title="en/JS_SetProperty">JS_SetProperty</a></code> can also be used to create properties on an object. The properties it creates do not have getters or setters; they are ordinary JavaScript properties.</p> - -<h3 id="Providing_private_data_for_objects" name="Providing_private_data_for_objects">Providing private data for objects</h3> - -<p>Like contexts, you can associate large quantities of data with an object without having to store the data in the object itself. Call <code><a href="/en/SpiderMonkey/JSAPI_Reference/JS_SetPrivate" title="en/JS_SetPrivate">JS_SetPrivate</a></code> to establish a pointer to private data for the object, and call <code><a href="/en/SpiderMonkey/JSAPI_Reference/JS_GetPrivate" title="en/JS_GetPrivate">JS_GetPrivate</a></code> to retrieve the pointer so that you can access the data. Your application is responsible for creating and managing this optional private data.</p> - -<p>To create private data and associate it with an object:</p> - -<ol> - <li>Establish the private data as you would a normal C void pointer variable.</li> - <li>Call <code><a href="/en/SpiderMonkey/JSAPI_Reference/JS_SetPrivate" title="en/JS_SetPrivate">JS_SetPrivate</a></code>, specify the object for which to establish private data, and specify the pointer to the data.</li> -</ol> - -<p>For example:</p> - -<pre> JS_SetPrivate(cx, obj, pdata); -</pre> - -<p>To retrieve the data at a later time, call <code><a href="/en/SpiderMonkey/JSAPI_Reference/JS_GetPrivate" title="en/JS_GetPrivate">JS_GetPrivate</a></code>, and pass the object as an argument. This function returns the pointer to an object's private data:</p> - -<pre> pdata = JS_GetPrivate(cx, obj); -</pre> - -<h2 id="Special_topics">Special topics</h2> - -<h3 id="Handling_Unicode" name="Handling_Unicode">Unicode</h3> - -<p>To pass Unicode data between JavaScript and native code, represent the data in UTF-16 in memory. JavaScript strings, property names, and programs are all made up of <code>jschar</code>s, which are 16-bit unsigned integers.</p> - -<p>Many JSAPI functions operate on null-terminated, 8-bit <code>char</code> strings. These functions convert their <code>char *</code> arguments to 16-bit strings by zero-extending each 8-bit <code>char</code> to 16 bits—unless <a class="internal" href="/en/SpiderMonkey/JSAPI_Reference/JS_C_STRINGS_ARE_UTF8" title="en/SpiderMonkey/JSAPI Reference/JS C STRINGS ARE UTF8"><code>JS_C_STRINGS_ARE_UTF8</code></a> is defined or <a class="internal" href="/En/SpiderMonkey/JSAPI_Reference/JS_CStringsAreUTF8" title="en/SpiderMonkey/JSAPI Reference/JS SetCStringsAreUTF8"><code>JS_SetCStringsAreUTF8</code></a> has been called, in which case each <code>char *</code> string is interpreted as UTF-8 Unicode text.</p> - -<p>The JSAPI provides <code>jschar</code>-based versions of many API functions that operate on strings, object properties, and JavaScript code.</p> - -<table class="fullwidth-table"> - <thead> - <tr> - <th><code>char</code>-based function</th> - <th><code>jschar</code>-based function</th> - </tr> - </thead> - <tbody> - <tr> - <td colspan="2"><em>Unicode data</em></td> - </tr> - <tr> - <td><a class="internal" href="/en/SpiderMonkey/JSAPI_Reference/JS_GetStringBytes" title="En/SpiderMonkey/JSAPI Reference/JS GetStringBytes">JS_GetStringBytes</a><span class="internal"> {{obsolete_inline}}</span></td> - <td><a class="internal" href="/en/SpiderMonkey/JSAPI_Reference/JS_GetStringChars" title="en/SpiderMonkey/JSAPI Reference/JS GetStringChars">JS_GetStringChars</a></td> - </tr> - <tr> - <td><a href="/en/SpiderMonkey/JSAPI_Reference/JS_NewString" title="en/JS_NewString">JS_NewString</a></td> - <td><a href="/en/SpiderMonkey/JSAPI_Reference/JS_NewString" title="en/JS_NewString">JS_NewUCString</a></td> - </tr> - <tr> - <td><a href="/en/SpiderMonkey/JSAPI_Reference/JS_NewStringCopyN" title="en/JS_NewStringCopyN">JS_NewStringCopyN</a></td> - <td><a href="/en/SpiderMonkey/JSAPI_Reference/JS_NewStringCopyN" title="en/JS_NewStringCopyN">JS_NewUCStringCopyN</a></td> - </tr> - <tr> - <td><a href="/en/SpiderMonkey/JSAPI_Reference/JS_NewStringCopyZ" title="en/JS_NewStringCopyZ">JS_NewStringCopyZ</a></td> - <td><a href="/en/SpiderMonkey/JSAPI_Reference/JS_NewStringCopyZ" title="en/JS_NewStringCopyZ">JS_NewUCStringCopyZ</a></td> - </tr> - <tr> - <td><a href="/en/SpiderMonkey/JSAPI_Reference/JS_InternString" title="en/JS_InternString">JS_InternString</a></td> - <td><a href="/en/SpiderMonkey/JSAPI_Reference/JS_InternString" title="en/JS_InternString">JS_InternUCString</a>, <a href="/en/SpiderMonkey/JSAPI_Reference/JS_InternString" title="en/JS_InternString">JS_InternUCStringN</a></td> - </tr> - <tr> - <td><a class="internal" href="/en/SpiderMonkey/JSAPI_Reference/JS_ReportErrorNumber" title="En/SpiderMonkey/JSAPI Reference/JS ReportErrorNumber">JS_ReportErrorNumber</a></td> - <td><a class="internal" href="/en/SpiderMonkey/JSAPI_Reference/JS_ReportErrorNumber" title="en/SpiderMonkey/JSAPI Reference/JS ReportErrorNumberUC">JS_ReportErrorNumberUC</a></td> - </tr> - <tr> - <td><a class="internal" href="/en/SpiderMonkey/JSAPI_Reference/JS_ReportErrorNumber" title="En/SpiderMonkey/JSAPI Reference/JS ReportErrorNumber">JS_ReportErrorFlagsAndNumber</a></td> - <td><a class="internal" href="/en/SpiderMonkey/JSAPI_Reference/JS_ReportErrorNumber" title="En/SpiderMonkey/JSAPI Reference/JS ReportErrorNumber">JS_ReportErrorFlagsAndNumberUC</a></td> - </tr> - </tbody> - <tbody> - <tr> - <td colspan="2"><em>Unicode property names</em></td> - </tr> - <tr> - <td><a href="/en/SpiderMonkey/JSAPI_Reference/JS_DefineProperty" title="en/JS_DefineProperty">JS_DefineProperty</a></td> - <td><a href="/en/SpiderMonkey/JSAPI_Reference/JS_DefineProperty" title="en/JS_DefineProperty">JS_DefineUCProperty</a></td> - </tr> - <tr> - <td><a href="/en/SpiderMonkey/JSAPI_Reference/JS_DefinePropertyWithTinyId" title="en/JS_DefinePropertyWithTinyId">JS_DefinePropertyWithTinyId</a></td> - <td><a href="/en/SpiderMonkey/JSAPI_Reference/JS_DefinePropertyWithTinyId" title="en/JS_DefinePropertyWithTinyId">JS_DefineUCPropertyWithTinyId</a></td> - </tr> - <tr> - <td><a class="internal" href="/en/SpiderMonkey/JSAPI_Reference/JS_DefineFunction" title="En/SpiderMonkey/JSAPI Reference/JS DefineFunction">JS_DefineFunction</a></td> - <td><a class="internal" href="/en/SpiderMonkey/JSAPI_Reference/JS_DefineFunction" title="En/SpiderMonkey/JSAPI Reference/JS DefineFunction">JS_DefineUCFunction</a></td> - </tr> - <tr> - <td><a class="internal" href="/en/SpiderMonkey/JSAPI_Reference/JS_HasProperty" title="En/SpiderMonkey/JSAPI Reference/JS HasProperty">JS_HasProperty</a></td> - <td><a class="internal" href="/en/SpiderMonkey/JSAPI_Reference/JS_HasProperty" title="En/SpiderMonkey/JSAPI Reference/JS HasProperty">JS_HasUCProperty</a></td> - </tr> - <tr> - <td><a href="/en/SpiderMonkey/JSAPI_Reference/JS_LookupProperty" title="en/JS_LookupProperty">JS_LookupProperty</a></td> - <td><a href="/en/SpiderMonkey/JSAPI_Reference/JS_LookupProperty" title="en/JS_LookupProperty">JS_LookupUCProperty</a></td> - </tr> - <tr> - <td><a href="/en/SpiderMonkey/JSAPI_Reference/JS_GetProperty" title="en/JS_GetProperty">JS_GetProperty</a></td> - <td><a href="/en/SpiderMonkey/JSAPI_Reference/JS_GetProperty" title="en/JS_GetProperty">JS_GetUCProperty</a></td> - </tr> - <tr> - <td><a class="internal" href="/en/SpiderMonkey/JSAPI_Reference/JS_GetPropertyAttributes" title="En/SpiderMonkey/JSAPI Reference/JS GetPropertyAttributes">JS_GetPropertyAttributes</a></td> - <td><a class="internal" href="/en/SpiderMonkey/JSAPI_Reference/JS_GetPropertyAttributes" title="en/SpiderMonkey/JSAPI Reference/JS GetUCPropertyAttributes">JS_GetUCPropertyAttributes</a></td> - </tr> - <tr> - <td><a class="internal" href="/en/SpiderMonkey/JSAPI_Reference/JS_GetPropertyAttrsGetterAndSetter" title="En/SpiderMonkey/JSAPI Reference/JS GetPropertyAttrsGetterAndSetter">JS_GetPropertyAttrsGetterAndSetter</a></td> - <td><a class="internal" href="/en/SpiderMonkey/JSAPI_Reference/JS_GetPropertyAttrsGetterAndSetter" title="en/SpiderMonkey/JSAPI Reference/JS GetUCPropertyAttrsGetterAndSetter">JS_GetUCPropertyAttrsGetterAndSetter</a></td> - </tr> - <tr> - <td><a href="/en/SpiderMonkey/JSAPI_Reference/JS_SetProperty" title="en/JS_SetProperty">JS_SetProperty</a></td> - <td><a href="/en/SpiderMonkey/JSAPI_Reference/JS_SetProperty" title="en/JS_SetProperty">JS_SetUCProperty</a></td> - </tr> - <tr> - <td><a class="internal" href="/en/SpiderMonkey/JSAPI_Reference/JS_SetPropertyAttributes" title="En/SpiderMonkey/JSAPI Reference/JS SetPropertyAttributes">JS_SetPropertyAttributes</a></td> - <td><a class="internal" href="/en/SpiderMonkey/JSAPI_Reference/JS_SetPropertyAttributes" title="En/SpiderMonkey/JSAPI Reference/JS SetPropertyAttributes">JS_SetUCPropertyAttributes</a></td> - </tr> - <tr> - <td><a href="/en/SpiderMonkey/JSAPI_Reference/JS_DeleteProperty2" title="en/JS_DeleteProperty2">JS_DeleteProperty2</a></td> - <td><a href="/en/SpiderMonkey/JSAPI_Reference/JS_DeleteProperty2" title="en/JS_DeleteProperty2">JS_DeleteUCProperty2</a></td> - </tr> - <tr> - <td><a class="internal" href="/en/SpiderMonkey/JSAPI_Reference/JS_AlreadyHasOwnProperty" title="En/SpiderMonkey/JSAPI Reference/JS AlreadyHasOwnProperty">JS_AlreadyHasOwnProperty</a></td> - <td><a class="internal" href="/en/SpiderMonkey/JSAPI_Reference/JS_AlreadyHasOwnProperty" title="En/SpiderMonkey/JSAPI Reference/JS AlreadyHasOwnProperty">JS_AlreadyHasOwnUCProperty</a></td> - </tr> - </tbody> - <tbody> - <tr> - <td colspan="2"><em>Unicode JavaScript source</em></td> - </tr> - <tr> - <td><a href="/en/SpiderMonkey/JSAPI_Reference/JS_CompileScript" title="en/JS_CompileScript">JS_CompileScript</a></td> - <td><a href="/en/SpiderMonkey/JSAPI_Reference/JS_CompileScript" title="en/JS_CompileScript">JS_CompileUCScript</a></td> - </tr> - <tr> - <td><a href="/en/SpiderMonkey/JSAPI_Reference/JS_CompileScriptForPrincipals" title="en/JS_CompileScriptForPrincipals">JS_CompileScriptForPrincipals</a></td> - <td><a href="/en/SpiderMonkey/JSAPI_Reference/JS_CompileScriptForPrincipals" title="en/JS_CompileScriptForPrincipals">JS_CompileUCScriptForPrincipals</a></td> - </tr> - <tr> - <td><a href="/en/SpiderMonkey/JSAPI_Reference/JS_CompileFunction" title="en/JS_CompileFunction">JS_CompileFunction</a></td> - <td><a href="/en/SpiderMonkey/JSAPI_Reference/JS_CompileFunction" title="en/JS_CompileFunction">JS_CompileUCFunction</a></td> - </tr> - <tr> - <td><a href="/en/SpiderMonkey/JSAPI_Reference/JS_CompileFunctionForPrincipals" title="en/JS_CompileFunctionForPrincipals">JS_CompileFunctionForPrincipals</a></td> - <td><a href="/en/SpiderMonkey/JSAPI_Reference/JS_CompileFunctionForPrincipals" title="en/JS_CompileFunctionForPrincipals">JS_CompileUCFunctionForPrincipals</a></td> - </tr> - <tr> - <td><a href="/en/SpiderMonkey/JSAPI_Reference/JS_EvaluateScript" title="en/JS_EvaluateScript">JS_EvaluateScript</a></td> - <td><a href="/en/SpiderMonkey/JSAPI_Reference/JS_EvaluateScript" title="en/JS_EvaluateScript">JS_EvaluateUCScript</a></td> - </tr> - <tr> - <td><a href="/en/SpiderMonkey/JSAPI_Reference/JS_EvaluateScriptForPrincipals" title="en/JS_EvaluateScriptForPrincipals">JS_EvaluateScriptForPrincipals</a></td> - <td><a href="/en/SpiderMonkey/JSAPI_Reference/JS_EvaluateScriptForPrincipals" title="en/JS_EvaluateScriptForPrincipals">JS_EvaluateUCScriptForPrincipals</a></td> - </tr> - </tbody> -</table> - -<p><code>jschar</code>-based functions work exactly like their <code>char</code>-based namesakes, except that where traditional functions take a <code>char *</code> argument, the Unicode versions take a <code>jschar *</code> argument, usually with a separate argument specifying the length of the string in <code>jschar</code>s.</p> - -<h3 id="Compiled_scripts" name="Compiled_scripts">Compiled scripts</h3> - -<p>The easiest way to run a script is to use <code><a href="/en/SpiderMonkey/JSAPI_Reference/JS_EvaluateScript" title="en/JS_EvaluateScript">JS_EvaluateScript</a></code>, which compiles and executes the script in one go.</p> - -<p>But sometimes an application needs to run a script many times. In this case, it may be faster to compile the script once and execute it multiple times.</p> - -<p>The JSAPI provides a type, <code><a href="/en/JSScript" title="en/JSScript">JSScript</a></code>, that represents a compiled script. The life cycle of a <code>JSScript</code> looks like this:</p> - -<ul> - <li>The application compiles some JavaScript code using <code><a href="/en/SpiderMonkey/JSAPI_Reference/JS_CompileScript" title="en/JS_CompileScript">JS_CompileScript</a></code>, <code><a href="/en/SpiderMonkey/JSAPI_Reference/JS_CompileFile" title="en/JS_CompileFile">JS_CompileUTF8File</a></code>, or <code><a href="/en/SpiderMonkey/JSAPI_Reference/JS_CompileFileHandle" title="en/JS_CompileFileHandle">JS_CompileFileHandle</a></code>. These functions return a pointer to a new <code>JSScript</code>.</li> -</ul> - -<ul> - <li>The application calls <code><a href="/en/SpiderMonkey/JSAPI_Reference/JS_ExecuteScript" title="en/JS_ExecuteScript">JS_ExecuteScript</a></code> (or <code><a href="/en/SpiderMonkey/JSAPI_Reference/JS_ExecuteScriptPart" title="en/JS_ExecuteScriptPart">JS_ExecuteScriptPart</a></code>) any number of times. It is safe to use a <code>JSScript</code> in multiple different contexts, but only within the <code>JSRuntime</code> and thread in which it was created.</li> -</ul> - -<p>Here is some example code using a compiled script:</p> - -<pre>/* - * Compile a script and execute it repeatedly until an - * error occurs. (If this ever returns, it returns false. - * If there's no error it just keeps going.) - */ -<a href="../SpiderMonkey/JSAPI_Reference/JSBool">JSBool</a> compileAndRepeat(<a href="JSAPI_Reference/JSRuntime">JSContext</a> *cx, const char *filename) -{ - <a href="../JSScript">JSScript</a> *script; - - script = <a href="JSAPI_Reference/JS_CompileFile">JS_CompileUTF8File</a>(cx, <a href="JSAPI_Reference/JS_GetGlobalObject">JS_GetGlobalObject</a>(cx), filename); - if (script == NULL) - return JS_FALSE; /* compilation error */ - - for (;;) { - jsval result; - - if (!<a href="JSAPI_Reference/JS_ExecuteScript">JS_ExecuteScript</a>(cx, <a href="JSAPI_Reference/JS_GetGlobalObject">JS_GetGlobalObject</a>(cx), script, &result)) - break; - <a href="JSAPI_Reference/JS_MaybeGC">JS_MaybeGC</a>(cx); - } - - return JS_FALSE; -} -</pre> - -<p>The lifetime of the compiled script is tied to the lifetime of a JavaScript object, the garbage collector destroys the script when it is no longer reachable. The JSAPI provides this feature via the <code><a href="/en/SpiderMonkey/JSAPI_Reference/JS_NewScriptObject" title="en/JS_NewScriptObject">JS_NewScriptObject</a></code> function. The life cycle of a script using this feature is like this:</p> - -<ul> - <li>The application compiles some JavaScript code.</li> -</ul> - -<ul> - <li>To protect the compiled script from garbage collection, the application creates a <em>compiled script object</em> by calling <code><a href="/en/SpiderMonkey/JSAPI_Reference/JS_NewScriptObject" title="en/JS_NewScriptObject">JS_NewScriptObject</a></code> and makes that object GC-reachable using <code><a href="/en/SpiderMonkey/JSAPI_Reference/JS_SetProperty" title="en/JS_SetProperty">JS_SetProperty</a></code>, <code><a href="/en/SpiderMonkey/JSAPI_Reference/JS_GetReservedSlot" title="en/JS_GetReservedSlot">JS_SetReservedSlot</a></code>, <code><a href="/en/SpiderMonkey/JSAPI_Reference/JS_AddRoot" title="en/JS_AddRoot">JS_AddRoot</a></code>, or some other function.</li> -</ul> - -<ul> - <li>The application executes the compiled script any number of times.</li> -</ul> - -<ul> - <li>As the application progresses, eventually it doesn't need the compiled script anymore, and the compiled script object becomes unreachable.</li> -</ul> - -<ul> - <li>The garbage collector then eventually collects the unreachable script and its components.</li> -</ul> - -<p>Here is example code demonstrating the technique—but note that this case is not really complex enough to warrant the use of <code><a href="/en/SpiderMonkey/JSAPI_Reference/JS_NewScriptObject" title="en/JS_NewScriptObject">JS_NewScriptObject</a></code>. The above example does the same thing more directly.</p> - -<pre>/* - * Compile a script and execute it repeatedly until an - * error occurs. (If this ever returns, it returns false. - * If there's no error it just keeps going.) - */ -<a href="../SpiderMonkey/JSAPI_Reference/JSBool">JSBool</a> compileAndRepeat(<a href="JSAPI_Reference/JSRuntime">JSContext</a> *cx, const char *filename) -{ - <a href="../JSScript">JSScript</a> *script; - <a href="JSAPI_Reference/JSObject">JSObject</a> *scriptObj; - - script = <a href="JSAPI_Reference/JS_CompileFile">JS_CompileUTF8File</a>(cx, <a href="JSAPI_Reference/JS_GetGlobalObject">JS_GetGlobalObject</a>(cx), filename); - if (script == NULL) - return JS_FALSE; /* compilation error */ - - scriptObj = <a href="JSAPI_Reference/JS_NewScriptObject">JS_NewScriptObject</a>(cx, script); - if (scriptObj == NULL) { - <a href="JSAPI_Reference/JS_DestroyScript">JS_DestroyScript</a>(cx, script); - return JS_FALSE; - } - - if (!<a href="JSAPI_Reference/JS_AddRoot">JS_AddNamedObjectRoot</a>(cx, &scriptObj, "compileAndRepeat script object")) - return JS_FALSE; - - for (;;) { - jsval result; - - if (!<a href="JSAPI_Reference/JS_ExecuteScript">JS_ExecuteScript</a>(cx, <a href="JSAPI_Reference/JS_GetGlobalObject">JS_GetGlobalObject</a>(cx), script, &result)) - break; - <a href="JSAPI_Reference/JS_MaybeGC">JS_MaybeGC</a>(cx); - } - - <a href="JSAPI_Reference/JS_RemoveRoot">JS_RemoveObjectRoot</a>(cx, &scriptObj); /* scriptObj becomes unreachable - and will eventually be collected. */ - return JS_FALSE; -} -</pre> - -<h3 id="Security" name="Security">Security</h3> - -<p>Many applications use SpiderMonkey to run untrusted code. In designing this kind of application, it's important to think through the security concerns ahead of time. Your application will need to do several things.</p> - -<ul> - <li><strong>Deploy security updates</strong> - Firefox automatically installs updates, so security fixes are deployed as soon as they are available. Unless you also regularly deploy SpiderMonkey security updates, a determined hacker could use publicly known bugs in the engine to attack your application. Note that the kind of attack we're talking about here is where a hacker uses JavaScript to attack the C++ code of the engine itself (or your embedding). The rest of the items in this list talk about security issues that arise within JavaScript itself, even if the engine is working properly.</li> - <li><strong>Block simple denial-of-service attacks</strong> - A program like <code>while(true){}</code> should not hang your application. To stop execution of scripts that run too long, use <a href="/en/SpiderMonkey/JSAPI_Reference/JS_SetOperationCallback" title="en/SpiderMonkey/JSAPI Reference/JS SetOperationCallback"><code>JS_SetOperationCallback</code></a>. Likewise, a function like <code>function f(){f();}</code> should not crash your application with a stack overflow. To block that, use <a href="/en/SpiderMonkey/JSAPI_Reference/JS_SetNativeStackQuota" title="en/SpiderMonkey/JSAPI Reference/JS SetNativeStackQuota"><code>JS_SetNativeStackQuota</code></a>.</li> - <li><strong>Control access to sensitive data</strong> - Your application might expose data to some scripts that other scripts should not be able to see. For example, you might let your customers write scripts that operate on their own data, but not other customers' data. These access rules must be enforced somehow.</li> - <li><strong>Control access to dangerous functionality</strong> - Suppose your application has a method deleteUserAccount() which is meant to be used by administrators only. Obviously if untrusted code can use that method, you have a security problem.</li> -</ul> - -<p>The first two problems are important but fairly straightforward and will not be discussed further here. The rest of this section tells how you can control scripts' access to data and functionality.</p> - -<h4 id="The_best_security_is_no_security_(really)">The best security is no security (really)</h4> - -<p>Do you ever worry about your snake eating your mouse? No? If you don't have both a snake and a mouse, you don't have this problem.</p> - -<p>Likewise, if your application doesn't have both untrusted users (snakes) and sensitive data or dangerous functionality that's exposed to JavaScript (mice), then you don't need to read any further. The functions and objects created by <a href="/en/SpiderMonkey/JSAPI_Reference/JS_InitStandardClasses" title="en/SpiderMonkey/JSAPI Reference/JS InitStandardClasses"><code>JS_InitStandardClasses</code></a> are safe. They do not provide access to files, the network, or anything browser-related. The most sensitive information they expose to scripts is the current date and time.</p> - -<h4 id="Object-capabilities-based_security">Object-capabilities-based security</h4> - -<p>One way to keep a snake from eating a mouse is to keep the mouse and the snake in separate cages.</p> - -<p>One way to keep user A from accessing user B's sensitive data or dangerous functions is to keep each user's code in a separate sandbox. That is, create a separate JSContext and global object for each user, and always run each script in the appropriate context. When setting up a new global object, simply don't define any functions the user shouldn't have access to. This approach is called object-capabilities security. To learn more about it, <a class="external" href="http://www.youtube.com/watch?v=EGX2I31OhBE" title="http://www.youtube.com/watch?v=EGX2I31OhBE">watch the movie</a> or <a class="external" href="http://www.erights.org/talks/thesis/">read the book</a>.</p> - -<p>The metaphor is misleading in one regard: the snake can't reach the mouse because there's a physical barrier in the way. With SpiderMonkey the situation is more subtle. There's no barrier; there's just no way to get there from here. How can a malicious script get a reference to an object from another sandbox? It might as well be in a parallel universe. Even global variables are per-sandbox. There is no <code>getObjectFromOtherSandbox()</code> function. Your application just needs to take care not to expose any such function to scripts.</p> - -<p>In short, never pass one user's data and objects to another user's code, and you'll have no access control issues. SpiderMonkey won't do it if you don't.</p> - -<p><strong>Trade-offs.</strong> Object-capabilities security is security without run-time security checks. It is easy to implement, easy to reason about, and fast. But in fairness there are some drawbacks. First, the failure mode is pretty severe. If you do accidentally leak an object from one sandbox into another, the genie is out of the bottle. Once a malicious script gets a reference to a single object in a sandbox, it can use that object to get a reference to the sandbox's global object, and from there, almost any other object or function in that sandbox. There is no way to fix it except to destroy both sandboxes and start over. A second drawback is that the system doesn't automatically respond to <em>changes</em> in user privileges. Suppose user A is not an administrator, so you set up sandbox A with no administrator functionality. If you promote user A to be an admin, SpiderMonkey won't magically update sandbox A to have the administrator classes and functions you didn't define before. Your application will have to do that explicitly. Conversely, if you want to <em>strip</em> user A's administrator privileges, but you have already given administrator functions to user A's scripts, that's even worse. You have no choice but to destroy user A's sandbox and start over.</p> - -<h4 id="Fine-grained_security">Fine-grained security</h4> - -<p>Another way to keep a snake from eating a mouse is to watch the snake constantly, and if it tries to eat the mouse, intervene.</p> - -<p>SpiderMonkey is designed to support custom, application-defined security models. For example, the Firefox browser has a complex and powerful security model. Some JavaScript code ("chrome") has full access to the system. Scripts from web pages ("content") have very limited access. The <a class="external" href="http://www.mozilla.org/projects/security/components/same-origin.html">same origin policy</a> governs a script's access to data and functions from other web pages.</p> - -<p>The SpiderMonkey security model is based on the Java principals security model. This model provides a common security interface, but the actual security implementation is up to you.</p> - -<p>To use SpiderMonkey's fine-grained security features:</p> - -<ul> - <li> - <p>Decide what security policy you want to enforce.</p> - </li> - <li> - <p>Insert a call to <code><a href="/en/SpiderMonkey/JSAPI_Reference/JS_CheckAccess" title="en/JS_CheckAccess">JS_CheckAccess</a></code> at each point in your application where a security check is necessary. (Some security checks are also built into the JavaScript engine; you must decide what security policy to enforce for each of these checks.)</p> - </li> - <li> - <p>Implement one or more <code><a href="/en/SpiderMonkey/JSAPI_Reference/JSPrincipals" title="en/JSPrincipals">JSPrincipals</a></code> objects in your application. You need one <code>JSPrincipals</code> object for each different set of privileges that a script might have.</p> - </li> - <li> - <p>When compiling or executing code, use the JSAPI functions that attach principals to the compiled code. These functions have <code>ForPrincipals</code> in the name. They are listed below. The purpose of using these functions is to ensure that your access check callbacks have accurate information about <em>who</em> is trying to access an object.</p> - - <table class="fullwidth-table" style="height: 166px; width: 839px;"> - <tbody> - <tr> - <th>Function</th> - <th>Purpose</th> - </tr> - <tr> - <td><code><a href="/en/SpiderMonkey/JSAPI_Reference/JS_CompileScriptForPrincipals" title="en/JS_CompileScriptForPrincipals">JS_CompileScriptForPrincipals</a></code>,<br> - <code><a href="/en/SpiderMonkey/JSAPI_Reference/JS_CompileScriptForPrincipals" title="en/JS_CompileScriptForPrincipals">JS_CompileUCScriptForPrincipals</a></code>,<br> - <code><a href="/en/SpiderMonkey/JSAPI_Reference/JS_CompileFileHandle" title="en/JS_CompileFileHandle">JS_CompileFileHandleForPrincipals</a></code></td> - <td>Compile a script with security information. (To execute a compiled script, use <code><a href="/en/SpiderMonkey/JSAPI_Reference/JS_ExecuteScript" title="en/JS_ExecuteScript">JS_ExecuteScript</a></code>.)</td> - </tr> - <tr> - <td><code><a href="/en/SpiderMonkey/JSAPI_Reference/JS_CompileFunctionForPrincipals" title="en/JS_CompileFunctionForPrincipals">JS_CompileFunctionForPrincipals</a></code>,<br> - <code><a href="/en/SpiderMonkey/JSAPI_Reference/JS_CompileFunctionForPrincipals" title="en/JS_CompileFunctionForPrincipals">JS_CompileUCFunctionForPrincipals</a></code></td> - <td>Create a JavaScript function with security information.</td> - </tr> - <tr> - <td><code><a href="/en/SpiderMonkey/JSAPI_Reference/JS_EvaluateScriptForPrincipals" title="en/JS_EvaluateScriptForPrincipals">JS_EvaluateScriptForPrincipals</a></code>,<br> - <code><a href="/en/SpiderMonkey/JSAPI_Reference/JS_EvaluateScriptForPrincipals" title="en/JS_EvaluateScriptForPrincipals">JS_EvaluateUCScriptForPrincipals</a></code></td> - <td>Compile and execute a script with security information.</td> - </tr> - </tbody> - </table> - </li> - <li> - <p>Implement access check callback functions (see <code><a href="/en/SpiderMonkey/JSAPI_Reference/JSClass.checkAccess" title="en/JSClass.checkAccess">JSClass.checkAccess</a></code> and <code><a href="/en/SpiderMonkey/JSAPI_Reference/JS_SetCheckObjectAccessCallback" title="en/JS_SetCheckObjectAccessCallback">JS_SetCheckObjectAccessCallback</a></code>). These will be called from <code>JS_CheckAccess</code> and sometimes from within the JavaScript engine. An access check callback function can use jsdbgapi.h functions such as <code><a href="/en/JS_FrameIterator" title="en/JS_FrameIterator">JS_FrameIterator</a></code> and <code><a href="/en/JS_StackFramePrincipals" title="en/JS_StackFramePrincipals">JS_StackFramePrincipals</a></code> to obtain the principals of the code that is trying to perform the checked operation. Then it determines whether to allow the operation to proceed.</p> - </li> -</ul> - -<h3 id="Tracing_and_Profiling">Tracing and Profiling</h3> - -<p>There are features provided by the JSAPI that make it easier to implement JavaScript tracers and profilers.</p> - -<h4 id="Function_tracing">Function tracing</h4> - -<p>If you configure with --enable-trace-jscalls, you can use <a href="/en/SpiderMonkey/JSAPI_Reference/JS_SetFunctionCallback" title="en/SpiderMonkey/JSAPI Reference/JS SetFunctionCallback"><code>JS_SetFunctionCallback()</code></a> to set up a C function to be called whenever a JavaScript function is about to be called, or has finished executing:</p> - -<pre class="brush: cpp">void funcTransition(const JSFunction *func, - const JSScript *scr, - const JSContext *const_cx, - JSBool entering) -{ - JSContext *cx = const_cast<JSContext*>(const_cx); - JSString *name = JS_GetFunctionId((JSFunction*)func); - const char *entExit; - const char *nameStr; - - /* build a C string for the function's name */ - - if (!name) { - nameStr = "Unnamed function"; - } else { - nameStr = JS_EncodeString(cx, name); - } - - /* build a string for whether we're entering or exiting */ - - if (entering) { - entExit = "Entering"; - } else { - entExit = "Exiting"; - } - - /* output information about the trace */ - - printf("%s JavaScript function: %s at time: %ld", entExit, nameStr, clock()); -} - -void enableTracing(JSContext *cx) { - JS_SetFunctionCallback(cx, funcTransition); -} - -void disableTracing(JSContext *cx) { - JS_SetFunctionCallback(cx, NULL); -}<span style="font-size: 14px; line-height: 18px; white-space: normal;"> -</span></pre> diff --git a/files/pt-br/tools/scratchpad/index.html b/files/pt-br/tools/scratchpad/index.html deleted file mode 100644 index 00e9b9d019..0000000000 --- a/files/pt-br/tools/scratchpad/index.html +++ /dev/null @@ -1,77 +0,0 @@ ---- -title: Scratchpad -slug: Tools/Scratchpad -translation_of: Archive/Tools/Scratchpad ---- -<div>{{ToolsSidebar}}</div> - -<p>{{ gecko_minversion_header("6.0") }}</p> - -<p>O Scratchpad, disponível no Firefox 6 ou superior, fornece um ambiente para experiências com código em Javascript. Você pode escrever e testar suas ideias de código interagindo com a página antes de usar suas ferramentas de desenvolvimento corriqueiras para finalizar e limpar o resultado final.</p> - -<p><span class="ILfuVd"><span class="e24Kjd">Diferentemente</span></span> do <a href="/en/Tools/Web_Console" title="en/Using the Web Console">Console</a>, desenhado para interpretar uma única linha de código, o Scratchpad lhe permite editar grandes trechos de código Javascript e então executá-los de várias formas, dependendo de como você quer usar a saída da execução.</p> - -<p>{{EmbedYouTube("Pt7DZACyClM")}}</p> - -<h2 id="Usando_o_Scratchpad">Usando o Scratchpad</h2> - -<p>Para abrir o Scratchpad, pressione Shift+F4, ou vá ao menu Desenvolvedor Web (um submenu em Ferramentas no Mac OSX e no Linux), e selecione Scratchpad. Isso abrirá a janela do editor do Scratchpad, que inclui um comentário que contém algum resumo de como usar o editor. De la você ja pode começar a escrever seu Javascript e testá-lo.</p> - -<p>A janela do Scracthpad se parece com essa abaixo (no Mac OSX a barra de menus fica no topo da tela):</p> - -<p>Veja <a href="/en/Tools/Using_the_Source_Editor" title="Using the Source Editor"> Usando o Editor de código fonte</a> para documentação sobre o editor em si, incluindo atalhos de teclado que serão bem úteis.</p> - -<p>O menu Arquivo oferece opções para salvar e carregar trechos de Javascript, de forma que você possa reusar código mais tarde caso queira.</p> - -<h3 id="Executando_seu_código">Executando seu código</h3> - -<p class="note">Uma vez que você tenha escrito seu código, selecione a parte que desenha executar. Se você não selecionar nada, todo o código no editor será executado. Clique com o botão direito do mouse (ou vá até o menu Executar na barra superior) e escolhar a forma que deseja rodar seu código. Há quatro opções disponíveis.</p> - -<h4 id="Executar">Executar</h4> - -<p>Quando você escolhe essa opção, o código selecionado é executado. Essa opção é a que você escolherá caso queira executar uma função ou outro trecho que manipule o conteúdo da página sem que você precise ver o resultado.</p> - -<p>Inspecionar</p> - -<p>A opção de inspeção executa o código da mesma forma que a opção Executar; entretanto depois que a execução terminar e houver um retornar, um inspetor de objeto é aberto, o que te permite analizar o valor retornado.</p> - -<p>Por exemplo, se você entrasse com o código:</p> - -<pre>window -</pre> - -<p>E então escolher inspecionar, o inspetor de objetos abrirá e se parecerá com algo assim:</p> - -<h4 id="Visualizar">Visualizar</h4> - -<p>A opção de visualizar executa o código selecionado e então insere o resultado diretamente no editor como um comentário. Essa é uma forma conveniente de manter um log dos seus testes enquanto você trabalha. Você também pode usar esse recurso como uma calculadora num momento de pressa, apesar de que se você não tem um programa que sirva como uma calculadora melhor, você deve ter problemas maiores para resolver.</p> - -<h4 id="Recarregar_e_executar">Recarregar e executar</h4> - -<p>A opção de recarregar e executar primeiro recarrega a página e então executa o código assim que o evento "load" da página é disparado. Isso é útil para executar código em um ambiente fresquinho.</p> - -<h2 id="Cenários_de_uso_do_Scratchpad">Cenários de uso do Scratchpad</h2> - -<p>Existem várias formas de usar o Scratchpad de maneira interessante. Essa seção cobre alguns como exemplo.</p> - -<h3 id="Testando_seu_código">Testando seu código</h3> - -<p>O Scratchpad é particularmente útil para testar seu novo código em um ambiente real de navegador; você pode copiar o código que você está debugando no Scracthpad e então executá-lo e, na sequência, melhorá-lo até que ele funcione corretamente. Uma vez isso aconteça, copie o código de volta para o seu arquivo com o script de interesse e seu trabalho terminou. Em muitos casos, você pode escrever, debugar e testar seu código sem nem recarregar a página.</p> - -<h3 id="Trechos_de_código_reutilizáveis">Trechos de código reutilizáveis</h3> - -<p>O menu Arquivo do Scratchpad oferece comandos para salvar e carregar código Javascript. Isso ajuda a manter por perto pedações de Javascript que você usa com frequência. Por exemplo, se você está trabalhando em um site que usa requisições AJAX para carregar dados, você pode manter trechos que façam essas operações para teste e verificação dos dados. De forma semelhante, você pode manter funções de interesse com propósito geral para debugar, como funções de dump, saída ou outros tipos de informação sobre o DOM.</p> - -<h2 id="Escopo_do_Scratchpad">Escopo do Scratchpad</h2> - -<p>O código rodado no Scratchpad é executado em escopo global do aba selecionada no momento da execução. Quaisquer variáveis que você declare fora de uma função serão adiconadas ao objeto global da aba.</p> - -<h2 id="Usando_Scratchpad_para_acessar_partes_internas_do_Firefox">Usando Scratchpad para acessar partes internas do Firefox</h2> - -<p>Se você está trabalhando sobre o próprio Firefox, ou desenvolvendo complementos, você pode achar útil acessar as áreas internas do browser usando o Scratchpad. Para fazer isso modifique o <code>devtools.chrome.enabled</code> para <code>true</code> usando <code>about:config</code>. Feito isso, o menu Ambiente terá a opção Browser; estando ela selecionada, o seu escopo é todo o navegador ao invés de somente o conteúdo da página.</p> - -<p>{{ languages( { "es": "es/Herramientas/Borrador", "fr": "fr/Outils/Ardoise", "ja": "ja/Tools/Scratchpad", "pt": "pt/Ferramentas/Scratchpad" } ) }}</p> - -<h2 id="Atalhos_do_Teclado">Atalhos do Teclado</h2> - -<p>{{ Page ("pt-BR/docs/Tools/Keyboard_shortcuts", "scratchpad") }}</p> diff --git a/files/pt-br/tools/webide/index.html b/files/pt-br/tools/webide/index.html deleted file mode 100644 index 155c119f26..0000000000 --- a/files/pt-br/tools/webide/index.html +++ /dev/null @@ -1,271 +0,0 @@ ---- -title: WebIDE -slug: Tools/WebIDE -tags: - - pt-br -translation_of: Archive/WebIDE ---- -<div>{{ToolsSidebar}}</div><div class="geckoVersionNote"> -<div>O WebIDE está disponível a partir do Firefox 34 em diante. </div> -</div> - -<div class="summary"> -<div>O WebIDE é o substituto para o App Manager. Como o <a href="/en-US/Firefox_OS/Using_the_App_Manager">App Manager</a>, ele lhe permite executar e depurar os aplicativos do <a href="/en-US/Firefox_OS">Firefox OS</a> usando o <a href="/en-US/docs/Tools/Firefox_OS_Simulator">Firefox OS Simulator</a> ou um dispositivo <span style="line-height: 1.5;">Firefox OS </span><span style="line-height: 1.5;">real . </span></div> - -<div> </div> - -<div>No entanto, ele também oferece um ambiente de edição para que você possa criar e desenvolver aplicativos do Firefox OS, incluindo uma exibição em árvore de todos os arquivos em seu aplicativo com a capacidade de editá-los e salvá-los, e dois modelos de aplicativos para ajudar você a começar.</div> - -<div> </div> - -<div>Finalmente, WebIDE permite conectar as ferramentas de <a href="https://developer.mozilla.org/en-US/docs/Tools" style="font-weight: bold; background-color: rgb(244, 247, 248);">Firefox para Desenvolvedores</a> a uma série de outros navegadores, incluindo o Firefox para Android, Chrome no Android, e Safari no iOS. Veja a página de <a href="https://developer.mozilla.org/en-US/docs/Tools/Remote_Debugging" style="font-weight: bold; background-color: rgb(244, 247, 248);">Depuração Remota</a><strong style="background-color: #f4f7f8; font-weight: bold;"> </strong> para obter instruções sobre como se conectar a um navegador específico.</div> -</div> - -<p>{{EmbedYouTube("2xmj4W8O3E4")}}</p> - -<p><span style="line-height: 1.5;">Com a WebIDE, você primeiro deve </span><a href="/en-US/docs/Tools/WebIDE#Setting_up_runtimes" style="line-height: 1.5;">configurar um ou mais runtimes (tempo de execução)</a><span style="line-height: 1.5;">. Um runtime é um ambiente no qual você vai executar e depurar o aplicativo. Um runtime pode ser um dispositivo Firefox OS conectado a um Desktop através de USB, ou poderia ser um Firefox OS Simulator instalado no próprio desktop.</span></p> - -<p><span style="line-height: 1.5;">Em seguida, você </span><a href="/en-US/docs/Tools/WebIDE#Creating_and_opening_apps" style="line-height: 1.5;">cria um aplicativo ou abre um aplicativo existente</a><span style="line-height: 1.5;">. Se você estiver criando um novo aplicativo você inicia com um modelo que inclui a estrutura de diretórios e o mínimo que você precisa para começar, ou com um modelo mais completo que mostra como usar a API privilegiada. O WebIDE mostra os arquivos do seu aplicativo em estrutura de árvore, e você pode editar e salvá-los usando um editor embutido de código . Claro, você não tem que usar o editor embutido: você pode desenvolver seu aplicativo inteiramente fora do WebIDE, e só usá-lo para depurar ..</span></p> - -<p><span style="line-height: 1.5;">Finalmente, você pode </span><a href="https://developer.mozilla.org/en-US/docs/Tools/WebIDE#Running_and_debugging_apps" style="line-height: 1.5;">instalar o aplicativo em uma das runtimes e executá-lo</a><span style="line-height: 1.5;">. Você pode, então, abrir o conjunto habitual de ferramentas de desenvolvimento - o </span><a href="/en-US/docs/Tools/Page_Inspector" style="line-height: 1.5;">Inspector</a><span style="line-height: 1.5;">, </span><a href="/en-US/docs/Tools/Web_Console" style="line-height: 1.5;">Console</a><span style="line-height: 1.5;">, </span><a href="/en-US/docs/Tools/Debugger" style="line-height: 1.5;">JavaScript Debugger</a><span style="line-height: 1.5;"> e assim por diante - para examinar e modificar o aplicativo em execução.</span></p> - -<h2 id="Requisitos_do_sistema">Requisitos do sistema</h2> - -<p>Para desenvolver e depurar aplicativos usando o WebIDE, tudo o que você precisa é o Firefox versão 33 ou superior. Para testar em um dispositivo Firefox OS real , você precisa de um dispositivo rodando o Firefox OS 1.2 ou superior, e um cabo USB.</p> - -<p>Você só pode usar o WebIDE visando o Firefox OS 1.2 ou superior.</p> - -<h2 id="Abrindo_a_WebIDE">Abrindo a WebIDE</h2> - -<p><span style="line-height: 1.5;">O WebIDE está escondido atrás de uma preferência. Para torná-lo visível visite </span><a href="http://kb.mozillazine.org/About:config" style="line-height: 1.5;">about:config</a><span style="line-height: 1.5;">, procure a preferência chamada </span><code style="font-style: normal; line-height: 1.5;">devtools.webide.enabled</code><span style="line-height: 1.5;"> e a defina como </span><code style="font-style: normal; line-height: 1.5;">true</code><span style="line-height: 1.5;">. Agora você verá uma nova entrada no menu Web Developer chamado WebIDE. Clique nele e o WebIDE abre:</span></p> - -<p><img alt="" src="https://mdn.mozillademos.org/files/8033/webide-initial.png" style="display: block; height: 560px; margin-left: auto; margin-right: auto; width: 720px;"></p> - -<p><span id="result_box" lang="pt"><span class="hps">O dropdown</span> <span class="hps">na esquerda</span> <span class="hps">rotulado</span> <span class="hps">"Open</span> <span class="hps">App"</span> <span class="hps">permite abrir</span> <span class="hps">aplicativos</span> <span class="hps">existentes</span> <span class="hps">ou</span> <span class="hps">criar novos.</span> <span class="hps">O menu suspenso</span> <span class="hps">à direita chamado</span> <span class="hps">"Select</span> <span class="hps">Runtime</span>" <span class="hps">permite que você selecione</span> <span class="hps">um tempo de execução</span> <span class="hps">ou</span> <span class="hps">criação de um novo</span> <span class="hps">tempo de execução.</span></span></p> - -<p><span id="result_box" lang="pt"><span class="hps">Os botões no</span> <span class="alt-edited hps">meio, executam</span><span>, param e</span> <span class="hps">depuram o</span> <span class="hps">app:</span> <span class="hps">eles só</span> <span class="hps">são ativados quando</span> <span class="hps">você abrir um</span> <span class="hps">app</span> <span class="alt-edited hps">e selecionar um</span> <span class="hps">tempo de execução.</span></span></p> - -<p>A partir do Firefox 36, você pode alterar o tamanho da fonte em todo WebIDE usando os atalhos de teclado padrão (use Command em vez de Controle no OS X):</p> - -<ul> - <li>Ctrl + aumenta o tamanho da fonte</li> - <li>Ctrl - diminui o tamanho da fonte</li> - <li>Ctrl 0 redefine o tamanho da fonte para o padrão</li> -</ul> - -<h2 id="Configurando_runtimes_(tempos_de_execução)">Configurando runtimes (tempos de execução)</h2> - -<p>Sob o dropdown "Select Runtime", runtimes são agrupados em três tipos:</p> - -<ul> - <li><a href="https://developer.mozilla.org/en-US/docs/Tools/WebIDE#Connecting_a_Firefox_OS_device">USB devices</a>: Dispositivos OS Firefox conectados por USB</li> - <li><a href="/en-US/docs/Tools/WebIDE#Adding_a_Simulator">Simulators</a>: instâncias do Firefox OS Simulator que você tenha instalado</li> - <li><a href="/en-US/docs/Tools/WebIDE#Custom_runtimes">Custom</a>: use para conectar um tempo de execução para WebIDE usando um nome e porta arbitrária. A partir do Firefox 36, ste tipo de tempo de execução é renomeado "Other". Se você tiver o <a href="https://developer.mozilla.org/pt-BR/docs/Tools/Valence">Valence</a> add-on instalado, esta seção também irá listar os <a href="https://developer.mozilla.org/pt-BR/docs/Tools/WebIDE#Valence-enabled_runtimes">tempos de execução adicionais permitidos</a>. </li> -</ul> - -<p>Da primeira vez que você clicar no dropdown, pode ser que você não veja nenhum tempo de execução:</p> - -<p><img alt="" src="https://mdn.mozillademos.org/files/8043/webide-no-runtimes.png" style="display: block; height: 564px; margin-left: auto; margin-right: auto; width: 723px;">O restante desta seção descreverá como você pode adicionar alguns runtimes.</p> - -<h3 id="Conectando_um_dispositivo_Firefox_OS">Conectando um dispositivo Firefox OS</h3> - -<p>Antes de conectar um dispositivo OS Firefox , existem algumas configurações que você deve fazer:</p> - -<ul> - <li><strong>Veja a versão do seu Firefox OS: </strong>certifique-se que seu dispositivo está rodando o Firefox OS 1.2/Boot2Gecko 1.2 ou superior. Para verificar a versão, vá no menu de Configurações do seu dispositivo, então<code>Device Information > Software</code>. Se você não tem uma versão atualizada o suficiente, encontre o seu dispositivo no <a href="/en-US/Firefox_OS/Developer_phone_guide">developer phone guide</a> e siga as instruções para atualização.</li> - <li><strong>Ativar a depuração remota: </strong>no menu de Configurações no dispositivo, vá em <code>Device information > More information > Developer</code>. - <ul> - </ul> - - <ul> - <li>Firefox OS 1.3 and earlier: "Remote Debugging" é só um checkbox. Marque-o.</li> - <li>Firefox OS 1.4 and later: "Remote Debugging" pergunta se você deseja habilitar somente para ADB, ou para ADB and DevTools. Selecione "ADB and DevTools".</li> - </ul> - </li> - <li><strong>Desativar o bloqueio de tela do dispositivo:</strong> no menu de Configurações no dispositivo, vá em <code>Screen Lock</code> e desmarque o checkbox <code>Lock Screen</code>. Isso é uma boa idéia pois quando a tela trava, o telefone perde a conexão, significando que ele não está mais disponpivel para depuração.</li> - <li><strong>Se você quer depurar applicativos certificados, incluindo aplicativos embarcados</strong>: veja a sessão em <a href="/en-US/docs/Tools/WebIDE#Debugging_certified_apps">debugging certified apps</a>.</li> -</ul> - -<div class="note"> -<p><strong>Somente Linux :</strong></p> - -<ul> - <li>adicione um arquivo de regras <code>udev</code>, como documentado no passo 3 deste guia para <a href="http://developer.android.com/tools/device.html#setting-up">definindo um dispositivo Android</a>. O atributo <code>idVendor</code> usado para o Geeksphone is "05c6", e <a href="http://developer.android.com/tools/device.html#VendorIds">esta página</a> lista outros valores para <code>idVendor</code>.</li> -</ul> -</div> - -<div class="note"> -<p><strong>Somente Windows:</strong></p> - -<ul> - <li>você precisa instalar os drivers, como documentado no passo 3 deste guia para <a href="http://developer.android.com/tools/device.html#setting-up">definindo um dispositivo Android</a>. Você pode encontrar drivers para dispositivos Geeksphone no <a href="http://downloads.geeksphone.com/">site Geeksphone</a>. O Windows 8 por padrão não permitirá você instalar drivers não-assinados. Veja este tutorial em <a class="external external-icon" href="http://www.craftedge.com/tutorials/driver_install_windows8/driver_install_win8.html" title="http://www.craftedge.com/tutorials/driver_install_windows8/driver_install_win8.html">"Como instalar drivers não-assinados no Windows 8"</a>.</li> - <li>se o WebIDE não puder enxergar o seu dispositivoapós seguir todos os passos, você pode precisar <a class="external external-icon" href="http://blog.fh-kaernten.at/wehr/?p=1182">editar o arquivo adb_usb.ini</a>.</li> -</ul> -</div> - -<p>Se existem outros dispositivos Android conectados ao seu computador, desconecte todos eles. Agora conecte o dispositivo ao computador usado o USB. Você deve ver o dispositivo aparecer em "USB DEVICES":</p> - -<p><img alt="" src="https://mdn.mozillademos.org/files/8045/webide-select-runtime-keon.png" style="display: block; height: 562px; margin-left: auto; margin-right: auto; width: 710px;"></p> - -<p>Se você não visualizar o seu dispositivo, veja a página de <a href="/en-US/docs/Tools/WebIDE/Troubleshooting">Solução de Problemas</a>.</p> - -<h3 id="Adicionando_um_Simulador">Adicionando um Simulador</h3> - -<p><span style="line-height: 1.5;">O <a href="/en-US/docs/Tools/Firefox_OS_Simulator">Firefox OS Simulator</a> é uma versão das altas camadas do <span style="line-height: 1.5;">Firefox OS</span> que simula o dispositivo Firefox OS, mas roda no desktop</span><span style="line-height: 1.5;">. Ele roda em uma janela com o mesmo tamanho de um dispositivo </span><span style="line-height: 1.5;">com Firefox OS, inclui a interface de usuário do Firefox OS e aplicativos padrão, e simula muitas APIs de dispositivos Firefox OS.</span></p> - -<p><span style="line-height: 1.5;">Isso significa que em muitos casos, você não precisa de um dispositivo real para testar ou depurar sua aplicação. </span></p> - -<p>O Simulador é grande, então não é distribuído junto com o Firefox mas como um <a href="/en-US/Add-ons">add-on</a> Firefox. Se você clicar em "Install Simulator" no menu de Runtimes, você vai para um página onde você pode instalar simuladores para várias versões do Firefox OS.</p> - -<p><img alt="" src="https://mdn.mozillademos.org/files/8039/webide-install-simulator.png" style="display: block; height: 560px; margin-left: auto; margin-right: auto; width: 720px;">You can install as many as you like. Be patient, though: the Simulator is large and may take a few minutes to download. Once you've installed some Simulators you can close this "Extra Components" window, and the Simulators you've installed appear as options in the Runtimes dropdown menu:</p> - -<p><img alt="" src="https://mdn.mozillademos.org/files/8047/webide-select-runtime-keon-simulator.png" style="display: block; height: 559px; margin-left: auto; margin-right: auto; width: 712px;">To learn more about the Simulator, see its <a href="/en-US/docs/Tools/Firefox_OS_Simulator">documentation page</a>.</p> - -<h3 id="Custom_runtimes">Custom runtimes</h3> - -<p>With a custom runtime you can use an arbitrary hostname and port to connect to the remote device.</p> - -<p>Under the hood, Firefox OS devices and Android devices connect to the desktop using a program called the Android Debug Bridge, or <a href="http://developer.android.com/tools/help/adb.html">ADB</a>. By default, the WebIDE uses an add-on called the ADB Helper: this simplifies the process for you by installing ADB and setting up port forwarding so the Firefox desktop tools can exchange messages with the device.</p> - -<p>This is convenient in most cases, but sometimes you might want to use ADB outside of the WebIDE: for example, you might be running ADB directly from the command line. In that case you'll connect to the device by specifying a host and port using the <a href="http://developer.android.com/tools/help/adb.html#forwardports"><code>adb forward</code></a> command.<br> - <br> - If you then want to use WebIDE to connect as well, you should <a href="https://support.mozilla.org/en-US/kb/disable-or-remove-add-ons#w_how-to-disable-extensions-and-themes">disable the ADB Helper add-on</a> and connect WebIDE using the Custom runtime option, entering the host and port that you passed to <code>adb forward</code>.</p> - -<p>Also, the ADB Helper does not yet support connecting to Firefox for Android, so if you want to connect WebIDE to Firefox for Android, you'll need to set up your own port forwarding and use a custom runtime. <a href="/en-US/docs/Tools/Remote_Debugging/Firefox_for_Android">See more about connecting to Firefox for Android using ADB</a>.</p> - -<h2 id="Selecting_a_runtime">Selecting a runtime</h2> - -<p>Once you've set up a runtime you can select it using the "Select Runtime" menu.</p> - -<ul> - <li>If you select a Simulator, the WebIDE launches the Simulator.</li> - <li>If you select a Firefox OS device the WebIDE connects to the device. On the device a dialog will ask you to confirm that you wish to connect: press "OK".</li> -</ul> - -<p>Now the "play" button in the center of the WebIDE toolbar is enabled: click it to install and run the app in the selected runtime.</p> - -<h3 id="Runtime_actions">Runtime actions</h3> - -<p>When a runtime is selected, the Runtimes dropdown menu has three extra items:</p> - -<ul> - <li><strong>Runtime Info</strong>: information on the current runtime</li> - <li><strong>Permissions Table</strong>: a table summarising <a href="/en-US/Apps/Build/App_permissions">app permissions</a> for the current runtime, indicating, for each API and each <a href="/en-US/Marketplace/Options/Packaged_apps#Types_of_packaged_apps">app type</a>, whether access is allowed (✓), denied (✗), or whether the user is prompted (!)</li> - <li><strong>Screenshot</strong>: a command to take a screenshot from the runtime</li> -</ul> - -<p><img alt="" src="https://mdn.mozillademos.org/files/8147/webide-runtimes-menu.png" style="display: block; height: 596px; margin-left: auto; margin-right: auto; width: 789px;"></p> - -<p><img alt="" src="https://mdn.mozillademos.org/files/8145/webide-runtimeinfo.png" style="display: block; height: 593px; margin-left: auto; margin-right: auto; width: 753px;"><img alt="" src="https://mdn.mozillademos.org/files/8149/webide-permissions.png" style="display: block; height: 593px; margin-left: auto; margin-right: auto; width: 753px;"></p> - -<h2 id="Creating_and_opening_apps">Creating and opening apps</h2> - -<p>Under the "Open App" menu you get three options: create a new app, open a packaged app, and open a hosted app:</p> - -<p><img alt="" src="https://mdn.mozillademos.org/files/8049/webide-open-app-empty.png" style="display: block; height: 562px; margin-left: auto; margin-right: auto; width: 723px;"></p> - -<h3 id="Create_a_new_app">Create a new app</h3> - -<p>Select "New App..." to create a new app. You'll see a dialog offering you a choice between two templates, "Privileged Empty App" and "Privileged App".</p> - -<p><img alt="" src="https://mdn.mozillademos.org/files/8053/webide-new-app.png" style="display: block; height: 591px; margin-left: auto; margin-right: auto; width: 739px;"></p> - -<p>Both templates are from Mozilla's <a href="https://github.com/mozilla/mortar">app template collection</a>, and provide you with the basic structure you need to get started. The "Privileged App" shows how an app can use permissions to load cross-origin content.</p> - -<p>Once you've selected a template you'll be asked to name the app and select a directory to store the files, and then the new app is opened in the <a href="https://developer.mozilla.org/en-US/docs/Tools/WebIDE#Editing_apps">project editor</a>.</p> - -<h3 id="Open_a_packaged_app">Open a packaged app</h3> - -<p>Select "Open Packaged App..." to open a <a href="/en-US/Marketplace/Options/Packaged_apps">packaged app</a>. You'll be asked to select a directory containing the app's <a href="/en-US/Apps/Build/Manifest">manifest</a>, and the app will be opened in the <a href="https://developer.mozilla.org/en-US/docs/Tools/WebIDE#Editing_apps">project editor</a>.</p> - -<h3 id="Open_a_hosted_app">Open a hosted app</h3> - -<p>Select "Open Hosted App..." to open a <a href="/en-US/Marketplace/Options/Hosted_apps">hosted app</a>. You'll be asked to enter a URL pointing to the app's <a href="/en-US/Apps/Build/Manifest">manifest</a>, and the app will be opened in the <a href="https://developer.mozilla.org/en-US/docs/Tools/WebIDE#Editing_apps">project editor</a>.</p> - -<h2 id="Editing_apps">Editing apps</h2> - -<p>The project editor provides an environment for editing apps. There's a tree view on the left of all the files in the app: you can add and delete files here using a context menu. There's an editor pane on the right.</p> - -<h3 id="The_app_summary_page">The app summary page</h3> - -<p>When you first open or create an app, the editor pane is occupied by the app summary page, which is shown below:</p> - -<p><img alt="" src="https://mdn.mozillademos.org/files/8055/webide-new-app-editor.png" style="display: block; height: 625px; margin-left: auto; margin-right: auto; width: 846px;"></p> - -<p>You can always get back to the app summary page by clicking on the root of the tree on the left.</p> - -<h3 id="Manifest_validation">Manifest validation</h3> - -<p>The WebIDE automatically checks the manifest for certain common problems. If it finds a problem it indicates that the app is invalid and describes the problem in the app's summary:</p> - -<p><img alt="" src="https://mdn.mozillademos.org/files/8063/webide-invalid-manifest.png" style="display: block; height: 626px; margin-left: auto; margin-right: auto; width: 847px;"></p> - -<p>Of course, you can edit the <a href="/en-US/Apps/Build/Manifest">manifest.webapp</a> file right in the project editor as well.</p> - -<h3 id="The_source_editor">The source editor</h3> - -<p>The WebIDE uses the <a href="http://codemirror.net/">CodeMirror</a> source editor.</p> - -<h4 id="Source_editor_shortcuts">Source editor shortcuts</h4> - -<p>{{ Page ("en-US/docs/tools/Keyboard_shortcuts", "source-editor") }}</p> - -<h4 id="Code_completion">Code completion</h4> - -<p>When editing CSS and JavaScript, the editor provides autocomplete suggestions. CSS autocompletion is always enabled:</p> - -<p><img alt="" src="https://mdn.mozillademos.org/files/8057/webide-css-autocomplete.png" style="display: block; height: 628px; margin-left: auto; margin-right: auto; width: 849px;">To display autocomplete suggestions in JavaScript press Control + Space:</p> - -<p><img alt="" src="https://mdn.mozillademos.org/files/8059/webide-js-autocomplete.png" style="display: block; height: 653px; margin-left: auto; margin-right: auto; width: 867px;"></p> - -<h4 id="Inline_documentation">Inline documentation</h4> - -<p>The editor also shows inline documentation for JavaScript. Press Shift + Space to see a popup containing documentation for the symbol your cursor is on:</p> - -<p><img alt="" src="https://mdn.mozillademos.org/files/8061/webide-js-inline-docs.png" style="display: block; height: 652px; margin-left: auto; margin-right: auto; width: 872px;"></p> - -<p>Clicking the <code>[docs]</code> link in the popup will take you to the MDN page for the symbol.</p> - -<h4 id="Saving_files">Saving files</h4> - -<p>For changes to your files to take effect you need to save them. Files with unsaved changes get an asterisk next to their name in the tree view, and you can save files using the menu or Control+S (Command+S on Mac OS X).</p> - -<h3 id="Removing_projects">Removing projects</h3> - -<p>To remove an app from the WebIDE, go to the <a href="/en-US/docs/Tools/WebIDE#The_app_summary_page">app summary page</a> and click "Remove Project".</p> - -<h2 id="Running_and_debugging_apps">Running and debugging apps</h2> - -<p>When you're ready to run the app, you need to <a href="/en-US/docs/Tools/WebIDE#Selecting_a_runtime">select a runtime from the "Select Runtime" dropdown menu</a>. If you don't have any available runtimes here, find out how to add some in <a href="/en-US/docs/Tools/WebIDE#Setting_up_runtimes">Setting up runtimes</a>.</p> - -<p>The "play" button in the center of the WebIDE toolbar is now enabled: click it to install and run the app in the selected runtime:</p> - -<p><img alt="" src="https://mdn.mozillademos.org/files/8065/webide-running.png" style="display: block; height: 718px; margin-left: auto; margin-right: auto; width: 1314px;">To debug the app, click the "Pause" button and the Developer Tools <a href="/en-US/docs/Tools/Tools_Toolbox">Toolbox</a> appears, connected to your app:</p> - -<p><img alt="" src="https://mdn.mozillademos.org/files/8067/webide-debugging.png" style="display: block; height: 688px; margin-left: auto; margin-right: auto; width: 1310px;">Exactly which tools you'll have available depends on the runtime, but you will at least have the basics: the <a href="/en-US/docs/Tools/Page_Inspector">Inspector</a>, <a href="/en-US/docs/Tools/Web_Console">Console</a>, <a href="/en-US/docs/Tools/Debugger">JavaScript Debugger</a>, <a href="/en-US/docs/Tools/Style_Editor">Style Editor</a>, <a href="/en-US/docs/Tools/Profiler">Profiler</a> and <a href="/en-US/docs/Tools/Scratchpad">Scratchpad</a>. Just as in a web page, any changes you make in the tools are visible immediately in the app, but are not persistent. Conversely, any changes you make in the editor pane can be saved straight back to disk, but are not visible without restarting the app.</p> - -<h3 id="Debugging_certified_apps">Debugging certified apps</h3> - -<p>With the Simulator, if you click on the app dropdown menu while the runtime is selected, you can see and debug not only your app but all apps running in that runtime, including <a href="/en-US/Marketplace/Options/Packaged_apps#Certified_app">certified apps</a>:</p> - -<p><img alt="" src="https://mdn.mozillademos.org/files/8069/webide-debugging-builtin.png" style="display: block; height: 681px; margin-left: auto; margin-right: auto; width: 1302px;"></p> - -<p><br> - However, to debug certified apps on a real device:</p> - -<ul> - <li>the device must be running a development build of Firefox OS 1.2+</li> - <li>you must enable certified app debugging</li> -</ul> - -<p>To enable certified app debugging, connect to the runtime, and then, in the menu, go to <code>Runtime > Runtime Info</code>. From here, if you see <code>"DevTools restricted privileges: yes</code>", that means certified apps can't be debugged. If your device can be rooted, clicking <code>"request higher privileges"</code> will enable certified apps debugging (Firefox OS will restart).</p> - -<p>Now in the WebIDE you should see all the certified apps on the device.</p> - -<h2 id="Troubleshooting">Troubleshooting</h2> - -<p>If you have any problems working with the WebIDE, see the <a href="/en-US/docs/Tools/WebIDE/Troubleshooting">Troubleshooting</a> page.</p> - -<p> </p> - -<p> </p> diff --git a/files/pt-br/tools/webide/trabalhando_com_cordova_apps_na_webide/index.html b/files/pt-br/tools/webide/trabalhando_com_cordova_apps_na_webide/index.html deleted file mode 100644 index 517e30a16a..0000000000 --- a/files/pt-br/tools/webide/trabalhando_com_cordova_apps_na_webide/index.html +++ /dev/null @@ -1,53 +0,0 @@ ---- -title: Trabalhando com Cordova apps na WebIDE -slug: Tools/WebIDE/Trabalhando_com_Cordova_apps_na_WebIDE -tags: - - App - - Cordova - - FirefoxOS -translation_of: Archive/WebIDE/Working_with_Cordova_apps_in_WebIDE ---- -<div>{{ToolsSidebar}}</div><div class="geckoVersionNote"> -<p>Novo no Firefox 39.</p> -</div> - -<p><a href="http://cordova.apache.org/">Apache Cordova</a> permite escrever um aplicativo utilizando HTML, JavaScript, and CSS, e gerar versões nativas para plataformas como iOS e Android. Com Cordova <a href="/en-US/Apps/Tools_and_frameworks/Cordova_support_for_Firefox_OS">você também pode gerar versões do aplicativo para o Firefox OS</a>.</p> - -<p>A partir do Firefox 39, a WebIDE tem suporte direto para Apps desenvolvidos com Cordova, o que quer dizer que vocÊ pode utilizá-la para editar os aplicativos e gerar a versão para o Firefox OS diretamente a partir dela.</p> - -<p>Primeiro, crie um app Cordova:</p> - -<ul> - <li>Caso não tenha o Cordova instalado, execute o comando abaixo no terminal para instalar: - <pre class="brush: bash"><code>npm install -g cordova</code></pre> - </li> -</ul> - -<ul> - <li>O comando abaixo cria um app com o nome de <code>my-app</code>: - - <pre class="brush: bash"><code>cordova create my-app</code></pre> - </li> -</ul> - -<ul> - <li>Execute o comando a seguir para adicionar a plataforma Firefox OS pra o app: - <pre class="brush: bash">cd my-app -cordova platform add firefoxos</pre> - </li> -</ul> - -<p>Em seguida:</p> - -<ul> - <li><a href="/en-US/docs/Tools/WebIDE/Opening_WebIDE">Abra a WebIDE</a></li> - <li>selecione <a href="/en-US/docs/Tools/WebIDE/Creating_and_editing_apps#Open_a_packaged_app">"Open Packaged App"</a>, e selecione o diretório da aplicação onde está localizado o arquivo <code>config.xml</code>.</li> -</ul> - -<p>Agora você pode editar o aplicativo como uma aplicação Cordova, e sempre que <a href="/en-US/docs/Tools/WebIDE/Running_and_debugging_apps#Running_apps">executar</a>, a própria WebIDE irá gerar a versão para o Firefox OS.Now you can edit the app as a Cordova app, and whenever you <a href="/en-US/docs/Tools/WebIDE/Running_and_debugging_apps#Running_apps">run the app</a>, WebIDE takes care of generating the Firefox OS version behind the scenes. Sempre que você fizer uma alteração no <a href="/pt-BR/Apps/Manifest">manifesto</a> do aplicativo, a WebIDE vai gerar uma nova versão do app e executar a <a href="/en-US/docs/Tools/WebIDE/Creating_and_editing_apps#Manifest_validation">validação do manifesto</a>.</p> - -<p><a href="https://github.com/tortoyoyo/ExemplosCordovaAPP">Clicando aqui </a>você pode ver exemplos de Cordova App.</p> - -<p>Mais detalhes sobre desenvolvimento para Firefox OS podem ser encontrados também no livro <a href="https://leanpub.com/guiarapidofirefoxos">Desenvolvimento para firefox os - guia rápido</a>, do André Garzia.</p> - -<p> </p> diff --git a/files/pt-br/tools/webide/troubleshooting/index.html b/files/pt-br/tools/webide/troubleshooting/index.html deleted file mode 100644 index 7f36c6749e..0000000000 --- a/files/pt-br/tools/webide/troubleshooting/index.html +++ /dev/null @@ -1,62 +0,0 @@ ---- -title: Resolução de Problemas WebIDE -slug: Tools/WebIDE/Troubleshooting -translation_of: Archive/WebIDE/Troubleshooting ---- -<div>{{ToolsSidebar}}</div><h2 id="Conectando_a_um_dispositivo_Firefox_OS">Conectando a um dispositivo Firefox OS</h2> - -<p>Se você está tentando conectar um dipositivo FirefoxOS ao WebIDE e ele não é exibido, aqui estão alguma coisas que você pode tentar:</p> - -<ul> - <li>Cheque a versão do seu FirefoxOS: verifique se seu dispositivo está executando o<strong> Firefox OS 1.2/Boot2Gecko 1.2 ou superior</strong>. Para checar esta versão, vá para o aplicativo Configurações no dispositivo, então <code>Informações do Dispositivo > Software</code>. Se você não tem uma versão alta suficiente procure seu aparelho no <a href="/en-US/Firefox_OS/Developer_phone_guide">guia de telefone para desenvolvedor</a> e siga as instruções para a atualização.</li> - <li>Ative o debugging remoto: in the Settings app on the device, go to <code>Device information > More information > Developer</code>. - <ul> - <li>Firefox OS 1.3 e anterior: "Remote Debugging" é somente uma checkbox. Marque a caixa.</li> - <li>Firefox OS 1.4 e posterior: "Remote Debugging" asks you to enable for just ADB, or for ADB and DevTools. Selecione "ADB e DevTools".</li> - </ul> - </li> - <li>Desative a tela de bloqueio no dispositivo: in the Settings app on the device, go to <code>Screen Lock</code> and unchecking the <code>Lock Screen</code> checkbox. This is a good idea because when the screen gets locked, the phone connection gets lost, meaning it is no longer available for debugging.</li> - <li>Verifique se você não tem nenhum dispositivo Android conectado ao mesmo tempo com o telefone FirefoxOS em seu computador.</li> - <li>Verifique o cabo que você está utilizando: - <ul> - <li>Tente desconectar e reconectar o cabo USB.</li> - <li>Tente plugat o cabo USB em uma porta diferente do seu computador. Você pode ter que alternar as portas.</li> - <li>Tente usar um cabo USB diferente. Os cabos que vem com o telefone são muitas vezes de má qualidade e muitas vezes falham.</li> - <li>Tente um cabo USB curto. Cabos USB longos tem sido conhecidos por não funcionar bem.</li> - </ul> - </li> - <li>Try disabling and re-enabling Remote Debugging in the Settings app on the device.</li> - <li>If <a href="/en-US/docs/Tools/WebIDE#Custom_runtimes">you disabled the ADB Addon Helper</a>, did you successfully run the <code>adb forward</code> command?</li> - <li>If you use Linux, make sure you added add a <code>udev</code> rules file, as documented in step 3 of this guide to <a class="external external-icon" href="http://developer.android.com/tools/device.html#setting-up">setting up an Android device</a>. The <code>idVendor</code> attribute to use for the Geeksphone is "05c6", and <a class="external external-icon" href="http://developer.android.com/tools/device.html#VendorIds">this page</a> lists other <code>idVendor</code> values.</li> - <li>Se você usa Windows: - <ul> - <li>you need to install drivers, as documented in step 3 of this guide to <a class="external external-icon" href="http://developer.android.com/tools/device.html#setting-up">setting up an Android device</a>. You can find drivers for Geeksphone devices on the <a class="external external-icon" href="http://downloads.geeksphone.com/">Geeksphone web site</a> and drivers for Google devices on <a href="http://developer.android.com/sdk/win-usb.htm">Google web site</a>. Windows 8 by default will not let you install unsigned drivers. See this tutorial on <a class="external-icon external" href="http://www.craftedge.com/tutorials/driver_install_windows8/driver_install_win8.html" title="http://www.craftedge.com/tutorials/driver_install_windows8/driver_install_win8.html">"How to install an unsigned driver on Windows 8"</a>.</li> - <li>if the WebIDE can't see your device after following all the steps, you may have to <a class="external-icon external" href="http://blog.fh-kaernten.at/wehr/?p=1182">edit adb_usb.ini</a>.</li> - </ul> - </li> - <li>If you're a EasyTether user (OS X), you will need to uninstall or disable EasyTether: <code>sudo kextunload /System/Library/Extensions/EasyTetherUSBEthernet.kext</code></li> -</ul> - -<h3 id="Unrestricted_debugging_(including_certified_apps_built-in_apps_apps_already_installed_on_a_device)">Unrestricted debugging (including certified apps, built-in apps, apps already installed on a device)</h3> - -<p>If you are finding that you can't debug certified apps, built-in apps, or apps already installed on a real device, then you may be coming across WebIDE's restricted privileges security policy. To find out more, see the section on <a href="/en-US/docs/Tools/WebIDE#Unrestricted_app_debugging_%28including_certified_apps.2C_main_process.2C_etc.%29">Unrestricted app debugging (including certified apps, main process, etc.)</a>.</p> - -<h2 id="Conectando_a_outros_navegadores_(Chrome_Safari)">Conectando a outros navegadores (Chrome, Safari)</h2> - -<p>WebIDE makes use of <a href="/en-US/docs/Tools/Firefox_Tools_Adapter">Valence (formerly Firefox Tools Adapter)</a> to reach other browsers, like Chrome and Safari. </p> - -<p>If you are having trouble connecting to these other browsers, check the setup steps and other notes for those browsers on the <a href="/en-US/docs/Tools/Firefox_Tools_Adapter">Valence page</a>.</p> - -<h2 id="Ativando_logging">Ativando logging</h2> - -<p>You can also enable verbose logging to gather diagnostics:</p> - -<ol start="1" style="list-style-type: decimal;"> - <li>visit <a class="external external-icon" href="http://kb.mozillazine.org/About:config">about:config</a>, and add a new preference called <span class="message"><span class="content"><code><span class="email">extensions.adbhelper@mozilla.org.sdk</span>.console.logLevel</code>, with the string value <code>all, and set </code></span></span>extensions.adbhelper@mozilla.org.debug<span class="message"><span class="content"><code> to true</code></span></span></li> - <li>In the <a class="external external-icon" href="https://support.mozilla.org/en-US/kb/disable-or-remove-add-ons">Add-ons Manager</a>, disable and then re-enable the ADB Helper add-on.</li> - <li>Open the <a href="https://developer.mozilla.org/en-US/docs/Tools/Browser_Console">Browser Console</a> and you'll now see console messages prefixed with <code>adb</code>. If the messages don't mean anything to you, <a href="/en-US/docs/Tools/WebIDE/Troubleshooting#Get_help">ask for help</a>.</li> -</ol> - -<h2 id="Obtenha_Ajuda">Obtenha Ajuda</h2> - -<p>Vá para <a class="external external-icon" href="https://wiki.mozilla.org/DevTools/GetInvolved#Communication">#devtools sala no IRC</a> e nós tentaremos te ajudar.</p> diff --git a/files/pt-br/web/accessibility/at-apis/gecko/index.html b/files/pt-br/web/accessibility/at-apis/gecko/index.html deleted file mode 100644 index 1abe2834d5..0000000000 --- a/files/pt-br/web/accessibility/at-apis/gecko/index.html +++ /dev/null @@ -1,10 +0,0 @@ ---- -title: Gecko -slug: Web/Accessibility/AT-APIs/Gecko -tags: - - Accessibility - - NeedsTranslation - - TopicStub -translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko ---- -<p>{{wiki.localize('System.API.page-generated-for-subpage')}}</p> diff --git a/files/pt-br/web/accessibility/at-apis/gecko/roles/index.html b/files/pt-br/web/accessibility/at-apis/gecko/roles/index.html deleted file mode 100644 index a3e835eb0b..0000000000 --- a/files/pt-br/web/accessibility/at-apis/gecko/roles/index.html +++ /dev/null @@ -1,255 +0,0 @@ ---- -title: Gecko Roles -slug: Web/Accessibility/AT-APIs/Gecko/Roles -translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles ---- -<p><a href="/pt-BR/docs/Accessibility:AT-APIs#Supported_Roles">« AT APIs Support Page</a></p> - -<p><span class="seoSummary">This page offers a list of accessible roles used in Gecko. Role constants are defined in the <code><a href="/pt-BR/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIAccessibleRole" title="">nsIAccessibleRole</a></code> interface.</span></p> - -<dl> - <dt><code><a href="/pt-BR/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_NOTHING">ROLE_NOTHING</a></code></dt> - <dd>Used when the accessible item doesn't have a strongly defined role.</dd> - <dt><code><a href="/pt-BR/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_TITLEBAR">ROLE_TITLEBAR</a></code></dt> - <dd>Represents a title or caption bar for a window. Used by MSAA only, this is supported automatically by Microsoft Windows.</dd> - <dt><code><a href="/pt-BR/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_MENUBAR">ROLE_MENUBAR</a></code></dt> - <dd>Represents the menu bar (positioned beneath the title bar of a window on most platforms or at the top of the screen on Mac OS X) from which menus are selected by the user.</dd> - <dt><code><a href="/pt-BR/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_SCROLLBAR">ROLE_SCROLLBAR</a></code></dt> - <dd>Represents a vertical or horizontal scroll bar, which is part of the client area or used in a control.</dd> - <dt><code><a href="/pt-BR/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_GRIP">ROLE_GRIP</a></code></dt> - <dd>Represents a special mouse pointer, which allows a user to manipulate user interface elements such as windows. For example, a user clicks and drags a sizing grip in the lower-right corner of a window to resize it</dd> - <dt><code><a href="/pt-BR/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_SOUND">ROLE_SOUND</a></code></dt> - <dd>Represents a system sound, which is associated with various system events.</dd> - <dt><code><a href="/pt-BR/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_CURSOR">ROLE_CURSOR</a></code></dt> - <dd>Represents the system mouse pointer.</dd> - <dt><code><a href="/pt-BR/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_CARET">ROLE_CARET</a></code></dt> - <dd>Represents the system caret.</dd> - <dt><code><a href="/pt-BR/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_ALERT">ROLE_ALERT</a></code></dt> - <dd>Represents an alert or a condition that a user should be notified about. Assistive Technologies typically respond to the role by reading the entire onscreen contents of containers advertising this role. Should be used for warning dialogs, etc.</dd> - <dt><code><a href="/pt-BR/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_WINDOW">ROLE_WINDOW</a></code></dt> - <dd>Represents the window frame, which contains child objects such as a title bar, client, and other objects contained in a window. The role is supported automatically by Microsoft Windows.</dd> - <dt><code><a href="/pt-BR/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_INTERNAL_FRAME">ROLE_INTERNAL_FRAME</a></code></dt> - <dd>A sub-document.</dd> - <dt><code><a href="/pt-BR/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_MENUPOPUP">ROLE_MENUPOPUP</a></code></dt> - <dd>Represents a menu, which presents a list of options from which the user can make a selection to perform an action.</dd> - <dt><code><a href="/pt-BR/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_MENUITEM">ROLE_MENUITEM</a></code></dt> - <dd>Represents a menu item, which is an entry in a menu that a user can choose to carry out a command, select an option.</dd> - <dt><code><a href="/pt-BR/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_TOOLTIP">ROLE_TOOLTIP</a></code></dt> - <dd>Represents a tooltip that provides helpful hints; this is generally displayed at the mouse cursor position.</dd> - <dt><code><a href="/pt-BR/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_APPLICATION">ROLE_APPLICATION</a></code></dt> - <dd>Represents a main window for an application.</dd> - <dt><code><a href="/pt-BR/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_DOCUMENT">ROLE_DOCUMENT</a></code></dt> - <dd>Represents a document window. A document window is always contained within an application window.</dd> - <dt><code><a href="/pt-BR/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_PANE">ROLE_PANE</a></code></dt> - <dd>Represents a pane within a frame or document window. Users can navigate between panes and within the contents of the current pane, but cannot navigate between items in different panes. Thus, panes represent a level of grouping lower than frame windows or documents, but above individual controls.</dd> - <dt><code><a href="/pt-BR/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_CHART">ROLE_CHART</a></code></dt> - <dd>Represents a graphical image used to represent data.</dd> - <dt><code><a href="/pt-BR/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_DIALOG">ROLE_DIALOG</a></code></dt> - <dd>Represents a dialog box or message box.</dd> - <dt><code><a href="/pt-BR/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_BORDER">ROLE_BORDER</a></code></dt> - <dd>Represents a window border.</dd> - <dt><code><a href="/pt-BR/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_GROUPING">ROLE_GROUPING</a></code></dt> - <dd>Logically groups other objects.</dd> - <dt><code><a href="/pt-BR/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_SEPARATOR">ROLE_SEPARATOR</a></code></dt> - <dd>Used to visually divide a space into two regions, such as a separator menu item or a bar that divides split panes within a window.</dd> - <dt><code><a href="/pt-BR/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_TOOLBAR">ROLE_TOOLBAR</a></code></dt> - <dd>Represents a toolbar, which is a grouping of controls (push buttons or toggle buttons) that provides easy access to frequently used features.</dd> - <dt><code><a href="/pt-BR/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_STATUSBAR">ROLE_STATUSBAR</a></code></dt> - <dd>Represents a status bar, which is an area at the bottom of a window that displays information about the current operation, state of the application, or selected object. The status bar has multiple fields, which display different kinds of information.</dd> - <dt><code><a href="/pt-BR/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_TABLE">ROLE_TABLE</a></code></dt> - <dd>Represents a table that contains rows and columns of cells, and optionally, row headers and column headers.</dd> - <dt><code><a href="/pt-BR/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_COLUMNHEADER">ROLE_COLUMNHEADER</a></code></dt> - <dd>Represents a column header, providing a visual label for a column in a table.</dd> - <dt><code><a href="/pt-BR/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_ROWHEADER">ROLE_ROWHEADER</a></code></dt> - <dd>Represents a row header, which provides a visual label for a table row.</dd> - <dt><code><a href="/pt-BR/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_COLUMN">ROLE_COLUMN</a></code></dt> - <dd>Represents a column of cells within a table.</dd> - <dt><code><a href="/pt-BR/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_ROW">ROLE_ROW</a></code></dt> - <dd>Represents a row of cells within a table.</dd> - <dt><code><a href="/pt-BR/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_CELL">ROLE_CELL</a></code></dt> - <dd>Represents a cell within a table.</dd> - <dt><code><a href="/pt-BR/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_LINK">ROLE_LINK</a></code></dt> - <dd>Represents a link to something else. This object might look like text or a graphic, but it acts like a button.</dd> - <dt><code><a href="/pt-BR/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_HELPBALLOON">ROLE_HELPBALLOON</a></code></dt> - <dd>Displays a Help topic in the form of a ToolTip or Help balloon.</dd> - <dt><code><a href="/pt-BR/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_CHARACTER">ROLE_CHARACTER</a></code></dt> - <dd>Represents a cartoon-like graphic object, such as Microsoft Office Assistant, which is displayed to provide help to users of an application.</dd> - <dt><code><a href="/pt-BR/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_LIST">ROLE_LIST</a></code></dt> - <dd>Represents a list box, allowing the user to select one or more items.</dd> - <dt><code><a href="/pt-BR/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_LISTITEM">ROLE_LISTITEM</a></code></dt> - <dd>Represents an item in a list.</dd> - <dt><code><a href="/pt-BR/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_OUTLINE">ROLE_OUTLINE</a></code></dt> - <dd>Represents an outline or tree structure, such as a tree view control, that displays a hierarchical list and allows the user to expand and collapse branches.</dd> - <dt><code><a href="/pt-BR/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_OUTLINEITEM">ROLE_OUTLINEITEM</a></code></dt> - <dd>Represents an item in an outline or tree structure.</dd> - <dt><code><a href="/pt-BR/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_PAGETAB">ROLE_PAGETAB</a></code></dt> - <dd>Represents a page tab, it is a child of a page tab list.</dd> - <dt><code><a href="/pt-BR/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_PROPERTYPAGE">ROLE_PROPERTYPAGE</a></code></dt> - <dd>Represents a property sheet.</dd> - <dt><code><a href="/pt-BR/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_INDICATOR">ROLE_INDICATOR</a></code></dt> - <dd>Represents an indicator, such as a pointer graphic, that points to the current item.</dd> - <dt><code><a href="/pt-BR/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_GRAPHIC">ROLE_GRAPHIC</a></code></dt> - <dd>Represents a picture.</dd> - <dt><code><a href="/pt-BR/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_STATICTEXT">ROLE_STATICTEXT</a></code></dt> - <dd>Represents read-only text, such as labels for other controls or instructions in a dialog box. Static text cannot be modified or selected.</dd> - <dt><code><a href="/pt-BR/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_TEXT_LEAF">ROLE_TEXT_LEAF</a></code></dt> - <dd>Represents selectable text that allows edits or is designated read-only.</dd> - <dt><code><a href="/pt-BR/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_PUSHBUTTON">ROLE_PUSHBUTTON</a></code></dt> - <dd>Represents a push button control.</dd> - <dt><code><a href="/pt-BR/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_CHECKBUTTON">ROLE_CHECKBUTTON</a></code></dt> - <dd>Represents a check box control.</dd> - <dt><code><a href="/pt-BR/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_RADIOBUTTON">ROLE_RADIOBUTTON</a></code></dt> - <dd>Represents an option button, also called a radio button. It is one of a group of mutually exclusive options. All objects sharing a single parent that have this attribute are assumed to be part of single mutually exclusive group.</dd> - <dt><code><a href="/pt-BR/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_COMBOBOX">ROLE_COMBOBOX</a></code></dt> - <dd>Represents a combo box; an edit control with an associated list box that provides a set of predefined choices.</dd> - <dt><code><a href="/pt-BR/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_DROPLIST">ROLE_DROPLIST</a></code></dt> - <dd>Represents the calendar control.</dd> - <dt><code><a href="/pt-BR/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_PROGRESSBAR">ROLE_PROGRESSBAR</a></code></dt> - <dd>Represents a progress bar, dynamically showing the user the percent complete of an operation in progress.</dd> - <dt><code><a href="/pt-BR/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_DIAL">ROLE_DIAL</a></code></dt> - <dd>Represents a dial or knob whose purpose is to allow a user to set a value.</dd> - <dt><code><a href="/pt-BR/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_HOTKEYFIELD">ROLE_HOTKEYFIELD</a></code></dt> - <dd>Represents a hot-key field that allows the user to enter a combination or sequence of keystrokes.</dd> - <dt><code><a href="/pt-BR/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_SLIDER">ROLE_SLIDER</a></code></dt> - <dd>Represents a slider, which allows the user to adjust a setting in given increments between minimum and maximum values.</dd> - <dt><code><a href="/pt-BR/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_SPINBUTTON">ROLE_SPINBUTTON</a></code></dt> - <dd>Represents a spin box, which is a control that allows the user to increment or decrement the value displayed in a separate "buddy" control associated with the spin box.</dd> - <dt><code><a href="/pt-BR/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_DIAGRAM">ROLE_DIAGRAM</a></code></dt> - <dd>Represents a graphical image used to diagram data.</dd> - <dt><code><a href="/pt-BR/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_ANIMATION">ROLE_ANIMATION</a></code></dt> - <dd>Represents an animation control, which contains content that changes over time, such as a control that displays a series of bitmap frames.</dd> - <dt><code><a href="/pt-BR/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_EQUATION">ROLE_EQUATION</a></code></dt> - <dd>Represents a mathematical equation. It is used by MATHML.</dd> - <dt><code><a href="/pt-BR/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_BUTTONDROPDOWN">ROLE_BUTTONDROPDOWN</a></code></dt> - <dd>Represents a button that drops down a list of items.</dd> - <dt><code><a href="/pt-BR/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_BUTTONMENU">ROLE_BUTTONMENU</a></code></dt> - <dd>Represents a button that drops down a menu.</dd> - <dt><code><a href="/pt-BR/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_BUTTONDROPDOWNGRID">ROLE_BUTTONDROPDOWNGRID</a></code></dt> - <dd>Represents a button that drops down a grid.</dd> - <dt><code><a href="/pt-BR/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_WHITESPACE">ROLE_WHITESPACE</a></code></dt> - <dd>Represents blank space between other objects.</dd> - <dt><code><a href="/pt-BR/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_PAGETABLIST">ROLE_PAGETABLIST</a></code></dt> - <dd>Represents a container of page tab controls.</dd> - <dt><code><a href="/pt-BR/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_CLOCK">ROLE_CLOCK</a></code></dt> - <dd>Represents a control that displays time.</dd> - <dt><code><a href="/pt-BR/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_SPLITBUTTON">ROLE_SPLITBUTTON</a></code></dt> - <dd>Represents a button on a toolbar that has a drop-down list icon directly adjacent to the button.</dd> - <dt><code><a href="/pt-BR/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_IPADDRESS">ROLE_IPADDRESS</a></code></dt> - <dd>Represents an edit control designed for an Internet Protocol (IP) address. The edit control is divided into sections for the different parts of the IP address.</dd> - <dt><code><a href="/pt-BR/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_ACCEL_LABEL">ROLE_ACCEL_LABEL</a></code></dt> - <dd>Represents a label control that has an accelerator.</dd> - <dt><code><a href="/pt-BR/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_ARROW">ROLE_ARROW</a></code></dt> - <dd>Represents an arrow in one of the four cardinal directions.</dd> - <dt><code><a href="/pt-BR/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_CANVAS">ROLE_CANVAS</a></code></dt> - <dd>Represents a control that can be drawn into and is used to trap events.</dd> - <dt><code><a href="/pt-BR/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_CHECK_MENU_ITEM">ROLE_CHECK_MENU_ITEM</a></code></dt> - <dd>Represents a menu item with a check box.</dd> - <dt><code><a href="/pt-BR/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_COLOR_CHOOSER">ROLE_COLOR_CHOOSER</a></code></dt> - <dd>Represents a specialized dialog that lets the user choose a color.</dd> - <dt><code><a href="/pt-BR/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_DATE_EDITOR">ROLE_DATE_EDITOR</a></code></dt> - <dd>Represents control whose purpose is to allow a user to edit a date.</dd> - <dt><code><a href="/pt-BR/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_DESKTOP_ICON">ROLE_DESKTOP_ICON</a></code></dt> - <dd>An iconified internal frame in an ROLE_DESKTOP_PANE.</dd> - <dt><code><a href="/pt-BR/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_DESKTOP_FRAME">ROLE_DESKTOP_FRAME</a></code></dt> - <dd>A desktop pane. A pane that supports internal frames and iconified versions of those internal frames.</dd> - <dt><code><a href="/pt-BR/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_DIRECTORY_PANE">ROLE_DIRECTORY_PANE</a></code></dt> - <dd>A directory pane. A pane that allows the user to navigate through and select the contents of a directory. May be used by a file chooser.</dd> - <dt><code><a href="/pt-BR/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_FILE_CHOOSER">ROLE_FILE_CHOOSER</a></code></dt> - <dd>A file chooser. A specialized dialog that displays the files in the directory and lets the user select a file, browse a different directory, or specify a filename. May use the directory pane to show the contents of a directory.</dd> - <dt><code><a href="/pt-BR/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_FONT_CHOOSER">ROLE_FONT_CHOOSER</a></code></dt> - <dd>A font chooser. A font chooser is a component that lets the user pick various attributes for fonts.</dd> - <dt><code><a href="/pt-BR/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_CHROME_WINDOW">ROLE_CHROME_WINDOW</a></code></dt> - <dd>Frame role. A top level window with a title bar, border, menu bar, etc. It is often used as the primary window for an application.</dd> - <dt><code><a href="/pt-BR/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_GLASS_PANE">ROLE_GLASS_PANE</a></code></dt> - <dd>A glass pane. A pane that is guaranteed to be painted on top of all panes beneath it.</dd> - <dt><code><a href="/pt-BR/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_HTML_CONTAINER">ROLE_HTML_CONTAINER</a></code></dt> - <dd>A document container for HTML, whose children represent the document content.</dd> - <dt><code><a href="/pt-BR/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_ICON">ROLE_ICON</a></code></dt> - <dd>A small fixed size picture, typically used to decorate components.</dd> - <dt><code><a href="/pt-BR/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_LABEL">ROLE_LABEL</a></code></dt> - <dd>Presents an icon or short string in an interface.</dd> - <dt><code><a href="/pt-BR/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_LAYERED_PANE">ROLE_LAYERED_PANE</a></code></dt> - <dd>A layered pane. A specialized pane that allows its children to be drawn in layers, providing a form of stacking order. This is usually the pane that holds the menu bar as well as the pane that contains most of the visual components in a window.</dd> - <dt><code><a href="/pt-BR/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_OPTION_PANE">ROLE_OPTION_PANE</a></code></dt> - <dd>A specialized pane whose primary use is inside a dialog.</dd> - <dt><code><a href="/pt-BR/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_PASSWORD_TEXT">ROLE_PASSWORD_TEXT</a></code></dt> - <dd>A text object uses for passwords, or other places where the text content is not shown visibly to the user.</dd> - <dt><code><a href="/pt-BR/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_POPUP_MENU">ROLE_POPUP_MENU</a></code></dt> - <dd>A temporary window that is usually used to offer the user a list of choices, and then hides when the user selects one of those choices.</dd> - <dt><code><a href="/pt-BR/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_RADIO_MENU_ITEM">ROLE_RADIO_MENU_ITEM</a></code></dt> - <dd>A radio button that is a menu item.</dd> - <dt><code><a href="/pt-BR/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_ROOT_PANE">ROLE_ROOT_PANE</a></code></dt> - <dd>A root pane. A specialized pane that has a glass pane and a layered pane as its children. Its children can include scroll bars and a viewport.</dd> - <dt><code><a href="/pt-BR/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_SCROLL_PANE">ROLE_SCROLL_PANE</a></code></dt> - <dd>A scroll pane. An object that allows a user to incrementally view a large amount of information.</dd> - <dt><code><a href="/pt-BR/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_SPLIT_PANE">ROLE_SPLIT_PANE</a></code></dt> - <dd>A split pane. A specialized panel that presents two other panels at the same time. Between the two panels is a divider the user can manipulate to make one panel larger and the other panel smaller.</dd> - <dt><code><a href="/pt-BR/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_TABLE_COLUMN_HEADER">ROLE_TABLE_COLUMN_HEADER</a></code></dt> - <dd>The header for a column of a table.</dd> - <dt><code><a href="/pt-BR/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_TABLE_ROW_HEADER">ROLE_TABLE_ROW_HEADER</a></code></dt> - <dd>The header for a row of a table.</dd> - <dt><code><a href="/pt-BR/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_TEAR_OFF_MENU_ITEM">ROLE_TEAR_OFF_MENU_ITEM</a></code></dt> - <dd>A menu item used to tear off and reattach its menu.</dd> - <dt><code><a href="/pt-BR/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_TERMINAL">ROLE_TERMINAL</a></code></dt> - <dd>Represents an accessible terminal.</dd> - <dt><code><a href="/pt-BR/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_TEXT_CONTAINER">ROLE_TEXT_CONTAINER</a></code></dt> - <dd>Collection of objects that constitute a logical text entity.</dd> - <dt><code><a href="/pt-BR/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_TOGGLE_BUTTON">ROLE_TOGGLE_BUTTON</a></code></dt> - <dd>A toggle button. A specialized push button that can be checked or unchecked, but does not provide a separate indicator for the current state.</dd> - <dt><code><a href="/pt-BR/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_TREE_TABLE">ROLE_TREE_TABLE</a></code></dt> - <dd>Representas a control that is capable of expanding and collapsing rows as well as showing multiple columns of data.</dd> - <dt><code><a href="/pt-BR/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_VIEWPORT">ROLE_VIEWPORT</a></code></dt> - <dd>A viewport. An object usually used in a scroll pane. It represents the portion of the entire data that the user can see. As the user manipulates the scroll bars, the contents of the viewport can change.</dd> - <dt><code><a href="/pt-BR/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_HEADER">ROLE_HEADER</a></code></dt> - <dd>Header of a document page.</dd> - <dt><code><a href="/pt-BR/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_FOOTER">ROLE_FOOTER</a></code></dt> - <dd>Footer of a document page.</dd> - <dt><code><a href="/pt-BR/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_PARAGRAPH">ROLE_PARAGRAPH</a></code></dt> - <dd>A paragraph of text.</dd> - <dt><code><a href="/pt-BR/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_RULER">ROLE_RULER</a></code></dt> - <dd>A ruler such as those used in word processors.</dd> - <dt><code><a href="/pt-BR/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_AUTOCOMPLETE">ROLE_AUTOCOMPLETE</a></code></dt> - <dd>A text entry having dialog or list containing items for insertion into an entry widget, for instance a list of words for completion of a text entry.</dd> - <dt><code><a href="/pt-BR/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_EDITBAR">ROLE_EDITBAR</a></code></dt> - <dd>An editable text object in a toolbar.</dd> - <dt><code><a href="/pt-BR/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_ENTRY">ROLE_ENTRY</a></code></dt> - <dd>An control whose textual content may be entered or modified by the user.</dd> - <dt><code><a href="/pt-BR/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_CAPTION">ROLE_CAPTION</a></code></dt> - <dd>A caption describing another object.</dd> - <dt><code><a href="/pt-BR/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_DOCUMENT_FRAME">ROLE_DOCUMENT_FRAME</a></code></dt> - <dd>A visual frame or container which contains a view of document content. Document frames may occur within another Document instance, in which case the second document may be said to be embedded in the containing instance. HTML frames are often ROLE_DOCUMENT_FRAME. Either this object, or a singleton descendant, should implement the Document interface.</dd> - <dt><code><a href="/pt-BR/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_HEADING">ROLE_HEADING</a></code></dt> - <dd>Heading.</dd> - <dt><code><a href="/pt-BR/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_PAGE">ROLE_PAGE</a></code></dt> - <dd>An object representing a page of document content. It is used in documents which are accessed by the user on a page by page basis.</dd> - <dt><code><a href="/pt-BR/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_SECTION">ROLE_SECTION</a></code></dt> - <dd>A container of document content.</dd> - <dt><code><a href="/pt-BR/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_REDUNDANT_OBJECT">ROLE_REDUNDANT_OBJECT</a></code></dt> - <dd>An object which is redundant with another object in the accessible hierarchy. ATs typically ignore objects with this role.</dd> - <dt><code><a href="/pt-BR/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_FORM">ROLE_FORM</a></code></dt> - <dd>A container of form controls.</dd> - <dt><code><a href="/pt-BR/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_IME">ROLE_IME</a></code></dt> - <dd>An object which is used to allow input of characters not found on a keyboard, such as the input of Chinese characters on a Western keyboard.</dd> - <dt><code><a href="/pt-BR/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_APP_ROOT">ROLE_APP_ROOT</a></code></dt> - <dd> ???</dd> - <dt><code><a href="/pt-BR/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_PARENT_MENUITEM">ROLE_PARENT_MENUITEM</a></code></dt> - <dd>Represents a menu item, which is an entry in a menu that a user can choose to display another menu.</dd> - <dt><code><a href="/pt-BR/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_CALENDAR">ROLE_CALENDAR</a></code></dt> - <dd>A calendar that allows the user to select a date.</dd> - <dt><code><a href="/pt-BR/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_COMBOBOX_LIST">ROLE_COMBOBOX_LIST</a></code></dt> - <dd>A list of items that is shown by combobox.</dd> - <dt><code><a href="/pt-BR/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_COMBOBOX_OPTION">ROLE_COMBOBOX_OPTION</a></code></dt> - <dd>A item of list that is shown by combobox</dd> - <dt><code><a href="/pt-BR/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_IMAGE_MAP">ROLE_IMAGE_MAP</a></code></dt> - <dd>An image map -- has child links representing the areas</dd> - <dt><code><a href="/pt-BR/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_OPTION">ROLE_OPTION</a></code></dt> - <dd>An option in a listbox</dd> - <dt><code><a href="/pt-BR/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_RICH_OPTION">ROLE_RICH_OPTION</a></code></dt> - <dd>A rich option in a listbox, it can have other widgets as children</dd> - <dt><code><a href="/pt-BR/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_LISTBOX">ROLE_LISTBOX</a></code></dt> - <dd>A list of options</dd> -</dl> - -<div class="note"> -<p><strong>Editor's note:</strong> Use template <span class="nowiki"><code><a href="/pt-BR/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_">ROLE_</a></code></span> to get reference on accessible role. It looks like <code><a href="/pt-BR/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_MENUITEM">ROLE_MENUITEM</a></code>.</p> -</div> diff --git a/files/pt-br/web/accessibility/at-apis/index.html b/files/pt-br/web/accessibility/at-apis/index.html deleted file mode 100644 index 57b2f546d4..0000000000 --- a/files/pt-br/web/accessibility/at-apis/index.html +++ /dev/null @@ -1,176 +0,0 @@ ---- -title: AT APIs Support -slug: Web/Accessibility/AT-APIs -tags: - - AT_APIs - - Accessibility - - NeedsTranslation - - TopicStub -translation_of: Mozilla/Tech/Accessibility/AT-APIs ---- -<h2 id="Introduction" name="Introduction">Introduction</h2> - -<div class="note">Documentation is in progress still. But in the meantime it more up-to-date and contains more details than existed analogues for <a class="external" href="http://developer.mozilla.org/en/docs/Accessibility/AT-SPI_Support">AT-SPI</a> and <a class="external" href="http://wiki.mozilla.org/Accessibility/AT-Windows-API">MSAA</a></div> - -<p>This documentation explains how makers of screen readers, voice dictation packages, onscreen keyboards, magnification software and other assitive technologies can support Gecko-based software. We provide for them the support of these products on Windows, Linux/Unix and OS X platforms.</p> - -<h3 id="Accessible_Gecko" name="Accessible_Gecko">Accessible Gecko</h3> - -<p>Gecko is a rendering engine that Firefox, SeaMonkey, Netscape and yelp use. Gecko can render a variety of content, not just HTML and supports key web standards such as Cascading Style Sheets, Javascript and the W3C DOM. Gecko also handles the users keystrokes and mouse clicks. Gecko is the core architecture that we are adding accessibility to, in order to support basic accessibility in all applications that are based on it.</p> - -<h3 id="Gecko_Based_Applications" name="Gecko_Based_Applications">Gecko Based Applications</h3> - -<p>Gecko can be used in two ways to create application:</p> - -<h4 id="Embedded_Clients" name="Embedded_Clients">Embedded Clients</h4> - -<p>Embedded clients use Gecko only in the content window, at the moment for HTML and generic XML only. They typically use standard Windows controls for their user interface -- the area outside of the client content window, plus the context menu.</p> - -<ul> - <li>on Windows platform - <ul> - <li>MFCEMBED testing client - this is a very simple package, great for testing basic HTML accessibility with your products and the Gecko rendering engine (please <a href="#Contacts">contact</a> us for a copy).</li> - <li><a class="external" href="http://kmeleon.sourceforge.net/">K-Meleon</a> - light, ultra-fast and more advanced (fully configurable) Gecko-based web browser available on the Windows platform</li> - </ul> - </li> - <li>on Linux/Unix platform - <ul> - <li><a class="external" href="http://live.gnome.org/Yelp">Yelp help viewer</a> - the help viewer in Gnome</li> - <li><a class="external" href="http://www.gnome.org/projects/evolution/">Evolution email</a> - provides integrated mail, addressbook and calendaring functionality to users of the GNOME desktop.</li> - </ul> - </li> - <li>on Mac platform - <ul> - <li><a class="external" href="http://caminobrowser.org/">Camino</a> - web browser for OS X</li> - </ul> - </li> -</ul> - -<h4 id="XUL_Applications" name="XUL_Applications">XUL Applications</h4> - -<p>XUL applications make full use of the Gecko architecture, not only for HTML content, but also for the entire user interface. Widgets such as menus, tab panels, tree views and dialogs are provided via an XML language called XUL (eXtensible User-interface Language). None of the user interface contains standard OS controls. This is done to ensure a common look and feel across all supported platforms, and to allow for different skins (appearances). Developing a XUL window is not that different from developing a web page, but the elements available to add widgets are more powerful and designed to be similar to desktop widgets.</p> - -<p>Examples of XUL applications:</p> - -<ul> - <li><a class="external" href="http://www.mozilla.com/en-US/firefox/">Firefox</a> - web-browser</li> - <li><a class="external" href="http://www.mozilla.com/en-US/thunderbird/">Thunderbird</a> - email client</li> - <li><a class="external" href="http://www.seamonkey-project.org/">Seamonkey</a> - web-browser, advanced e-mail and newsgroup client, IRC chat client, and HTML editing made simple</li> - <li><a class="external" href="http://www.mozilla.org/projects/calendar/sunbird/">Sunbird</a> - cross-platform calendar application</li> - <li><a class="external" href="http://www.kompozer.net/">KompoZer</a> - a complete Web Authoring System for Linux Desktop, Microsoft Windows and Macintosh users to rival programs like FrontPage and Dreamweaver.</li> - <li><a class="external" href="http://www.openkomodo.com/">Open Komodo</a> - platform for building developer environments</li> - <li><a class="external" href="http://www.getmiro.com/">Miro</a> - a free, open source internet tv and video player</li> - <li>Any XulRunner application (<a class="external" href="http://www.songbirdnest.com/">Songbird media player</a>, etc.)</li> - <li>Extensions to other XUL apps (e.g. <a class="external" href="http://addons.mozilla.org">Firefox extensions</a>)</li> -</ul> - -<h3 id="Gecko_Version" name="Gecko_Version">Gecko Version</h3> - -<p>For Firefox and all other Gecko-based products: this documentation applies to up-to-date product builds based on Gecko 1.9.2 -- currently not available on official releases. However most of described features are supported starting from Gecko 1.9.0 (Firefox 3.0). However it's preferable to grab the current build of Firefox or any other Gecko-based product to be up to dated:</p> - -<ul> - <li><a class="external" href="http://ftp.mozilla.org/pub/mozilla.org/firefox/nightly/latest-trunk/">Firefox</a> recent builds</li> - <li><a class="external" href="http://ftp.mozilla.org/pub/mozilla.org/thunderbird/nightly/latest-trunk/">Thunderbird</a> recent builds</li> - <li><a class="external" href="http://ftp.mozilla.org/pub/mozilla.org/seamonkey/nightly/latest-trunk/">Seamonkey</a> recent builds</li> -</ul> - -<h3 id="Determining_if_Accessibility_is_Enabled_in_a_Firefox">Determining if Accessibility is Enabled in a Firefox</h3> - -<p>Accessibility is enabled on Windows and Linux platforms by default. As well you might find helpful the <a class="link-https" href="https://addons.mozilla.org/firefox/2407/">about:accessibilityenabled Firefox</a> extension.</p> - -<h2 id="Supported_AT_APIs" name="Supported_AT_APIs">Supported AT APIs</h2> - -<h3 id="AT_APIs_terms" name="AT_APIs_terms">AT APIs terms</h3> - -<dl> - <dt><a class="external" href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/msaa/msaastart_9w2t.asp">Microsoft Active Accessibility (MSAA)</a></dt> - <dd>an API devised by Microsoft so that accessibility aids can track what's going on inside the user interface of any software package that supports it. If you seriously need to understand MSAA, you'll need to read the docs on MSDN and play with the sample apps and code that come with <a class="external" href="http://www.microsoft.com/downloads/details.aspx?FamilyID=4179742f-1f3d-4115-a8ba-2f7a6022b533&displaylang=en">MSAA SDK 1.3</a>. (I recommend SDK 1.3 because the MSAA SDK 2.0 doesn't come with the source code to the testing tools. The other differences are not important).</dd> - <dt><a class="external" href="http://www.linux-foundation.org/en/Accessibility/IAccessible2">IAccessible2 (IA2)</a></dt> - <dd>IAccessible2 is a new accessibility API which complements Microsoft's earlier work on MSAA. This API fills critical accessibility API gaps in the MSAA offering.</dd> - <dt><a class="external" href="http://www.gnome.org/~billh/at-spi-idl/html/">Assistive Technology Service Provider Interface (AT-SPI)</a></dt> - <dd>an API devised by Sun Microsystems so that accessibility aids can track what's going on inside the user interface of any software package that supports it. If you seriously need to understand AT-SPI, you'll need to read the docs on gnome.org and play with the available sample apps and code, such as at-poke. Please note that the web docs are sometimes out of date, and the <a class="external" href="http://cvs.gnome.org/viewcvs/at-spi/">latest AT-SPI is available on CVS</a>.</dd> - <dt><a class="external" href="http://www.apple.com/macosx/features/universalaccess/">Universal Access (UA)</a></dt> - <dd>Universal Access (UA) is the Apple's accessibility framework.</dd> -</dl> - -<h3 id="Windows_platform" name="Windows_platform">Windows platform</h3> - -<p>We support MSAA (Microsoft Active Accessibility) and IAccessible2 on Windows. Also we expose <a href="/en/Accessibility/AT-APIs/ImplementationFeatures/MSAA#Additional_DOM_Support" title="en/Accessibility/AT-APIs/ImplementationFeatures/MSAA#Additional_DOM_Support">MS COM interfaces</a> ISimpleDOM* to provide an access to DOM tree.</p> - -<p>IAccessible2 is a set of interfaces that overlay the MSAA (IAccessible) and DOM (ISimpleDOM*) interface support. Any object that supports IAccessible will also support IAccessible2 and possibly any of the other IA2 interfaces.</p> - -<h3 id="Linux.2FUnix_platform" name="Linux.2FUnix_platform">Linux/Unix platform</h3> - -<p>We support ATK/AT-SPI interfaces on Linux.</p> - -<h3 id="Mac_platform" name="Mac_platform">Mac platform</h3> - -<p>We currently support only a subset of Universal Access. The rest of the <a class="external" href="http://wiki.mozilla.org/Mac:Accessibility">Mozilla Universal Access support</a> is in progress.</p> - -<h2 id="Accessible_Web_Specifications" name="Accessible_Web_Specifications">Accessible Web Standards</h2> - -<p>Gecko exposes the number of XML languages including HTML to AT. Refer to <a href="/en/Accessibility/AT-APIs/Web_Specifications" title="en/ARIA_User_Agent_Implementors_Guide">accessible web specifications page</a> to learn what and how markup languages are exposed.</p> - -<h2 id="AT_APIs_Supported_Features_Details" name="AT_APIs_Supported_Features_Details">AT APIs Implementation Details</h2> - -<p>Refer to <a href="/En/Accessibility/AT-APIs/Implementation_Details" title="en/Accessibility/AT-APIs/Implementation_Details">implementation details page</a> to see how Gecko supports interesting AT API. There you will find information how AT API interfaces, roles, states and etc are mapped into Gecko accessibility API and visa versa.</p> - -<h2 id="Keyboard_User_Interface_and_API" name="Keyboard_User_Interface_and_API">Keyboard User Interface and API</h2> - -<p>Fortunately, Gecko uses the standard keyboard API's for each supported platform. The Mozilla keyboard shortcuts for content are similar to what is used in other browsers. Here is a list of <a class="external" href="http://www.mozilla.org/support/firefox/keyboard">Firefox keyboard shortcuts</a>.</p> - -<h2 id="Test_Tools" name="Test_Tools">Test Tools</h2> - -<p>Here you will find a list of tools to test accessibility Gecko-based applications.</p> - -<ul> - <li>MSAA - <ul> - <li><a class="external" href="http://www.microsoft.com/downloads/details.aspx?FamilyID=4179742F-1F3D-4115-A8BA-2F7A6022B533&displaylang=en">MSAA SDK tools</a> - version 1.3 is recommended instead of 2.0 because it includes source code for the tools</li> - </ul> - </li> - <li>IAccessible2 - <ul> - <li><a class="external" href="http://www.eclipse.org/actf/downloads/">Accessibility Probe</a> -- includes MSAA support as well</li> - </ul> - </li> - <li>ATK/AT-SPI - <ul> - <li><a class="external" href="http://live.gnome.org/Accerciser">Accerciser</a> - interactive Python accessibility explorer for the GNOME desktop</li> - </ul> - </li> - <li>Gecko - <ul> - <li><a class="external" href="http://www.mozilla.org/projects/inspector/">DOM Inspector</a> has an ability to test Gecko accessibility layer, supports base features.</li> - <li>Firebug</li> - </ul> - </li> -</ul> - -<h2 id="Screen_Readers" name="Screen_Readers">Screen Readers</h2> - -<p>Here's a list of screen readers we are oriented to in the first place.</p> - -<ul> - <li>Windows platform - <ul> - <li><a class="external" href="http://www.freedomscientific.com/fs_products/software_jaws.asp">JAWS</a></li> - <li><a class="external" href="http://www.gwmicro.com/">Windows Eyes</a></li> - <li><a class="external" href="http://www.nvda-project.org/">NVDA</a></li> - </ul> - </li> - <li>Linux/Unix platform - <ul> - <li><a class="external" href="http://live.gnome.org/Orca">Orca</a></li> - </ul> - </li> - <li>OS X platform - <ul> - <li><a class="external" href="http://www.apple.com/accessibility/voiceover/">VoiceOver</a></li> - </ul> - </li> -</ul> - -<h2 id="Contacts" name="Contacts">Contacts</h2> - -<p>Please discuss accessibility issues on the <a class="external" href="http://groups.google.com/group/mozilla.dev.accessibility/topics">Mozilla Accessibility groups</a> or on the <a class="link-irc" href="irc://irc.mozilla.org/accessibility">Mozilla Accessibility IRC channel</a>.</p> diff --git a/files/pt-br/web/accessibility/xforms/index.html b/files/pt-br/web/accessibility/xforms/index.html deleted file mode 100644 index 91b47d43f0..0000000000 --- a/files/pt-br/web/accessibility/xforms/index.html +++ /dev/null @@ -1,198 +0,0 @@ ---- -title: XForms Accessibility -slug: Web/Accessibility/XForms -tags: - - Accessibility - - NeedsTranslation - - Obsolete - - TopicStub - - XForms -translation_of: Mozilla/Tech/Accessibility/XForms ---- -<p> </p> - -<h2 id="Intoduction" name="Intoduction">Intoduction</h2> - -<p><span class="seoSummary">This article provides a quick guide to how accessibility is handled in Gecko for XForms.</span>. Assistive technologies API for XForms is supported starting from Firefox 3 (Gecko 1.9). Implementation of accessible objects for XForms elements is based on top of the existing object hierarchy introduced in the Mozilla accessibility module. XForms elements behavior is implemented in accordance with <a class="external" href="http://www.mozilla.org/access/toolkit-checklist">accessible toolkit checklist</a>.</p> - -<p>In general, when elements are similar to HTML elements, they are exposed to MSAA/ATK in a similar way.</p> - -<h2 id="Get_Build" name="Get_Build">Get Build</h2> - -<p>Subsections below explain how you can obtain accessible XForms-enabled build. These are either downloading latest build of firefox or building it yourself.</p> - -<h3 id="Downloading_Builds" name="Downloading_Builds">Downloading Builds</h3> - -<div class="note">Notion: XForms is no longer distributed with Firefox build. You must build it yourself. See section below.</div> - -<p>For Firefox, you may directly download the nighly "trunk" build of Firefox and install the XForms extension which lives in 'xpi' directory of the build. Note, XForms accessibility is implemented only on trunk. Trunk builds are not considered stable and should not be installed on top of the Firefox used for daily browsing. Currently we have verified that XForms accessibility is working on the Windows platform, and Linux testing has not yet been done, although everything should work and is ready to be tested. You will find trunk builds of Firefox at <a class="external" href="http://ftp.mozilla.org/pub/mozilla.org/firefox/nightly/latest-trunk/">ftp.mozilla.org</a>, trunk builds of XForms extension (Windows) at <a class="external" href="http://ftp.mozilla.org/pub/mozilla.org/firefox/nightly/latest-trunk/windows-xpi/">ftp.mozilla.org</a> or trunk builds of XForms extension (Linux) <a class="external" href="http://ftp.mozilla.org/pub/mozilla.org/firefox/nightly/latest-trunk/linux-xpi/">ftp.mozilla.org</a>.</p> - -<h3 id="Build_It_Yourself" name="Build_It_Yourself">Build It Yourself</h3> - -<p>If you would like to build firefox/seamonkey yourself then please ensure your .mozconfig file has the following option:</p> - -<ul> - <li>ac_add_options --enable-extensions=default,xforms,schema-validation</li> -</ul> - -<h2 id="How_To_Test" name="How_To_Test">How To Test</h2> - -<p>There are two approaches to test XForms accessibility. The first is to use and assistive technology such as a screen reader, or an accessibility testing tool, to make sure XForms elements have proper accessible objects. Or you may be guided by <a class="external" href="http://www.mozilla.org/access/toolkit-checklist">toolkit checklist</a> to check keyboard navigation for XForms controls.</p> - -<p>You can try the following link to test XForms accessibility:</p> - -<ul> - <li>visual XForms elements in XHTML document at <a class="link-https" href="https://bugzilla.mozilla.org/attachment.cgi?id=251493">bugzilla.mozilla.org</a></li> - <li>visual XForms elements in XUL document at <a class="link-https" href="https://bugzilla.mozilla.org/attachment.cgi?id=251497">bugzilla.mozilla.org</a></li> - <li>you can see XForms sample tests at <a class="external" href="http://www.mozilla.org/projects/xforms/samples.html">Mozilla XForms project</a></li> - <li>there are set of tests at <a class="external" href="http://beaufour.dk/xftst/">beaufour.dk</a></li> - <li>W3C's XForms test at <a class="external" href="http://www.w3.org/MarkUp/Forms/Test/XForms1.0/Edition2/front_html/XF102edTestSuite.html">w3.org</a></li> -</ul> - -<h2 id="Keyboard_Navigation_Issues" name="Keyboard_Navigation_Issues">Keyboard Navigation Issues</h2> - -<h3 id="Navigation_Sequence" name="Navigation_Sequence">Navigation Sequence</h3> - -<p>Though XForms spec declares <code>navindex</code> attribute to define the navigation sequence (see <a class="external" href="http://www.w3.org/TR/xforms/slice8.html#attrs-ui-common">1.0 specs</a> or <a class="external" href="http://www.w3.org/TR/xforms11/#attrs-ui-common">1.1 specs</a>) but Rich Schwerdtfeger (<small>Distinguished Engineer, SWG Accessibility Architect/Strategist Chair, IBM Accessibility Architecture Review Board</small>) gave some clarification about <code>navindex</code>. He wrote:</p> - -<blockquote>Navindex was in XForms - it was stripped out as it was believed the focus model was dependent on the content which used it. So, yes we don't care about navindex in XForms. If you use xhtml1.x use tabindex. If you use Xhtml2 use nextfocus.</blockquote> - -<p>Therefore since Mozilla XForms works in XHTML (1.x) or XUL documents only then we use <code>tabindex</code> instead. Note, we support <code>-moz-user-focus</code> style neither for XHTML or XUL.</p> - -<h2 id="AT_API" name="AT_API">AT API</h2> - -<h3 id="Accessible_properties" name="Accessible_properties">Accessible properties</h3> - -<p>This section describes common rules how accessibility properties are formed for forms control elements.</p> - -<h4 id="name" name="name">name</h4> - -<p>It is formed from value of child XForms <code>label</code> element if the element doesn't have <code>labelledby</code> attribute.</p> - -<h4 id="description" name="description">description</h4> - -<p>It is formed from value of child XForms <code>hint</code> element if the element doesn't have <code>describedby</code> attribute.</p> - -<h4 id="state" name="state">state</h4> - -<p>It is formed as well from model item properties (MIPs) of instance node that XForms element is bound to as from valid/invalid or in-range/out-of-range states of instance node. Instance node states are mapped to accessibility state constants declared in <code>nsIAccessibleStates</code> interface like it shown below:</p> - -<ul> - <li>relevant - <a href="/pt-BR/docs/Web/Accessibility/AT-APIs/Gecko/States#STATE_UNAVAILABLE">STATE_UNAVAILABLE</a></li> - <li>readonly - <a href="/pt-BR/docs/Web/Accessibility/AT-APIs/Gecko/States#STATE_READONLY">STATE_READONLY</a></li> - <li>required - <a href="/pt-BR/docs/Web/Accessibility/AT-APIs/Gecko/States#STATE_REQUIRED">STATE_REQUIRED</a></li> - <li>invalid - <a href="/pt-BR/docs/Web/Accessibility/AT-APIs/Gecko/States#STATE_INVALID">STATE_INVALID</a></li> - <li>out of range - <a href="/pt-BR/docs/Web/Accessibility/AT-APIs/Gecko/States#STATE_INVALID">STATE_INVALID</a></li> -</ul> - -<h4 id="attributes" name="attributes">attributes</h4> - -<p>Redefines <code><a class="external" href="http://www.w3.org/TR/aria-state/#datatype">datatype</a></code> ARIA attribute. Its value is XML Schema <a class="external" href="http://www.w3.org/TR/xmlschema-2/#built-in-datatypes">builit-in datatype</a> of instance node that XForms element is bound to.</p> - -<h4 id="children" name="children">children</h4> - -<p>Mozilla XForms implementation allows form control elements to have child elements. Therefore accessible children are formed from any accessible child elements of form control element and from elements that are introduced by its presentation.</p> - -<h3 id="Forms_Controls_Module" name="Forms_Controls_Module">Forms Controls Module</h3> - -<p>Some of form control elements may be represented in few ways by different widgets. This section lists accessible presentations for form control elements.</p> - -<h4 id="input" name="input">input</h4> - -<p>A key xforms element to show and change the instance data to which it is bound (see the <a class="external" href="http://www.w3.org/TR/xforms/slice8.html#ui-input">spec</a>, the <a href="en/XForms/User_Interface_Elements/Input">docs</a>). The follwoing representations <code>input</code> element are accessible:</p> - -<ul> - <li><a href="en/Accessibility/XForms/TextField#text_field">text field</a> - see the <a href="en/XForms/User_Interface_Elements/Input">docs</a>.</li> - <li><a href="en/Accessibility/XForms/Checkbox#checkbox">checkbox</a> - see the <a href="en/XForms/User_Interface_Elements/Input">docs</a></li> - <li><a href="en/Accessibility/XForms/Datepicker#datepicker">datepicker</a> - see the <a href="en/XForms/User_Interface_Elements/Input">docs</a>.</li> - <li><a href="en/Accessibility/XForms/Calendar#calendar">calendar</a> - see the <a href="en/XForms/User_Interface_Elements/Input">docs</a>.</li> - <li><a href="en/Accessibility/XForms/DaysList#days_list_docs">days list</a> - see the <a href="en/XForms/User_Interface_Elements/Input">docs</a>.</li> - <li><a href="en/Accessibility/XForms/MonthsList#months_list">months list</a> - see the <a href="en/XForms/User_Interface_Elements/Input">docs</a>.</li> -</ul> - -<h4 id="secret" name="secret">secret</h4> - -<p>Used for inputting passwords (see the <a class="external" href="http://www.w3.org/TR/xforms/slice8.html#ui-secret">spec</a>, the <a href="en/XForms/User_Interface_Elements/Secret">docs</a>). This element is represented by <a href="en/Accessibility/XForms/PasswordField">password field</a>.</p> - -<h4 id="textarea" name="textarea">textarea</h4> - -<p>Serves to show/change multiline text (see the <a class="external" href="http://www.w3.org/TR/xforms/slice8.html#ui-textarea">spec</a>, the <a href="en/XForms/User_Interface_Elements/Textarea">docs</a>). This element is represented by multiline <a href="en/Accessibility/XForms/TextField">text field</a>.</p> - -<h4 id="output" name="output">output</h4> - -<p>Serves to show instance data that the element is bound to (see the <a class="external" href="http://www.w3.org/TR/xforms/slice8.html#ui-output">spec</a>, the <a href="en/XForms/User_Interface_Elements/Output">docs</a>). It can have the following presentations:</p> - -<ul> - <li><a href="en/Accessibility/XForms/Text">text</a> - see the <a href="en/XForms/User_Interface_Elements/Output#text">docs</a>.</li> - <li><a href="en/Accessibility/XForms/Calendar">calendar</a> - see the <a href="en/XForms/User_Interface_Elements/Output#calendar">docs</a>.</li> -</ul> - -<h4 id="upload" name="upload">upload</h4> - -<p>Provides a means for the user to select a file (see the <a class="external" href="http://www.w3.org/TR/xforms/slice8.html#ui-upload">spec</a>, the <a href="en/XForms/User_Interface_Elements/Upload">docs</a>). This element is represented by <a href="en/Accessibility/XForms/Upload">upload</a>.</p> - -<h4 id="range" name="range">range</h4> - -<p>Allows the user to choose a value from within a specific range of values (see the <a class="external" href="http://www.w3.org/TR/xforms/slice8.html#ui-range">spec</a>, the <a href="en/XForms/User_Interface_Elements/Range">docs</a>). Currently it is represented by a <a href="en/Accessibility/XForms/Slider">slider</a> only.</p> - -<h4 id="trigger" name="trigger">trigger</h4> - -<p>Allows the user to initiate actions (see the <a class="external" href="http://www.w3.org/TR/xforms/slice8.html#ui-trigger">spec</a>, the <a href="en/XForms/User_Interface_Elements/Trigger">docs</a>). This element is represented by <a href="en/Accessibility/XForms/Button">button</a>.</p> - -<h4 id="submit" name="submit">submit</h4> - -<p>Invokes the submission of the selected instance data to its target destination (see the <a class="external" href="http://www.w3.org/TR/xforms/slice8.html#ui-submit">spec</a>, the <a href="en/XForms/User_Interface_Elements/Submit">docs</a>). This element is represented by <a href="en/Accessibility/XForms/Button">button</a>.</p> - -<h4 id="select" name="select">select</h4> - -<p>Allows the user to choose one or multiple values from a list of pre-defined values (see the <a class="external" href="http://www.w3.org/TR/xforms/slice8.html#ui-selectMany">spec</a>, the <a href="en/XForms/User_Interface_Elements/Select">docs</a>). It can have the following representations:</p> - -<ul> - <li><a href="en/Accessibility/XForms/Listbox">listbox</a></li> - <li><a href="en/Accessibility/XForms/Checkgroup">checkboxes group</a></li> -</ul> - -<h4 id="select1" name="select1">select1</h4> - -<p>Allows the user to choose a single value from a list of pre-defined values (see the <a class="external" href="http://www.w3.org/TR/xforms/slice8.html#ui-commonelems-label">spec</a>, the <a href="en/XForms/User_Interface_Elements/Select1">docs</a>). It can have the following representations:</p> - -<ul> - <li><a href="en/Accessibility/XForms/Combobox">combobox</a></li> - <li><a href="en/Accessibility/XForms/Listbox">listbox</a></li> - <li><a href="en/Accessibility/XForms/Radiogroup">radio group</a></li> -</ul> - -<h3 id="Additional_Elements" name="Additional_Elements">Additional Elements</h3> - -<p>These elements may be used as child elements to the form controls described above. Some of these elements are not accessible itself but they makes accessibility properties for XForms elements that hold them.</p> - -<h4 id="label" name="label">label</h4> - -<p>Specifies the label for the xforms control (see the <a class="external" href="http://www.w3.org/TR/xforms/slice8.html#ui-selectMany">spec</a>, the <a href="en/XForms/User_Interface_Elements/Label">docs</a>). Every form control other than the <code>output</code> element must contain a <code>label</code> element. The value of <code>label</code> element is used as name of accessible object.</p> - -<h4 id="help" name="help">help</h4> - -<p>Specifies contextual help for the containing form control (see the <a class="external" href="http://www.w3.org/TR/xforms/slice8.html#ui-commonelems-help">spec</a>, the <a href="en/XForms/User_Interface_Elements/Help">docs</a>). The <code>help</code> element has <code><a href="/pt-BR/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_ALERT">ROLE_ALERT</a></code> role.</p> - -<h4 id="hint" name="hint">hint</h4> - -<p>Similar to a tooltip (see the <a class="external" href="http://www.w3.org/TR/xforms/slice8.html#ui-commonelems-hint">spec</a>, the <a href="en/XForms/User_Interface_Elements/Hint">docs</a>). The value of <code>hint</code> element is used as description of accessible object.</p> - -<h4 id="alert" name="alert">alert</h4> - -<p>This message will be shown when the form control cannot properly bind to instance data or when the instance data value is invalid or out of the specified range of selectable values (see the <a class="external" href="http://www.w3.org/TR/xforms/slice8.html#ui-common-elements-alert">spec</a>, the <a href="en/XForms/User_Interface_Elements/Alert">docs</a>). The <code>alert</code> element has <code><a href="/pt-BR/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_ALERT">ROLE_ALERT</a></code> role for both usual and inline <code>alert</code> elements.</p> - -<h4 id="message" name="message">message</h4> - -<p>Used in combination with event listeners to display a message to the user when the specified event occurs (see the <a class="external" href="http://www.w3.org/TR/xforms/slice10.html#action-info">spec</a>, the <a href="en/XForms/User_Interface_Elements/Message">docs</a>). The <code>message</code> element has <code><a href="/pt-BR/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_ALERT">ROLE_ALERT</a></code> role.</p> - -<h2 id="Resources" name="Resources">Resources</h2> - -<p>Below you will find a list of XForms/Accessiblity resources:</p> - -<ul> - <li>Mozilla accessibility project at <a class="external" href="http://www.mozilla.org/access/">mozilla.org</a></li> - <li>XForms specification at <a class="external" href="http://www.w3.org/TR/xforms/">w3.org</a></li> - <li>Mozilla XForms project at <a class="external" href="http://www.mozilla.org/projects/xforms/">mozilla.org</a></li> - <li>UI XForms elements references at <a href="en/XForms/User_Interface_Elements">this site</a></li> -</ul> diff --git a/files/pt-br/web/accessibility/xforms/upload/index.html b/files/pt-br/web/accessibility/xforms/upload/index.html deleted file mode 100644 index 2be80c89f4..0000000000 --- a/files/pt-br/web/accessibility/xforms/upload/index.html +++ /dev/null @@ -1,45 +0,0 @@ ---- -title: Upload Representation -slug: Web/Accessibility/XForms/Upload -tags: - - Acessibilidade - - Acessibilidade_XForms - - Obsolento - - XForms -translation_of: Mozilla/Tech/Accessibility/XForms/Upload ---- -<p> </p> - -<p><a href="/pt-BR/docs/Accessibility:XForms#upload">« Accessibility XForms Support Page</a></p> - -<h2 id="Summary" name="Summary">Sumário</h2> - -<p>Provê meios para usuários selecionarem arquivos. Essa apresentação é usada para upload de elementos (veja o <a href="en/XForms/User_Interface_Elements/Upload">documento</a>). A representação do <em>upload </em>é combinada com o campo de texto para mostrar a URL do arquivo<em>uploaded</em>, o botão de upload e o botão de limpeza.</p> - -<h2 id="Exposed_interfaces" name="Exposed_interfaces">Interfaces Expostas</h2> - -<ul> - <li><a href="en/NsIAccessible">nsIAccessible</a></li> - <li><a href="en/NsIAccessibleHyperText">nsIAccessibleHyperText</a></li> -</ul> - -<h2 id="Accessibility_properties" name="Accessibility_properties">Propriedades de Acessibilidade</h2> - -<h3 id="nsIAccessible" name="nsIAccessible">nsIAccessible</h3> - -<ul> - <li><code>role</code> - <code><a href="/pt-BR/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_GROUPING">ROLE_GROUPING</a></code></li> - <li><code>name</code> - formado pelo valor do elemento sublinhado XForms <code>label.</code></li> - <li><code>description </code>- formado pelo valor do elemento sublinhado <code>XForms hint</code></li> - <li><code>state </code>- formed from MIPs of instance node that XForms element is bound to</li> - <li><code>value</code> - valor atual do nó limite.</li> -</ul> - -<h3 id="Accessible_children" name="Accessible_children">Accessible children</h3> - -<ul> - <li><code>text field</code> - <code><a href="/pt-BR/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_ENTRY">ROLE_ENTRY</a></code></li> - <li><code>upload button</code> - <code><a href="/pt-BR/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_PUSHBUTTON">ROLE_PUSHBUTTON</a></code></li> - <li><code>clean button</code> - <code><a href="/pt-BR/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_PUSHBUTTON">ROLE_PUSHBUTTON</a></code></li> - <li>qualquer elemento explícito para crianças que são representados para essa função.</li> -</ul> diff --git a/files/pt-br/web/api/cameracontrol/autofocus/index.html b/files/pt-br/web/api/cameracontrol/autofocus/index.html deleted file mode 100644 index 1ce3b547d3..0000000000 --- a/files/pt-br/web/api/cameracontrol/autofocus/index.html +++ /dev/null @@ -1,61 +0,0 @@ ---- -title: CameraControl.autoFocus() -slug: Web/API/CameraControl/autoFocus -translation_of: Archive/B2G_OS/API/CameraControl/autoFocus ---- -<p>{{APIRef("Camera API")}}{{ non-standard_header() }}{{B2GOnlyHeader2('privileged')}}</p> - -<h2 id="Resumo">Resumo</h2> - -<p>This method attempts to focus the camera. If the camera is able to attempt to focus, a success callback is issued, regardless of whether or not the focusing attempt succeeds. If unable to attempt to focus, an error callback is performed instead.</p> - -<p>The success or failure of the focus operation is indicated by the value of a parameter passed into the callback function.</p> - -<h2 id="Sintaxe">Sintaxe</h2> - -<pre>CameraControl.autoFocus(onsuccess[, onerror]);</pre> - -<h3 id="Parametros">Parametros</h3> - -<dl> - <dt><code>onsuccess</code></dt> - <dd>A callback function called when a focus attempt is made</dd> - <dt><code>onerror</code> {{optional_inline()}}</dt> - <dd>An optional callback function that accepts an error string as an input parameter; this is called if it's not possible to attempt to focus the camera.</dd> -</dl> - -<h2 id="Exemplo">Exemplo</h2> - -<pre class="brush: js">function onFocusPossible( success ) { - if ( success ) { - console.log("The image has been focused"); - } else { - console.log("The image has not been focused"); - } -} - -function onFocusNotPossible( error ) { - console.log("The camera is not able to focus anything"); - console.log( error ); -} - -function onAccessCamera( camera ) { - camera.autoFocus(onFocusPossible, onFocusNotPossible); -}; - -var options = { - camera: navigator.mozCameras.getListOfCameras()[0] -}; - -navigator.mozCameras.getCamera(options, onAccessCamera) -</pre> - -<h2 id="Specification" name="Specification">Especificações</h2> - -<p>Not part of any specification; however, this API should be removed when the <a class="external" href="http://dev.w3.org/2011/webrtc/editor/getusermedia.html" rel="external" title="http://dev.w3.org/2011/webrtc/editor/getusermedia.html">WebRTC Capture and Stream API</a> has been implemented.</p> - -<h2 id="Leia_mais">Leia mais</h2> - -<ul> - <li>{{domxref("CameraControl")}}</li> -</ul> diff --git a/files/pt-br/web/api/cameracontrol/index.html b/files/pt-br/web/api/cameracontrol/index.html deleted file mode 100644 index e0b5bdd2c0..0000000000 --- a/files/pt-br/web/api/cameracontrol/index.html +++ /dev/null @@ -1,108 +0,0 @@ ---- -title: CameraControl -slug: Web/API/CameraControl -tags: - - API - - B2G - - DOM - - DOM Reference - - Firefox OS - - Graphics - - JavaScript - - NeedsTranslation - - Non-standard - - Reference - - TopicStub - - WebAPI - - camera -translation_of: Archive/B2G_OS/API/CameraControl ---- -<p>{{APIRef("Camera API")}}</p> - -<p>{{ non-standard_header() }}</p> - -<p>{{B2GOnlyHeader2('privileged')}}</p> - -<p><span class="seoSummary">When you use the {{domxref("CameraManager.getCamera()")}} method to get a reference to a camera, you specify a callback function to be invoked on success. That function receives as a parameter a <code>CameraControl</code> object. You can use its methods and properties to manage and make use of the camera.</span></p> - -<h2 id="Properties">Properties</h2> - -<dl> - <dt>{{domxref("CameraControl.capabilities")}} {{readonlyinline}}</dt> - <dd>A {{domxref("CameraCapabilities")}} object indicating all the capabilities for the given camera.</dd> - <dt>{{domxref("CameraControl.effect")}}</dt> - <dd>A string defining the effect to be used by the camera (<code>none</code> by default). Its value must be one of the values available in {{domxref("CameraCapabilities.effects")}}.</dd> - <dt>{{domxref("CameraControl.exposureCompensation")}} {{readonlyinline}}</dt> - <dd>A value used to compensate the camera exposure. This attribute is read-only; to change the exposure, you need to call the {{domxref("CameraControl.setExposureCompensation()")}} method.</dd> - <dt>{{domxref("CameraControl.flashMode")}}</dt> - <dd>A string that defines how the flash, if any, is to be used; this is <code>auto</code> by default if the device has a flash, <code>none</code> otherwise. When set, its value must be chosen from the list of options specified by {{domxref("CameraCapabilities.flashModes")}}<code>.</code></dd> - <dt>{{domxref("CameraControl.focalLength")}} {{readonlyinline}}</dt> - <dd>A number that express the camera's focal length in millimeters.</dd> - <dt>{{domxref("CameraControl.focusAreas")}}</dt> - <dd>An <a href="/en-US/docs/JavaScript/Reference/Global_Objects/Array" title="/en-US/docs/JavaScript/Reference/Global_Objects/Array"><code>Array</code></a> of one or more objects that define where the camera will perform auto-focusing.</dd> - <dt>{{domxref("CameraControl.focusDistanceFar")}} {{readonlyinline}}</dt> - <dd>This value is a distance in meter used with {{domxref("CameraControl.focusDistanceNear")}} to defined the image's depth of field. The value for this property may be <code><a href="/en-US/docs/JavaScript/Reference/Global_Objects/Infinity" title="/en-US/docs/JavaScript/Reference/Global_Objects/Infinity">Infinity</a></code>.</dd> - <dt>{{domxref("CameraControl.focusDistanceNear")}} {{readonlyinline}}</dt> - <dd>This value is a distance in meter used with {{domxref("CameraControl.focusDistanceFar")}} to defined the image's depth of field.</dd> - <dt>{{domxref("CameraControl.focusDistanceOptimum")}} {{readonlyinline}}</dt> - <dd>This value is a distance in meter where the subject will appear sharpest.</dd> - <dt>{{domxref("CameraControl.focusMode")}}</dt> - <dd>A string that defines which kind of focus mode the camera should use (<code>auto</code> or <code>fixed</code> by default). Its value must be chosen from {{domxref("CameraCapabilities.focusModes")}}.</dd> - <dt>{{domxref("CameraControl.meteringAreas")}}</dt> - <dd>An <a href="/en-US/docs/JavaScript/Reference/Global_Objects/Array" title="/en-US/docs/JavaScript/Reference/Global_Objects/Array"><code>Array</code></a> of one or more objects that define where the camera will perform auto-focusing.</dd> - <dt>{{domxref("CameraControl.onShutter")}}</dt> - <dd>A handler for the camera's "shutter" event, to trigger a shutter sound and/or a visual shutter indicator.</dd> - <dt>{{domxref("CameraControl.onClosed")}}</dt> - <dd>A handler called when a new <code>CameraControl</code> object in the same app takes over the camera.</dd> - <dt>{{domxref("CameraControl.onRecorderStateChange")}}</dt> - <dd>A function to call when the recorder changes state, either because the recording process encountered an error, or because one of the recording limits (see {{domxref("CameraControl.startRecording()")}}) was reached.</dd> - <dt>{{domxref("CameraControl.sceneMode")}}</dt> - <dd>A string that defines which scene mode the camera is to use (<code>auto</code> by default). Its value must be chosen from {{domxref("CameraCapabilities.sceneModes")}}.</dd> - <dt>{{domxref("CameraControl.whiteBalanceMode")}}</dt> - <dd>A string that defines which white balance mode the camera is to use (<code>auto</code> by default). Its value must be chosen from {{domxref("CameraCapabilities.whiteBalanceModes")}}.</dd> - <dt>{{domxref("CameraControl.zoom")}}</dt> - <dd>A number that defines which kind of zoom factor mode the camera is to use (1 by default). Its value must be chosen from {{domxref("CameraCapabilities.zoomRatios")}}.</dd> -</dl> - -<h2 id="Methods">Methods</h2> - -<dl> - <dt>{{ domxref("CameraControl.autoFocus()") }}</dt> - <dd>Tells the camera to attempt to focus the image.</dd> - <dt>{{ domxref("CameraControl.getPreviewStream()") }}</dt> - <dd>Gets a video stream from the camera; you can use this in an arbitrary context.</dd> - <dt>{{ domxref("CameraControl.getPreviewStreamVideoMode()") }}</dt> - <dd>Gets a video stream from the camera based on a specific video mode.</dd> - <dt>{{ domxref("CameraControl.release()") }}</dt> - <dd>Releases the camera so that other applications can use it.</dd> - <dt>{{ domxref("CameraControl.resumePreview()") }}</dt> - <dd>Resumes the preview video stream after it's been paused by a call to {{domxref("CameraControl.takePicture()")}}.</dd> - <dt>{{ domxref("CameraControl.setExposureCompensation()") }}</dt> - <dd>Lets you specify the exposure compensation factor.</dd> - <dt>{{ domxref("CameraControl.startRecording()") }}</dt> - <dd>Lets you start recording a video stream.</dd> - <dt>{{ domxref("CameraControl.stopRecording()") }}</dt> - <dd>Lets you stop recording a video stream.</dd> - <dt>{{ domxref("CameraControl.pauseRecording()") }}</dt> - <dd>Pauses the recording of a video stream.</dd> - <dt>{{ domxref("CameraControl.resumeRecording()") }}</dt> - <dd>Resumes the recording of a video stream that has previously been paused.</dd> - <dt>{{ domxref("CameraControl.takePicture()") }}</dt> - <dd>Lets you capture a single image, receiving it as a {{domxref("Blob")}}.</dd> -</dl> - -<h2 id="Specification" name="Specification">Specification</h2> - -<p>{{page("/en-US/docs/Web/API/Navigator.MozCameras","Specification")}}</p> - -<h2 id="Permissions">Permissions</h2> - -<p>{{page("/en-US/docs/Web/API/Navigator.MozCameras","Permissions")}}</p> - -<h2 id="See_also">See also</h2> - -<ul> - <li>{{ domxref("CameraManager") }}</li> - <li>{{ domxref("CameraCapabilities") }}</li> - <li>{{ domxref("navigator.mozCamera") }}</li> -</ul> diff --git a/files/pt-br/web/api/devicestorage.get/index.html b/files/pt-br/web/api/devicestorage.get/index.html deleted file mode 100644 index 9258c4da29..0000000000 --- a/files/pt-br/web/api/devicestorage.get/index.html +++ /dev/null @@ -1,58 +0,0 @@ ---- -title: DeviceStorage.get -slug: Web/API/DeviceStorage.get -tags: - - API - - B2G - - Device Storage - - Firefox OS - - Method - - Non Standard - - Non-standard - - Não Padrão - - Reference - - Referencia - - WebAPI - - metodo -translation_of: Archive/B2G_OS/API/DeviceStorage/get ---- -<p>{{ non-standard_header() }}</p> -<p>{{ B2GOnlyHeader2('privileged') }}</p> -<h2 id="Sumário">Sumário</h2> -<p>O metodo <code>get</code> é usado para obter um arquivo somente-leitura de uma dada área de armazenamento.</p> -<p>Caso o pedido seja bem-sucedido, o resultado do pedido <code>result</code> é um objeto {{domxref("File")}} contendo os dados do arquivo original do dispositivo.</p> -<h2 id="Sintaxe">Sintaxe</h2> -<pre>var <em>instanciaDeDOMRequest</em> = <em>instanciaDeDeviceStorage</em>.get(<em>nomeDoArquivo</em>);</pre> -<h3 id="Parametros">Parametros</h3> -<dl> - <dt> - <code>nomeDoArquivo</code></dt> - <dd> - Uma string representando o nome completo (caminho + nome do arquivo) do arquivo a ser obtido.</dd> -</dl> -<h3 id="Retorno">Retorno</h3> -<p>Retorna um objeto {{domxref("DOMRequest")}} para manipular o sucesso ou o erro da operação.</p> -<h2 id="Exemplo">Exemplo</h2> -<pre class="brush: js"><code class="language-js"><span class="token keyword">var</span> sdcard <span class="token operator">=</span> navigator<span class="token punctuation">.</span>getDeviceStorage<span class="token punctuation">(</span><span class="token string">"sdcard"</span><span class="token punctuation">)</span><span class="token punctuation">;</span> - -<span class="token keyword">var</span> pedido <span class="token operator">=</span> sdcard<span class="token punctuation">.</span>get<span class="token punctuation">("meuArquivo.txt"</span><span class="token punctuation">)</span><span class="token punctuation">;</span> - -pedido<span class="token punctuation">.</span>onsuccess <span class="token operator">=</span> <span class="token keyword">function</span> <span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> -<span class="token keyword"> var</span> name <span class="token operator">=</span> this<span class="token punctuation">.</span>result<span class="token punctuation">.</span>name<span class="token punctuation">;</span> - console<span class="token punctuation">.</span>log<span class="token punctuation">(</span><span class="token string">'O arquivo "'</span> <span class="token operator">+</span> name <span class="token operator">+</span> <span class="token string">'" foi obtido com sucesso da área de armazenamento do sdcard'</span><span class="token punctuation">)</span><span class="token punctuation">;</span> -<span class="token punctuation">}</span> - -request<span class="token punctuation">.</span>onerror <span class="token operator">=</span> <span class="token keyword">function</span> <span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> - console<span class="token punctuation">.</span>warn<span class="token punctuation">(</span><span class="token string">'Nao foi possivel obter o arquivo: '</span> <span class="token operator">+</span> this<span class="token punctuation">.</span>error<span class="token punctuation">)</span><span class="token punctuation">;</span> -<span class="token punctuation">}</span></code> -</pre> -<h2 id="Specification" name="Specification">Especificação</h2> -<p>Não é parte de nenhuma especificação.</p> -<h2 id="Veja_também">Veja também</h2> -<ul> - <li>{{domxref("DeviceStorage")}}</li> - <li>{{domxref("File")}}</li> - <li>{{domxref("DOMRequest")}}</li> - <li><a href="/en-US/docs/WebAPI/Device_Storage" title="/en-US/docs/WebAPI/Device_Storage">Device Storage API</a></li> - <li><a href="/en-US/docs/WebAPI/FileHandle" title="/en-US/docs/WebAPI/FileHandle">FileHandle API</a></li> -</ul> diff --git a/files/pt-br/web/api/devicestorage.onchange/index.html b/files/pt-br/web/api/devicestorage.onchange/index.html deleted file mode 100644 index 1b1b1db375..0000000000 --- a/files/pt-br/web/api/devicestorage.onchange/index.html +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: DeviceStorage.onchange -slug: Web/API/DeviceStorage.onchange -translation_of: Archive/B2G_OS/API/DeviceStorage/onchange ---- -<p>{{ ApiRef() }}</p> -<p>{{ non-standard_header() }}</p> -<p>{{ B2GOnlyHeader2('privileged') }}</p> -<h2 id="Resumo">Resumo</h2> -<p>A propriedade <code>onchange</code> é usado para especificar um manuseador de eventos para receber eventos {{event("change")}}. Estes eventos são disparados cada vez que um arquivo é criado, modificado ou excluído na area de armazenamento.</p> -<h2 id="Sintaxe">Sintaxe</h2> -<pre><em>instanceOfDeviceStorage</em>.onchange = <em>funcRef</em></pre> -<p>Onde <code><em>funcRef</em></code> é uma função para ser chamada quando o evento {{event("change")}} ocorre. Estes eventos são do tipo {{domxref("DeviceStorageChangeEvent")}}.</p> -<h2 id="Exemplo">Exemplo</h2> -<pre class="brush: js language-html waffle-beta"><code class="language-js">var sdcard = navigator.getDeviceStorage('sdcard'); - -sdcard.onchange = function (change) { - var reason = change.reason; - var path = change.path; - - console.log('O arquivo "' + path + '" foi ' + reason); -}</code></pre> -<h2 id="Specification" name="Specification">Especificação</h2> -<p>Não faz parte de qualquer especificação.</p> -<h2 id="Veja_também">Veja também</h2> -<ul> - <li>{{domxref("DeviceStorage")}}</li> - <li>{{domxref("DeviceStorageChangeEvent")}}</li> - <li><a href="/en-US/docs/WebAPI/Device_Storage" title="/en-US/docs/WebAPI/Device_Storage">Device Storage API</a></li> -</ul> diff --git a/files/pt-br/web/css/-moz-binding/index.html b/files/pt-br/web/css/-moz-binding/index.html deleted file mode 100644 index 136ccb9b33..0000000000 --- a/files/pt-br/web/css/-moz-binding/index.html +++ /dev/null @@ -1,57 +0,0 @@ ---- -title: '-moz-binding' -slug: Web/CSS/-moz-binding -translation_of: Archive/Web/CSS/-moz-binding ---- -<div>{{CSSRef}}{{Non-standard_Header}}{{Deprecated_Header(57)}}</div> - -<p>A propriedade CSS <strong><code>-moz-binding</code></strong> é usada por aplicações baseadas em Mozilla para fixar um <a href="/en-US/docs/XBL">XBL</a> binding a um elemento DOM.</p> - -<p>{{CSSInfo}}</p> - -<h2 id="Sintaxe">Sintaxe</h2> - -<pre class="brush:css">/* valor da <url> */ --moz-binding: url(http://www.example.org/xbl/htmlBindings.xml#checkbox); - -/* Valores globais */ --moz-binding: inherited; --moz-binding: initial; --moz-binding: unset; -</pre> - -<h3 id="Valores">Valores</h3> - -<dl> - <dt>{{CSSxRef("<url>")}}</dt> - <dd>A URL para o XBL binding (incluindo o identificador de fragmento).</dd> - <dt><code>none</code></dt> - <dd>Nenhum XBL binding é aplicado ao elemento.</dd> -</dl> - -<h3 id="Sintaxe_formal">Sintaxe formal</h3> - -<pre class="syntaxbox">{{CSSSyntax}}</pre> - -<h2 id="Exemplo">Exemplo</h2> - -<pre class="brush: css">.exampleone { - -moz-binding: url(http://www.example.org/xbl/htmlBindings.xml#radiobutton); -}</pre> - -<h2 id="Especificações">Especificações</h2> - -<p>Não faz parte de nenhuma especificação.</p> - -<h2 id="Compatibilidade_do_navegador">Compatibilidade do navegador</h2> - -<div class="hidden">A tabela de compatibilidade desta página é gerada a partir de dados estruturados. Se você gostaria de contribuir com os dados, por favor acesse <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> e nos envie um pull request.</div> - -<p>{{Compat("css.properties.-moz-binding")}}</p> - -<h2 id="Veja_também">Veja também</h2> - -<ul> - <li><a href="/en-US/docs/XBL/XBL_1.0_Reference/Binding_Attachment_and_Detachment">Referências XBL: Binding Attachment and Detachment</a></li> - <li><a href="/en-US/docs/Mozilla/Tech/XUL/Tutorial/Introduction_to_XBL">Tutorial XUL: Introdução ao XBL</a></li> -</ul> diff --git a/files/pt-br/web/css/-moz-border-bottom-colors/index.html b/files/pt-br/web/css/-moz-border-bottom-colors/index.html deleted file mode 100644 index 855b7f79ba..0000000000 --- a/files/pt-br/web/css/-moz-border-bottom-colors/index.html +++ /dev/null @@ -1,85 +0,0 @@ ---- -title: '-moz-border-bottom-colors' -slug: Web/CSS/-moz-border-bottom-colors -translation_of: Archive/Web/CSS/-moz-border-bottom-colors ---- -<div>{{CSSRef}}{{Non-standard_Header}}{{Obsolete_Header(59)}}</div> - -<p>Em aplicações Mozilla como o Firefox, a propriedade CSS <strong><code>-moz-border-bottom-colors</code></strong> define uma lista de cores para a borda inferior.</p> - -<pre class="brush:css no-line-numbers">/* Valor unico <color> */ --moz-border-bottom-colors: #00E676; - -/* Multiplos valores <color> */ --moz-border-bottom-colors: #f0f0f0 #a0a0a0 #505050 #000000; - -/* Valores globais */ --moz-border-bottom-colors: inherit; --moz-border-bottom-colors: initial; --moz-border-bottom-colors: unset; -</pre> - -<p>Quando um elemento tem a borda maior do que um único pixel do CSS, cada linha de pixel usa a próxima cor especificada em sua propriedade, de fora para dentro. Isso elimina a necessidade de caixas aninhadas. Se a borda for mais larga que o número de cores especificadas, a parte restante da borda é a cor especificada mais próxima.</p> - -<p>{{cssinfo}}</p> - -<p>Não se aplica</p> - -<ol> - <li>se {{Cssxref("border-style")}} é <code>dashed</code> ou <code>dotted</code>.</li> - <li>a tabelas com <code>border-collapse: collapse</code>.</li> -</ol> - -<h2 id="Sintaxe">Sintaxe</h2> - -<h3 id="Valores">Valores</h3> - -<p>Aceita uma lista de valores de cores separados por espaços em branco.</p> - -<dl> - <dt><color></dt> - <dd>Especifica a cor de uma linha de pixels da borda inferior. <code>transparent</code> é válido. Veja os valores de {{cssxref("<color>")}} para possíveis unidades.</dd> - <dt>none</dt> - <dd>Padrão, nenhuma cor é desenhada ou o {{cssxref("border-color")}} é usado, se for especificado.</dd> -</dl> - -<h3 id="Sintaxe_formal">Sintaxe formal</h3> - -<pre class="syntaxbox">{{csssyntax}}</pre> - -<h2 id="Exemplo">Exemplo</h2> - -<pre class="brush:html"><div id="exemplo">Exemplo</div> -</pre> - -<pre class="brush:css">#exemplo { - padding: 20px; - background-color: pink; - border: 10px solid black; - -moz-border-top-colors: #e00 #c30 #c50 #c60 #c70 #c80 #c90 #ca0 #cb0 #cc0; - -moz-border-right-colors: red #f60 #f80 #f90 #fa0 #fb0 #fc0 #fd0 #fe0 #ff0; - -moz-border-bottom-colors: red #f60 #f80 #f90 #fa0 #fb0 #fc0 #fd0 #fe0 #ff0; - -moz-border-left-colors: #e00 #c30 #c50 #c60 #c70 #c80 #c90 #ca0 #cb0 #cc0; -} -</pre> - -<p>{{EmbedLiveSample("Exemplo", 120, 90)}}</p> - -<h2 id="Especificações">Especificações</h2> - -<p>Essa propriedade não é parte de nenhuma especificação.</p> - -<h2 id="Compatibilidade_de_navegador">Compatibilidade de navegador</h2> - -<div class="hidden">A tabela de compatibilidade nesta página é gerada a partir de dados estruturados. Se você gostaria de contribuir com os dados, por favor acesse <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> e nos envie um pull request.</div> - -<p>{{Compat("css.properties.-moz-border-bottom-colors")}}</p> - -<h2 id="Veja_também">Veja também</h2> - -<ul> - <li>{{CSSxRef("border-color")}}</li> - <li>{{CSSxRef("-moz-border-right-colors")}}</li> - <li>{{CSSxRef("-moz-border-top-colors")}}</li> - <li>{{CSSxRef("-moz-border-left-colors")}}</li> -</ul> diff --git a/files/pt-br/web/css/-moz-border-left-colors/index.html b/files/pt-br/web/css/-moz-border-left-colors/index.html deleted file mode 100644 index 950f8205a1..0000000000 --- a/files/pt-br/web/css/-moz-border-left-colors/index.html +++ /dev/null @@ -1,85 +0,0 @@ ---- -title: '-moz-border-left-colors' -slug: Web/CSS/-moz-border-left-colors -translation_of: Archive/Web/CSS/-moz-border-left-colors ---- -<div>{{CSSRef}}{{Non-standard_Header}}{{Obsolete_Header(59)}}</div> - -<p>Em aplicações Mozilla como o Firefox, a propriedade CSS <strong><code>-moz-border-left-colors</code></strong> define uma lista de cores para a borda esquerda.</p> - -<pre class="brush:css no-line-numbers">/* Valor unico <color> */ --moz-border-left-colors: #f0f0f0; - -/* Multiplo valor <color> */ --moz-border-left-colors: #f0f0f0 #a0a0a0 #505050 #000000; - -/* Valores globais */ --moz-border-left-colors: inherit; --moz-border-left-colors: initial; --moz-border-left-colors: unset; -</pre> - -<p>Quando um elemento tem a borda mais larga que um único pixel CSS, cada linha do pixel usa a próxima cor especificada na sua propriedade, de fora para dentro. Isso elimina a necessidade de caixas aninhadas. Se a borda é mais larga do que o número de cores especificadas, a parte restante da borda é a cor especificada mais próxima.</p> - -<p>{{cssinfo}}</p> - -<p>Não se aplica</p> - -<ol> - <li>se {{Cssxref("border-style")}} é <code>dashed</code> ou <code>dotted</code>.</li> - <li>a tabelas com <code>border-collapse: collapse</code>.</li> -</ol> - -<h2 id="Sintaxe">Sintaxe</h2> - -<h3 id="Valores">Valores</h3> - -<p>Aceita uma lista de valores de cores separados por um espaço em branco.</p> - -<dl> - <dt><color></dt> - <dd>Especifica a cor de uma linha de pixels da borda esquerda. <code>transparent</code> é válido. Veja valores de {{cssxref("<color>")}} para possíveis unidades.</dd> - <dt>none</dt> - <dd>Padrão, nenhuma cor é desenhada ou a {{cssxref("border-color")}} é usada, se especificada.</dd> -</dl> - -<h3 id="Sintaxe_formal">Sintaxe formal</h3> - -<pre class="syntaxbox">{{csssyntax}}</pre> - -<h2 id="Exemplo">Exemplo</h2> - -<pre class="brush:html"><div id="exemplo">Exemplo</div> -</pre> - -<pre class="brush:css">#exemplo { - padding: 15px; - background-color: #4DD0E1; - border: 5px solid black; - -moz-border-top-colors: #e00 #c30 #c50 #c60 #c70 #c80 #c90 #ca0 #cb0 #cc0; - -moz-border-right-colors: red #f60 #f80 #f90 #fa0 #fb0 #fc0 #fd0 #fe0 #ff0; - -moz-border-bottom-colors: red #f60 #f80 #f90 #fa0 #fb0 #fc0 #fd0 #fe0 #ff0; - -moz-border-left-colors: #e00 #c30 #c50 #c60 #c70 #c80 #c90 #ca0 #cb0 #cc0; -} -</pre> - -<p>{{EmbedLiveSample("Exemplo", 120, 90)}}</p> - -<h2 id="Especificações">Especificações</h2> - -<p>Essa propriedade não é parte de nenhuma especificação.</p> - -<h2 id="Browser_compatibility">Browser compatibility</h2> - -<div class="hidden">A tabela de compatibilidade nesta página é gerada a partir de dados estruturados. Se você gostaria de contribuir com os dados, por favor acess <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> e nos envie um pull request.</div> - -<p>{{Compat("css.properties.-moz-border-left-colors")}}</p> - -<h2 id="Veja_também">Veja também</h2> - -<ul> - <li>{{cssxref("border-color")}}</li> - <li>{{Cssxref("-moz-border-right-colors")}}</li> - <li>{{Cssxref("-moz-border-bottom-colors")}}</li> - <li>{{Cssxref("-moz-border-top-colors")}}</li> -</ul> diff --git a/files/pt-br/web/css/-moz-border-right-colors/index.html b/files/pt-br/web/css/-moz-border-right-colors/index.html deleted file mode 100644 index 905a2f4576..0000000000 --- a/files/pt-br/web/css/-moz-border-right-colors/index.html +++ /dev/null @@ -1,85 +0,0 @@ ---- -title: '-moz-border-right-colors' -slug: Web/CSS/-moz-border-right-colors -translation_of: Archive/Web/CSS/-moz-border-right-colors ---- -<div>{{CSSRef}}{{Non-standard_Header}}{{Obsolete_Header(59)}}</div> - -<p>Em aplicações Mozilla como o Firefox, a propriedade CSS <strong><code>-moz-border-right-colors</code></strong> define uma lista de cores para a borda direita.</p> - -<pre class="brush:css no-line-numbers">/* Valor unico <color> */ --moz-border-right-colors: #f0f0f0; - -/* Multiplos valores <color> */ --moz-border-right-colors: #f0f0f0 #a0a0a0 #505050 #000000; - -/* Valores globais */ --moz-border-right-colors: inherit; --moz-border-right-colors: initial; --moz-border-right-colors: unset; -</pre> - -<p>Quando um elemento tem a borda mais larga que um único pixel CSS, cada linha do pixel usa a próxima cor especificada em sua propriedade, de fora para dentro. Isso elimina a necessidade de caixas aninhadas. Se a borda é mais larga que o número espeficado de cores, a parte restante da borda é a cor especificada mais próxima.</p> - -<p>{{cssinfo}}</p> - -<p>Não se aplica</p> - -<ol> - <li>se {{Cssxref("border-style")}} é <code>dashed</code> ou <code>dotted</code>.</li> - <li>a tabelas com <code>border-collapse: collapse</code>.</li> -</ol> - -<h2 id="Sintaxe">Sintaxe</h2> - -<h3 id="Valores">Valores</h3> - -<p>Aceita uma lista de valores de cores separados por espaços em branco.</p> - -<dl> - <dt><color></dt> - <dd>Especifica a cor de uma linha de pixel da borda direita. <code>transparent</code> é válido. Veja os valores de {{cssxref("<color>")}} para possíveis unidades.</dd> - <dt>none</dt> - <dd>Padrão, nenhuma cor é desenhada ou {{cssxref("border-color")}} é usada, se especificada.</dd> -</dl> - -<h3 id="Sintaxe_formal">Sintaxe formal</h3> - -<pre class="syntaxbox">{{csssyntax}}</pre> - -<h2 id="Exemplo">Exemplo</h2> - -<pre class="brush:html"><div id="exemplo">Exemplo</div> -</pre> - -<pre class="brush:css">#exemplo { - padding: 20px; - background-color: gray; - border: 10px solid black; - -moz-border-top-colors: #e00 #c30 #c50 #c60 #c70 #c80 #c90 #ca0 #cb0 #cc0; - -moz-border-right-colors: red #f60 #f80 #f90 #fa0 #fb0 #fc0 #fd0 #fe0 #ff0; - -moz-border-bottom-colors: red #f60 #f80 #f90 #fa0 #fb0 #fc0 #fd0 #fe0 #ff0; - -moz-border-left-colors: #e00 #c30 #c50 #c60 #c70 #c80 #c90 #ca0 #cb0 #cc0; -} -</pre> - -<p>{{EmbedLiveSample("Exemplo", 120, 90)}}</p> - -<h2 id="Especificações">Especificações</h2> - -<p>Essa propriedade não é parte de nenhuma especificação.</p> - -<h2 id="Compatibilidade_do_navegador">Compatibilidade do navegador</h2> - -<div class="hidden">A tabela de compatibilidade nesta página é gerada a partir de dados estruturados.Se você deseja contribuir com dados, por favor acesse <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> e envie-nos um pull request.</div> - -<p>{{Compat("css.properties.-moz-border-right-colors")}}</p> - -<h2 id="Veja_também">Veja também</h2> - -<ul> - <li>{{cssxref("border-color")}}</li> - <li>{{Cssxref("-moz-border-top-colors")}}</li> - <li>{{Cssxref("-moz-border-bottom-colors")}}</li> - <li>{{Cssxref("-moz-border-left-colors")}}</li> -</ul> diff --git a/files/pt-br/web/css/-moz-border-top-colors/index.html b/files/pt-br/web/css/-moz-border-top-colors/index.html deleted file mode 100644 index 0e9aac64a2..0000000000 --- a/files/pt-br/web/css/-moz-border-top-colors/index.html +++ /dev/null @@ -1,85 +0,0 @@ ---- -title: '-moz-border-top-colors' -slug: Web/CSS/-moz-border-top-colors -translation_of: Archive/Web/CSS/-moz-border-top-colors ---- -<div>{{CSSRef}}{{Non-standard_Header}}{{Obsolete_Header(59)}}</div> - -<p>In Mozilla applications like Firefox, the <strong><code>-moz-border-top-colors</code></strong> CSS property sets a list of colors for the top border.</p> - -<pre class="brush:css no-line-numbers">/* Single <color> value */ --moz-border-top-colors: #f0f0f0; - -/* Multiple <color> values */ --moz-border-top-colors: #f0f0f0 #a0a0a0 #505050 #000000; - -/* Global values */ --moz-border-top-colors: inherit; --moz-border-top-colors: initial; --moz-border-top-colors: unset; -</pre> - -<p>Quando um elemento tem a borda mais larga que um único pixel CSS, cada linha do pixel usa a próxima cor especificada em sua propriedade, de fora para dentro. Isso elimina a necessidade de caixas aninhadas. Se a borda é mais larga que o número espeficado de cores, a parte restante da borda é a cor especificada mais próxima.</p> - -<p>{{cssinfo}}</p> - -<p>It does not apply</p> - -<ol> - <li>se {{Cssxref("border-style")}} é <code>dashed</code> ou <code>dotted</code>.</li> - <li>a tabela com <code>border-collapse: collapse</code>.</li> -</ol> - -<h2 id="Sintaxe">Sintaxe</h2> - -<h3 id="Valores">Valores</h3> - -<p>Aceita uma lista de valores de cores separados por espaços em branco.</p> - -<dl> - <dt><color></dt> - <dd>Especifica a cor de uma linha de pixel da borda superior. <code>transparent</code> é válido. Veja os valores de {{cssxref("<color>")}} para possíveis unidades.</dd> - <dt>none</dt> - <dd>Padrão, nenhuma cor é desenhada ou {{cssxref("border-color")}} é usada, se especificada .</dd> -</dl> - -<h3 id="Sintaxe_formal">Sintaxe formal</h3> - -<pre class="syntaxbox">{{csssyntax}}</pre> - -<h2 id="Exemplo">Exemplo</h2> - -<pre class="brush:html"><div id="exemplo">Exemplo</div> -</pre> - -<pre class="brush:css">#exemplo { - padding: 20px; - background-color: gray; - border: 10px solid black; - -moz-border-top-colors: #e00 #c30 #c50 #c60 #c70 #c80 #c90 #ca0 #cb0 #cc0; - -moz-border-right-colors: red #f60 #f80 #f90 #fa0 #fb0 #fc0 #fd0 #fe0 #ff0; - -moz-border-bottom-colors: red #f60 #f80 #f90 #fa0 #fb0 #fc0 #fd0 #fe0 #ff0; - -moz-border-left-colors: #e00 #c30 #c50 #c60 #c70 #c80 #c90 #ca0 #cb0 #cc0; -} -</pre> - -<p>{{EmbedLiveSample("Exemplo", 120, 90)}}</p> - -<h2 id="Especificações">Especificações</h2> - -<p>Essa propriedade não é parte de nenhuma especificação.</p> - -<h2 id="Compatibilidade_do_navegador">Compatibilidade do navegador</h2> - -<div class="hidden">A tabela de compatibilidade nesta página é gerada a partir de dados estruturados. Se você deseja contribuir com dados, por favor acesse <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> e envie-nos um pull request.</div> - -<p>{{Compat("css.properties.-moz-border-top-colors")}}</p> - -<h2 id="Veja_também">Veja também</h2> - -<ul> - <li>{{cssxref("border-color")}}</li> - <li>{{Cssxref("-moz-border-right-colors")}}</li> - <li>{{Cssxref("-moz-border-bottom-colors")}}</li> - <li>{{Cssxref("-moz-border-left-colors")}}</li> -</ul> diff --git a/files/pt-br/web/css/_doublecolon_-ms-tooltip/index.html b/files/pt-br/web/css/_doublecolon_-ms-tooltip/index.html deleted file mode 100644 index e9e3496a20..0000000000 --- a/files/pt-br/web/css/_doublecolon_-ms-tooltip/index.html +++ /dev/null @@ -1,23 +0,0 @@ ---- -title: '::-ms-tooltip' -slug: 'Web/CSS/::-ms-tooltip' -translation_of: 'Archive/Web/CSS/::-ms-tooltip' ---- -<div>{{CSSRef}}{{Non-standard_header}}</div> - -<p><span class="seoSummary">The <strong><code>::-ms-tooltip</code></strong> <a href="/en-US/docs/Web/CSS">CSS</a> <a href="/en-US/docs/Web/CSS/Pseudo-elements">pseudo-element</a> is a <a href="/en-US/docs/Web/CSS/Microsoft_CSS_extensions">Microsoft extension</a> that applies one or more styles to the tooltip of a slider <code><a href="/en-US/docs/Web/HTML/Element/input/range"><input type="range"></a></code>.</span></p> - -<h2 id="Syntax">Syntax</h2> - -<pre class="syntaxbox">::-ms-tooltip {...} -</pre> - -<h2 id="Propriedades">Propriedades</h2> - -<p>The only CSS properties that can be used on <code>::-ms-tooltip</code> are <code><a href="/en-US/docs/Web/CSS/display">display</a></code> and <code><a href="/en-US/docs/Web/CSS/visibility">visibility</a></code>, for hiding the pseudo-element.</p> - -<h2 id="Veja_também">Veja também</h2> - -<ul> - <li><a href="/en-US/docs/Web/HTML/Element/input/range"><input type="range"></a></li> -</ul> diff --git a/files/pt-br/web/guide/api/camera/index.html b/files/pt-br/web/guide/api/camera/index.html deleted file mode 100644 index c5350e2f82..0000000000 --- a/files/pt-br/web/guide/api/camera/index.html +++ /dev/null @@ -1,220 +0,0 @@ ---- -title: Introdução da API de Câmera -slug: Web/Guide/API/Camera -translation_of: Archive/B2G_OS/API/Camera_API/Introduction ---- -<p><span class="seoSummary">Através da <a class="link-https" href="https://wiki.mozilla.org/Platform/Features/Camera_API">Camera API</a>, é possivel tirar fotos com a câmera de seu dispositivo e enviá-las para a atual página da web.</span> Isso é obtido pelo elemento <code>input</code> com <code>type="file"</code> e um atributo <code>accept</code> para declarar que aceita imagens. O HTML se parece com esse:</p> -<pre class="brush: html"><input type="file" id="take-picture" accept="image/*"> -</pre> -<p>Quando usuários escolhem ativar esse elemento HTML, é apresentado a eles uma opção para escolher um arquivo, onde a câmera do dispositivo é uma das opções. Se selecionarem a câmera, entrará no modo de captura de imagem. Depois que a imagem for tirada, será apresentada a escolha de aceita-lá ou descartar-lá. Se aceita, será enviada ao elemento <code><input type="file"></code> e isso acionará o evento <code>onchange</code>.</p> -<h2 id="Obter_uma_referencia_para_a_foto_tirada">Obter uma referencia para a foto tirada</h2> -<p>Com a ajuda da <a href="/en/Using_files_from_web_applications" title="en/Using_files_from_web_applications">File API</a> você pode acessar a imagem capturada ou escolher um arquivo:</p> -<pre class="brush: js">var takePicture = document.querySelector("#take-picture"); -takePicture.onchange = function (event) { - // Obtenha uma referencia para a imagem capturada ou escolha um arquivo - var files = event.target.files, - file; - if (files && files.length > 0) { - file = files[0]; - } -}; -</pre> -<h2 id="Mostrando_a_imagem_na_página_web">Mostrando a imagem na página web</h2> -<p>Uma vez que você tem a referencia da imagem capturada (i.e., arquivo), você pode usar {{ domxref("window.URL.createObjectURL()") }} para criar uma URL referenciando a foto e configurando como o <code>src</code> de uma imagem:</p> -<pre class="brush: js">// Image reference -var showPicture = document.querySelector("#show-picture"); - -// Get window.URL object -var URL = window.URL || window.webkitURL; - -// Create ObjectURL -var imgURL = URL.createObjectURL(file); - -// Set img src to ObjectURL -showPicture.src = imgURL; - -// For performance reasons, revoke used ObjectURLs -URL.revokeObjectURL(imgURL); -</pre> -<p>Se <code>createObjectURL()</code> não é suportado, uma alternativa é voltar ao {{ domxref("FileReader") }}:</p> -<pre class="brush: js">// Fallback if createObjectURL is not supported -var fileReader = new FileReader(); -fileReader.onload = function (event) { - showPicture.src = event.target.result; -}; -fileReader.readAsDataURL(file); -</pre> -<h2 id="Exemplo_Completo">Exemplo Completo</h2> -<p>Se você quiser ver isso em ação, dê uma olhada em <a class="external" href="http://robnyman.github.com/camera-api/">complete working Camera API example</a>.</p> -<p>Aqui está o código usado nessa demo:</p> -<h3 id="Página_HTML">Página HTML</h3> -<pre class="brush: html"><!DOCTYPE html> -<html> - <head> - <meta charset="utf-8"> - <title>Camera API</title> - <link rel="stylesheet" href="css/base.css" type="text/css" media="screen"> - </head> - - <body> - - <div class="container"> - <h1>Camera API</h1> - - <section class="main-content"> - <p>A demo of the Camera API, currently implemented in Firefox and Google Chrome on Android. Choose to take a picture with your device's camera and a preview will be shown through createObjectURL or a FileReader object (choosing local files supported too).</p> - - <p> - <input type="file" id="take-picture" accept="image/*"> - </p> - - <h2>Preview:</h2> - <p> - <img src="about:blank" alt="" id="show-picture"> - </p> - - <p id="error"></p> - - </section> - - <p class="footer">All the code is available in the <a href="https://github.com/robnyman/robnyman.github.com/tree/master/camera-api">Camera API repository on GitHub</a>.</p> - </div> - - - <script src="js/base.js"></script> - - - </body> -</html> -</pre> -<h3 id="Arquivo_JavaScript">Arquivo JavaScript</h3> -<pre class="brush: js">(function () { - var takePicture = document.querySelector("#take-picture"), - showPicture = document.querySelector("#show-picture"); - - if (takePicture && showPicture) { - // Set events - takePicture.onchange = function (event) { - // Get a reference to the taken picture or chosen file - var files = event.target.files, - file; - if (files && files.length > 0) { - file = files[0]; - try { - // Get window.URL object - var URL = window.URL || window.webkitURL; - - // Create ObjectURL - var imgURL = URL.createObjectURL(file); - - // Set img src to ObjectURL - showPicture.src = imgURL; - - // Revoke ObjectURL - URL.revokeObjectURL(imgURL); - } - catch (e) { - try { - // Fallback if createObjectURL is not supported - var fileReader = new FileReader(); - fileReader.onload = function (event) { - showPicture.src = event.target.result; - }; - fileReader.readAsDataURL(file); - } - catch (e) { - // - var error = document.querySelector("#error"); - if (error) { - error.innerHTML = "Neither createObjectURL or FileReader are supported"; - } - } - } - } - }; - } -})(); -</pre> -<h2 id="Compatibilidade_dos_navegadores">Compatibilidade dos navegadores</h2> -<p>{{ CompatibilityTable() }}</p> -<div id="compat-desktop"> - <table class="compat-table"> - <tbody> - <tr> - <th>Feature</th> - <th>Chrome</th> - <th>Firefox (Gecko)</th> - <th>Internet Explorer</th> - <th>Opera</th> - <th>Safari</th> - </tr> - <tr> - <td>Camera API</td> - <td>{{ CompatNo() }}</td> - <td>{{ CompatNo() }}</td> - <td>{{ CompatNo() }}</td> - <td>{{ CompatNo() }}</td> - <td>{{ CompatNo() }}</td> - </tr> - <tr> - <td><code><a href="/en-US/docs/DOM/window.URL.createObjectURL" title="/en-US/docs/DOM/window.URL.createObjectURL">createObjectURL()</a></code></td> - <td>16</td> - <td>{{CompatGeckoDesktop("8.0")}}</td> - <td>10+</td> - <td>{{CompatNo()}}</td> - <td>{{CompatNo()}}</td> - </tr> - <tr> - <td>{{domxref("FileReader")}}</td> - <td>16</td> - <td>{{CompatGeckoDesktop("1.9.2")}}</td> - <td>10+</td> - <td>11.6+</td> - <td>{{CompatNo()}}</td> - </tr> - </tbody> - </table> -</div> -<div id="compat-mobile"> - <table class="compat-table"> - <tbody> - <tr> - <th>Feature</th> - <th>Android</th> - <th>Chrome for Android</th> - <th>Firefox Mobile (Gecko)</th> - <th>IE Mobile</th> - <th>Opera Mobile</th> - <th>Safari Mobile</th> - </tr> - <tr> - <td>Camera API</td> - <td>3.0</td> - <td>{{ CompatVersionUnknown() }}</td> - <td>{{ CompatGeckoMobile("10.0") }}</td> - <td>{{ CompatNo() }}</td> - <td>{{ CompatNo() }}</td> - <td>{{ CompatNo() }}</td> - </tr> - <tr> - <td><code><a href="/en-US/docs/DOM/window.URL.createObjectURL" title="/en-US/docs/DOM/window.URL.createObjectURL">createObjectURL()</a></code></td> - <td>4</td> - <td>{{CompatVersionUnknown()}}</td> - <td>{{CompatGeckoMobile("10.0")}}</td> - <td>{{CompatNo()}}</td> - <td>{{CompatNo()}}</td> - <td>{{CompatNo()}}</td> - </tr> - <tr> - <td>{{domxref("FileReader")}}</td> - <td>3</td> - <td>{{CompatVersionUnknown()}}</td> - <td>{{CompatGeckoMobile("10.0")}}</td> - <td>{{CompatNo()}}</td> - <td>11.1</td> - <td>{{CompatNo()}}</td> - </tr> - </tbody> - </table> -</div> -<p> </p> diff --git a/files/pt-br/web/javascript/new_in_javascript/1.1/index.html b/files/pt-br/web/javascript/new_in_javascript/1.1/index.html deleted file mode 100644 index 456f0f3c18..0000000000 --- a/files/pt-br/web/javascript/new_in_javascript/1.1/index.html +++ /dev/null @@ -1,71 +0,0 @@ ---- -title: New in JavaScript 1.1 -slug: Web/JavaScript/New_in_JavaScript/1.1 -translation_of: Archive/Web/JavaScript/New_in_JavaScript/1.1 ---- -<div>{{jsSidebar("New_in_JS")}}</div> - -<p>O seguinte registro de alteração para JavaScript do Netscape Navigator 2.0 para 3.0. A documentação antiga do Netscape faz referência a isso como "Recursos adicionados após a versão 1". Netscape Navigator 3.0 foi lançado em 19 de agosto de 1996. Netscape Navigator 3.0 foi a segunda versão principal do navegador com suporte a JavaScript.</p> - -<h2 id="JavaScript_Versões">JavaScript Versões</h2> - -<p>Netscape Navigator 3.0 também introduziu a versão da linguagem JavaScript.</p> - -<pre class="brush: html"><SCRIPT LANGUAGE="JavaScript"> <!-- JavaScript for Navigator 2.0. --> -<SCRIPT LANGUAGE="JavaScript1.1"> <!-- JavaScript for Navigator 3.0. --></pre> - -<h2 id="Novos_Recursos_em_JavaScript_1.1">Novos Recursos em JavaScript 1.1</h2> - -<h3 id="Novos_Objetos">Novos Objetos</h3> - -<ul> - <li>{{jsxref("Array")}}</li> - <li>{{jsxref("Boolean")}}</li> - <li>{{jsxref("Function")}}</li> - <li>{{jsxref("Number")}}</li> -</ul> - -<h3 id="NOvas_Propriedades">NOvas Propriedades</h3> - -<ul> - <li>{{jsxref("Number.MAX_VALUE")}}</li> - <li>{{jsxref("Number.MIN_VALUE")}}</li> - <li>{{jsxref("NaN")}}</li> - <li>{{jsxref("Number.NEGATIVE_INFINITY")}}</li> - <li>{{jsxref("Number.POSITIVE_INFINITY")}}</li> -</ul> - -<h3 id="Novos_Métodos">Novos Métodos</h3> - -<ul> - <li>{{jsxref("Array.prototype.join()")}}</li> - <li>{{jsxref("Array.prototype.reverse()")}}</li> - <li>{{jsxref("Array.prototype.sort()")}}</li> - <li>{{jsxref("Array.prototype.split()")}}</li> -</ul> - -<h3 id="Novos_Operadores">Novos Operadores</h3> - -<ul> - <li><code><a href="/en-US/docs/Web/JavaScript/Reference/Operators/typeof">typeof</a></code></li> - <li><code><a href="/en-US/docs/Web/JavaScript/Reference/Operators/void">void</a></code></li> -</ul> - -<h3 id="Outras_Novas_Propriedades">Outras Novas Propriedades</h3> - -<ul> - <li><code><a href="/en-US/docs/Web/HTML/Element/noscript"><noscript></a></code></li> - <li><a href="/en-US/docs/Archive/Web/LiveConnect">LiveConnect</a>. Comunicação entre Java e JavaScript.</li> -</ul> - -<h2 id="Funcionalidades_alteradas_em_JavaScript_1.1">Funcionalidades alteradas em JavaScript 1.1</h2> - -<ul> - <li>"Exclusão de Objeto". Você pode remover um objeto pelas configurações a qual este objeto referencia nulo.</li> - <li><font face="Consolas, Liberation Mono, Courier, monospace">propriedades de Construtor e protótipo</font> em objetos adicionados.</li> - <li><code><a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/eval">eval()</a></code> is now a method of every object (was previously a built-in function); it evaluates a string of JavaScript code in the context of the specified object.</li> - <li><code><a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/random">Math.random()</a></code> now works on every platform.</li> - <li><code><a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/toString">toString()</a></code>: Added radix parameter, which specifies the base to use for representing numeric values.</li> - <li><code><a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/isNaN">isNaN()</a></code> now works on every platform (not only Unix anymore)</li> - <li><code><a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/parseFloat">parseFloat()</a></code> and <code><a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/parseInt">parseint()</a></code> now return <code>NaN</code> on all platforms, if the first character of the specified string cannot be converted to a number; in previous releases, it returned <code>NaN</code> on Solaris and Irix and zero on all other platforms.</li> -</ul> diff --git a/files/pt-br/web/javascript/new_in_javascript/1.6/index.html b/files/pt-br/web/javascript/new_in_javascript/1.6/index.html deleted file mode 100644 index b751a5b429..0000000000 --- a/files/pt-br/web/javascript/new_in_javascript/1.6/index.html +++ /dev/null @@ -1,33 +0,0 @@ ---- -title: Novidades do JavaScript 1.6 -slug: Web/JavaScript/New_in_JavaScript/1.6 -tags: - - JavaScript - - Versões -translation_of: Archive/Web/JavaScript/New_in_JavaScript/1.6 ---- -<div>{{jsSidebar("New_in_JS")}}</div> - -<p><span class="tlid-translation translation" lang="pt"><span title="">A seguir, é apresentado um registro de alterações do JavaScript 1.6.</span> <span title="">Esta versão foi incluída no Firefox 1.5 (Gecko 1.8), lançado em novembro de 2005. O padrão ECMA correspondente é o ECMA-262 Edição 3 e o ECMAScript para XML (E4X) com alguns recursos adicionais.</span> <span title="">Vários novos recursos foram introduzidos: E4X, vários novos métodos Array e Array e String genéricos.</span></span></p> - -<h2 id="Novos_recursos_do_JavaScript_1.6">Novos recursos do JavaScript 1.6</h2> - -<ul> - <li>Suporte ao ECMAScript para XML (<a href="/en-US/docs/Archive/Web/E4X">E4X</a>) para criar e processar conteúdo <a href="/en-US/docs/Glossary/XML">XML</a> dentrro do <a href="/en-US/docs/Web/JavaScript">JavaScript</a>. Veja <a href="/en-US/docs/Archive/Web/E4X/Processing_XML_with_E4X">detalhes</a></li> - <li><a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/indexOf"><code>Array.prototype.indexOf()</code></a></li> - <li><a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/lastIndexOf"><code>Array.prototype.lastIndexof()</code></a></li> - <li><a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/every"><code>Array.prototype.every()</code></a></li> - <li><a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/filter"><code>Array.prototype.filter()</code></a></li> - <li><a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/forEach"><code>Array.prototype.forEach()</code></a></li> - <li><a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map"><code>Array.prototype.map()</code></a></li> - <li><a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/some"><code>Array.prototype.some()</code></a></li> - <li><a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array#Array_generic_methods">Array generics</a></li> - <li><a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/String#String_generic_methods">String generics</a></li> - <li><a href="/en-US/docs/Web/JavaScript/Reference/Statements/for_each...in"><code>for each...in</code></a></li> -</ul> - -<h2 id="Funcionalidade_alterada_no_JavaScript_1.6">Funcionalidade alterada no JavaScript 1.6</h2> - -<ul> - <li>Um <a class="link-https" href="https://bugzilla.mozilla.org/show_bug.cgi?id=292215">bug</a> no qual <a href="/en-US/docs/Web/JavaScript/Reference/Functions/arguments"><code>argumentos[n]</code></a> não podem ser definidos se <code>n</code> <span class="tlid-translation translation" lang="pt"><span title="">for maior que o número de parâmetros formais ou reais que foi corrigido</span></span>.</li> -</ul> diff --git a/files/pt-br/web/javascript/new_in_javascript/1.7/index.html b/files/pt-br/web/javascript/new_in_javascript/1.7/index.html deleted file mode 100644 index 9dd268d6fe..0000000000 --- a/files/pt-br/web/javascript/new_in_javascript/1.7/index.html +++ /dev/null @@ -1,50 +0,0 @@ ---- -title: JavaScript 1.7 -slug: Web/JavaScript/New_in_JavaScript/1.7 -tags: - - JavaScript - - Versões -translation_of: Archive/Web/JavaScript/New_in_JavaScript/1.7 ---- -<div>{{jsSidebar("New_in_JS")}}</div> - -<p>Segue o changelog para JavaScript 1.7. Esta versão foi incluído no <a href="/en-US/Firefox/Releases/2">Firefox 2</a> (Outubro de 2006).</p> - -<p> </p> - -<p>JavaScript 1.7 é uma atualização que introduz vários novos recursos , em particular,generators, iterators, array comprehensions, <code>let </code>expressions e destructuring assignment.</p> - -<h2 id="Usando_JavaScript_1.7">Usando JavaScript 1.7</h2> - -<p> </p> - -<p>Para utilizar alguns dos novos recursos do JavaScript 1.7 , você precisa especificar que você deseja usar JavaScript 1.7 . No código HTML ou XUL , use :</p> - -<pre class="brush: html"><script type="application/javascript;version=1.7"></script></pre> - -<p> </p> - -<p>Ao usar o <a href="https://developer.mozilla.org/en-US/docs/Mozilla/Projects/SpiderMonkey/Introduction_to_the_JavaScript_shell">shell JavaScript</a>, você precisa definir a versão que você deseja usar usando a opção -version 170 na linha de comando ou usando a versão function () :</p> - -<pre class="brush:js">version(170); -</pre> - -<p> </p> - -<p>Os recursos que exigem o uso de novas palavras-chave "yield" e " let" exigem que você especifique a versão 1.7, porque o código existente pode usar essas palavras-chave como nomes de variável ou função . Os recursos que não introduzem novas palavras-chave ( destructuring assignment and array comprehensions) pode ser usado sem especificar a versão JavaScript</p> - -<h2 id="Novos_recursos_em_JavaScript_1.7">Novos recursos em JavaScript 1.7</h2> - -<p> </p> - -<p>Os seguintes recursos adicionados no JavaScript 1.7 não faziam parte do padrão ECMA -262 ,no entanto, em versões mais recentes do Firefox , foi implementada atualizaçãoes para trabalhar com a semântica conforme especificado no ECMAScript Edição 6. Por favor, consulte as páginas de referência para visualizar as diferenças</p> - -<ul> - <li><a href="/en-US/docs/Web/JavaScript/Guide/Iterators_and_Generators">Iterators e generators</a></li> - <li><a href="/en-US/docs/Web/JavaScript/Reference/Operators/Array_comprehensions#Differences_to_the_older_JS1.7.2FJS1.8_comprehensions">Array comprehensions</a></li> - <li><a href="/en-US/docs/Web/JavaScript/Reference/Statements/let"><code>let</code> statement</a><br> - Suporte para <code>let</code> expression e dropped no Gecko 41 ({{bug(1023609)}}).</li> - <li><a href="/en-US/docs/const">const statement</a></li> - <li><a href="/en-US/docs/Web/JavaScript/Reference/Operators/Destructuring_assignment">Destructuring assignment</a><br> - Suporte para JS1.7 style destructuring for-in e dropped in Gecko 40 ({{bug(1083498)}}).</li> -</ul> diff --git a/files/pt-br/web/javascript/new_in_javascript/1.8.5/index.html b/files/pt-br/web/javascript/new_in_javascript/1.8.5/index.html deleted file mode 100644 index cd542b3fd4..0000000000 --- a/files/pt-br/web/javascript/new_in_javascript/1.8.5/index.html +++ /dev/null @@ -1,130 +0,0 @@ ---- -title: Novas funcionalidades do JavaScript 1.8.5 -slug: Web/JavaScript/New_in_JavaScript/1.8.5 -tags: - - ECMAScript5 - - Firefox 4 - - JavaScript - - JavaScript 1.8.5 - - Versões -translation_of: Archive/Web/JavaScript/New_in_JavaScript/1.8.5 ---- -<div>{{jsSidebar("New_in_JS")}}</div> - -<p>Segue um changelog para JavaScript 1.8.5. Esta versão foi incluída no <a href="/en-US/Firefox/Releases/4">Firefox 4</a>.</p> - -<h2 id="Novas_funcionalidades_do_JavaScript_1.8.5">Novas funcionalidades do JavaScript 1.8.5</h2> - -<h3 id="Novas_Funções">Novas Funções</h3> - -<table class="standard-table"> - <thead> - <tr> - <th scope="col">Function</th> - <th scope="col">Description</th> - </tr> - </thead> - <tbody> - <tr> - <td>{{jsxref("Object.create()")}}</td> - <td>Cria um novo o objeto de protótipo especificado e de propriedades. {{bug("492840")}}</td> - </tr> - <tr> - <td>{{jsxref("Object.defineProperty()")}}</td> - <td>Adiciona a propriedade chamada descrito a um objeto.</td> - </tr> - <tr> - <td>{{jsxref("Object.defineProperties()")}}</td> - <td>Adiciona as propriedades nomeadas described a um objeto.</td> - </tr> - <tr> - <td>{{jsxref("Object.getOwnPropertyDescriptor()")}}</td> - <td>Retorna um descriptor para uma propriedade chamada em um objeto.{{bug("505587")}}</td> - </tr> - <tr> - <td>{{jsxref("Object.keys()")}}</td> - <td>Retorna um array de todas as propriedades numéricas sobre um objeto. {{bug("307791")}}</td> - </tr> - <tr> - <td>{{jsxref("Object.getOwnPropertyNames()")}}</td> - <td>Retorna um array de todas as propriedades numéricas e não-numéricas sobre um objeto. {{bug("518663")}}</td> - </tr> - <tr> - <td>{{jsxref("Object.preventExtensions()")}}</td> - <td>Impede todas as extensões de um objeto. {{bug("492849")}}</td> - </tr> - <tr> - <td>{{jsxref("Object.isExtensible()")}}</td> - <td>Verifica se o objeto é extensível. {{bug("492849")}}</td> - </tr> - <tr> - <td>{{jsxref("Object.seal()")}}</td> - <td>Impede que outro código de modifique propriedades de um objeto. {{bug("492845")}}</td> - </tr> - <tr> - <td>{{jsxref("Object.isSealed()")}}</td> - <td>Determina que novas propriedades não podem ser adicionadas. {{bug("492845")}}</td> - </tr> - <tr> - <td>{{jsxref("Object.freeze()")}}</td> - <td>Congela/trava um objeto: outro código não pode excluir ou alterar as propriedades.{{bug("492844")}}</td> - </tr> - <tr> - <td>{{jsxref("Object.isFrozen()")}}</td> - <td>Verifica se um objeto foi congelado/travado. {{bug("492844")}}</td> - </tr> - <tr> - <td>{{jsxref("Array.isArray()")}}</td> - <td>Verifica se uma variável é um array. {{bug("510537")}}</td> - </tr> - <tr> - <td>{{jsxref("Date.prototype.toJSON()")}}</td> - <td>Retorna um formato JSON para um objeto <code>Date</code>.</td> - </tr> - <tr> - <td>{{jsxref("Function.prototype.bind()")}}</td> - <td>O metodos <code><strong>bind()</strong></code> cria uma nova função que, quando chamada, tem o seu próprio this palavra-chave para o valor fornecido, com uma dada sequência dos argumentos que precedem um fornecido quandoa nova função é chamada. {{bug("429507")}}</td> - </tr> - </tbody> -</table> - -<h3 id="Novas_características_do_ECMAScript5">Novas características do ECMAScript5</h3> - -<ul> - <li><code><a href="/en-US/docs/Web/JavaScript/Reference/Operators/get" title="JavaScript/Reference/Operators/Special Operators/get Operator">get</a></code> e <code><a href="/en-US/docs/Web/JavaScript/Reference/Operators/set" title="JavaScript/Reference/Operators/Special Operators/set Operator">set</a></code> agora identificam se é numérico ou string. {{bug("520696")}}</li> - <li>{{jsxref("Function.apply()")}} pode aceitar qualquer objeto array-like como a lista de argumentos, em vez de apenas os arrays verdadeiros.</li> - <li><a href="/en-US/docs/Web/JavaScript/Reference/Functions_and_function_scope/Strict_mode" title="JavaScript/Strict mode">suporte ao modo strict</a></li> - <li>{{jsxref("Array.toString()")}} agora funciona mesmo em no-arrays, retornando o resultado e chama o método <a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/join" title="JavaScript/Reference/Global Objects/Array/join"><code>join()</code></a> se estiver disponível, ou o método <a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/toString" title="JavaScript/Reference/Global Objects/Object/toString"><code>toString()</code></a></li> -</ul> - -<h3 id="Outras_normalizações">Outras normalizações</h3> - -<p>Various non-standard syntaxes for defining getters and setters have been removed; ECMAScript 5 defined syntax has not been changed. These were all pretty esoteric and rarely used; if this affects you, see <a class="external" href="http://whereswalden.com/2010/04/16/more-spidermonkey-changes-ancient-esoteric-very-rarely-used-syntax-for-creating-getters-and-setters-is-being-removed/" title="http://whereswalden.com/2010/04/16/more-spidermonkey-changes-ancient-esoteric-very-rarely-used-syntax-for-creating-getters-and-setters-is-being-removed/">this blog post</a> for details.</p> - -<p>Várias sintaxes não default para a definição de getters e setters foram removidas; sintaxe definadas na ECMAScript 5 não foram alteradas. As excluídas eram raramente usadas; se isso afeta você, veja <a class="external" href="http://whereswalden.com/2010/04/16/more-spidermonkey-changes-ancient-esoteric-very-rarely-used-syntax-for-creating-getters-and-setters-is-being-removed/" title="http://whereswalden.com/2010/04/16/more-spidermonkey-changes-ancient-esoteric-very-rarely-used-syntax-for-creating-getters-and-setters-is-being-removed/">esta dica</a> no blog para mais detalhes.</p> - -<h3 id="Novos_objetos">Novos objetos</h3> - -<table class="standard-table"> - <thead> - <tr> - <th scope="col">Objeto</th> - <th scope="col">Descrição</th> - </tr> - </thead> - <tbody> - <tr> - <td>{{jsxref("Proxy")}}</td> - <td>Oferece suporte para a criação de <code>Objetos</code> e <code>Funções</code> de proxies que permitem meta-programming em JavaScript.</td> - </tr> - </tbody> -</table> - -<h2 id="Changed_functionality_in_JavaScript_1.8.5">Changed functionality in JavaScript 1.8.5</h2> - -<ul> - <li>ISO 8601 support in <code>Date</code>: The {{jsxref("Date")}} object's <a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/parse" title="https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Date/parse">parse()</a> method now supports simple ISO 8601 format date strings.</li> - <li>Global objects made read only: The <a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/NaN" title="JavaScript/Reference/Global Objects/NaN"><code>NaN</code></a>, <a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/Infinity" title="JavaScript/Reference/Global Objects/Infinity"><code>Infinity</code></a>, and <a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/undefined" title="JavaScript/Reference/Global Objects/undefined"><code>undefined</code></a> global objects have been made read only, per the ECMAScript 5 specification.</li> - <li><a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/Parent" title="JavaScript/Reference/Global Objects/Object/Parent"><code>obj.__parent__</code></a> and <code>obj.__count__</code> become obsolete. Some information about why: <a class="external" href="http://whereswalden.com/2010/05/07/spidermonkey-change-du-jour-the-special-__parent__-property-has-been-removed/" title="http://whereswalden.com/2010/05/07/spidermonkey-change-du-jour-the-special-__parent__-property-has-been-removed/">SpiderMonkey change du jour: the special __parent__ property has been removed</a> {{bug("551529")}} & {{bug("552560")}}.</li> - <li>Trailing commas no longer accepted in {{jsxref("JSON.parse()")}}.</li> -</ul> diff --git a/files/pt-br/web/javascript/new_in_javascript/ecmascript_5_support_in_mozilla/index.html b/files/pt-br/web/javascript/new_in_javascript/ecmascript_5_support_in_mozilla/index.html deleted file mode 100644 index 2bd897601e..0000000000 --- a/files/pt-br/web/javascript/new_in_javascript/ecmascript_5_support_in_mozilla/index.html +++ /dev/null @@ -1,53 +0,0 @@ ---- -title: Suporte ao ECMAScript 5 no Mozilla -slug: Web/JavaScript/New_in_JavaScript/ECMAScript_5_support_in_Mozilla -tags: - - ECMAScript6 - - JavaScript - - Versões -translation_of: Archive/Web/JavaScript/New_in_JavaScript/ECMAScript_5_support_in_Mozilla ---- -<div>{{jsSidebar("New_in_JS")}}</div> - -<div>ECMAScript 5.1, a última versão padrão à qual o JavaScript se baseia, foi aprovada em Junho de 2011.</div> - -<p>O JavaScript runtime usado nas últimas versões dos projetos Mozilla, incluindo ambos Firefox e Thunderbird, possuem amplo suporte às <em>features </em>do ECMAScript. Este artigo cobre as <em>features </em>suportadas por diferentes versões do JavaScript runtime da Mozilla.</p> - -<blockquote> -<p>NT: Resolvi manter o termo <em>feature</em> nesta tradução porque é o termo mais utilizado entre os desenvolvedores brasileiros. Uma <em>feature</em> nada mais é do que as características ou funcionalidades da linguagem.</p> -</blockquote> - -<h2 id="Features_Suportadas">Features Suportadas</h2> - -<h3 id="Adicionado_ao_JavaScript_1.8.5_(Gecko_2_Firefox_4_e_posteriores)">Adicionado ao JavaScript 1.8.5 (Gecko 2, Firefox 4 e posteriores)</h3> - -<p>Firefox 4 possui amplo suporte ao ECMAScript 5, incluindo o método <code>Object.* </code>e strict mode. Veja <a href="/en-US/docs/Web/JavaScript/New_in_JavaScript/1.8.5">Novo em JavaScript 1.8.5</a>*.</p> - -<blockquote> -<p>*NT: ainda sem traduções para português.</p> -</blockquote> - -<h3 id="Adicionado_ao_JavaScript_1.8.1_(Gecko_1.9.1_Firefox_3.5)">Adicionado ao JavaScript 1.8.1 (Gecko 1.9.1, Firefox 3.5)</h3> - -<ul> - <li>Suporte <a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON">Nativo JSON</a>.</li> - <li>Método <a class="internal" href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/getPrototypeOf" title="En/Core JavaScript 1.5 Reference/Global Objects/Object/GetPrototypeOf"><code>Object.getPrototypeOf()</code></a>.</li> - <li>Método <a class="internal" href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/Trim" title="En/Core JavaScript 1.5 Reference/Global Objects/String/Trim"><code>String.trim()</code></a>, que remove os espaços em branco de ambos os lados das strings (começo e fim).</li> - <li>Gecko 1.9.1.4 atualizou a implementação do <a href="/en-US/docs/Web/JavaScript/Guide/Using_native_JSON#Converting_objects_into_JSON" title="En/Using native JSON#Converting objects into JSON"><code>JSON.stringify()</code></a> para ser compátivel com o ECMAScript 5.</li> -</ul> - -<p dir="ltr" id="tw-target-text">Melhorias estabelecidas pelo ECMAScript 5 foram feitas no algoritmo de análise que impede a avaliação de XHTML como código JavaScript em determinadas circunstâncias.</p> - -<h3 id="Adicionado_ao_JavaScript_1.6_(Gecko_1.8_Firefox_1.5)">Adicionado ao JavaScript 1.6 (Gecko 1.8, Firefox 1.5)</h3> - -<p>Novos métodos <a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array"><code>Array</code></a> oferem métodos melhorados para manipulá-las -- tem sido parte do JavaScript deste o <a href="/en-US/docs/Web/JavaScript/New_in_JavaScript/1.6">JavaScript 1.6</a>. Agora, eles foram padronizados como parte do ECMAScript 5.</p> - -<h2 id="Veja_também">Veja também</h2> - -<ul> - <li><a href="http://www.ecmascript.org/">Site do ECMAScript</a></li> - <li><a href="http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-262.pdf">Especificação do ECMAScript</a></li> - <li>Post do John Resig sobre <a class="external" href="http://ejohn.org/blog/objectgetprototypeof/" title="http://ejohn.org/blog/objectgetprototypeof/">Object.getPrototypeOf</a></li> - <li>Implementação das <a href="http://frugalcoder.us/post/2010/01/07/EcmaScript-5s-Date-Extensions.aspx">Datas em ECMAScript 5 para o JavaScript</a></li> - <li><a href="http://kangax.github.io/compat-table/es5/">Suporte do ECMAScript entre os browsers</a></li> -</ul> diff --git a/files/pt-br/web/javascript/new_in_javascript/index.html b/files/pt-br/web/javascript/new_in_javascript/index.html deleted file mode 100644 index e3665a92a8..0000000000 --- a/files/pt-br/web/javascript/new_in_javascript/index.html +++ /dev/null @@ -1,80 +0,0 @@ ---- -title: New in JavaScript -slug: Web/JavaScript/New_in_JavaScript -tags: - - JavaScript - - NeedsTranslation - - TopicStub - - Versions -translation_of: Archive/Web/JavaScript/New_in_JavaScript ---- -<div>{{jsSidebar("New_in_JS")}}</div> - -<p>Este capítulo contém informações sobre o histórico de versões do Javascript e situação de implementações de aplicações Mozilla/SpiderMonkey baseadas em Javascript, como o Firefox.</p> - -<h2 id="Versões_ECMAScript">Versões ECMAScript</h2> - -<dl> - <dt><a href="/en-US/docs/Web/JavaScript/Language_Resources">Recursos da Linguagem</a></dt> - <dd>Saiba mais sobre os padrões ECMAScript em que o Javascript é baseado.</dd> - <dt><a href="/en-US/docs/Web/JavaScript/New_in_JavaScript/ECMAScript_5_support_in_Mozilla">Suporte ECMAScript 5</a></dt> - <dd>Status da implementação para o padrão atual ECMA-262 Edition 5.1 em engines Mozilla-based e produtos.</dd> - <dt><a href="/en-US/docs/Web/JavaScript/New_in_JavaScript/ECMAScript_6_support_in_Mozilla">Suporte a ECMAScript 6</a></dt> - <dd>Status da implementação para o rascunho de ECMA-262 Edition 6 in em engines Mozilla-based e produtos.</dd> - <dt><a href="/en-US/docs/Web/JavaScript/New_in_JavaScript/ECMAScript_7_support_in_Mozilla">Suporte a ECMAScript 7</a></dt> - <dd>Status da implementação para o padrão ECMA-262 Edition 7 que virá em engines Mozilla-based e produtos.</dd> -</dl> - -<h2 id="Notas_de_distribuição_JavaScript">Notas de distribuição JavaScript</h2> - -<dl> - <dt><a href="/en-US/docs/Web/JavaScript/New_in_JavaScript/Firefox_JavaScript_changelog">Firefox JavaScript changelog</a></dt> - <dd>Veja esse changelog para características de JavaScript implementadas no Firefox 5 e posteriormente.</dd> - <dt>Chrome JavaScript changelog</dt> - <dd>(TODO). Vem esse changelog para características de JavaScript implementas nas distribuições do Chrome.</dd> -</dl> - -<h2 id="Versões_do_JavaScript">Versões do JavaScript</h2> - -<p><strong>Obsoleto (Deprecated)</strong> ({{deprecated_inline()}}). O versionamento explícito e o opt-in das características da linguagem foi específico da Mozilla e <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=867609">está em processo de remoção</a>. Firefox 4 foi a última versão do navegador que fazia referência a uma versão de JavaScript (1.8.5). Com os novos padrões ECMA, as características da linguagem JavaScript, agora são mencionadas regularmente com sua definição inicial em ECMA-262, por exemplo a Edição 6 (ES6).</p> - -<p>JavaScript foi lançado na versão 1.0 em março de 1996, no Netscape Navigator 2.0 e no Internet Explorer 2.0.</p> - -<dl> - <dt><a href="/en-US/docs/Web/JavaScript/New_in_JavaScript/1.1">JavaScript 1.1</a></dt> - <dd>Versão embarcada no Netscape Navigator 3.0. Lançada em 19 de agosto de 1996.</dd> - <dt><a href="/en-US/docs/Web/JavaScript/New_in_JavaScript/1.2">JavaScript 1.2</a></dt> - <dd>Versão embarcada no Netscape Navigator 4.0-4.05. Lançada em 11 de junho de 1997. </dd> - <dt><a href="/en-US/docs/Web/JavaScript/New_in_JavaScript/1.3">JavaScript 1.3</a></dt> - <dd>Versão embarcada no Netscape Navigator 4.06-4.7x. Lançada em 19 de outubro de 1998.<br> - O trabalho de padronização estava de acordo com o ECMA-262, 1ª e 2ª edições.</dd> - <dt><a href="/en-US/docs/Web/JavaScript/New_in_JavaScript/1.4">JavaScript 1.4</a></dt> - <dd>Versão embarcada no Netscape's server side JavaScript. Lançada em 1999.</dd> - <dt><a href="/en-US/docs/Web/JavaScript/New_in_JavaScript/1.5">JavaScript 1.5</a></dt> - <dd>Versão embarcada no Netscape Navigator 6.0 e no Firefox 1.0. Lançada em 14 de novembro de 2000.<br> - O trabalho de padronização estava de acordo com o ECMA-262, 3ª edição. </dd> - <dt><a href="/en-US/docs/Web/JavaScript/New_in_JavaScript/1.6">JavaScript 1.6</a></dt> - <dd>Versão embarcada no Firefox 1.5. Lançada em novembro de 2005. Inclui ECMAScript para XML (E4X), novos métodos new Array além de métodos genéricos de <code>String</code> e <code>Array</code>.</dd> - <dt><a href="/en-US/docs/Web/JavaScript/New_in_JavaScript/1.7">JavaScript 1.7</a></dt> - <dd>Versão embarcada no Firefox 2. Lançada em outubro de 2006.<br> - Inclui generators, iterators, compreensões de array, expressões <code>let </code>e tarefas de desestruturação.</dd> - <dt><a href="/en-US/docs/Web/JavaScript/New_in_JavaScript/1.8">JavaScript 1.8</a></dt> - <dd>Versão embarcada no Firefox 3. Lançada em junho de 2008.<br> - Inlcui expressões de closure, generator expressions e <code>Array.reduce()</code></dd> - <dt><a href="/en-US/docs/Web/JavaScript/New_in_JavaScript/1.8.1">JavaScript 1.8.1</a></dt> - <dd>Versão embarcada no Firefox 3.5. Lançada em 30 de junho de 2009<span class="st">.<br> - Inclui o JIT TraceMonkey e suporte nativo ao JSON.</span></dd> - <dt>JavaScript 1.8.2</dt> - <dd>Versão embarcada no Firefox 3.6. Lançada em 22 de junho de 2009.<br> - Inclui apenas mudanças de menor importância.</dd> - <dt><a href="/en-US/docs/Web/JavaScript/New_in_JavaScript/1.8.5">JavaScript 1.8.5</a></dt> - <dd>Versão embarcada no Firefox 4. Lançada em 27 de julho de 2010.<br> - Inclui muitas características novas em conformidade à 5 ª edição do ECMA-262. Esta é a última versão do JavaScript.</dd> -</dl> - -<h2 id="Características_que_ainda_necessitam_do_opt-in_de_versão">Características que ainda necessitam do opt-in de versão</h2> - -<dl> - <dt><a href="/en-US/docs/Web/JavaScript/Reference/Statements/let"><code>let</code> statement</a></dt> - <dd>O <code>let</code> statement necessita da versão opt-in 1.7 (ou maior) do JavaScript. Veja {{bug(932517)}} e {{bug(932513)}}.</dd> -</dl> diff --git a/files/pt-br/web/javascript/reference/global_objects/array/observe/index.html b/files/pt-br/web/javascript/reference/global_objects/array/observe/index.html deleted file mode 100644 index d1b06c5ecf..0000000000 --- a/files/pt-br/web/javascript/reference/global_objects/array/observe/index.html +++ /dev/null @@ -1,128 +0,0 @@ ---- -title: Array.observe() -slug: Web/JavaScript/Reference/Global_Objects/Array/observe -translation_of: Archive/Web/JavaScript/Array.observe ---- -<div>{{JSRef}} {{non-standard_header}}</div> - -<p>O método <strong><code>Array.observe()</code></strong> é usado para observar mudanças de forma assíncrona em Arrays, de forma similar ao método {{jsxref("Object.observe()")}} para objetos. O método fornece um conjunto de mudanças em ordem de ocorrência. É equivalente ao método <code>Object.observe()</code> invocado com a lista aceita <code>["add", "update", "delete", "splice"]</code>.</p> - -<h2 id="Sintaxe">Sintaxe</h2> - -<pre class="syntaxbox"><code>Array.observe(<var>arr</var>, <var>callback</var>)</code></pre> - -<h3 id="Parâmetros">Parâmetros</h3> - -<dl> - <dt><code>arr</code></dt> - <dd>O array a ser observado.</dd> - <dt><code>callback</code></dt> - <dd>A função chamado cada vez que ocorrem mudanças, com o seguinte argumento: - <dl> - <dt><code>changes</code></dt> - <dd>Um array de objetos, sendo que cada um representa uma mudança. As propriedades destes objetos são: - <ul> - <li><strong><code>name</code></strong>: O nome da propriedade que mudou.</li> - <li><strong><code>object</code></strong>: O array modificado depois que a mudança ocorreu.</li> - <li><strong><code>type</code></strong>: Uma string que indica o tipo de mudança que ocorreu. Pode ser <code>"add"</code>, <code>"update"</code>, <code>"delete"</code>, ou <code>"splice"</code>.</li> - <li><strong><code>oldValue</code></strong>: Apenas para os tipos <code>"update"</code> e <code>"delete"</code>. O valor antes da mudança.</li> - <li><strong><code>index</code></strong>: Apenas para o tipo <code>"splice"</code>. O índice no qual ocorreu a mudança.</li> - <li><strong><code>removed</code></strong>: Apenas para o tipo <code>"splice"</code>. Um array de elementos removidos.</li> - <li><strong><code>addedCount</code></strong>: Apenas para o tipo <code>"splice"</code>. O número de elementos adicionados.</li> - </ul> - </dd> - </dl> - </dd> -</dl> - -<h2 id="Descrição">Descrição</h2> - -<p>A função <code>callback</code> é chamada cada vez que uma mudança é feita em <code>arr</code>, com um array de todas as mudanças na ordem em que elas ocorreram.</p> - -<div class="note"> -<p>Mudanças feitas via métodos de Array, tais como <a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/pop"><code>Array.prototype.pop()</code></a> serão reportados como mudanças do tipo <code>"splice"</code>. Mudanças do tipo índice que não alteram o tamanho do array podem ser reportadas como mudanças do tipo <code>"update"</code>.</p> -</div> - -<h2 id="Exemplos">Exemplos</h2> - -<h3 id="Adicionando_diferentes_tipos_em_log">Adicionando diferentes tipos em log</h3> - -<pre class="brush: js">var arr = ['a', 'b', 'c']; - -Array.observe(arr, function(changes) { - console.log(changes); -}); - -arr[1] = 'B'; -// [{type: 'update', object: <arr>, name: '1', oldValue: 'b'}] - -arr[3] = 'd'; -// [{type: 'splice', object: <arr>, index: 3, removed: [], addedCount: 1}] - -arr.splice(1, 2, 'beta', 'gamma', 'delta'); -// [{type: 'splice', object: <arr>, index: 1, removed: ['B', 'c', 'd'], addedCount: 3}] -</pre> - -<h2 id="Especificações">Especificações</h2> - -<p><a href="https://github.com/arv/ecmascript-object-observe">Strawman proposal specification</a>.</p> - -<h2 id="Compatibilidade_com_Browser">Compatibilidade com Browser</h2> - -<div>{{CompatibilityTable}}</div> - -<div id="compat-desktop"> -<table class="compat-table"> - <tbody> - <tr> - <th>Funcionalidade</th> - <th>Chrome</th> - <th>Firefox (Gecko)</th> - <th>Internet Explorer</th> - <th>Opera</th> - <th>Safari</th> - </tr> - <tr> - <td>Suporte básico</td> - <td>{{CompatChrome("36")}}</td> - <td>{{CompatNo}}</td> - <td>{{CompatNo}}</td> - <td>{{CompatNo}}</td> - <td>{{CompatNo}}</td> - </tr> - </tbody> -</table> -</div> - -<div id="compat-mobile"> -<table class="compat-table"> - <tbody> - <tr> - <th>Funcionalidade</th> - <th>Android</th> - <th>Chrome for Android</th> - <th>Firefox Mobile (Gecko)</th> - <th>IE Mobile</th> - <th>Opera Mobile</th> - <th>Safari Mobile</th> - </tr> - <tr> - <td>Suporte básico</td> - <td>{{CompatNo}}</td> - <td>{{CompatVersionUnknown}}</td> - <td>{{CompatNo}}</td> - <td>{{CompatNo}}</td> - <td>{{CompatNo}}</td> - <td>{{CompatNo}}</td> - </tr> - </tbody> -</table> -</div> - -<h2 id="Veja_também">Veja também</h2> - -<ul> - <li><a href="//stackoverflow.com/q/29269057/778272">Em qual condição a chamada Array.observe irá "adicionar" um gatilho para um evento?</a></li> - <li>{{jsxref("Array.unobserve()")}} {{non-standard_inline}}</li> - <li>{{jsxref("Object.observe()")}} {{non-standard_inline}}</li> -</ul> diff --git a/files/pt-br/web/javascript/reference/global_objects/array/unobserve/index.html b/files/pt-br/web/javascript/reference/global_objects/array/unobserve/index.html deleted file mode 100644 index a509f16afb..0000000000 --- a/files/pt-br/web/javascript/reference/global_objects/array/unobserve/index.html +++ /dev/null @@ -1,129 +0,0 @@ ---- -title: Array.unobserve() -slug: Web/JavaScript/Reference/Global_Objects/Array/unobserve -translation_of: Archive/Web/JavaScript/Array.unobserve ---- -<div>{{JSRef}}</div> - -<div>O método Array<strong>.unobserve()</strong> é usado para remover observers adicionados pelo {{jsxref("Array.observe()")}}.</div> - -<div> </div> - -<h2 id="Sintaxe">Sintaxe</h2> - -<pre class="syntaxbox"><code>Array.unobserve(<var>arr</var>, <var>callback</var>)</code></pre> - -<h3 id="Parâmetros">Parâmetros</h3> - -<dl> - <dt><code>arr</code></dt> - <dd>O array para remover os observers.</dd> - <dt><code>callback</code></dt> - <dd><code>A referência para o observer para parar de ser chamada a toda vez em que algo é modificado no array </code><strong>arr</strong>.</dd> -</dl> - -<h2 id="Descrição">Descrição</h2> - -<p><code>Array.unobserve()</code> deve ser chamado após o {{jsxref("Array.observe()")}} a fim de remover um observers de um array.</p> - -<p>O callback deve ser uma referencia à uma função e não a uma função anônima, porquê esta referencia será usada para remover o observer anterior. É inútil chamar o <strong>Array.unobserve() </strong>com uma função anônima como callback, não removerá nenhum observer.</p> - -<h2 id="Exemplos">Exemplos</h2> - -<h3 id="Desobservando_um_array">Desobservando um array</h3> - -<pre class="brush: js">var arr = [1, 2, 3]; - -var observer = function(changes) { - console.log(changes); -} - -Array.observe(arr, observer); - -arr.push(4); -// [{type: "splice", object: <arr>, index: 3, removed:[], addedCount: 1}] - -Array.unobserve(arr, observer); - -arr.pop(); -// O callback não foi chamado</pre> - -<h3 id="Usando_uma_função_anônima">Usando uma função anônima</h3> - -<pre class="brush: js">var persons = ['Khalid', 'Ahmed', 'Mohammed']; - -Array.observe(persons, function (changes) { - console.log(changes); -}); - -persons.shift(); -// [{type: "splice", object: <arr>, index: 0, removed: [ "Khalid" ], addedCount: 0 }] - -Array.unobserve(persons, function (changes) { - console.log(changes); -}); - -persons.push('Abdullah'); -// [{type: "splice", object: <arr>, index: 2, removed: [], addedCount: 1 }] -// O callback sempre será chamado -</pre> - -<h2 id="Compatibilidade_com_os_navegadores">Compatibilidade com os navegadores</h2> - -<div>{{CompatibilityTable}}</div> - -<div id="compat-desktop"> -<table class="compat-table"> - <tbody> - <tr> - <th>Feature</th> - <th>Chrome</th> - <th>Firefox (Gecko)</th> - <th>Internet Explorer</th> - <th>Opera</th> - <th>Safari</th> - </tr> - <tr> - <td>Suporte básico</td> - <td>{{CompatChrome("36")}}</td> - <td>{{CompatNo}}</td> - <td>{{CompatNo}}</td> - <td>{{CompatOpera("23")}}</td> - <td>{{CompatNo}}</td> - </tr> - </tbody> -</table> -</div> - -<div id="compat-mobile"> -<table class="compat-table"> - <tbody> - <tr> - <th>Feature</th> - <th>Android</th> - <th>Chrome for Android</th> - <th>Firefox Mobile (Gecko)</th> - <th>IE Mobile</th> - <th>Opera Mobile</th> - <th>Safari Mobile</th> - </tr> - <tr> - <td>Suporte básico</td> - <td>{{CompatNo}}</td> - <td>{{CompatChrome("36")}}</td> - <td>{{CompatNo}}</td> - <td>{{CompatNo}}</td> - <td>{{CompatOpera("23")}}</td> - <td>{{CompatNo}}</td> - </tr> - </tbody> -</table> -</div> - -<h2 id="Ver_também">Ver também</h2> - -<ul> - <li>{{jsxref("Array.observe()")}} {{experimental_inline}}</li> - <li>{{jsxref("Object.observe()")}} {{experimental_inline}}</li> - <li>{{jsxref("Object.unobserve()")}} {{experimental_inline}}</li> -</ul> diff --git a/files/pt-br/web/javascript/reference/global_objects/function/arity/index.html b/files/pt-br/web/javascript/reference/global_objects/function/arity/index.html deleted file mode 100644 index 93e4fb75b5..0000000000 --- a/files/pt-br/web/javascript/reference/global_objects/function/arity/index.html +++ /dev/null @@ -1,78 +0,0 @@ ---- -title: Function.arity -slug: Web/JavaScript/Reference/Global_Objects/Function/arity -tags: - - Função - - JavaScript - - Não implementado - - Obsoleto - - Propriedade -translation_of: Archive/Web/JavaScript/Function.arity ---- -<div>{{JSRef("Global_Objects", "Function")}} {{obsolete_header}}</div> - -<h2 id="Summary" name="Summary">Resumo</h2> - -<p class="note">A propriedade <code><strong>arity</strong></code> é usada para retornar o número de argumentos esperados por uma função, entretanto, ela não existe mais e foi substituida pela propriedade {{jsxref("Function.prototype.length")}}.</p> - -<h2 id="Especificações">Especificações</h2> - -<p>Implementada no JavaScript 1.2. Depreciada no JavaScript 1.4.</p> - -<h2 id="Compatibilidade_com_navegadores">Compatibilidade com navegadores</h2> - -<div>{{CompatibilityTable}}</div> - -<div id="compat-desktop"> -<table class="compat-table"> - <tbody> - <tr> - <th>Feature</th> - <th>Chrome</th> - <th>Firefox (Gecko)</th> - <th>Internet Explorer</th> - <th>Opera</th> - <th>Safari</th> - </tr> - <tr> - <td>Basic support</td> - <td>{{CompatNo}}</td> - <td>{{CompatNo}}</td> - <td>{{CompatNo}}</td> - <td>{{CompatNo}}</td> - <td>{{CompatNo}}</td> - </tr> - </tbody> -</table> -</div> - -<div id="compat-mobile"> -<table class="compat-table"> - <tbody> - <tr> - <th>Feature</th> - <th>Android</th> - <th>Chrome for Android</th> - <th>Firefox Mobile (Gecko)</th> - <th>IE Mobile</th> - <th>Opera Mobile</th> - <th>Safari Mobile</th> - </tr> - <tr> - <td>Basic support</td> - <td>{{CompatNo}}</td> - <td>{{CompatNo}}</td> - <td>{{CompatNo}}</td> - <td>{{CompatNo}}</td> - <td>{{CompatNo}}</td> - <td>{{CompatNo}}</td> - </tr> - </tbody> -</table> -</div> - -<h2 id="See_also" name="See_also">Veja também</h2> - -<ul> - <li>{{jsxref("Function.prototype.length")}}</li> -</ul> diff --git a/files/pt-br/web/javascript/reference/global_objects/function/isgenerator/index.html b/files/pt-br/web/javascript/reference/global_objects/function/isgenerator/index.html deleted file mode 100644 index b370305940..0000000000 --- a/files/pt-br/web/javascript/reference/global_objects/function/isgenerator/index.html +++ /dev/null @@ -1,55 +0,0 @@ ---- -title: Function.prototype.isGenerator() -slug: Web/JavaScript/Reference/Global_Objects/Function/isGenerator -tags: - - Função - - Não padronizados - - Obsoleto - - metodo -translation_of: Archive/Web/JavaScript/Function.isGenerator ---- -<div>{{JSRef}} {{non-standard_header}}</div> - -<p>O método não padronizado <code><strong>isGenerator()</strong></code> é usado para determinar se uma função é ou não um <a href="/en-US/docs/Web/JavaScript/Guide/Iterators_and_Generators#Generators.3A_a_better_way_to_build_Iterators">gerador</a>. Ele foi removido do Firefox a partir da versão 58.</p> - -<h2 id="Sintaxe">Sintaxe</h2> - -<pre class="syntaxbox"><code><var>fun</var>.isGenerator()</code></pre> - -<h3 id="Valor_de_retorno">Valor de retorno</h3> - -<p>Um {{jsxref("Boolean")}} que indica se dada função é ou nao um <a href="/en-US/docs/Web/JavaScript/Guide/Iterators_and_Generators#Generators.3A_a_better_way_to_build_Iterators">gerador</a>.</p> - -<h2 id="Descrição">Descrição</h2> - -<p>O método <code>isGenerator()</code> determina se uma função <em><code>fun</code></em> é ou não um <a href="/en-US/docs/Web/JavaScript/Guide/Iterators_and_Generators#Generators.3A_a_better_way_to_build_Iterators">gerador</a>. Fez parte de uma Proposta Inicial de Harmonia, mas não foi incluído na especificação do ECMAScript 2015.</p> - -<h2 id="Exemplos">Exemplos</h2> - -<pre class="brush: js">function f() {} - -function* g() { - yield 42; -} - -console.log('f.isGenerator() = ' + f.isGenerator()); // f.isGenerator() = false -console.log('g.isGenerator() = ' + g.isGenerator()); // g.isGenerator() = true -</pre> - -<h2 id="Specificações">Specificações</h2> - -<p>Não faz parte de nenhuma especificação. Implementado no JavaScript 1.8.6.</p> - -<h2 id="Compatibilidade_do_Navegador">Compatibilidade do Navegador</h2> - -<div> -<div class="hidden">A tabela de compatibilidade nesta página é gerada a partir de dados estrurados. Se você não quiser contribuir com estes dados, por favor veja <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> e envie-nos um pull request.</div> - -<p>{{Compat("javascript.builtins.Function.isGenerator")}}</p> -</div> - -<h2 id="Veja_também">Veja também</h2> - -<ul> - <li><a href="/en-US/docs/Web/JavaScript/Guide/Iterators_and_Generators">Iteradores e geradores</a></li> -</ul> diff --git a/files/pt-br/web/javascript/reference/global_objects/iterador/index.html b/files/pt-br/web/javascript/reference/global_objects/iterador/index.html deleted file mode 100644 index 1d00706e61..0000000000 --- a/files/pt-br/web/javascript/reference/global_objects/iterador/index.html +++ /dev/null @@ -1,184 +0,0 @@ ---- -title: Iterator -slug: Web/JavaScript/Reference/Global_Objects/Iterador -translation_of: Archive/Web/Iterator ---- -<div>{{jsSidebar("Objects")}}</div> - -<div class="warning"><strong>Non-standard.</strong> The <code><strong>Iterator</strong></code> function is a SpiderMonkey-specific feature, and will be removed at some point. For future-facing usages, consider using <a href="/en-US/docs/Web/JavaScript/Reference/Statements/for...of" title="/en-US/docs/Web/JavaScript/Reference/Statements/for...of">for..of</a> loops and the <a href="/en-US/docs/Web/JavaScript/Guide/The_Iterator_protocol">iterator protocol</a>.</div> - -<p>A função <code><strong>Iterator</strong></code> retorna um objeto que implementa o protocolo legado do iterador e itera sobre propriedades enumeraveis do objeto.</p> - -<h2 id="Syntax">Syntax</h2> - -<pre class="syntaxbox">Iterator(<var>object</var>, [keyOnly])</pre> - -<h3 id="Parametros">Parametros</h3> - -<dl> - <dt><code>Objeto</code></dt> - <dd><span style="background-color: #ffffff; font-size: 1rem; font-style: inherit; font-weight: inherit; letter-spacing: -0.00278rem;">Objeto que itera sobre as propriedades</span></dd> - <dd>Se <code>keyOnly</code> for um valor verdadeiro, <code>Iterator.prototype.next</code> retorna somente o <font face="consolas, Liberation Mono, courier, monospace"><span style="background-color: rgba(220, 220, 220, 0.5);">nome_da_propriedade</span></font>.</dd> -</dl> - -<h2 id="Description">Description</h2> - -<p>Returns <code>Iterator</code> instance that iterates over <code>object</code>. <code>Iterator</code> instance returns <code>[property_name, property_value]</code> array for each iteration if <code>keyOnly</code> is falsy, otherwise, if <code>keyOnly</code> is truthy, it returns <code>property_name</code> for each iteration. If <code>object</code> is the <code>Iterator</code> instance or {{jsxref("Generator")}} instance, it returns <code>object</code> itself.</p> - -<h2 id="Properties">Properties</h2> - -<dl> - <dt><code><strong>Iterator.prototype[@@iterator]</strong></code></dt> - <dd>Returns a function that returns iterator object, that conforms to {{jsxref("Iteration_protocols", "iterator protocol", "", 1)}}.</dd> -</dl> - -<h2 id="Methods">Methods</h2> - -<dl> - <dt><code><strong>Iterator.prototype.next</strong></code></dt> - <dd>Returns next item in the <code>[property_name, property_value]</code> format or <code>property_name</code> only. It throws <code><a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/StopIteration">StopIteration</a></code> if there are no more items.</dd> -</dl> - -<h2 id="Examples">Examples</h2> - -<h3 id="Iterating_over_properties_of_an_object">Iterating over properties of an object</h3> - -<pre class="brush: js">var a = { - x: 10, - y: 20, -}; -var iter = Iterator(a); -console.log(iter.next()); // ["x", 10] -console.log(iter.next()); // ["y", 20] -console.log(iter.next()); // throws StopIteration -</pre> - -<h3 id="Iterating_over_properties_of_an_object_with_legacy_destructuring_for-in_statement">Iterating over properties of an object with legacy destructuring <code>for-in</code> statement</h3> - -<pre class="brush: js">var a = { - x: 10, - y: 20, -}; - -for (var [name, value] in Iterator(a)) { - console.log(name, value); // x 10 - // y 20 -} -</pre> - -<h3 id="Iterating_with_for-of">Iterating with <code>for-of</code></h3> - -<pre class="brush: js">var a = { - x: 10, - y: 20, -}; - -for (var [name, value] of Iterator(a)) { // @@iterator is used - console.log(name, value); // x 10 - // y 20 -} -</pre> - -<h3 id="Iterates_over_property_name">Iterates over property name</h3> - -<pre class="brush: js">var a = { - x: 10, - y: 20, -}; - -for (var name in Iterator(a, true)) { - console.log(name); // x - // y -} -</pre> - -<h3 id="Passing_Generator_instance">Passing Generator instance</h3> - -<pre class="brush: js">function f() { - yield "a"; - yield "b"; -} -var g = f(); - -console.log(g == Iterator(g)); // true - -for (var v in Iterator(g)) { - console.log(v); // a - // b -} -</pre> - -<h3 id="Passing_Iterator_instance">Passing Iterator instance</h3> - -<pre class="brush: js">var a = { - x: 10, - y: 20, -}; - -var i = Iterator(a); - -console.log(i == Iterator(i)); // true -</pre> - -<h2 id="Specifications">Specifications</h2> - -<p>Non-standard. Not part of any current standards document.</p> - -<h2 id="Browser_compatibility">Browser compatibility</h2> - -<p>{{CompatibilityTable}}</p> - -<div id="compat-desktop"> -<table class="compat-table"> - <tbody> - <tr> - <th>Feature</th> - <th>Chrome</th> - <th>Firefox (Gecko)</th> - <th>Internet Explorer</th> - <th>Opera</th> - <th>Safari</th> - </tr> - <tr> - <td>Basic support</td> - <td>{{CompatNo}}</td> - <td>{{CompatVersionUnknown}}</td> - <td>{{CompatNo}}</td> - <td>{{CompatNo}}</td> - <td>{{CompatNo}}</td> - </tr> - </tbody> -</table> -</div> - -<div id="compat-mobile"> -<table class="compat-table"> - <tbody> - <tr> - <th>Feature</th> - <th>Android</th> - <th>Chrome for Android</th> - <th>Firefox Mobile (Gecko)</th> - <th>IE Mobile</th> - <th>Opera Mobile</th> - <th>Safari Mobile</th> - </tr> - <tr> - <td>Basic support</td> - <td>{{CompatNo}}</td> - <td>{{CompatNo}}</td> - <td>{{CompatVersionUnknown}}</td> - <td>{{CompatNo}}</td> - <td>{{CompatNo}}</td> - <td>{{CompatNo}}</td> - </tr> - </tbody> -</table> -</div> - -<h2 id="See_also">See also</h2> - -<ul> - <li><a href="/en-US/docs/JavaScript/Guide/Iterators_and_Generators" title="/en-US/docs/JavaScript/Guide/Iterators_and_Generators">Iterators and Generators</a></li> - <li><code><a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/StopIteration">StopIteration</a></code></li> -</ul> diff --git a/files/pt-br/web/javascript/reference/global_objects/object/count/index.html b/files/pt-br/web/javascript/reference/global_objects/object/count/index.html deleted file mode 100644 index 24b13a68b8..0000000000 --- a/files/pt-br/web/javascript/reference/global_objects/object/count/index.html +++ /dev/null @@ -1,46 +0,0 @@ ---- -title: Object.prototype.__count__ -slug: Web/JavaScript/Reference/Global_Objects/Object/count -tags: - - JavaScript - - Não-padronizado - - Objeto - - Obsoleto - - Propriedade - - Prototipo - - Prototype -translation_of: Archive/Web/JavaScript/Object.count ---- -<div>{{JSRef}}{{Non-standard_Header}}{{obsolete_header("gecko2")}}</div> - -<p>A propriedade <strong><code>__count__</code></strong> usada para armazenar a contagem de propriedades enumeráveis sobre o objeto, mas ele foi removido.</p> - -<h2 id="Sintaxe">Sintaxe</h2> - -<pre class="syntaxbox"><var>obj</var>.__count__</pre> - -<h2 id="Exemplos">Exemplos</h2> - -<pre class="brush: js">{ 1: 1 }.__count__ // 1 -[].__count__ // 0 -[1].__count__ // 1 -[1, /* hole */, 2, 3].__count__ // 3 -</pre> - -<h2 id="Especificações">Especificações</h2> - -<p>Não faz parte de qualquer especificação.</p> - -<h2 id="Compatibilidade_de_navegadores">Compatibilidade de navegadores</h2> - -<div> - - -<p>{{Compat("javascript.builtins.Object.count")}}</p> -</div> - -<h2 id="Veja_também">Veja também</h2> - -<ul> - <li><a class="external" href="http://whereswalden.com/2010/04/06/more-changes-coming-to-spidermonkey-the-magical-__count__-property-of-objects-is-being-removed/">[Blog post] Mais trocas vindo para SpiderMonkey: a mágica propriedade __count__ está sendo removid</a>a</li> -</ul> diff --git a/files/pt-br/web/javascript/reference/global_objects/object/observe/index.html b/files/pt-br/web/javascript/reference/global_objects/object/observe/index.html deleted file mode 100644 index c9964127c5..0000000000 --- a/files/pt-br/web/javascript/reference/global_objects/object/observe/index.html +++ /dev/null @@ -1,161 +0,0 @@ ---- -title: Object.observe() -slug: Web/JavaScript/Reference/Global_Objects/Object/observe -tags: - - JavaScript - - Obsoleto - - observe -translation_of: Archive/Web/JavaScript/Object.observe ---- -<div> -<p>{{JSRef}} {{obsolete_header}}</p> - -<p>O método <strong><code>Object.observe()</code></strong> era usado para observações de mudanças, de forma assíncronas de um objeto. Ele fornecia um fluxo de mudanças na ordem em que elas ocorriam. Porém, está API foi depreciada e removida dos navegadores. Você pode utilizar o objeto {{jsxref("Proxy")}} como alternativa.</p> -</div> - -<h2 id="Sintaxe">Sintaxe</h2> - -<pre class="syntaxbox"><code>Object.observe(<var>obj</var>, <var>callback</var>)</code></pre> - -<h3 id="Parâmetros">Parâmetros</h3> - -<dl> - <dt><code>obj</code></dt> - <dd>O objeto a ser observado.</dd> - <dt><code>callback</code></dt> - <dd>A função chamada cada vez que as alterações são feitas, com o seguinte argumento: - <dl> - <dt><code>changes</code></dt> - <dd>Um array de objetos onde cada item representa uma mudança. As propriedades destes objetos de mudança são: - <ul> - <li><strong><code>name</code></strong>: O nome da propriedade que foi alterada.</li> - <li><strong><code>object</code></strong>: O objeto alterado depois que a mudança foi feita.</li> - <li><strong><code>type</code></strong>: Uma string indicando o tipo de mudança. Pode ser <code>"add"</code>, <code>"update"</code>, ou <code>"delete"</code>.</li> - <li><strong><code>oldValue</code></strong>: Apenas para os tipos <code>"update"</code> e <code>"delete"</code>. O valor antes da alteração.</li> - </ul> - </dd> - <dt><code>acceptList</code></dt> - <dd>A lista dos tipos de alterações a serem observadas no objeto dado para o retorno de chamada dado. Se omitida, o array <code>["add", "update", "delete", "reconfigure", "setPrototype", "preventExtensions"]</code> será usado.</dd> - <dt> - <h3 id="Retorno">Retorno</h3> - - <p>O objeto será retornado.</p> - </dt> - </dl> - </dd> -</dl> - -<h2 id="Descrição">Descrição</h2> - -<p>O <code>callback</code> é chamado à cada vez que uma mudança ocorre no <code>obj</code>, com um array contendo todas as mudanças na ordem em que elas ocorreram.</p> - -<h2 id="Exemplos">Exemplos</h2> - -<h3 id="Exemplo_Registrando_todos_os_três_tipos_diferentes">Exemplo: Registrando todos os três tipos diferentes</h3> - -<pre class="brush: js">var obj = { - foo: 0, - bar: 1 -}; - -Object.observe(obj, function(changes) { - console.log(changes); -}); - -obj.baz = 2; -// [{name: 'baz', object: <obj>, type: 'add'}] - -obj.foo = 'hello'; -// [{name: 'foo', object: <obj>, type: 'update', oldValue: 0}] - -delete obj.baz; -// [{name: 'baz', object: <obj>, type: 'delete', oldValue: 2}] -</pre> - -<h3 id="Exemplo_Data_Binding">Exemplo: Data Binding</h3> - -<pre class="brush: js">// Um modelo chamado "user" -var user = { - id: 0, - name: 'Brendan Eich', - title: 'Mr.' -}; - -// Criando uma saudação para o user -function updateGreeting() { - user.greeting = 'Olá, ' + user.title + ' ' + user.name + '!'; -} -updateGreeting(); - -Object.observe(user, function(changes) { - changes.forEach(function(change) { - // Sempre que o name e o title mudarem, o updateGreeting será executado - if (change.name === 'name' || change.name === 'title') { - updateGreeting(); - } - }); -}); -</pre> - -<h2 id="Specifications" name="Specifications">Especificações</h2> - -<p><a href="https://github.com/arv/ecmascript-object-observe">Strawman proposal for ECMAScript 7</a>.</p> - -<h2 id="Browser_compatibility" name="Browser_compatibility">Compatibilidade com Navegadores</h2> - -<div>{{CompatibilityTable}}</div> - -<div id="compat-desktop"> -<table class="compat-table"> - <tbody> - <tr> - <th>Recurso</th> - <th>Chrome</th> - <th>Firefox (Gecko)</th> - <th>Internet Explorer</th> - <th>Opera</th> - <th>Safari</th> - </tr> - <tr> - <td>Suporte Básico</td> - <td>{{CompatChrome("36")}}</td> - <td>{{CompatNo}}</td> - <td>{{CompatNo}}</td> - <td>{{CompatOpera("23")}}</td> - <td>{{CompatNo}}</td> - </tr> - </tbody> -</table> -</div> - -<div id="compat-mobile"> -<table class="compat-table"> - <tbody> - <tr> - <th>Recurso</th> - <th>Android</th> - <th>Chrome for Android</th> - <th>Firefox Mobile (Gecko)</th> - <th>IE Mobile</th> - <th>Opera Mobile</th> - <th>Safari Mobile</th> - </tr> - <tr> - <td>Suporte Básico</td> - <td>{{CompatNo}}</td> - <td>{{CompatChrome("36")}}</td> - <td>{{CompatNo}}</td> - <td>{{CompatNo}}</td> - <td>{{CompatOpera("23")}}</td> - <td>{{CompatNo}}</td> - </tr> - </tbody> -</table> -</div> - -<h2 id="See_also" name="See_also">Veja também</h2> - -<ul> - <li>{{jsxref("Object.unobserve()")}} {{experimental_inline}}</li> - <li>{{jsxref("Array.observe()")}} {{experimental_inline}}</li> -</ul> diff --git a/files/pt-br/web/javascript/reference/operators/array_comprehensions/index.html b/files/pt-br/web/javascript/reference/operators/array_comprehensions/index.html deleted file mode 100644 index c035f757d7..0000000000 --- a/files/pt-br/web/javascript/reference/operators/array_comprehensions/index.html +++ /dev/null @@ -1,207 +0,0 @@ ---- -title: Array comprehensions -slug: Web/JavaScript/Reference/Operators/Array_comprehensions -tags: - - Array - - ECMAScript7 - - JavaScript - - Operador -translation_of: Archive/Web/JavaScript/Array_comprehensions ---- -<p>{{jsSidebar("Operators")}}</p> - -<h2 id="Sumário">Sumário</h2> - -<p> </p> - -<p><span class="seoSummary"><span style="line-height: 19.0909080505371px;">A sintaxe de </span><strong style="line-height: 19.0909080505371px;">array comprehension</strong><span style="line-height: 19.0909080505371px;"> trata-se de uma expressão JavaScript que lhe permite rapidamente montar um novo array com base em outro já existente. As comprehensions já existem em várias outras linguagens e estarão então presentes no padrão ECMAScript 7.</span></span></p> - -<p>Veja abaixo as diferenças para a antiga implementação no SpiderMOnkey, baseado nas propostas para o ECMAScript 4.</p> - -<h2 id="Sintaxe">Sintaxe</h2> - -<pre class="syntaxbox">[for (x of iterable) x] -[for (x of iterable) if (condition) x] -[for (x of iterable) for (y of iterable) x + y] -</pre> - -<h2 id="Descrição">Descrição</h2> - -<p>Dentro de array comprehensions dois tipos de components são permitidos: </p> - -<ul> - <li><a href="/en-US/docs/Web/JavaScript/Reference/Statements/for...of">for...of</a> e</li> - <li><a href="/en-US/docs/Web/JavaScript/Reference/Statements/if...else">if</a></li> -</ul> - -<p>A iteração por for-of deve sempre, ser a primeira componente. Multiplos <code>for-of</code> ou <code>if</code>s podem também ser permitidos.</p> - -<h2 id="Exemplos">Exemplos</h2> - -<h3 id="Array_comprehensions_simples">Array comprehensions simples</h3> - -<pre class="brush:js">[for (i of [ 1, 2, 3 ]) i*i ]; -// [ 1, 4, 9 ] - -var abc = [ "A", "B", "C" ]; -[for (letters of abc) letters.toLowerCase()]; -// [ "a", "b", "c" ]</pre> - -<h3 id="Array_comprehensions_com_if">Array comprehensions com <code>if</code></h3> - -<pre class="brush: js">var years = [ 1954, 1974, 1990, 2006, 2010, 2014 ]; -[for (year of years) if (year > 2000) year]; -// [ 2006, 2010, 2014 ] -[for (year of years) if (year > 2000) if(year < 2010) year]; -// [ 2006], the same as below: -[for (year of years) if (year > 2000 && year < 2010) year]; -// [ 2006] -</pre> - -<h3 id="Array_comprehensions_comparado_a_map_e_filter">Array comprehensions comparado a <code>map</code> e <code>filter</code></h3> - -<p>Um modo fácil de entender a sintaxe de array comprehension é comparar com os métodos {{jsxref("Array.map", "map")}} e {{jsxref("Array.filter", "filter")}}:</p> - -<pre class="brush: js">var numbers = [ 1, 2, 3 ]; - -numbers.map(function (i) { return i * i }); -[for (i of numbers) i*i ]; -// both is [ 1, 4, 9 ] - -numbers.filter(function (i) { return i < 3 }); -[for (i of numbers) if (i < 3) i]; -// both is [ 1, 2 ] -</pre> - -<h3 id="Array_comprehensions_com_dois_arrays">Array comprehensions com dois arrays</h3> - -<p>Utilizando dois iteradores <code>for-of, com dois arrays:</code></p> - -<pre class="brush: js">var numbers = [ 1, 2, 3 ]; -var letters = [ "a", "b", "c" ]; - -var cross = [for (i of numbers) for (j of letters) i+j]; -// [ "1a", "1b", "1c", "2a", "2b", "2c", "3a", "3b", "3c" ] - -var grid = [for (i of numbers) [for (j of letters) i+j]]; -// [ -// ["1a", "1b", "1c"], -// ["2a", "2b", "2c"], -// ["3a", "3b", "3c"] -// ] - -[for (i of numbers) if (i > 1) for (j of letters) if(j > "a") i+j] -// ["2b", "2c", "3b", "3c"], the same as below: - -[for (i of numbers) for (j of letters) if (i > 1) if(j > "a") i+j] -// ["2b", "2c", "3b", "3c"] - -[for (i of numbers) if (i > 1) [for (j of letters) if(j > "a") i+j]] -// [["2b", "2c"], ["3b", "3c"]], not the same as below: - -[for (i of numbers) [for (j of letters) if (i > 1) if(j > "a") i+j]] -// [[], ["2b", "2c"], ["3b", "3c"]] -</pre> - -<h2 id="Especificações">Especificações</h2> - -<table class="standard-table"> - <tbody> - <tr> - <th scope="col">Specification</th> - <th scope="col">Status</th> - <th scope="col">Comment</th> - </tr> - <tr> - <td>Proposed for ECMAScript 7</td> - <td>No draft available yet</td> - <td>Estava inicialmente no rascunho para o ES6, porém foi removido na revisão 27 (Agosto, 2014). Veja as revisões antigas do ES6 para especificações de semântica. Uma versão atualizada estará de volta em um novo rascunho do ES7.</td> - </tr> - </tbody> -</table> - -<h2 id="Compatibilidade">Compatibilidade</h2> - -<p>{{ CompatibilityTable() }}</p> - -<div id="compat-desktop"> -<table class="compat-table"> - <tbody> - <tr> - <th>Feature</th> - <th>Chrome</th> - <th>Firefox (Gecko)</th> - <th>Internet Explorer</th> - <th>Opera</th> - <th>Safari</th> - </tr> - <tr> - <td>Basic support</td> - <td>{{ CompatNo() }}</td> - <td>{{ CompatGeckoDesktop("30") }}</td> - <td>{{ CompatNo() }}</td> - <td>{{ CompatNo() }}</td> - <td>{{ CompatNo() }}</td> - </tr> - </tbody> -</table> -</div> - -<div id="compat-mobile"> -<table class="compat-table"> - <tbody> - <tr> - <th>Feature</th> - <th>Android</th> - <th>Chrome for Android</th> - <th>Firefox Mobile (Gecko)</th> - <th>IE Mobile</th> - <th>Opera Mobile</th> - <th>Safari Mobile</th> - </tr> - <tr> - <td>Basic support</td> - <td>{{ CompatNo() }}</td> - <td>{{ CompatNo() }}</td> - <td>{{ CompatGeckoMobile("30") }}</td> - <td>{{ CompatNo() }}</td> - <td>{{ CompatNo() }}</td> - <td>{{ CompatNo() }}</td> - </tr> - </tbody> -</table> -</div> - -<h3 id="Notas_sobre_implementações_para_o_SpiderMonkey">Notas sobre implementações para o SpiderMonkey</h3> - -<ul> - <li><a href="/en-US/docs/Web/JavaScript/Reference/Statements/let"><code>let</code></a> como um idenficador não é suportado, assim let está recentemente disponível somente para JS versão 1.7 e tags de scripts XUL.</li> - <li>Destruturação em comprehensions ainda não é suportado ({{bug(980828)}}).</li> -</ul> - -<h3 id="Diferenças_para_as_antiga_JS1.7JS1.8_comprehensions">Diferenças para as antiga JS1.7/JS1.8 comprehensions</h3> - -<ul> - <li>Comprehensions no ES7 criam um escopo para cada nó de <font face="Courier New, Andale Mono, monospace">for<code> ao invés da comprehension toda</code></font> - - <ul> - <li>Antigo: <code>[()=>x for (x of [0, 1, 2])][1]() // 2</code></li> - <li>Novo: <code>[for (x of [0, 1, 2]) ()=>x][1]() // 1, cada iteração cria uma nova binding para o </code>x.</li> - </ul> - </li> - <li>Comprehensions no ES7 iniciam com <code>for</code> ao invés de expressão de assinalamento. - <ul> - <li>Antigo: <code>[i * 2 for (i of numbers)]</code></li> - <li>Novo: <code>[for (i of numbers) <code>i * 2</code>]</code></li> - </ul> - </li> - <li>Comprehensions no ES7 podem ter multiplos <code>if</code> e <code>for</code>.</li> - <li>Comprehensions no ES7 funcionam apenas com <code><a href="/en-US/docs/Web/JavaScript/Reference/Statements/for...of">for...of</a></code> e não com iterações <code><a href="/en-US/docs/Web/JavaScript/Reference/Statements/for...in">for...in</a>.</code></li> -</ul> - -<h2 id="See_also" name="See_also">Veja Também</h2> - -<ul> - <li><a href="/en-US/docs/Web/JavaScript/Reference/Statements/for...of"><code>for...of</code></a></li> - <li>{{jsxref("Operators/Generator_comprehensions", "Generator comprehensions", "" ,1)}}</li> -</ul> diff --git a/files/pt-br/web/javascript/reference/operators/expression_closures/index.html b/files/pt-br/web/javascript/reference/operators/expression_closures/index.html deleted file mode 100644 index afae2c0459..0000000000 --- a/files/pt-br/web/javascript/reference/operators/expression_closures/index.html +++ /dev/null @@ -1,72 +0,0 @@ ---- -title: Expression closures -slug: Web/JavaScript/Reference/Operators/Expression_closures -translation_of: Archive/Web/JavaScript/Expression_closures ---- -<div>{{JSSidebar("Operators")}}{{Non-standard_Header}}{{Obsolete_Header("gecko60")}} -<div class="warning"><strong>Não padronizado. Não use!</strong><br> -A síntaxe expressão closure syntax é uma feature especifica ao Firefox que foi deprecada e foi removida a partir do Firefox 60. Para usos futuros considere usar <a href="/en-US/docs/Web/JavaScript/Reference/Functions/Arrow_functions">arrow functions</a>.</div> -</div> - -<p>Expressões fechamentos são uma forma curta de sintaxe de função para escrever funções simples.</p> - -<h2 id="Síntaxe">Síntaxe</h2> - -<pre class="syntaxbox">function [<em>nome</em>]([<em>param1</em>[, <em>param2[</em>, ..., <em>paramN</em>]]]) - <em>expressão</em> -</pre> - -<h3 id="Parâmetros">Parâmetros</h3> - -<dl> - <dt><code>nome</code></dt> - <dd>O nome da função. Pode ser omitido, passando a ser nesse caso uma função <em>anónima</em>. O nome só é local ao corpo da função.</dd> - <dt><code>paramN</code></dt> - <dd>Nome do parâmetro a ser passado à função. Uma função pode receber até 255 argumentos.</dd> - <dt><code>expressão</code></dt> - <dd>A expressão pela qual o corpo da função é composta</dd> -</dl> - -<h2 id="Descrição">Descrição</h2> - -<p>Esta adição é nada mais que uma maneira reduzida de escreve funções simples, dando à linguagem algo semelhante a <a class="external" href="http://en.wikipedia.org/wiki/Lambda_calculus#Lambda_calculus_and_programming_languages">Notação Lambda</a>.</p> - -<p>JavaScript 1.7 e anterior:</p> - -<pre class="brush: js">function(x) { return x * x; }</pre> - -<p>JavaScript 1.8:</p> - -<pre class="brush: js">function(x) x * x</pre> - -<p>Esta Síntaxe permite omitir as chavetas e o 'return' - fazendo-os implícitos. Não benifício adicional em escrever código desta forma para além de ser sintáticamente reduzido.</p> - -<h2 id="Exemplos">Exemplos</h2> - -<p>Uma maneira reduzida de fazer bind de EventListeners:</p> - -<pre class="brush: js"> document.addEventListener('click', function() false, true); -</pre> - -<p>Usando esta função com algumas funções de array do JavaScript 1.6:</p> - -<pre class="brush: js">elems.some(function(elem) elem.type == 'text'); -</pre> - -<h2 id="Compatibilidade_do_Browser">Compatibilidade do Browser</h2> - - - -<p>{{Compat("javascript.operators.expression_closures")}}</p> - -<h2 id="Ver_também">Ver também</h2> - -<ul> - <li>{{JSxRef("Functions_and_function_scope", "Functions and function scope")}}</li> - <li>{{JSxRef("Function")}}</li> - <li>{{JSxRef("Statements/function", "function statement")}}</li> - <li>{{JSxRef("Operators/function", "function expression")}}</li> - <li>{{JSxRef("Statements/function*", "function* statement")}}</li> - <li>{{JSxRef("Operators/function*", "function* expression")}}</li> - <li>{{JSxRef("GeneratorFunction")}}</li> -</ul> diff --git a/files/pt-br/web/javascript/reference/operators/generator_comprehensions/index.html b/files/pt-br/web/javascript/reference/operators/generator_comprehensions/index.html deleted file mode 100644 index 1cbfb286f4..0000000000 --- a/files/pt-br/web/javascript/reference/operators/generator_comprehensions/index.html +++ /dev/null @@ -1,169 +0,0 @@ ---- -title: Generator comprehensions -slug: Web/JavaScript/Reference/Operators/Generator_comprehensions -translation_of: Archive/Web/JavaScript/Generator_comprehensions ---- -<div>{{JSSidebar("Operators")}}{{Non-standard_Header}}{{Obsolete_Header("gecko58")}} -<div class="blockIndicator warning"> -<p><strong>Não padronizado. Não use!</strong><br> - A sintaxe de generator comprehensions não é padronizada e foi removida a partir do Firefox 58. Para usos futuros, considere o uso de {{JSxRef ("Statements / function *", "generator", "", 1)}}.</p> -</div> -</div> - -<p>A sintaxe de <strong>generator comprehension</strong> foi uma expressão em JavaScript que permitia montar rapidamente um nova função geradora baseada em um objeto iterável existente. Porém, ela foi removida do padrão e da implementação Firefox. Não a use!</p> - -<h2 id="Sintaxe">Sintaxe</h2> - -<pre class="syntaxbox">(for (x of iterable) x) -(for (x of iterable) if (condition) x) -(for (x of iterable) for (y of iterable) x + y) -</pre> - -<h2 id="Descrição">Descrição</h2> - -<p>Dentro de generator comprehensions, são permitidos dois tipos de componentes:</p> - -<ul> - <li>{{JSxRef("Statements/for...of", "for...of")}} and</li> - <li>{{JSxRef("Statements/if...else", "if")}}</li> -</ul> - -<p>A iteração <code>for-of</code> é sempre o primeiro componente. Várias iterações <code>for-of</code> or declarações <code>if</code> são permitidas.</p> - -<p>Uma desvantagem significativa das {{JSxRef("Operators/Array_comprehensions","array comprehensions","","true")}} é que elas causam a construção de um array inteiro na memória. Quando a entrada para a comprehension é em si um pequeno array ,a sobrecarga envolvida é insignificante — mas quando a entrada é um grande array ou um generator custoso (ou mesmo infinito), a criação de um novo array pode ser problemática.</p> - -<p>Geradores permitem o cálculo lento de sequências, com items calculados sob demanda conforme a necessidade. Generator comprehensions são sintaticamente quase idênticos aos array comprehensions — elas usam parênteses invés de chaves — mas invés de construir um array, criam um gerador que pode executar lentamente. Eles podem ser considerados como uma sintaxe abreviada para criar geradores</p> - -<p>Suponha que temos um interador <code>it</code> que itera sobre uma grande sequência de inteiros. Queremos criar um novo iterador que irá iterar sobre seus dobros. Um array comprehension criaria na memória um array completo contendo os valores dobrados:</p> - -<pre class="brush: js">var doubles = [for (i in it) i * 2]; -</pre> - -<p>Um generator comprehension por outro lado criaria um novo iterador que criaria valores dobrados sob demanda conforme a necessidade:</p> - -<pre class="brush: js">var it2 = (for (i in it) i * 2); -console.log(it2.next()); // O primeiro valor, duplicado -console.log(it2.next()); // O segundo valor, duplicado -</pre> - -<p>Quando um generator comprehension é usado como um argumento para uma função, os parênteses usados para a chamada da função significam que os parênteses externos podem ser omitidos:</p> - -<pre class="brush: js">var result = doSomething(for (i in it) i * 2); -</pre> - -<p>A diferença significativa entre os dois exemplos começam pelo uso da generator comprehension, você teria apenas que fazer um loop sobre a estrutura 'obj' uma vez, total, ao invés de uma vez ao compreender o array, e mais uma vez ao iterar sobre ele.</p> - -<h2 id="Exemplos">Exemplos</h2> - -<h3 id="Simples_generator_comprehensions">Simples generator comprehensions</h3> - -<pre class="brush:js">(for (i of [1, 2, 3]) i * i ); -// generator function which yields 1, 4, and 9 - -[...(for (i of [1, 2, 3]) i * i )]; -// [1, 4, 9] - -var abc = ['A', 'B', 'C']; -(for (letters of abc) letters.toLowerCase()); -// generator function which yields "a", "b", and "c" -</pre> - -<h3 id="Generator_comprehensions_com_declaração_if">Generator comprehensions com declaração if</h3> - -<pre class="brush: js">var years = [1954, 1974, 1990, 2006, 2010, 2014]; - -(for (year of years) if (year > 2000) year); -// generator function which yields 2006, 2010, and 2014 - -(for (year of years) if (year > 2000) if (year < 2010) year); -// generator function which yields 2006, the same as below: - -(for (year of years) if (year > 2000 && year < 2010) year); -// generator function which yields 2006 -</pre> - -<h3 id="Generator_comprehensions_comparadas_à_função_geradora">Generator comprehensions comparadas à função geradora</h3> - -<p>Um maneira fácil de entender a sintaxe de generator comprehension, é compará-la com a função geradora.</p> - -<p>Exemplo 1: Gerador simples.</p> - -<pre class="brush: js">var numbers = [1, 2, 3]; - -// Generator function -(function*() { - for (let i of numbers) { - yield i * i; - } -})(); - -// Generator comprehension -(for (i of numbers) i * i ); - -// Result: both return a generator which yields [1, 4, 9] -</pre> - -<p>Exemplo 2: Usando <code>if</code> no gerador.</p> - -<pre class="brush: js">var numbers = [1, 2, 3]; - -// Generator function -(function*() { - for (let i of numbers) { - if (i < 3) { - yield i * 1; - } - } -})(); - -// Generator comprehension -(for (i of numbers) if (i < 3) i); - -// Result: both return a generator which yields [1, 2]</pre> - -<h2 id="Especificações">Especificações</h2> - -<p>As generator comprehensions estavam inicialmente no rascunho do ECMAScript 2015, mas foram removidas na revisão 27 (agosto de 2014). Por favor, veja as revisões mais antigas do ES2015 para a semântica de especificação.</p> - -<h2 id="Compatibilidade_do_navegador">Compatibilidade do navegador</h2> - -<div class="hidden">A tabela de compatibilidade nesta página é gerada a partir de dados estruturados. Se você quiser contribuir com os dados, confira https://github.com/mdn/browser-compat-data e envie-nos uma solicitação de recebimento.</div> - -<p>{{Compat("javascript.operators.generator_comprehensions")}}</p> - -<h2 id="Diferenças_para_as_antigas_JS1.7JS1.8_comprehensions">Diferenças para as antigas JS1.7/JS1.8 comprehensions</h2> - -<div class="blockIndicator warning">Comprehensions das versões JS1.7/JS1.8 foram removidas da Gecko 46 ({{bug(1220564)}}).</div> - -<p><strong>Sintaxe antiga das </strong><strong>comprehensions (não use mais!):</strong></p> - -<pre class="brush: js example-bad">(X for (Y in Z)) -(X for each (Y in Z)) -(X for (Y of Z)) -</pre> - -<p>Diferenças:</p> - -<ul> - <li>Comprehensions na ES7 criam um escopo para cada nó "for" invés da comprehension como um todo. - <ul> - <li>Antiga: <code>[...(()=>x for (x of [0, 1, 2]))][1]() // 2</code></li> - <li>Nova: <code>[...(for (x of [0, 1, 2]) ()=>x)][1]() // 1, cada iteração cria uma nova ligação para x</code><code>. </code></li> - </ul> - </li> - <li>Comprehensions na ES7 começam com "for" invés da expressão de atribuição. - <ul> - <li>Antiga: <code>(i * 2 for (i of numbers))</code></li> - <li>Nova: <code>(for (i of numbers) i * 2)</code></li> - </ul> - </li> - <li>Comprehensions na ES7 podem ter vários componentes <code>if</code> e <code>for</code>.</li> - <li>Comprehensions na ES7 apenas trabalham com <code>{{JSxRef("Statements/for...of", "for...of")}}</code> e não com iterações <code>{{JSxRef("Statements/for...in", "for...in")}}</code>.</li> -</ul> - -<h2 id="Veja_também">Veja também</h2> - -<ul> - <li>{{JSxRef("Statements/for...of", "for...of")}}</li> - <li>{{JSxRef("Operators/Array_comprehensions", "Array comprehensions")}}</li> -</ul> diff --git a/files/pt-br/web/javascript/reference/statements/for_each...in/index.html b/files/pt-br/web/javascript/reference/statements/for_each...in/index.html deleted file mode 100644 index 8206aa9f5a..0000000000 --- a/files/pt-br/web/javascript/reference/statements/for_each...in/index.html +++ /dev/null @@ -1,126 +0,0 @@ ---- -title: for each...in -slug: Web/JavaScript/Reference/Statements/for_each...in -tags: - - Declaração - - Deprecado - - Deprecated - - JavaScript - - Obsoleto -translation_of: Archive/Web/JavaScript/for_each...in ---- -<div>{{jsSidebar("Statements")}}</div> - -<div class="warning"> -<p>A declaração <code>for each...in</code> está obsoleta como parte do padrão ECMA-357 (<a href="/en-US/docs/Archive/Web/E4X" title="/en-US/docs/E4X">E4X</a>). O suporte E4X foi removido, mas o for each...in não será desativado e removido por questões de compatibilidade que precisam ser consideradas. Ao invés disso, procure utilizar <a href="/en-US/docs/Web/JavaScript/Reference/Statements/for...of" title="/en-US/docs/JavaScript/Reference/Statements/for...of">for...of</a>. (Por favor, referir-se a {{ bug("791343")}}.)</p> - -<p><strong>O Firefox agora alerta sobre o uso de <code>for each...in e não funciona mais no Firefox Nighly.</code> Por favor veja <a href="/pt-BR/docs/Web/JavaScript/Reference/Errors/For-each-in_loops_are_deprecated">Alerta: Loops for-each-in do JavaScript 1.6 estão obsoletos</a> para ajuda com a migração.</strong></p> -</div> - -<p>A <code><strong>declaração for each...in</strong></code> repete uma variável especifica sobre todos os valores das propriedades do objeto. Para cada propriedade distinta, uma declaração específica é executada.</p> - -<h2 id="Sintaxe">Sintaxe</h2> - -<pre class="syntaxbox"><code>for each (<em>variable</em> in <em>object</em>) { - <em>statement</em> -}</code></pre> - -<dl> - <dt><code>variável</code></dt> - <dd>Variável que itera sobre o valor da propriedade, opcionalmente declarado com a palavra-chave <code>var</code>. Essa variável é local à função, não ao loop.</dd> -</dl> - -<dl> - <dt><code>objeto</code></dt> - <dd>Objeto ao qual as propriedades são iteradas.</dd> -</dl> - -<dl> - <dt><font face="Consolas, Liberation Mono, Courier, monospace">declaração</font></dt> - <dd>Uma declaração a ser executada para cada propriedade. Para executar múltiplas declaração dentro do loop, utilize um <a href="/en-US/docs/Web/JavaScript/Reference/Statements/block" title="JavaScript/Reference/Statements/block">bloco</a> de declaração (<code>{ ... }</code>) para agrupar estas declarações.</dd> -</dl> - -<h2 id="Descrição">Descrição</h2> - -<p>Algumas propriedades internas não são iterada. Isso inclui todos os métodos internos dos objetos, ex. o método <code>String</code>'s <code>indexOf</code> . No entanto, todas propriedades definidas pelo usuários são iteradas.</p> - -<h2 id="Exemplos">Exemplos</h2> - -<h3 id="Usando_for_each...in">Usando <code>for each...in</code></h3> - -<p><strong>Atenção:</strong> Nunca utiliza um loop assim com arrays. Apenas utilize em objetos. Veja <a href="/en-US/docs/Web/JavaScript/Reference/Statements/for...in"><code>for...in</code></a> para mais detalhes.</p> - -<p>O seguinte código itera sobre as propriedades do objeto, calculando sua soma:</p> - -<pre class="brush:js">var sum = 0; -var obj = {prop1: 5, prop2: 13, prop3: 8}; - -for each (var item in obj) { - sum += item; -} - -console.log(sum); // escreve no log "26", que é 5+13+8</pre> - -<h2 id="Especifições">Especifições</h2> - -<p>Não faz parte da atual especificação ECMA-262. Implementado no JavaScript 1.6 e está obsoleto.</p> - -<h2 id="Compatibilidade_de_Browsers">Compatibilidade de Browsers</h2> - -<p>{{CompatibilityTable}}</p> - -<div id="compat-desktop"> -<table class="compat-table"> - <tbody> - <tr> - <th>Feature</th> - <th>Chrome</th> - <th>Firefox (Gecko)</th> - <th>Internet Explorer</th> - <th>Opera</th> - <th>Safari</th> - </tr> - <tr> - <td>Basic support</td> - <td>{{CompatNo}}</td> - <td>{{CompatGeckoDesktop("1.8")}}</td> - <td>{{CompatNo}}</td> - <td>{{CompatNo}}</td> - <td>{{CompatNo}}</td> - </tr> - </tbody> -</table> -</div> - -<div id="compat-mobile"> -<table class="compat-table"> - <tbody> - <tr> - <th>Feature</th> - <th>Android</th> - <th>Chrome for Android</th> - <th>Firefox Mobile (Gecko)</th> - <th>IE Mobile</th> - <th>Opera Mobile</th> - <th>Safari Mobile</th> - </tr> - <tr> - <td>Basic support</td> - <td>{{CompatNo}}</td> - <td>{{CompatNo}}</td> - <td>{{CompatGeckoMobile("1.0")}}</td> - <td>{{CompatNo}}</td> - <td>{{CompatNo}}</td> - <td>{{CompatNo}}</td> - </tr> - </tbody> -</table> -</div> - -<h2 id="Veja_também">Veja também</h2> - -<ul> - <li><code><a href="/en-US/docs/Web/JavaScript/Reference/Statements/for...in" title="JavaScript/Reference/Statements/for...in">for...in</a></code> - uma declaração similar que itera sobre a propriedade <em>names</em>.</li> - <li><code><a href="/en-US/docs/Web/JavaScript/Reference/Statements/for...of" title="/en-US/docs/JavaScript/Reference/Statements/for...of">for...of</a></code> - uma declaração similar que itera sobre os <em>valores</em> da propriedade mas pode ser utilizado para iterar tipos, então para para objetos genéricos.</li> - <li><code><a href="/en-US/docs/JavaScript/Reference/Statements/for" title="JavaScript/Reference/Statements/for">for</a></code></li> -</ul> diff --git a/files/pt-br/web/javascript/suporte_ao_ecmascript_6_na_mozilla/index.html b/files/pt-br/web/javascript/suporte_ao_ecmascript_6_na_mozilla/index.html deleted file mode 100644 index 4ebc32748b..0000000000 --- a/files/pt-br/web/javascript/suporte_ao_ecmascript_6_na_mozilla/index.html +++ /dev/null @@ -1,264 +0,0 @@ ---- -title: Suporte ao ECMAScript 6 na Mozilla -slug: Web/JavaScript/Suporte_ao_ECMAScript_6_na_Mozilla -translation_of: Archive/Web/JavaScript/New_in_JavaScript/ECMAScript_2015_support_in_Mozilla ---- -<div>{{jsSidebar("New_in_JS")}}</div> - - - -<p>ECMAScript 2015 é a próxima versão padronizada, chamada "ES.next". O <a href="http://wiki.ecmascript.org/doku.php?id=harmony:specification_drafts">espoço padrão</a> pode ser encontrado na ECMA wiki. O primeiro projeto trabalhado baseado no ECMAScript 5.1, foi publicado em 12 de Julho, 2011 como "ES.next". Como o de 2014, ECMAScript 2015 já tem suas características fixas, determinadas, será terminado em 2015 e começará a ser inserido na documentação oficial em Março de 2015 (para ser finalizada em Junho de 2015).</p> - -<p>O canal para feedbacks sobre padrões ECMAScript é o <a href="https://mail.mozilla.org/listinfo/es-discuss">es-discuss</a>.</p> - - - -<h2 id="Recursos_já_suportados_no_Firefox">Recursos já suportados no Firefox</h2> - -<p>The following features are already implemented in Firefox:</p> - -<h2 id="Standard_library">Standard library</h2> - -<h3 id="Adições_para_o_objeto_Array">Adições para o objeto <code>Array</code></h3> - -<ul> - <li>{{jsxref("Array")}} iteration with <code>for...of</code> (<a href="/en-US/Firefox/Releases/13">Firefox 13</a>)</li> - <li>{{jsxref("Array.from()")}} (<a href="/en-US/Firefox/Releases/32">Firefox 32</a>)</li> - <li>{{jsxref("Array.of()")}} (<a href="/en-US/Firefox/Releases/25">Firefox 25</a>)</li> - <li>{{jsxref("Array.prototype.fill()")}} (<a href="/en-US/Firefox/Releases/31">Firefox 31</a>)</li> - <li>{{jsxref("Array.prototype.find()")}}, {{jsxref("Array.prototype.findIndex()")}} (<a href="/en-US/Firefox/Releases/25">Firefox 25</a>)</li> - <li>{{jsxref("Array.prototype.entries()")}},<br> - {{jsxref("Array.prototype.keys()")}} (<a href="/en-US/Firefox/Releases/28">Firefox 28</a>)</li> - <li>{{jsxref("Array.prototype.copyWithin()")}} (<a href="/en-US/Firefox/Releases/32">Firefox 32</a>)</li> -</ul> - -<h3 id="Novos_objetos_Map_e_Set_e_seus_weak_counterparts">Novos objetos <code>Map</code> e <code>Set</code>, e seus weak counterparts</h3> - -<ul> - <li>{{jsxref("Map")}} (<a href="/en-US/Firefox/Releases/13">Firefox 13</a>) - - <ul> - <li>{{jsxref("Map")}} iteration with <code>for...of</code> (<a href="/en-US/Firefox/Releases/17">Firefox 17</a>)</li> - <li>{{jsxref("Map.prototype.forEach()")}} (<a href="/en-US/Firefox/Releases/25">Firefox 25</a>)</li> - <li>{{jsxref("Map.prototype.entries()")}},<br> - {{jsxref("Map.prototype.keys()")}},<br> - {{jsxref("Map.prototype.values()")}} (<a href="/en-US/Firefox/Releases/20">Firefox 20</a>)</li> - <li>Constructor argument: <code>new {{jsxref("Map")}}(null)</code> (<a href="/en-US/Firefox/Releases/37">Firefox 37</a>)</li> - <li>Monkey-patched <code>set()</code> in Constructor (<a href="/en-US/Firefox/Releases/37">Firefox 37</a>)</li> - </ul> - </li> - <li>{{jsxref("Set")}} (<a href="/en-US/Firefox/Releases/13">Firefox 13</a>) - <ul> - <li>{{jsxref("Set")}} iteration with <code>for...of</code> (<a href="/en-US/Firefox/Releases/17">Firefox 17</a>)</li> - <li>{{jsxref("Set.prototype.forEach()")}} (<a href="/en-US/Firefox/Releases/25">Firefox 25</a>)</li> - <li>{{jsxref("Set.prototype.entries()")}},<br> - {{jsxref("Set.prototype.keys()")}},<br> - {{jsxref("Set.prototype.values()")}} (<a href="/en-US/Firefox/Releases/24">Firefox 24</a>)</li> - <li>Constructor argument: <code>new {{jsxref("Set")}}(null)</code> (<a href="/en-US/Firefox/Releases/37">Firefox 37</a>)</li> - <li>Monkey-patched <code>add()</code> in Constructor (<a href="/en-US/Firefox/Releases/37">Firefox 37</a>)</li> - </ul> - </li> - <li>{{jsxref("WeakMap")}} (<a href="/en-US/Firefox/Releases/6">Firefox 6</a>) - <ul> - <li>{{jsxref("WeakMap.clear()")}} (<a href="/en-US/Firefox/Releases/20">Firefox 20</a>)</li> - <li>optional iterable argument in {{jsxref("WeakMap")}} constructor (<a href="/en-US/Firefox/Releases/36">Firefox 36</a>)</li> - <li>Constructor argument: <code>new {{jsxref("WeakMap")}}(null)</code> (<a href="/en-US/Firefox/Releases/37">Firefox 37</a>)</li> - <li>Monkey-patched <code>set()</code> in Constructor (<a href="/en-US/Firefox/Releases/37">Firefox 37</a>)</li> - </ul> - </li> - <li>{{jsxref("WeakSet")}} (<a href="/en-US/Firefox/Releases/34">Firefox 34</a>) - <ul> - <li>Constructor argument: <code>new {{jsxref("WeakSet")}}(null)</code> (<a href="/en-US/Firefox/Releases/37">Firefox 37</a>)</li> - <li>Monkey-patched <code>add()</code> in Constructor (<a href="/en-US/Firefox/Releases/37">Firefox 37</a>)</li> - </ul> - </li> -</ul> - -<h3 id="Novas_funções_Math">Novas funções <code>Math</code></h3> - -<ul> - <li>{{jsxref("Math.imul()")}} (<a href="/en-US/Firefox/Releases/20">Firefox 20</a>)</li> - <li>{{jsxref("Math.clz32()")}} (<a href="/en-US/Firefox/Releases/31">Firefox 31</a>)</li> - <li>{{jsxref("Math.fround()")}} (<a href="/en-US/Firefox/Releases/26">Firefox 26</a>)</li> - <li>{{jsxref("Math.log10()")}}, {{jsxref("Math.log2()")}}, {{jsxref("Math.log1p()")}}, {{jsxref("Math.expm1()")}}, {{jsxref("Math.cosh()")}}, {{jsxref("Math.sinh()")}}, {{jsxref("Math.tanh()")}}, {{jsxref("Math.acosh()")}}, {{jsxref("Math.asinh()")}}, {{jsxref("Math.atanh()")}}, {{jsxref("Math.hypot()")}}, {{jsxref("Math.trunc()")}}, {{jsxref("Math.sign()")}}, {{jsxref("Math.cbrt()")}} (<a href="/en-US/Firefox/Releases/25">Firefox 25</a>)</li> -</ul> - -<h3 id="Adições_para_o_objeto_Number">Adições para o objeto <code>Number</code></h3> - -<ul> - <li>{{jsxref("Number.isNaN()")}} (<a href="/en-US/Firefox/Releases/16">Firefox 16</a>)</li> - <li>{{jsxref("Number.isFinite()")}} (<a href="/en-US/Firefox/Releases/16">Firefox 16</a>)</li> - <li>{{jsxref("Number.isInteger()")}} (<a href="/en-US/Firefox/Releases/16">Firefox 16</a>)</li> - <li>{{jsxref("Number.parseInt()")}} (<a href="/en-US/Firefox/Releases/25">Firefox 25</a>)</li> - <li>{{jsxref("Number.parseFloat()")}} (<a href="/en-US/Firefox/Releases/25">Firefox 25</a>)</li> - <li>{{jsxref("Number.EPSILON")}} (<a href="/en-US/Firefox/Releases/25">Firefox 25</a>)</li> - <li>{{jsxref("Number.MAX_SAFE_INTEGER")}}, {{jsxref("Number.MIN_SAFE_INTEGER")}} (<a href="/en-US/Firefox/Releases/31">Firefox 31</a>)</li> - <li>{{jsxref("Number.isSafeInteger()")}} (<a href="/en-US/Firefox/Releases/32">Firefox 32</a>)</li> -</ul> - -<h3 id="Adições_para_o_objeto_Object">Adições para o objeto <code>Object</code></h3> - -<ul> - <li>{{jsxref("Object.is()")}} (<a href="/en-US/Firefox/Releases/22">Firefox 22</a>)</li> - <li>{{jsxref("Object.setPrototypeOf()")}} (<a href="/en-US/Firefox/Releases/31">Firefox 31</a>)</li> - <li>{{jsxref("Object.assign()")}} (<a href="/en-US/Firefox/Releases/34">Firefox 34</a>)</li> - <li>{{jsxref("Object.getOwnPropertySymbols()")}} (<a href="/en-US/Firefox/Releases/33">Firefox 33</a>)</li> -</ul> - -<h3 id="New_Promise_object">New <code>Promise</code> object</h3> - -<ul> - <li>{{jsxref("Promise")}} (<a href="/en-US/Firefox/Releases/24">Firefox 24</a>, enabled by default in <a href="/en-US/Firefox/Releases/29">Firefox 29</a>)</li> -</ul> - -<h3 id="Adições_para_objeto_RegExp">Adições para objeto <code>RegExp</code></h3> - -<ul> - <li>{{jsxref("RegExp")}} sticky (y) flag (<a href="/en-US/Firefox/Releases/3">Firefox 3</a>)</li> - <li>generic {{jsxref("RegExp.prototype.toString")}} (<a href="/en-US/Firefox/Releases/39">Firefox 39</a>)</li> -</ul> - -<h3 id="Adições_para_objeto_String">Adições para objeto <code>String</code></h3> - -<ul> - <li>{{jsxref("String.fromCodePoint()")}} (<a href="/en-US/Firefox/Releases/29">Firefox 29</a>)</li> - <li>{{jsxref("String.prototype.codePointAt()")}} (<a href="/en-US/Firefox/Releases/29">Firefox 29</a>)</li> - <li>{{jsxref("String.prototype.startsWith()")}}, {{jsxref("String.prototype.endsWith()")}} (<a href="/en-US/Firefox/Releases/17">Firefox 17</a>)</li> - <li>{{jsxref("String.prototype.includes()")}} (<a href="/en-US/Firefox/Releases/17">Firefox 17</a>)</li> - <li>{{jsxref("String.prototype.repeat()")}} (<a href="/en-US/Firefox/Releases/24">Firefox 24</a>)</li> - <li>{{jsxref("String.prototype.normalize()")}} (<a href="/en-US/Firefox/Releases/31">Firefox 31</a>)</li> - <li>{{jsxref("String.raw()")}} (<a href="/en-US/Firefox/Releases/34">Firefox 34</a>)</li> -</ul> - -<h3 id="New_Symbol_object">New <code>Symbol</code> object</h3> - -<ul> - <li>{{jsxref("Symbol")}} (<a href="/en-US/Firefox/Releases/36">Firefox 36</a>)</li> - <li>{{jsxref("Symbol.iterator")}} (<a href="/en-US/Firefox/Releases/36">Firefox 36</a>)</li> - <li>{{jsxref("Symbol.for()")}} - global Symbol registry (<a href="/en-US/Firefox/Releases/36">Firefox 36</a>)</li> - <li>{{jsxref("Symbol.match")}} (<a href="/en-US/Firefox/Releases/40">Firefox 40</a>)</li> -</ul> - -<h3 id="Nova_sintaxe_de_classe">Nova sintaxe de <code>classe</code></h3> - -<ul> - <li>Basic support (<a href="/en-US/Firefox/Releases/39">Firefox 39</a>)</li> - <li><code>extends</code> support (<a href="/en-US/Firefox/Releases/39">Firefox 39</a>)</li> - <li><code>static</code> method definitions (<a href="/en-US/Firefox/Releases/39">Firefox 39</a>)</li> -</ul> - -<h3 id="Arrays_tipados">Arrays tipados</h3> - -<p>Typed arrays are specified as part of ECMAScript 6 and no longer in <a href="https://www.khronos.org/registry/typedarray/specs/latest/">their own specification</a>.</p> - -<ul> - <li>{{jsxref("ArrayBuffer")}}</li> - <li>{{jsxref("DataView")}}</li> - <li>{{jsxref("Int8Array")}}</li> - <li>{{jsxref("Uint8Array")}}</li> - <li>{{jsxref("Uint8ClampedArray")}}</li> - <li>{{jsxref("Int16Array")}}</li> - <li>{{jsxref("Uint16Array")}}</li> - <li>{{jsxref("Int32Array")}}</li> - <li>{{jsxref("Uint32Array")}}</li> - <li>{{jsxref("Float32Array")}}</li> - <li>{{jsxref("Float64Array")}}</li> -</ul> - -<h2 id="Expressões_e_operadores">Expressões e operadores</h2> - -<ul> - <li><a href="/en-US/docs/Web/JavaScript/Reference/Operators/Spread_operator">Spread operator for arrays</a> (<a href="/en-US/Firefox/Releases/16">Firefox 16</a>) - - <ul> - <li>use <code>Symbol.iterator</code> property (<a href="/en-US/Firefox/Releases/36">Firefox 36</a>)</li> - </ul> - </li> - <li><a href="/en-US/docs/Web/JavaScript/Reference/Operators/Spread_operator">Spread operator for function calls</a> (<a href="/en-US/Firefox/Releases/27">Firefox 27</a>) - <ul> - <li>use <code>Symbol.iterator</code> property (<a href="/en-US/Firefox/Releases/36">Firefox 36</a>)</li> - </ul> - </li> -</ul> - -<h2 id="Statements">Statements</h2> - -<ul> - <li><a href="/en-US/docs/Web/JavaScript/Reference/Statements/for...of"><code>for...of</code></a> (<a href="/en-US/Firefox/Releases/13">Firefox 13</a>) - - <ul> - <li>works in terms of <code>.iterator()</code> and <code>.next()</code> (<a href="/en-US/Firefox/Releases/17">Firefox 17</a>)</li> - <li>use <code>"@@iterator"</code> property (<a href="/en-US/Firefox/Releases/27">Firefox 27</a>)</li> - <li>use <code>Symbol.iterator</code> property (<a href="/en-US/Firefox/Releases/36">Firefox 36</a>)</li> - </ul> - </li> -</ul> - -<h2 id="Funções">Funções</h2> - -<ul> - <li><a href="/en-US/docs/Web/JavaScript/Reference/Functions_and_function_scope/rest_parameters">Rest parameters</a> (<a href="/en-US/Firefox/Releases/15">Firefox 15</a>)</li> - <li><a href="/en-US/docs/Web/JavaScript/Reference/default_parameters">Default parameters</a> (<a href="/en-US/Firefox/Releases/15">Firefox 15</a>)</li> - <li><a href="/en-US/docs/Web/JavaScript/Reference/arrow_functions">Arrow functions</a> (<a href="/en-US/Firefox/Releases/22">Firefox 22</a>)</li> - <li>{{jsxref("Statements/function*", "Generator function")}} (<a href="/en-US/Firefox/Releases/26">Firefox 26</a>) - <ul> - <li>{{jsxref("Operators/yield", "yield")}} (<a href="/en-US/Firefox/Releases/26">Firefox 26</a>)</li> - <li>{{jsxref("Operators/yield*", "yield*")}} (<a href="/en-US/Firefox/Releases/27">Firefox 27</a>)</li> - </ul> - </li> -</ul> - -<h2 id="Outros_recursos">Outros recursos</h2> - -<ul> - <li><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Lexical_grammar#Numeric_literals">Binary and octal numeric literals</a> (<a href="/en-US/Firefox/Releases/25">Firefox 25</a>)</li> - <li><a href="/en-US/docs/Web/JavaScript/Reference/template_strings">Template strings</a> (<a href="/en-US/Firefox/Releases/34">Firefox 34</a>)</li> - <li><a href="/en-US/docs/Web/JavaScript/Reference/Operators/Object_initializer#Property_definitions">Object initializer: shorthand property names</a> (<a href="/en-US/Firefox/Releases/33">Firefox 33</a>)</li> - <li><a href="/en-US/docs/Web/JavaScript/Reference/Operators/Object_initializer#Computed_property_names">Object initializer: computed property names</a> (<a href="/en-US/Firefox/Releases/34">Firefox 34</a>)</li> - <li><a href="/en-US/docs/Web/JavaScript/Reference/Operators/Object_initializer#Method_definitions">Object initializer: shorthand method names</a> (<a href="/en-US/Firefox/Releases/34">Firefox 34</a>)</li> -</ul> - -<h2 id="Features_with_compliance_and_stabilization_changes_ongoing">Features with compliance and stabilization changes ongoing</h2> - -<p>Os seguintes recursos estão (parcialmente) implementados n Firefox, mas foram introduzidos muito antes do ES2015 ou ainda estão sendo discutidos pela ECMA TC39 standards body.</p> - -<ul> - <li><a href="/en-US/docs/Web/JavaScript/Guide/Iterators_and_Generators">Legacy iterators and generators</a> (<a href="/en-US/docs/Web/JavaScript/New_in_JavaScript/1.7">JS 1.7</a>, <a href="/en-US/Firefox/Releases/2">Firefox 2</a>) - - <ul> - <li>ES2015 iterators and generators implemented in Firefox 26+</li> - </ul> - </li> - <li><a href="/en-US/docs/Web/JavaScript/Reference/Operators/Destructuring_assignment">Destructuring assignment</a> (<a href="/en-US/docs/Web/JavaScript/New_in_JavaScript/1.7">JS 1.7</a>, <a href="/en-US/Firefox/Releases/2">Firefox 2</a>) (ES2015 compliance {{bug("950547")}})</li> - <li>{{jsxref("Statements/const", "const")}} (<a href="/en-US/docs/Web/JavaScript/New_in_JavaScript/1.5">JS 1.5</a>, Firefox 1.0) (ES2015 compliance {{bug("950547")}})</li> - <li>{{jsxref("Statements/let", "let")}} (<a href="/en-US/docs/Web/JavaScript/New_in_JavaScript/1.7">JS 1.7</a>, <a href="/en-US/Firefox/Releases/2">Firefox 2</a>) (ES2015 compliance {{bug("950547")}})</li> - <li>{{jsxref("Proxy")}} (<a href="/en-US/Firefox/Releases/18">Firefox 18</a>) (ES2015 compliance {{bug("978228")}})</li> -</ul> - -<h2 id="Recursos_ainda_não_suportados">Recursos ainda não suportados</h2> - -<p>Os seguintes recursos estão no rascunho da especificação ECMAScript 6, mas ainda não foram implementados no firefox:</p> - -<ul> - <li>Modules (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=568953">bug 568953</a>) - - <ul> - <li><code>import</code> syntax</li> - <li><code>export</code> syntax</li> - </ul> - </li> - <li>{{jsxref("Array.prototype.values()")}} ({{bug("875433")}})</li> - <li><a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/Reflect"><code>Reflect</code></a> ({{bug("987514")}})</li> - <li>\u{nnnnnn} Unicode code point escapes ({{bug("952985")}})</li> - <li>Well-known symbols</li> - <li>RegExp "u" flag</li> -</ul> - -<h2 id="Veja_também">Veja também</h2> - -<ul> - <li><a href="http://www.ecmascript.org/">ECMAScript web site</a></li> - <li><a href="http://wiki.ecmascript.org/doku.php?id=harmony:specification_drafts">ECMAScript 2015 specification drafts</a></li> - <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=694100">Mozilla ES2015 tracking bug</a></li> - <li><a href="http://kangax.github.io/es5-compat-table/es6" title="http://kangax.github.io/es5-compat-table">ECMAScript 2015 support across browsers</a></li> -</ul> diff --git a/files/pt-br/web/security/básico_de_segurança_da_informação/confidencialidade,_integridade,_e_disponibilidade/index.html b/files/pt-br/web/security/básico_de_segurança_da_informação/confidencialidade,_integridade,_e_disponibilidade/index.html deleted file mode 100644 index 1814c3e6a9..0000000000 --- a/files/pt-br/web/security/básico_de_segurança_da_informação/confidencialidade,_integridade,_e_disponibilidade/index.html +++ /dev/null @@ -1,42 +0,0 @@ ---- -title: 'Confidencialidade, Integridade e Disponibilidade' -slug: >- - Web/Security/Básico_de_Segurança_da_Informação/Confidencialidade,_Integridade,_e_Disponibilidade -tags: - - Iniciante - - Segurança - - Tutorial -translation_of: 'Archive/Security/Confidentiality,_Integrity,_and_Availability' ---- -<div class="summary" style="margin: 0px 0px 20px; padding: 20px; border: 0px; font-weight: 700; color: rgb(77, 78, 83); font-family: 'Open Sans', sans-serif; font-size: 14px; font-style: normal; font-variant: normal; letter-spacing: normal; line-height: 21px; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; background: rgb(244, 247, 248);"> -<p style="margin: 0px; padding: 0px; border: 0px;">Este artigo apresenta os pontos principais de segurança: confidencialidade, integridade, e disponibilidade.</p> -</div> - -<p>O modelo clássico de segurança da informação define três objetivos de segurança: manter a confidencialidade, integridade e disponibilidade. Cada objetivo aborda um aspecto diferente de fornecer proteção para informações.</p> - -<h2 id="Confidencialidade">Confidencialidade</h2> - -<p><em>Confidencialidade</em> se refere a proteger informaçõesde serem acessadas por pessoas não autorizadas. Em outras palavras, apenas pessoas que autorizadas a fazer isso podem ter acesso a dados confidenciais. Imagine seus registros bancários. Você deve acessá-los, é claro, e pessoas que trabalham no banco e estão ajudando com as transações também, mais ninguém.Uma falha em manter a confidencialidade significa que quem que não deveria ter acesso consegui obetẽ-lo intencionalmente ou por acidente. Tal falha de confidencialidade, também conhecida como <em>breach</em>, normalmente não pode ser remediada. Uma vez que o segredo tenha sido revelado, não há como esconder. Se seus registros bancários forem públicados em site, todos poderão saber o número da sua conta bancária, o salco, etc., e essas informações não poderão ser apagadas de suas mentes, documentos, computadores e outros locais. Quase todos os principais incidentes de segurança relatados na mídia hoje envolvem grandes perdas de confidencialidade.</p> - -<p>Então, em resumo, uma quebra de confidencialidade significa que alguém obteve acesso à informações que não deveriam ter.</p> - -<h2 id="Integridade">Integridade</h2> - -<p><em>Integridade</em> rse refere a garantir a autenticidade da informação - essa informação não é alterada e a fonte dela é segura. Imagine que você tem um site onde vende produtos nele. Agora imagine que um invasor pode fazer compras em seu site e alterar os preços dos produtos de maneira mal intencionada, para que possam comprar qualquer coisa pelo preço que escolherem. Essa seria uma falha de integridade, proque sua informação — neste caso, o preço de um produto — foi alterada sem sua autorização. Outro exemplo de falha de integridade, é quando você tenta se conectar a um site e um invasor mal intencionado entre você e o site redireciona o tráfego para um site diferente. Nesse caso, o site para o qual você é direcionado não é genuíno.</p> - -<h2 id="Disponibilidade">Disponibilidade</h2> - -<p><em>Disponibilidade</em> significa que as informações são acessíveis à usuários autorizados.</p> - -<div class="originaldocinfo"> -<h3 id="Original_Document_Information" name="Original_Document_Information">Informação Original do Artigo</h3> - -<ul> - <li>Autor(es): Karen Scarfone, Wayne Jansen, and Miles Tracy</li> - <li>Título: NIST Special Publication 800-123, Guide to General Server Security</li> - <li>Última atualização: Julho 2008</li> - <li>Informação sobre direitos autorais: Este documento não esta sujeito a direitos autorais.</li> -</ul> -</div> - -<p>{{QuickLinksWithSubpages("/pt-BR/documentos/Web/Seguranca")}}</p> diff --git a/files/pt-br/web/security/básico_de_segurança_da_informação/seguranca_tcp_ip/index.html b/files/pt-br/web/security/básico_de_segurança_da_informação/seguranca_tcp_ip/index.html deleted file mode 100644 index 9e211c136f..0000000000 --- a/files/pt-br/web/security/básico_de_segurança_da_informação/seguranca_tcp_ip/index.html +++ /dev/null @@ -1,50 +0,0 @@ ---- -title: Segurança TCP/IP -slug: Web/Security/Básico_de_Segurança_da_Informação/Seguranca_TCP_IP -translation_of: Archive/Security/TCP_IP ---- -<p>{{draft}}</p> - -<p>TCP/IP is widely used throughout the world to provide network communications. TCP/IP communications are composed of four layers that work together. When a user wants to transfer data across networks, the data is passed from the highest layer through intermediate layers to the lowest layer, with each layer adding information. At each layer, the logical units are typically composed of a header and a payload. The<em> payload</em> consists of the information passed down from the previous layer, while the<em> header</em> contains layer-specific information such as addresses. At the application layer, the payload is the actual application data. The lowest layer sends the accumulated data through the physical network; the data is then passed up through the layers to its destination. Essentially, the data produced by a layer is encapsulated in a larger container by the layer below it. The four TCP/IP layers, from highest to lowest, are shown below.</p> - -<ul> - <li><strong>Application Layer</strong><strong>.</strong> This layer sends and receives data for particular applications, such as Domain Name System (DNS), HyperText Transfer Protocol (HTTP), and Simple Mail Transfer Protocol (SMTP).</li> - <li><strong>Transport Layer</strong><strong>.</strong> This layer provides connection-oriented or connectionless services for transporting application layer services between networks. The transport layer can optionally assure the reliability of communications. Transmission Control Protocol (TCP) and User Datagram Protocol (UDP) are commonly used transport layer protocols.</li> - <li><strong>Network Layer</strong><strong>.</strong> This layer routes packets across networks. Internet Protocol (IP) is the fundamental network layer protocol for TCP/IP. Other commonly used protocols at the network layer are Internet Control Message Protocol (ICMP) and Internet Group Management Protocol (IGMP).</li> - <li><strong>Data Link Layer</strong><strong>.</strong> This layer handles communications on the physical network components. The best-known data link layer protocol is Ethernet.</li> -</ul> - -<p>Security controls exist for network communications at each layer of the TCP/IP model. As previously explained, data is passed from the highest to the lowest layer, with each layer adding more information. Because of this, a security control at a higher layer cannot provide protection for lower layers, because the lower layers perform functions of which the higher layers are not aware. Security controls that are available at each layer include:</p> - -<ul style="list-style-type: square;"> - <li><strong>Application Layer</strong><strong>.</strong> Separate controls must be established for each application. For example, if an application needs to protect sensitive data sent across networks, the application may need to be modified to provide this protection. While this provides a very high degree of control and flexibility over the application’s security, it may require a large resource investment to add and configure controls properly for each application. Designing a cryptographically sound application protocol is very difficult, and implementing it properly is even more challenging, so creating new application layer security controls is likely to create vulnerabilities. Also, some applications, particularly off-the-shelf software, may not be capable of providing such protection. While application layer controls can protect application data, they cannot protect TCP/IP information such as IP addresses because this information exists at a lower layer. Whenever possible, application layer controls for protecting network communications should be standards-based solutions that have been in use for some time. One example is Secure Multipurpose Internet Mail Extensions (S/MIME), which is commonly used to encrypt email messages.</li> - <li><strong>Transport Layer</strong><strong>.</strong> Controls at this layer can be used to protect the data in a single communication session between two hosts. Because IP information is added at the network layer, transport layer controls cannot protect it. The most common use for transport layer protocols is securing HTTP traffic; the Transport Layer Security (TLS) protocol is usually used for this. (TLS is the standards-based version of SSL version 3. More information on TLS is available in RFC 4346, <em>The TLS Protocol Version 1.1</em>, available at <a href="https://www.ietf.org/rfc/rfc4346.txt">https://www.ietf.org/rfc/rfc4346.txt</a>. Another good source of information is NIST SP 800-52,<em> Guidelines on the Selection and Use of Transport Layer Security</em>, available from <a href="https://csrc.nist.gov/publications/nistpubs/">https://csrc.nist.gov/publications/nistpubs/</a>.) The use of TLS typically requires each application to support TLS; however, unlike application layer controls, which typically involve extensive customization of the application, transport layer controls such as TLS are much less intrusive because they do not need to understand the application’s functions or characteristics. Although using TLS may require modifying some applications, TLS is a well-tested protocol that has several implementations that have been added to many applications, so it is a relatively low-risk option compared to adding protection at the application layer. Traditionally TLS has been used to protect HTTP-based communications and can be used with SSL portal VPNs.</li> - <li><strong>Network Layer</strong><strong>.</strong> Controls at this layer can be applied to all applications; thus, they are not application-specific. For example, all network communications between two hosts or networks can be protected at this layer without modifying any applications on the clients or the servers. In some environments, network layer controls such as Internet Protocol Security (IPsec) provide a much better solution than transport or application layer controls because of the difficulties in adding controls to individual applications. Network layer controls also provide a way for network administrators to enforce certain security policies. Another advantage of network layer controls is that since IP information (e.g., IP addresses) is added at this layer, the controls can protect both the data within the packets and the IP information for each packet. However, network layer controls provide less control and flexibility for protecting specific applications than transport and application layer controls. SSL tunnel VPNs provide the ability to secure both TCP and UDP communications including client/server and other network traffic, and therefore act as network layer VPNs.</li> - <li><strong>Data Link Layer</strong><strong>.</strong> Data link layer controls are applied to all communications on a specific physical link, such as a dedicated circuit between two buildings or a dial-up modem connection to an Internet Service Provider (ISP). Data link layer controls for dedicated circuits are most often provided by specialized hardware devices known as<em> data link encryptors</em>; data link layer controls for other types of connections, such as dial-up modem communications, are usually provided through software. Because the data link layer is below the network layer, controls at this layer can protect both data and IP information. Compared to controls at the other layers, data link layer controls are relatively simple, which makes them easier to implement; also, they support other network layer protocols besides IP. Because data link layer controls are specific to a particular physical link, they cannot protect connections with multiple links, such as establishing a VPN over the Internet. An Internet-based connection is typically composed of several physical links chained together; protecting such a connection with data link layer controls would require deploying a separate control to each link, which is not feasible. Data link layer protocols have been used for many years primarily to provide additional protection for specific physical links that should not be trusted.</li> -</ul> - -<p>Because they can provide protection for many applications at once without modifying them, network layer security controls have been used frequently for securing communications, particularly over shared networks such as the Internet. Network layer security controls provide a single solution for protecting data from all applications, as well as protecting IP information. Nevertheless, in many cases, controls at another layer are better suited to providing protection than network layer controls. For example, if only one or two applications need protection, a network layer control may be excessive. Transport layer protocols such as SSL are most commonly used to provide security for communications with individual HTTP-based applications, although they are also used to provide protection for communication sessions of other types of applications such as SMTP, Point of Presence (POP), Internet Message Access Protocol (IMAP), and File Transfer Protocol (FTP). Because all major Web browsers include support for TLS, users who wish to use Web-based applications that are protected by TLS normally do not need to install any client software or reconfigure their systems. Newer applications of transport layer security protocols protect both HTTP and non-HTTP application communications, including client/server applications and other network traffic. Controls at each layer offer advantages and features that controls at other layers do not.</p> - -<p>SSL is the most commonly used transport layer security control. Depending on how SSL is implemented and configured, it can provide any combination of the following types of protection:</p> - -<ul style="list-style-type: square;"> - <li><strong>Confidentiality</strong><strong>.</strong> SSL can ensure that data cannot be read by unauthorized parties. This is accomplished by encrypting data using a cryptographic algorithm and a secret key—a value known only to the two parties exchanging data. The data can only be decrypted by someone who has the secret key.</li> - <li><strong>Integrity</strong><strong>.</strong> SSL can determine if data has been changed (intentionally or unintentionally) during transit. The integrity of data can be assured by generating a message authentication code (MAC) value, which is a keyed cryptographic checksum of the data. If the data is altered and the MAC is recalculated, the old and new MACs will differ.</li> - <li><strong>Peer Authentication</strong><strong>.</strong> Each SSL endpoint can confirm the identity of the other SSL endpoint with which it wishes to communicate, ensuring that the network traffic and data is being sent from the expected host. SSL authentication is typically performed one-way, authenticating the server to the client, but it can be performed mutually.</li> - <li><strong>Replay Protection</strong><strong>. </strong>The same data is not delivered multiple times, and data is not delivered grossly out of order.</li> -</ul> - -<p> </p> - -<div class="originaldocinfo"> -<h3 id="Original_Document_Information" name="Original_Document_Information">Original Document Information</h3> - -<ul> - <li>Author(s): Sheila Frankel, Paul Hoffman, Angela Orebaugh, and Richard Park</li> - <li>Title: National Institute of Standards and Technology (NIST) Special Publication 800-113, Guide to SSL VPNs</li> - <li>Last Updated Date: July 2008</li> - <li>Copyright Information: This document is not subject to copyright.</li> -</ul> -</div> - -<p>{{QuickLinksWithSubpages("/en-US/docs/Web/Security")}}</p> diff --git a/files/pt-br/webapi/device_storage/index.html b/files/pt-br/webapi/device_storage/index.html deleted file mode 100644 index a50851ed77..0000000000 --- a/files/pt-br/webapi/device_storage/index.html +++ /dev/null @@ -1,224 +0,0 @@ ---- -title: Device Storage API -slug: WebAPI/Device_Storage -translation_of: Archive/B2G_OS/API/Device_Storage_API ---- -<p>{{ non-standard_header() }}</p> -<p><span style="line-height: 1.5;">{{ B2GOnlyHeader2('privileged') }}</span></p> -<h2 id="Sumário">Sumário</h2> -<p>O Device Storage API é utilizado para acessar o sistema via Web app. Como acessar arquivos do sistema é algo sensível, e por está razão que API só libera o acesso a leitura.</p> -<div class="note"> - <p><strong>Nota:</strong> Acessar o storage do device é um pouco lento devido a limitação do nível físico. Em muitos casos pode ser mais rápido usar uma base de dados <a href="/en-US/docs/IndexedDB" title="/en-US/docs/IndexedDB">IndexedDB</a> em vez de armazenar os arquivos no storage do device.</p> -</div> -<h2 id="Acessando_um_storage">Acessando um storage</h2> -<h3 id="Ponto_de_entrada">Ponto de entrada</h3> -<p>É possível ter acesso a uma área de storage utilizando o método, {{domxref("window.navigator.getDeviceStorage()","navigator.getDeviceStorage()")}}. Este método aceita uma string como parâmetro que representa o nome do storage que você quer acessar. O método retorna um objeto {{domxref("DeviceStorage")}} que é utilizaod para ter acesso a leitura da área do storage.</p> -<p>Firefox OS fornece as seguintes áreas de storage:</p> -<ul> - <li><code>apps</code>: Esta área de storage é reponsável por armazenar os apps. Como este dado é crítico, requer um previlégio extra, que só está disponível somente para apps certificadas.</li> - <li><code>music</code>: Esta área de storage é responsável por armazenar as música e sons.</li> - <li><code>pictures</code>: Esta área de storage é resposável por armazenas as imagens.</li> - <li><code>sdcard</code>: Esta área de storage é responsável por dar acesso ao SDCard do device.</li> - <li><code>videos</code>: Esta área de storage é responsável por armazenar os vídeos.</li> -</ul> -<pre class="brush: js">var pics = navigator.getDeviceStorage('pictures');</pre> -<p>Para ser capaz de utilizar cada uma dessas áreas de storage, a app precisa solicitar no seu manifesto a permissão. Como examplo, se app precisa ter acesso a área de storage <code>sdcard</code>, é necessário declarar a seguinte linha "<code>device-storage:sdcard</code>" para slolicitar a permissão, detro do arquivo de manifesto, conforme exemplo abaixo.</p> -<pre class="brush: js">"permissions": { - "device-storage:videos":{ "access": "readonly" }, - "device-storage:pictures":{ "access": "readwrite" } -}</pre> -<h2 id="Utilizando_um_storage">Utilizando um storage</h2> -<p>Depois que uma app tem acesso a uma área de storage, ela pode adicionar, pegar e remover arquivos desta área.</p> -<h3 id="Adicionar_um_arquivo">Adicionar um arquivo</h3> -<p>Para adicionar um arquivo utilizamos os seguintes métodos {{domxref("DeviceStorage.addNamed()","addNamed")}} ou {{domxref("DeviceStorage.add()","add")}}. O primeiro método permite definir o nome do arquivo que está sendo adicionado e o segundo método gera o nome de forma automatica. Ambos os métodos são assíncronos e retorna um objeto {{domxref("DOMRequest")}} para controlar o <code>success</code> ou <code>error</code> da operação. Isto é muito importânte para acompanhar o processo de leitura e escrita de arquivos.</p> -<p>Aqueles dois métodos espera um {{domxref("Blob")}} como o seu primeiro parametro. Este objeto será transformado em um arquivo e armazenado em background. Quando criar o objeto {{domxref("Blob")}}, é obrigado dar um <code>type</code>. Este <code>type</code>, que é o <span style="font-family: 'Courier New', 'Andale Mono', monospace; line-height: normal;">type </span>mime, é importânte porque algumas áreas storage tem base restrição o <span style="font-family: 'Courier New', 'Andale Mono', monospace; line-height: normal;">type:</span></p> -<ul> - <li><code>music</code> só aceita {{domxref("Blob")}} como um tipo mime de audio válido</li> - <li><code>pictures</code> só aceita {{domxref("Blob")}} como um tipo mime de image válido</li> - <li><code>videos</code> só aceita {{domxref("Blob")}} como um tipo mime de vídeo válido</li> -</ul> -<pre class="brush: js">var sdcard = navigator.getDeviceStorage("sdcard"); -var file = new Blob(["This is a text file."], {type: "text/plain"}); - -var request = sdcard.addNamed(file, "my-file.txt"); - -request.onsuccess = function () { - var name = this.result; - console.log('File "' + name + '" successfully wrote on the sdcard storage area'); -} - -// An error typically occur if a file with the same name already exist -request.onerror = function () { - console.warn('Unable to write the file: ' + this.error); -} -</pre> -<div class="note"> - <p><strong>Nota:</strong> Repositória em uma área de storage são implícitos. Repository in a storage area are implicit. Não é possível criar explicidamente um repositório vazio. Se você Se você precisar de uma estrutura de repositório é necessário ter um arquivo armazenado. Então se você precisa armazenar um arquivo <code>bar</code> dentro do repositório <code>foo</code>, você tem que usar o método {{domxref("DeviceStorage.addNamed()","addNamed")}} com o caminho compreto para o arquivo <code>addNamed(<em>blob</em>, "foo/bar")</code>. Isto também é utilzado quando você precisa recuperar um arquivo utilizando seu nome (veja abaixo).</p> - <p>Como os arquivos são adicionados dentro de uma área de storage retrita, por razões de securança, o caminho do arquivo não pode começar com "<code>/</code>" ou "<code>../</code>" (e "<code>./</code>" é inútil).</p> -</div> -<h3 id="Download_de_um_arquivo">Download de um arquivo</h3> -<p>Download de um arquivo pode ser feito de duas maneira: usando seu nome ou por interação em uma lista inteira.</p> -<p>A maneira mais fácil de recuperar um arquivo é utiliznado o nome do arquivo nos métodos {{domxref("DeviceStorage.get()","get")}} e {{domxref("DeviceStorage.getEditable","getEditable")}}. O primeiro método retorna um objeto {{domxref("File")}} (que age só como uma leitura de arquivo) e o segundo retorna o objeto {{domxref("FileHandle")}} object (que permite alterar o arquivo base). Os dois métodos são assíncronos e returna um objeto {{domxref("DOMRequest")}} para manipular caso tenha <code>success</code> ou <code>error</code>.</p> -<pre class="brush: js">var sdcard = navigator.getDeviceStorage('sdcard'); - -var request = sdcard.get("my-file.txt"); - -request.onsuccess = function () { - var file = this.result; - console.log("Get the file: " + file.name); -} - -request.onerror = function () { - console.warn("Unable to get the file: " + this.error); -} -</pre> -<p>A outra maneira de recuperar arquivos é navegando pelo conteúdo da área de storage. Temos dois métodos {{domxref("DeviceStorage.enumerate()","enumerate")}} e{{domxref("DeviceStorage.enumerateEditable()","enumerateEditable")}}. O retorno do primeiro método é os objetos {{domxref("File")}} o segunto método retorna os objetos {{domxref("FileHandle")}} . Ambos métodos são assíncrono e retorna um objeto {{domxref("DOMCursor")}} para iterar ao longo da lista de arquivos. Um {{domxref("DOMCursor")}} é nada menos que um {{domxref("DOMRequest")}} com uma função a mais para interar de forma assíncrona ao longo de uma lista de coisas (arquivos nesse caso).</p> -<pre class="brush: js">var pics = navigator.getDeviceStorage('pictures'); - -// Let's browse all the images available -var cursor = pics.enumerate(); - -cursor.onsuccess = function () { - var file = this.result; - console.log("File found: " + file.name); - - // Once we found a file we check if there is other results - if (!this.done) { - // Then we move to the next result, which call the cursor - // success with the next file as result. - this.continue(); - } -} - -cursor.onerror = function () { - console.warn("No file found: " + this.error); -} -</pre> -<p>É possível para limitar o número de resultados, passando dois parâmetros opcionais para os métodos {{domxref("DeviceStorage.enumerate()","enumerate")}} e {{domxref("DeviceStorage.enumerateEditable()","enumerateEditable")}}.</p> -<p>O primeiro parâmetro pode ser uma string, que representa uma sub pasta para uma busca interna.</p> -<p>O segundo parâmetro pode ser um objeto com uma propriedade <code>since</code>, que permite liberar a pesquisa por um determinado período de tempo.</p> -<pre class="brush: js">var pics = navigator.getDeviceStorage('pictures'); - -// Lets retrieve picture from the last week. -var param = { - since: new Date((+new Date()) - 7*24*60*60*1000) -} - -var cursor = pics.enumerate(param); - -cursor.onsuccess = function () { - var file = this.result; - console.log("Picture taken on: " + file.<code class="language-js">lastModifiedDate</code>); - - if (!this.done) { - this.continue(); - } -} -</pre> -<h3 id="Deletar_um_arquivo">Deletar um arquivo</h3> -<p>Um arquivo pode ser removido a partir da sua área de storage, simplismente utilizando o método {{domxref("DeviceStorage.delete()","delete")}}. Este método só precisa do nome para deletar o arquivo. Como todos os outros métodos da interface {{domxref("DeviceStorage")}}, este também é assíncrono e retorna um objeto {{domxref("DOMRequest")}} para manipular os status de <code>success</code> ou <code>error</code>.</p> -<pre class="brush: js">var sdcard = navigator.getDeviceStorage('sdcard'); - -var request = sdcard.delete("my-file.txt"); - -request.onsuccess = function () { - console.log("File deleted"); -} - -request.onerror = function () { - console.log("Unable to delete the file: " + this.error); -} -</pre> -<h2 id="Informação_do_Storage">Informação do Storage</h2> -<p>Além de acessar os arquivos, a área de storage fornece alguns métodos para ler facilmente algumas informações importantes.</p> -<p><span style="font-size: 24px; letter-spacing: -0.5px; line-height: 24px;">Estaço Livre</span></p> -<p>Uma das mais umportantes informações para saber sobre o storage, é a quantidade de espaço livre para armazenamento. A interface {{domxref("DeviceStorage")}} fornece duas funções úteis dedicada ao espaço de armazenamento:</p> -<ul> - <li>{{domxref("DeviceStorage.freeSpace()","freeSpace()")}} para pegar a quantidade de espaço livre disponível para armazenar novos arquivos;</li> - <li>{{domxref("DeviceStorage.freeSpace()","usedSpace()")}} para pegar a quantidade de espaço usado pelos arquivos armazenados;</li> -</ul> -<p>Como os dois métodos são assíncronos, eles retornam um objeto {{domxref("DOMRequest")}} para tratar os status de <code>success</code> ou <code>error</code>.</p> -<pre class="brush: js">var videos = navigator.getDeviceStorage('videos'); - -var request = videos.usedSpace(); - -request.onsuccess = function () { - // The result is express in bytes, lets turn it into megabytes - var size = this.result / 1048576; - console.log("The videos on your device use a total of " + size.toFixed(2) + "Mo of space."); -} - -request.onerror = function () { - console.warn("Unable to get the space used by videos: " + this.error); -} -</pre> -<h3 id="Ouvindo_alterações">Ouvindo alterações</h3> -<p>Como muitas aplicações pode usar uma mesma área de storage ao mesmo tempo, por este motivo é muito útil para aplicação estar ciente de uma alteração em uma área de storage. É também útil para uma aplição que deseja executar uma ação assíncrona sem a dependência do objeto de retorno {{domxref("DOMRequest")}} por cada método da interface {{domxref("DeviceStorage")}}.</p> -<p>Para esse fim, um evento {{event("change")}} é acionado cada vez que um arquivo é criado, modificado ou deletado. Este evento pode ser capturado utilizando a propriedade {{domxref("DeviceStorage.onchange","onchange")}} ou o método {{domxref("EventTarget.addEventListener()","addEventListener()")}}. O evento pega um objeto {{domxref("DeviceStorageChangeEvent")}} que um objeto regular {{domxref("Event")}} que tem duas própriedades não obrigatórias:</p> -<ul> - <li>{{domxref("DeviceStorageChangeEvent.reason")}} que informa a mudança em arquivos (<code>criados</code>, <code>modificados</code> orou <code>deletados</code>)</li> - <li>{{domxref("DeviceStorageChangeEvent.path")}} que retorna o caminho completos para arquivos afetados pela mudança.</li> -</ul> -<pre class="brush: js">var sdcard = navigator.getDeviceStorage('sdcard'); - -sdcard.onchange = function (change) { - var reason = change.reason; - var path = change.path; - - console.log('The file "' + path + '" has been ' + reason); -} -</pre> -<h2 id="Especificação">Especificação</h2> -<p>Não faz parte de qualquer especificação.</p> -<h2 id="Compatibilidade_com_Browser">Compatibilidade com Browser</h2> -<p>{{ CompatibilityTable() }}</p> -<div id="compat-desktop"> - <table class="compat-table"> - <tbody> - <tr> - <th>Feature</th> - <th>Chrome</th> - <th>Firefox (Gecko)</th> - <th>Internet Explorer</th> - <th>Opera</th> - <th>Safari</th> - </tr> - <tr> - <td>Basic support</td> - <td>{{ CompatUnknown() }}</td> - <td>{{ CompatUnknown() }}</td> - <td>{{ CompatNo() }}</td> - <td>{{ CompatNo() }}</td> - <td>{{ CompatNo() }}</td> - </tr> - </tbody> - </table> -</div> -<div id="compat-mobile"> - <table class="compat-table"> - <tbody> - <tr> - <th>Feature</th> - <th>Android</th> - <th>Firefox Mobile (Gecko)</th> - <th>IE Mobile</th> - <th>Opera Mobile</th> - <th>Safari Mobile</th> - </tr> - <tr> - <td>Basic support</td> - <td>{{ CompatUnknown() }}</td> - <td>{{ CompatUnknown() }}</td> - <td>{{ CompatNo() }}</td> - <td>{{ CompatNo() }}</td> - <td>{{ CompatNo() }}</td> - </tr> - </tbody> - </table> -</div> -<h2 id="Veja_também">Veja também</h2> -<ul> - <li>{{domxref("window.navigator.getDeviceStorage()","navigator.getDeviceStorage()")}}</li> - <li>{{domxref("DeviceStorage")}}</li> - <li>{{domxref("DeviceStorageChangeEvent")}}</li> -</ul> diff --git a/files/pt-br/webapi/idle/index.html b/files/pt-br/webapi/idle/index.html deleted file mode 100644 index 65f71e1b2c..0000000000 --- a/files/pt-br/webapi/idle/index.html +++ /dev/null @@ -1,70 +0,0 @@ ---- -title: Idle API -slug: WebAPI/Idle -tags: - - API - - inatividade - - observadores -translation_of: Archive/B2G_OS/API/Idle_API ---- -<div> - {{non-standard_header}} {{B2GOnlyHeader2('certified')}}</div> -<h2 id="Resumo">Resumo</h2> -<p>A Idle API é utilizada para enviar notificações ao usuário mesmo quando um aplicativo está em segundo plano (inativo). Ela possibilita que o usuário continue recebendo notificaçòes do aplicativo mesmo quando não estiver com ele em primeiro plano (ativo). O caso de uso mais comum é para economizar bateria; nesse caso é utilizado em conjunto com a <a href="/en-US/docs/WebAPI/Power_Management">Power Management API</a>, api de gerenciamento de energia.</p> -<h2 id="Monitorando_uma_aplicação_inativa">Monitorando uma aplicação inativa</h2> -<p>Para que uma aplicação em segundo plano envie notificações ao usuário, é necessário registrar um observador (idle observer).O observador é um objeto que possui três propriedades:</p> -<ul> - <li>A propriedade <code>time</code> define o tempo que será aguardado para a execução da propriedade <code>onidle</code>, após o aplicativo entrar em segundo plano. É definida em segundos.</li> - <li>A propriedade <code>onidle</code> é chamada quando o apicativo entra em segundo plano.</li> - <li>A propriedade <code>onactive</code> é chamada quando o aplicativo volta para o primeiro plano.</li> -</ul> -<h3 id="Exemplo_escurecendo_a_tela_to_celular_quando_o_app_estiver_inativo">Exemplo: escurecendo a tela to celular quando o app estiver inativo</h3> -<p>In this example, an idle observer is set up that dims the screen's brightness to 50% when the user is idle for 10 seconds, and restores it back to 100% when the user is active again. A second observer is set up that turns off the screen when the user is idle for at least 15 seconds.</p> -<p>Nesse exemplo, o observador está configurado para reduzir o brilho da tela em 50%, 10 segundos após o aplicativo entrar em segundo plano, e restaura o brilho para 100% quando ele voltar a ficar em primeiro plano. Um segundo observador é configurado, e 15 segundos após o aplicativo entrar em segundo plano, ele apaga a tela do usuário.</p> -<pre class="brush: js">// NOTE: mozPower is part of the Power Management API - -var fadeLight = { - time: 10, // Ten seconds - - onidle: function () { - // The user does not seem active, let's dim the screen down - navigator.mozPower.screenBrightness = 0.5; - }, - - onactive: function () { - // Ok, the user is back, let's brighten the screen up - navigator.mozPower.screenBrightness = 1; - } -} - -var screenOff = { - time: 15, // fifteen seconds - - onidle: function () { - // Ok, the user had his chance but he's really idle, let's turn the screen off - navigator.mozPower.screenEnabled = false; - }, - - onactive: function () { - // Ok, the user is back, let's turn the screen on - navigator.mozPower.screenEnabled = true; - } -} - -// Register the idle observers - -navigator.addIdleObserver(fadeLight); -navigator.addIdleObserver(screenOff); -</pre> -<p>O código acima define 2 observadores: <code>fadeLight</code> e <code>screenOff</code>, que chamam {{domxref("window.navigator.addIdleObserver","navigator.addIdleObserver()")}} uma vez para cada um deles, de modo que eles sejam registrados. Podem ser registrados quantos observadores forem necessários para uma aplicação.</p> -<p>Se não for necessário observar o momento em que o aplicativo entra em segundo plano, os observadores ociosos podem ser removidos chamando o método {{domxref("window.navigator.removeIdleObserver","navigator.removeIdleObserver()")}} , como mostrado a seguir:</p> -<pre class="brush:js">navigator.removeIdleObserver(fadeLight); -navigator.removeIdleObserver(screenOff); -</pre> -<h2 id="Especificação">Especificação</h2> -<p>Essa API não faz parte das especificações do W3C, mas será discutida como parte do <a href="http://www.w3.org/2012/sysapps/" rel="external">System Applications Working Group</a>.</p> -<h2 id="Veja_também">Veja também</h2> -<ul> - <li>{{domxref("window.navigator.addIdleObserver","navigator.addIdleObserver()")}}</li> - <li>{{domxref("window.navigator.removeIdleObserver","navigator.removeIdleObserver()")}}</li> -</ul> diff --git a/files/pt-br/webapi/mobile_connection/index.html b/files/pt-br/webapi/mobile_connection/index.html deleted file mode 100644 index cccbb5cd05..0000000000 --- a/files/pt-br/webapi/mobile_connection/index.html +++ /dev/null @@ -1,148 +0,0 @@ ---- -title: Mobile Connection -slug: WebAPI/Mobile_Connection -translation_of: Archive/B2G_OS/API/Mobile_Connection_API ---- -<p>{{ non-standard_header() }}</p> -<p>{{ B2GOnlyHeader2('certified') }}</p> -<h2 id="Sumário">Sumário</h2> -<p>Essa API tem 2 propósitos:</p> -<ul> - <li>Dar acesso a informações detalhadas sobre os estados atuais da conexão móvel do dispositivo</li> - <li>Dar acesso a uma capacidade específica junto com ICC (o cartão SIM/RUIM)</li> -</ul> -<p>Como essa API pode acessar funcionalidades que podem ter um impacto no plano móvel assinado pelo usuário (algumas funcionalidades pode ter custo para utilizar ou causar danos ao ICC), é restrita para aplicações certificadas apenas.</p> -<p>O ponto inicial principal dessa API é a propriedade {{domxref("window.navigator.mozMobileConnection","navigator.mozMobileConnection")}} que é uma instância da interface {{domxref("MozMobileConnection")}}.</p> -<h2 id="Estado_da_conexão_móvel">Estado da conexão móvel</h2> -<p>O estado da conexão móvel é dividida em dois: de um lado a conexão <code>voice</code>, do outro conexão <code>data</code>. O dado relacionado a cada tipo de conexão é acessível através pelas propriedades {{domxref("MozMobileConnection.voice")}} e {{domxref("MozMobileConnection.data")}} que ambas retornarão o objeto {{domxref("MozMobileConnectionInfo")}}.</p> -<p>Esses objetos permitem acesso a todas as informações relacionadas a qualidade da rede (<a href="/en-US/docs/DOM/MozMobileConnectionInfo.signalStrength" title="/en-US/docs/DOM/MozMobileConnectionInfo.signalStrength">signal strength</a>, <a href="/en-US/docs/DOM/MozMobileConnectionInfo.relSignalStrength" title="/en-US/docs/DOM/MozMobileConnectionInfo.relSignalStrength">quality of the signal</a>, posição das <a href="/en-US/docs/DOM/MozMobileConnectionInfo.cell" title="/en-US/docs/DOM/MozMobileConnectionInfo.cell">network's cells</a>, <a href="/en-US/docs/DOM/MozMobileConnectionInfo.emergencyCallsOnly" title="/en-US/docs/DOM/MozMobileConnectionInfo.emergencyCallsOnly">restricted usage</a>, <a href="/en-US/docs/DOM/MozMobileConnectionInfo.roaming" title="/en-US/docs/DOM/MozMobileConnectionInfo.roaming">roaming</a>, etc.), e relacionado à <a href="/en-US/docs/DOM/MozMobileConnectionInfo.network" title="/en-US/docs/DOM/MozMobileConnectionInfo.network">the carrier operating the network</a>.</p> -<pre class="brush: js">var cnx = navigator.mozMobileConnection; - -console.log("The voice operator is " + cnx.voice.network.longName); - -if (cnx.voice.connected) { - console.log("The signal has a strength of " + (+cnx.voice.relSignalStrength) + "%"); -} else { - console.log("The state of the connection is: " + cnx.voice.state); -} -</pre> -<h2 id="Funcionalidades_ICC">Funcionalidades ICC</h2> -<p>As funcionalidades disponíveis para o ICC pode ser dividida dentro de duas categorias: o gerenciamento do próprio ICC e a utilização do comando integrado disponível dentro do <a href="http://en.wikipedia.org/wiki/SIM_Application_Toolkit" title="http://en.wikipedia.org/wiki/SIM_Application_Toolkit">STK</a> (<em>SIM Application Toolkit</em>).</p> -<h3 id="Ações_Básicas">Ações Básicas</h3> -<p>O {{domxref("MozMobileConnection")}} fornece métodos para lidar com comportamentos comuns no ICCs.</p> -<div class="note"> - <p><strong>Nota:</strong> All original methods from the <code>MozMobileConnection</code> interface are fully asynchronous. They all return a {{domxref("DOMRequest")}} object which has an <code>onsuccess</code> and <code>onerror</code> event handler to handle the success or failure of the method call.</p> -</div> -<h4 id="Bloqueio_do_Cartão">Bloqueio do Cartão</h4> -<p>Enquanto o cartão estiver bloqueado, o usuário é incapaz de utilizar uma rede móvel. É possível gerenciar o bloqueio do cartão com os métodos {{domxref("MozMobileConnection.getCardLock","getCardLock()")}}, {{domxref("MozMobileConnection.setCardLock","setCardLock()")}}, e {{domxref("MozMobileConnection.unlockCardLock","unlockCardLock()")}}.</p> -<p>Se {{domxref("MozMobileConnection.getCardLock","getCardLock()")}} permite pegar algumas informações detalhadas sobre o bloqueio, também possível ter informação rápida sobre o bloqueio através {{domxref("MozMobileConnection.cardState")}} que retorna uma string representando o estado atual do bloqueio.</p> -<div class="note"> - <p><strong>Nota:</strong> Even if the state change requests are successfully handled, it does not mean that the operations are necessarily successful. For that reason, any change in the card state is tracked independently through events:</p> - <ul> - <li>The {{event("icccardlockerror")}} event is triggered each time a call to {{domxref("MozMobileConnection.setCardLock","setCardLock()")}} or {{domxref("MozMobileConnection.unlockCardLock","unlockCardLock()")}} fails.</li> - <li>The {{event("cardstatechange")}} event is triggered each time the {{domxref("MozMobileConnection.cardState","cardState")}} property changes.</li> - </ul> -</div> -<pre class="brush: js">var cnx = navigator.mozMobileConnection; - -function unlockCard() { - var unlockOptions = { - lockType: "pin", - pin : prompt("Please, enter your PIN") - } - - var unlock = cnx.unlockCardLock(unlockOptions); - - unlock.onsuccess = function () { - console.log("The card has successfully handled the PIN number."); - - if (this.result.success === false) { - if (this.result.retryCount > 0) { - console.log("But you mistyped your PIN, you have " + this.result.retryCount + " tries left."); - } else { - console.log("But your card is hard locked, you need to contact your carrier to get a special unlocking code."); - } - } - } - - unlock.onerror = function () { - console.log("Hu! Something goes very wrong!") - } -} - -cnx.addEventListener('icccardlockerror', function () { - // In case of error, ask the user for his PIN again - unlockCard(); -}); - -cnx.addEventListener('cardsatechange', function () { - // In case the card state change and required to be unlocked - if (cnx.cardState === 'pinRequired') { - unlockCard(); - } -} - -// First call to unlockCard if required -if (cnx.cardState === 'pinRequired') { - unlockCard(); -} -</pre> -<h4 id="Mensagens_MMI">Mensagens MMI</h4> -<p><abbr title="Man Machine Interface">Mensagens MMI</abbr> são códigos legíveis para humanos que, uma vez digitado no teclado do aparelho, permite disparo de ações específicas do <a class="external" href="http://en.wikipedia.org/wiki/Radio_Interface_Layer" title="Wikipedia: Radio Interface Layer">RIL</a> ou pegar resposta da rede pela requisição<a class="external" href="http://en.wikipedia.org/wiki/USSD" title="Wikipedia: Unstructured Supplementary Service Data"> USSD</a>. Um exemplo comum é digitar um código curto para receber número <a href="http://en.wikipedia.org/wiki/International_Mobile_Station_Equipment_Identity" title="http://en.wikipedia.org/wiki/International_Mobile_Station_Equipment_Identity">IMEI</a> do aparelho.</p> -<p>Essas mensagens são enviadas utilizando o método {{domxref("MozMobileConnection.sendMMI()")}} (e pode ser cancelado com {{domxref("MozMobileConnection.cancelMMI","cancelMMI()")}}). Mesmo com isso irá retornar um objeto {{domxref("DOMRequest")}}, a resposta para este tipo de mensagem é manuseada de duas maneiras:</p> -<ul> - <li>Se o código MMI necessita enviar uma requisição USSD, o <code>success </code>da requesição significa que o RIL foi processado com sucesso e enviou a requisição USSD para a rede. Porém, a resposta da rede é reportada através do evento {{event("ussdreceived")}}.</li> - <li>Se o código MMI não for associado com o USSD mas com outra requisição RIL, seu resultado, se um for necessário, é enviado pelo retorno requisitado <code>success</code> ou <code>error</code>.</li> -</ul> -<pre class="brush: js">var cnx = navigator.mozMobileConnection; - -cnx.addEventHandler('ussdreceived', function (evt) { - console.log('Network message: ' + evt.data.message); -}); - -var MMIRequest = cnx.sendMMI(prompt('Provide a valid MMI')); - -MMIRequest.onerror = function() { - console.log("Mmmh... Something goes wrong."); -} -</pre> -<h4 id="Opções_encaminhamento_de_chamada">Opções encaminhamento de chamada</h4> -<p>Opções de encaminhamento permite definir como uma ligação pode ou não ser encaminhada para outro número de telefone.</p> -<p>Essas opções são manuseadas com os métodos {{domxref("MozMobileConnection.getCallForwardingOption","getCallForwardingOption()")}} e {{domxref("MozMobileConnection.setCallForwardingOption","setCallForwardingOption()")}}.</p> -<pre class="brush: js">var options = { - action : MozMobileCFInfo.CALL_FORWARD_ACTION_ENABLE, - reason : MozMobileCFInfo.CALL_FORWARD_REASON_UNCONDITIONAL, - serviceClass: MozMobileConnectionInfo.ICC_SERVICE_CLASS_VOICE, - number : prompt('To which phone number would you wish to forward the calls?'), - timeSeconds : 5 -}; - -var setOption = navigator.mozMobileConnection.setCallForwardingOption(options); - -setOption.onsuccess = function () { - console.log('Options successfully set'); -} - -setOption.onerror = function () { - console.log('Unable to set options: ' + this.error.name); -} -</pre> -<h3 id="Comandos_STK">Comandos STK</h3> -<p>Os comandos STK dependem em vários fatores (operadoras, modelos de chips, etc.) mas podem sempre ser acessados pela propriedade {{domxref("MozMobileConnection.icc")}} que retorna um objeto {{domxref("MozIccManager")}}.</p> -<div class="warning"> - <p><strong>Atenção:</strong> É recomendado utilizando comando STK apenas se você já sabe exatamente o que você está fazendo, porque a utilização errada pode danificar o chip e torná-lo inutilizável.</p> -</div> -<h2 id="Especificações">Especificações</h2> -<p>Não faz parte de nenhuma especificação.</p> -<h2 id="Veja_também">Veja também</h2> -<ul> - <li>{{domxref("window.navigator.mozMobileConnection","navigator.mozMobileConnection")}}</li> - <li>{{domxref("MozMobileConnection")}}</li> - <li>{{domxref("MozMobileConnectionInfo")}}</li> - <li>{{domxref("MozMobileICCInfo")}}</li> - <li>{{domxref("MozMobileNetworkInfo")}}</li> - <li>{{domxref("MozMobileCFInfo")}}</li> - <li>{{domxref("MozMobileCellInfo")}}</li> - <li>{{domxref("MozIccManager")}}</li> - <li>{{domxref("MozStkCommandEvent")}}</li> -</ul> diff --git a/files/pt-br/webapi/network_stats/index.html b/files/pt-br/webapi/network_stats/index.html deleted file mode 100644 index 9276841db3..0000000000 --- a/files/pt-br/webapi/network_stats/index.html +++ /dev/null @@ -1,86 +0,0 @@ ---- -title: Network Stats -slug: WebAPI/Network_Stats -translation_of: Archive/B2G_OS/API/Network_Stats_API ---- -<p>{{ non-standard_header() }}</p> -<p>{{ B2GOnlyHeader2('certified') }}</p> -<h2 id="Sumário">Sumário</h2> -<p>A API do Estado de Rede permite monitorar utilização de dados e expor esses dados para aplicações certificadas.</p> -<p>Os dados podem ser acessados através de {{domxref("window.navigator.mozNetworkStats","navigator.mozNetworkStats")}} que é uma instância da interface {{domxref("MozNetworkStatsManager")}}.</p> -<h2 id="Acessando_os_dados">Acessando os dados</h2> -<p>Informações sobre o volume de dados recebidos e enviados é automaticamente guardado no sistema. É possível acessá-los utilizando o método {{domxref("MozNetworkStatsManager.getNetworkStats()")}}. Este método espera um objeto de configuração como seu primeiro parâmetro, que deve conter as seguintes propriedades:</p> -<ul> - <li><code>start</code>: Um objeto data representando o começo dos dados mensurados.</li> - <li><code>end</code>: Um objeto data representando o final dos dados mensurados.</li> - <li><code>connectionType</code>: A origem dos dados. Pode ser <code>wifi</code>, <code>mobile</code>, ou <code>null</code>. Se for <code>null</code>, os dados mensurados de ambas origens são fundidos. Para saber com antecedência qual tipo de origem está disponível, a propriedade {{domxref("MozNetworkStatsManager.connectionTypes")}} returna um <a href="/en-US/docs/JavaScript/Reference/Global_Objects/Array" title="/en-US/docs/JavaScript/Reference/Global_Objects/Array"><code>Array</code></a> de strings representando cada origem suportada.</li> -</ul> -<p>Quando chamada, este método retorna um {{domxref("DOMRequest")}} para lidar com o sucesso ou falha das informações requisitadas. Em caso de sucesso o <code>result</code> requisitado é um objeto {{domxref("MozNetworkStats")}}.</p> -<pre class="brush: js">var manageWifi = navigator.mozNetworkStats.connectionTypes.indexOf('wifi') > -1; -var manageMobile = navigator.mozNetworkStats.connectionTypes.indexOf('mobile') > -1; - -var config = { - start: new Date(), - end : new Date(), - connectionType: manageWifi ? 'wifi' : null -}; - -var request = navigator.mozNetworkStats.getNetworkStats(config); - -request.onsuccess = function () { - console.log("Data received: " + request.result.data[0].rxBytes + " bytes"); - console.log("Data sent: " + request.result.data[0].txBytes + " bytes") -} - -request.onerror = function () { - console.log("Something goes wrong: ", request.error); -} -</pre> -<h2 id="Amostragem_ao_longo_do_tempo">Amostragem ao longo do tempo</h2> -<p>Para ter uma visão dos dados utilizados ao longo do tempo, as informações sobre a quantidade de dados é armazenada em blocos. Cada bloco é um valor representando a quantidade de dados trocados desde que o último bloco foi armazenado.</p> -<p>Quando requisitar os estados, o resultado do objeto {{domxref("MozNetworkStats")}} contém quantos o maior número de dados possíveis para um intervalo definido entre as datas de <code>start</code> e <code>end</code>. O número total de blocos depende de dois parâmetros (note que os parâmetros são apenas para leitura):</p> -<ul> - <li>{{domxref("MozNetworkStatsManager.sampleRate")}}, que representa o tempo em segundos entre dois blocos.</li> - <li>{{domxref("MozNetworkStatsManager.maxStorageSamples")}}, que representa o número máximo de blocos de cada tipo de conexão.</li> -</ul> -<p>Cada bloco é um objeto {{domxref("MozNetworkStatsData")}}, e <span id="result_box" lang="pt"><span class="hps">todos os</span> <span class="hps">blocos de dados</span> <span class="hps">para um determinado</span> <span class="hps">período de tempo</span> <span class="hps">estão disponíveis</span> <span class="hps">através da propriedade</span></span> {{domxref("MozNetworkStats.data")}}, que são um <a href="/en-US/docs/JavaScript/Reference/Global_Objects/Array" title="/en-US/docs/JavaScript/Reference/Global_Objects/Array"><code>Array</code></a> de objetos {{domxref("MozNetworkStatsData")}}.</p> -<pre class="brush: js">var rate = navigator.mozNetworkStats.sampleRate; -var max = navigator.mozNetworkStats.maxStorageSample; - -var config = { - start: new Date() - (rate * max), // This allows to get all the available data chunks. - end : new Date(), - connectionType: 'mobile' -}; - -var request = navigator.mozNetworkStats.getNetworkStats(config); - -request.onsuccess = function () { - var total = { - receive: 0, - send : 0 - }; - - this.result.forEach(function (chunk) { - total.receive += chunk.rxBytes; - total.send += chunk.txBytes; - }); - - console.log("Since: " + config.start.toString()); - console.log("Data received: " + (total.receive * 1000).toFixed(2) + "Ko"); - console.log("Data sent: " + (total.send * 1000).toFixed(2) + "Ko") -} - -request.onerror = function () { - console.log("Something goes wrong: ", request.error); -}</pre> -<h2 id="Especificações">Especificações</h2> -<p>Não faz parte de uma especificação</p> -<h2 id="Veja_também">Veja também</h2> -<ul> - <li>{{domxref("window.navigator.mozNetworkStats","navigator.mozNetworkStats")}}</li> - <li>{{domxref("MozNetworkStats")}}</li> - <li>{{domxref("MozNetworkStatsData")}}</li> - <li>{{domxref("MozNetworkStatsManager")}}</li> - <li><a href="/en-US/docs/WebAPI/Network_Stats_2_0_proposal" title="/en-US/docs/WebAPI/Network_Stats_2_0_proposal">NetworkStats API 2.0 proposal</a></li> -</ul> diff --git a/files/pt-br/webapi/tcp_socket/index.html b/files/pt-br/webapi/tcp_socket/index.html deleted file mode 100644 index 48b49f4132..0000000000 --- a/files/pt-br/webapi/tcp_socket/index.html +++ /dev/null @@ -1,75 +0,0 @@ ---- -title: TCP Socket -slug: WebAPI/TCP_Socket -translation_of: Archive/B2G_OS/API/TPC_Socket_API ---- -<p>{{ non-standard_header() }}</p> -<p>{{ B2GOnlyHeader2('privileged') }}</p> -<h2 id="Sumário">Sumário</h2> -<p>A API TCPSocket oferece</p> -<p>The TCPSocket API offers a whole API to open and use a TCP connection. This allows app makers to implement any protocol available on top of TCP such as IMAP, IRC, POP, HTTP, etc., or even build their own to sustain any specific needs they could have.</p> -<h2 id="Permissões">Permissões</h2> -<p>Para utilizar essa API, como todas as API privilegiadas, é necessário que tenha permissão para utilizar dentro do <a href="/en-US/docs/Web/Apps/Manifest">app manifest</a>.</p> -<pre class="brush: json">"permissions" : { - "tcp-socket" : { - "description" : "Create TCP sockets and communicate over them." - } -}</pre> -<h2 id="Overview">Overview</h2> -<p>A API está disponível através da propriedade {{domxref("window.navigator.mozTCPSocket","navigator.mozTCPSocket")}} que por si é um objeto {{domxref("TCPSocket")}}.</p> -<h3 id="Abrindo_um_socket.">Abrindo um socket.</h3> -<p>Opening a socket is done with the {{domxref("TCPSocket.open()")}} method. This method expects up to three parameters:</p> -<ol> - <li>A string representing the hostname of the server to connect to (it can also be its raw IP address).</li> - <li>A number representing the TCP port to be used by the socket (some protocols have a standard port, for example 80 for HTTP, 447 for SSL, 25 for SMTP, etc. Port numbers beyond 1024 are not assigned to any specific protocol and can be used for any purpose.)</li> - <li>A optional object containing up to two options: a boolean named <code>useSSL</code> is the socket needed to use SSL, <code>false</code> by default; and a string named <code>binaryType</code> allows to state the type of data retrieved by the application through the {{event("data")}} event, with the expected values <code>string</code> or <code>arraybuffer</code>. By default, it is <code>string</code>.</li> -</ol> -<pre class="brush: js">var socket = navigator.mozTCPSocket.open('localhost', 80);</pre> -<div class="note"> - <p><strong>Nota:</strong> Apenas aplicações certificadas podem utilizar portas abaixo de 1024.</p> -</div> -<h3 id="Enviando_dado">Enviando dado</h3> -<p>Sending data is done using the {{domxref("TCPSocket.send()")}} method. The data sent can be either a string or a <code><a href="/en-US/docs/JavaScript/Typed_arrays/Uint8Array" title="/en-US/docs/JavaScript/Typed_arrays/Uint8Array">Uint8Array</a></code> object; however, remember that a TCP socket always deals with binary data. For that reason, it's a lot safer to use <code><a href="/en-US/docs/JavaScript/Typed_arrays/Uint8Array" title="/en-US/docs/JavaScript/Typed_arrays/Uint8Array">Uint8Array</a></code> instead of a string when sending data.</p> -<p>As per the TCP protocol, it's a good optimization to send a maximum of 64kb of data at the same time. As long as less than 64kb has been buffered, a call to the {{domxref("TCPSocket.send()","send")}} method returns <code>true</code>. Once the buffer is full, the method will return <code>false</code> which indicates the application should make a pause to flush the buffer. Each time the buffer is flushed, a {{event("drain")}} event is fired and the application can use it to resume data sending.</p> -<p>It's possible to know exactly the current amount of data buffered with the {{domxref("TCPSocket.bufferedAmount")}} property.</p> -<pre class="brush: js">function getData() { - var data; - - // do stuff that will retrieve data - - return data; -} - -function pushData() { - var data; - - do { - data = getData(); - } while (data != null && socket.send(data)); -} - -// Each time the buffer is flushed -// we try to send data again. -socket.ondrain = pushData; - -// Start sending data. -pushData(); -</pre> -<h3 id="Pegando_dado">Pegando dado</h3> -<p>Each time the socket gets some data from the host, it fires a {{event("data")}} event. This event will give access to the data from the socket. The type of the data depends on the option set when the socket was opened (see above).</p> -<pre class="brush: js">socket.ondata = function (event) { - if (typeof event.data === 'string') { - console.log('Get a string: ' + event.data); - } else { - console.log('Get a Uint8Array'); - } -}</pre> -<p>As the {{event("data")}} event is fired as much as needed, it can sometimes be necessary to pause the flow of incoming data. To that end, calling the {{domxref("TCPSocket.suspend()")}} method will pause reading incoming data and stop firing the {{event("data")}}. It's possible to start reading data and firing events again by calling the {{domxref("TCPSocket.resume()")}} method.</p> -<h3 id="Fechando_um_socket">Fechando um socket</h3> -<p>Closing a socket is simply done using {{domxref("TCPSocket.close()")}}.</p> -<h2 id="Padrão">Padrão</h2> -<p>Not part of any specification yet; however, this API is discussed at W3C as part of the <a class="external" href="http://www.w3.org/2012/sysapps/" rel="external" title="http://www.w3.org/2012/sysapps/">System Applications Working Group</a> under the <a href="http://www.w3.org/2012/sysapps/raw-sockets/" title="http://www.w3.org/2012/sysapps/raw-sockets/">Raw Sockets</a> proposal.</p> -<h2 id="Veja_também">Veja também</h2> -<ul> - <li>{{domxref("TCPSocket")}}</li> -</ul> diff --git a/files/pt-br/webapi/web_activities/index.html b/files/pt-br/webapi/web_activities/index.html deleted file mode 100644 index 0eae803549..0000000000 --- a/files/pt-br/webapi/web_activities/index.html +++ /dev/null @@ -1,421 +0,0 @@ ---- -title: Web Activities -slug: WebAPI/Web_Activities -translation_of: Archive/B2G_OS/API/Web_Activities ---- -<p>{{ non-standard_header() }}</p> -<p>{{B2GOnlyHeader2('installed')}}</p> -<h2 id="Sumário">Sumário</h2> -<p>Atividades Web define um modo para as aplicações delegarem uma atividade para a outra (geralmente escolhida pelo usuário) aplicação.</p> -<p>Atividades Web estão atualmente habilitadas no Firefox OS apenas, e toda a especificação está <a href="https://wiki.mozilla.org/WebAPI/WebActivities" title="https://wiki.mozilla.org/WebAPI/WebActivities">disponível no WikiMo</a>.</p> -<h2 id="Atividades">Atividades</h2> -<p>An activity is something a user wants to do: pick an image, send an e-mail, etc. App authors may want to define an app that can handle an activity or that can delegate to an activity.</p> -<h2 id="Registering_an_App_as_an_activity_handler">Registering an App as an activity handler</h2> -<p>App authors can build an app that will handle one or more activities. That means that the app will be callable by another app to perform some specific actions defined by the activity. For example, let's pretend we want to build a photo manager. It could be used by another application to pick a photo. As an activity handler our app will become part of the other application's workflow.</p> -<h3 id="Registrar_uma_atividade">Registrar uma atividade</h3> -<p>There is currently only one way to register an app as an activity handler: declaring it in the app manifest.</p> -<div class="note"> - <p><strong>Note:</strong> Any application can register itself as an activity handler for any existing activity or create its own activity. In both cases it's done the same way within the app manifest. However, when creating a new activity, it is considered best practice to avoid activities' name collisions by prefixing the name of the new activity with a URL (e.g., - <i> - example.org/myActivity</i> - or - <i> - org.example.myActivity</i> - ).</p> -</div> -<h4 id="App_manifest_(a.k.a._declaration_registration)">App manifest (a.k.a. declaration registration)</h4> -<p>We have to use the <a href="/en-US/docs/Apps/Manifest" title="/en-US/docs/Apps/Manifest">app manifest</a> to express that our app is expected to handle an activity as in this example:</p> -<pre class="brush: js">{ - // Other App Manifest related stuff - - // Activity registration - "activities": { - - // The name of the activity to handle (here "pick") - "pick": { - "href": "./pick.html", - "disposition": "inline", - "filters": { - "type": ["image/*","image/jpeg","image/png"] - }, - "returnValue": true - } - } -} -</pre> -<h4 id="Dynamic_registration">Dynamic registration</h4> -<p>There are plans to let an app register itself dynamically by using the {{domxref("window.navigator","navigator")}} object. However, this API is not available yet. See {{bug("775181")}} to follow the work about that specific API.</p> -<h4 id="Activity_handler_description">Activity handler description</h4> -<dl> - <dt> - <code>href</code></dt> - <dd> - When another app or Web page initiates an activity that is supported by this app, if this app is chosen to perform the activity, this specifies the page that will be opened. It will be opened in the manner specified by the <code>disposition</code> property. - <div class="note"> - <strong>Note:</strong> The URL of this page is restricted by the rules of the <a href="/en-US/docs/JavaScript/Same_origin_policy_for_JavaScript" title="/en-US/docs/JavaScript/Same_origin_policy_for_JavaScript">same origin policy</a>.</div> - </dd> -</dl> -<dl> - <dt> - <code>disposition</code> {{optional_inline()}}</dt> -</dl> -<dl> - <dd> - Specifies how the page specified in <code>href</code> is presented when an activity is invoked. The value, if specified, must be one of the following (if omitted, defaults to <code>window</code>): - <ul> - <li><strong><code>window</code></strong> - The page handling the activity is opened in a new "window" (on a mobile device this view will replace the original app that requested the activity). The page must call {{domxref("window.navigator.mozSetMessageHandler()","navigator.mozSetMessageHandler()")}} for each activity it supports and subsequently execute the activity for which it receives a message.</li> - <li><strong><code>inline</code></strong> - The page that handles the activity will open in an overlay (on a mobile device this will be rendered in a popup over the original app that requested the activity). Subsequent behavior is exactly the same as if <code>disposition</code> were <code>window</code>.</li> - </ul> - </dd> -</dl> -<dl> - <dt> - <code>returnValue</code> {{optional_inline()}}</dt> - <dd> - States if the activity will return a value or not. If an application doesn't plan to return a value, the UA may send a - <i> - success</i> - event as soon as an application has been picked. If a value is expected, the activity handler must call {{domxref("MozActivityRequestHandler.postResult()")}} if the activity is successful or {{domxref("MozActivityRequestHandler.postError()")}} if the activity fails (where {{domxref("MozActivityRequestHandler")}} is the type of the first argument provided to the function specified within {{domxref("window.navigator.mozSetMessageHandler()","mozSetMessageHandler")}} by the activity handler). The <em>success</em> or <em>error</em> event will be respectively fired after {{domxref("MozActivityRequestHandler.postResult()","postResult")}} or {{domxref("MozActivityRequestHandler.postError()","postError")}} has been called by the activity handler.</dd> -</dl> -<dl> - <dt> - <code>filters</code> {{optional_inline()}}</dt> - <dd> - A dictionary where each property of which specifies a filter. These filters will be applied while determining apps suitable for handling a given activity. Filter names are free-form text and should mirror {{domxref("MozActivityOptions.data","data")}} properties' names from {{domxref("MozActivityOptions")}}. Filters' values are either a basic value (string or number), an array of basic values, or a filter definition object. An activity will be considered as able to handle an activity only if the filters are all satisfied.</dd> -</dl> -<p>The way filters are handled depend on each filter value:</p> -<ul> - <li>If the filter value is a basic value, the corresponding {{domxref("MozActivityOptions.data")}} property is optional but if the property exist it must have the same value as the one provided by the filter.</li> - <li>If the filter value is an array of basic values, the corresponding {{domxref("MozActivityOptions.data")}} property is optional but if the property exists its value must be equal to one of the values available in the array provided by the filter.</li> - <li>If the filter value is a filter definition object, the filter will be satisfied if the corresponding {{domxref("MozActivityOptions.data")}} property follows the rules defined by the object. A filter definition object can have the following properties: - <ul> - <li><code>required</code>: A boolean that indicates if the corresponding {{domxref("MozActivityOptions.data")}} property must exist (<code>true</code>) or not (<code>false</code>).</li> - <li><code>value</code>: A basic value or an array of basic value. The corresponding {{domxref("MozActivityOptions.data")}} property value must be equal to one of the values defined in the filter.</li> - <li><code>min</code>: If the expected value is a number, the corresponding {{domxref("MozActivityOptions.data")}} property value must be greater than or equal to that value.</li> - <li><code>max</code>: If the expected value is a number, the corresponding {{domxref("MozActivityOptions.data")}} property value must be lesser than or equal to that value.</li> - <li><code>pattern</code>: A string pattern following the <a href="/en-US/docs/JavaScript/Guide/Regular_Expressions" title="/en-US/docs/JavaScript/Guide/Regular_Expressions">JavaScript regular expression</a> syntax. The corresponding {{domxref("MozActivityOptions.data")}} property value must match that pattern. <strong>This is supported in Firefox OS from v1.2.</strong></li> - <li><code>patternFlags</code>: If the <code>pattern</code> property is used, this property can be used to provide some extra regular expression flag such as <code>i</code> or <code>g</code>. <strong>This is supported in Firefox OS from v1.2.</strong></li> - <li><code>regexp</code>: A string containing a regexp litteral following the <a href="/en-US/docs/JavaScript/Guide/Regular_Expressions" title="/en-US/docs/JavaScript/Guide/Regular_Expressions">JavaScript regular expression</a> syntax. The corresponding {{domxref("MozActivityOptions.data")}} property value must match that pattern. In contrary to the pattern flag, this can match only part of the value, therefore you must use the metacharacters ^ and $ to respectively match the start and the end of the string. <strong>This is supported in Firefox OS v1.0 and v1.1 only.</strong> Therefore you're advised to use both <code>pattern</code> and <code>regexp</code>.</li> - </ul> - </li> -</ul> -<h2 id="Handle_an_activity">Handle an activity</h2> -<p>Once our application is declared as an activity handler, we have to make it concrete by performing some actions when receiving an activity request from another app.</p> -<p>To handle the activity, we have to register a function that will perform all the necessary actions. To do so, we need to set a message handler with {{domxref("window.navigator.mozSetMessageHandler()","navigator.mozSetMessageHandler()")}}, specifically assigned to the <code>'activity'</code> message (and not the name of the activity). A {{domxref("MozActivityRequestHandler")}} object is passed as an argument of the activity handler function.</p> -<pre class="brush: js">navigator.mozSetMessageHandler('activity', function(activityRequest) { - // Do something to handle the activity -});</pre> -<p>As the activity handler function is performing an action, it will use the activity request to retrieve information about the activity and to send back an answer if necessary.</p> -<p>The app that calls the activity has to provide some data (see below). This data can be reached through the request's {{domxref("MozActivityRequestHandler.source","source")}} properties which is a {{domxref("MozActivityOptions")}} object. This object provides the {{domxref("MozActivityOptions.name","name")}} of the activity call and the associated {{domxref("MozActivityOptions.data","data")}}.</p> -<pre class="brush: js">navigator.mozSetMessageHandler('activity', function(activityRequest) { - var option = activityRequest.source; - - if (option.name === "pick") { - // Do something to handle the activity - } -});</pre> -<p>Once we have performed all the actions to handle the activity, we can call the request's {{domxref("MozActivityRequestHandler.postResult()","postResult()")}} method to send the result back to the app that delegated the activity.</p> -<p>If something goes wrong we can call the request's {{domxref("MozActivityRequestHandler.postError()","postError()")}} method to send back an error message about the activity.</p> -<pre class="brush: js">navigator.mozSetMessageHandler('activity', function(activityRequest) { - var option = activityRequest.source; - - if (option.name === "pick") { - // Do something to handle the activity - ... - - // Send back the result - if (picture) { - activityRequest.postResult(picture); - } else { - activityRequest.postError("Unable to provide a picture"); - } - } -});</pre> -<div class="note"> - <p><strong>Note:</strong> UA is expected to send an error anyway at some point if neither {{domxref("MozActivityRequestHandler.postError()","postError")}} nor {{domxref("MozActivityRequestHandler.postResult()","postResult()")}} are called--for example, if the user leaves the application (closes the tab on desktop or goes back to the home screen on a mobile device).</p> -</div> -<h2 id="Starting_an_activity">Starting an activity</h2> -<p>On the other side of <em>Web Activities</em>, there are apps that want to delegate an activity to our app. To perform such delegation, the apps have to call an activity by instantiating a {{domxref("MozActivity")}} object. Such objects are nothing less than {{domxref("DOMRequest")}} objects that allow to wait for any response from the activity handler. As soon as the object is constructed, the activity is started, and the UI is shown to the user as soon as possible.</p> -<pre class="brush: js" id=".C2.A0">var activity = new MozActivity({ - // Ask for the "pick" activity - name: "pick", - - // Provide the data required by the filters of the activity - data: { - type: "image/jpeg" - } -}); - -activity.onsuccess = function() { - var picture = this.result; - console.log("A picture has been retrieved"); -}; - -activity.onerror = function() { - console.log(this.error); -}; -</pre> -<h3 id="Firefox_OS_activities">Firefox OS activities</h3> -<p><a href="/en-US/docs/Mozilla/Firefox_OS/Platform/Gaia" title="/en-US/docs/Mozilla/Firefox_OS/Platform/Gaia">Gaia</a>, the native interface for Firefox OS, provides many built-in applications that define basic activities. Those activities are the following:</p> -<table class="standard-table"> - <thead> - <tr> - <th scope="col">Name</th> - <th scope="col">Application</th> - <th scope="col">Expected Data (filters)</th> - <th scope="col">Comments</th> - </tr> - </thead> - <tbody> - <tr> - <td><code>browse</code></td> - <td>Gallery</td> - <td> - <pre class="brush: js"> -type: "photos"</pre> - </td> - <td> </td> - </tr> - <tr> - <td><code>configure</code></td> - <td>Settings</td> - <td> - <pre class="brush: js"> -target: "device"</pre> - </td> - <td> </td> - </tr> - <tr> - <td><code>costcontrol/balance</code></td> - <td>Costcontrol</td> - <td>None</td> - <td> </td> - </tr> - <tr> - <td><code>costcontrol/data_usage</code></td> - <td>Costcontrol</td> - <td>None</td> - <td> </td> - </tr> - <tr> - <td><code>costcontrol/telephony</code></td> - <td>Costcontrol</td> - <td>None</td> - <td> </td> - </tr> - <tr> - <td><code>dial</code></td> - <td>Communication</td> - <td> - <pre class="brush: js"> -type: "webtelephony/number", -number: { - regexp:/^[\\d\\s+#*().-]{0,50}$/ -}</pre> - </td> - <td>Used when an app wants to pass a phone call.</td> - </tr> - <tr> - <td colspan="1" rowspan="3"><code>new</code></td> - <td>Communication</td> - <td> - <pre class="brush: js"> -type: "webcontacts/contact"</pre> - </td> - <td>Used when an app wants to create a new contact entry.</td> - </tr> - <tr> - <td>Email</td> - <td> - <pre class="brush: js"> -type: "mail"</pre> - </td> - <td> </td> - </tr> - <tr> - <td>SMS</td> - <td> - <pre class="brush: js" id="LC48"> -type: "websms/sms", -number: { - regexp:/^[\\w\\s+#*().-]{0,50}$/ -}</pre> - </td> - <td>Used when an app wants to send an SMS.</td> - </tr> - <tr> - <td colspan="1" rowspan="4"><code>open</code></td> - <td>Communication</td> - <td> - <pre class="brush: js"> -type: "webcontacts/contact"</pre> - </td> - <td> </td> - </tr> - <tr> - <td>Gallery</td> - <td> - <pre class="brush: js"> -type: [ - "image/jpeg", - "image/png", - "image/gif", - "image/bmp" -]</pre> - </td> - <td> </td> - </tr> - <tr> - <td>Music</td> - <td> - <pre class="brush: js"> -type: [ - "audio/mpeg", - "audio/ogg", - "audio/mp4" -]</pre> - </td> - <td> </td> - </tr> - <tr> - <td>Video</td> - <td> - <pre class="brush: js"> -type: [ - "video/webm", - "video/mp4", - "video/3gpp", - "video/youtube" -]</pre> - <p>Also expect a <code>blob</code> property which is a {{domxref("Blob")}} object.</p> - </td> - <td>Used when an app wants to display a video (the <code>view</code> activity allows to do the same).</td> - </tr> - <tr> - <td colspan="1" rowspan="2"><code>pick</code></td> - <td>Camera, Gallery, Wallpaper</td> - <td> - <pre class="brush: js"> -type: ["image/*", "image/jpeg"]</pre> - </td> - <td>Used when an app wants to get a picture.</td> - </tr> - <tr> - <td>Communication</td> - <td> - <pre class="brush: js"> -type: [ - "webcontacts/contact", - "webcontacts/email" -]</pre> - </td> - <td>Used when an app wants to retrieve some contact information or an e-mail.</td> - </tr> - <tr> - <td><code>record</code></td> - <td>Camera</td> - <td> - <pre class="brush: js"> -type: ["photos", "videos"]</pre> - </td> - <td>Used when an app wants to record some video.</td> - </tr> - <tr> - <td><code>save-bookmark</code></td> - <td>Homescreen</td> - <td> - <pre class="brush: js" id="LC46"> -type: "url", -url: { - required:true, - regexp:/^https?:/ -}</pre> - </td> - <td> </td> - </tr> - <tr> - <td colspan="1" rowspan="2"><code>share</code></td> - <td>Bluetooth</td> - <td> - <pre class="brush: js"> -number: 1 -</pre> - </td> - <td> </td> - </tr> - <tr> - <td>Email, Wallpaper</td> - <td> - <pre class="brush: js"> -type: "image/*"</pre> - </td> - <td>Used when an app wants to share an image.</td> - </tr> - <tr> - <td colspan="1" rowspan="4"><code>view</code></td> - <td>Browser</td> - <td> - <pre class="brush: js"> -type: "url" -url: { - required: true, - regexp: /^https?:.{1,16384}$/ -}</pre> - </td> - <td>Used when an app wants to open a URL.</td> - </tr> - <tr> - <td>Email</td> - <td> - <pre class="brush: js" id="LC64"> -type: "url", -url: { - required:true, - regexp:/^mailto:/ -}</pre> - </td> - <td> </td> - </tr> - <tr> - <td>PDFs</td> - <td> - <pre class="brush: js"> -type: "application/pdf"</pre> - </td> - <td>Used when an app wants to display the content of a PDF document.</td> - </tr> - <tr> - <td>Video</td> - <td> - <pre class="brush: js"> -type: [ - "video/webm", - "video/mp4", - "video/3gpp", - "video/youtube" -]</pre> - <p>Also expect a <code>url</code> property which is a string.</p> - </td> - <td>Used when an app wants to display a video (the <code>open</code> activity allows to do the same).</td> - </tr> - <tr> - <td><code>update</code></td> - <td>Communication</td> - <td> - <pre class="brush: js"> -type: "webcontacts/contact"</pre> - </td> - <td>Used when an app wants to update a contact.</td> - </tr> - </tbody> -</table> -<h2 id="Specification">Specification</h2> -<p><em>Web Activities</em> is not part of any specification. However, it has some overlap with the proposed <a href="https://dvcs.w3.org/hg/web-intents/raw-file/tip/spec/Overview-respec.html" title="http://www.w3.org/TR/web-intents/">Web Intents</a> specification. Mozilla actually proposed <em>Web Activities</em> as <a href="https://wiki.mozilla.org/WebAPI/WebActivities" title="https://wiki.mozilla.org/WebAPI/WebActivities">a counter proposal</a> to <em>Web Intents</em>. For more information about this, see discussion on the <a href="http://lists.w3.org/Archives/Public/public-web-intents/2012Jun/0061.html" title="http://lists.w3.org/Archives/Public/public-web-intents/2012Jun/0061.html">Web Intents Task Force ML</a>.</p> -<h2 id="See_also">See also</h2> -<ul> - <li>{{domxref("MozActivity")}}</li> - <li>{{domxref("MozActivityRequestHandler")}}</li> - <li>{{domxref("MozActivityOptions")}}</li> - <li>{{domxref("window.navigator.mozSetMessageHandler()","navigator.mozSetMessageHandler()")}}</li> - <li><a href="https://hacks.mozilla.org/2013/01/introducing-web-activities/" title="https://hacks.mozilla.org/2013/01/introducing-web-activities/">Introducing Web Activities</a></li> -</ul> diff --git a/files/pt-br/webapi/websms/index.html b/files/pt-br/webapi/websms/index.html deleted file mode 100644 index db11b891c0..0000000000 --- a/files/pt-br/webapi/websms/index.html +++ /dev/null @@ -1,136 +0,0 @@ ---- -title: WebSMS -slug: WebAPI/WebSMS -tags: - - MMS - - SMS - - WebSMS -translation_of: Archive/B2G_OS/API/Mobile_Messaging_API ---- -<p>{{ non-standard_header() }}</p> - -<p>{{ B2GOnlyHeader2('certified') }}</p> - -<h2 id="Resumo">Resumo</h2> - -<p>WebSMS é uma API que possibilita a criação, envio e recebimento de SMS (Short Message Service) ou MMS (Multimedia Messaging Service).</p> - -<p>A API está disponível usando {{ domxref("window.navigator.mozSms") }} que retorna um objeto {{ domxref("MozSmsManager") }} ou {{ domxref("window.navigator.mozMobileMessage") }} que retorna {{ domxref("MozMobileMessageManager") }}. Veja abaixo uma lista completa com o métodos:</p> - -<h2 id="Interfaces_do_DOM">Interfaces do DOM</h2> - -<h3 id="SMS">SMS</h3> - -<ul> - <li>{{ domxref("window.navigator.mozSms") }} {{deprecated_inline("25")}}</li> - <li>{{ domxref("MozSmsManager") }} {{deprecated_inline("25")}}</li> - <li>{{ domxref("MozSmsMessage") }}</li> - <li>{{ domxref("MozSmsEvent") }}</li> - <li>{{ domxref("MozSmsFilter") }}</li> - <li>{{ domxref("MozSmsSegmentInfo") }}</li> -</ul> - -<h3 id="MMS_e_SMS">MMS e SMS</h3> - -<ul> - <li>{{ domxref("MozMobileMessageManager")}}</li> - <li>{{ domxref("MozMmsMessage") }}</li> - <li>{{ domxref("MozMmsEvent") }}</li> - <li>{{ domxref("MozMobileMessageThread") }}</li> -</ul> - -<h2 id="Código_de_exemplo_e_introdução">Código de exemplo e introdução</h2> - -<ul> - <li><a href="/en-US/docs/WebAPI/WebSMS/Introduction_to_Mobile_Message_API" title="en/API/WebSMS/Introduction_to_WebSMS">Introdução à Mobile Message API</a></li> -</ul> - -<h2 id="Especificações">Especificações</h2> - -<p>Essa especificação ainda não é padrão, mas já está em discussão no W3C como parte do <a href="http://www.w3.org/2012/sysapps/" title="http://www.w3.org/2012/sysapps/">System Application Working Group</a>.</p> - -<table class="standard-table"> - <thead> - <tr> - <th scope="col">Especificação</th> - <th scope="col">Status</th> - <th scope="col">Comentário</th> - </tr> - </thead> - <tbody> - <tr> - <td>{{SpecName('Messaging')}}</td> - <td>{{Spec2('Messaging')}}</td> - <td>projeto de edição (WIP).</td> - </tr> - </tbody> -</table> - -<h2 id="Compatibilidade_dos_browsers">Compatibilidade dos browsers</h2> - -<p>Pro razões óbvias, o suprote é esperado primeiramente em browser para dispositivos móveis.</p> - -<p>{{ CompatibilityTable() }}</p> - -<div id="compat-desktop"> -<table class="compat-table"> - <tbody> - <tr> - <th>Feature</th> - <th>Chrome</th> - <th>Firefox (Gecko)</th> - <th>Internet Explorer</th> - <th>Opera</th> - <th>Safari</th> - </tr> - <tr> - <td>Suporte Básico</td> - <td>{{ CompatNo() }}</td> - <td>{{ CompatNo() }}</td> - <td>{{ CompatNo() }}</td> - <td>{{ CompatNo() }}</td> - <td>{{ CompatNo() }}</td> - </tr> - </tbody> -</table> -</div> - -<div id="compat-mobile"> -<table class="compat-table"> - <tbody> - <tr> - <th>Feature</th> - <th>Android</th> - <th>Firefox Mobile (Gecko)</th> - <th>IE Mobile</th> - <th>Opera Mobile</th> - <th>Safari Mobile</th> - </tr> - <tr> - <td>Suporte Básico</td> - <td>{{ CompatNo() }}</td> - <td>{{ CompatGeckoMobile("12.0") }}</td> - <td>{{ CompatNo() }}</td> - <td>{{ CompatNo() }}</td> - <td>{{ CompatNo() }}</td> - </tr> - </tbody> -</table> -</div> - -<h2 id="sect1"> </h2> - -<h2 id="Preferências_e_disponibilidade">Preferências e disponibilidade</h2> - -<ul> - <li>WebSMS está desativada por padrão e pode ser ativada setando o parâmetro <code>dom.sms.enabled</code> como true.</li> - <li>Uma lista com os hostnames que podem utilizar a API pode ser criada separando cada hostname por vírgula, utilizando <code>dom.sms.whitelist</code>. Essa string vem vazia por padrão.</li> - <li>WebSMS está disponível apenas para apps certificados do Firefox OS (B2G).</li> - <li>MMS está disponível a partir do Firefox OS 1.1</li> -</ul> - -<h2 class="note" id="Veja_também">Veja também</h2> - -<ul> - <li><a class="link-https" href="https://wiki.mozilla.org/WebAPI/WebSMS" title="https://wiki.mozilla.org/WebAPI/WebSMS">WebSMS API</a></li> -</ul> diff --git a/files/pt-br/xul/school_tutorial/comecando_com_as_extensoes_do_firefox/index.html b/files/pt-br/xul/school_tutorial/comecando_com_as_extensoes_do_firefox/index.html deleted file mode 100644 index 9502bc6486..0000000000 --- a/files/pt-br/xul/school_tutorial/comecando_com_as_extensoes_do_firefox/index.html +++ /dev/null @@ -1,80 +0,0 @@ ---- -title: Começando com as extensões do Firefox -slug: XUL/School_tutorial/Comecando_com_as_Extensoes_do_Firefox -tags: - - Add-ons - - Começar - - Complemento - - Extensões - - Tutorial -translation_of: >- - Archive/Add-ons/Overlay_Extensions/XUL_School/Getting_Started_with_Firefox_Extensions ---- -<p>{{ PreviousNext("XUL/School_tutorial/Introdução", "XUL/School_tutorial/Os_Essenciais_de_uma_Extensao") }}</p> -<h2 id="O_que_é_uma_extensão_do_Firefox"><span class="short_text" id="result_box" lang="pt"><span class="hps">O que é</span> <span class="hps">uma extensão do</span> <span class="hps">Firefox?</span></span></h2> -<blockquote> - <p><span id="result_box" lang="pt"><span class="hps">Extensões adicionam</span><span class="hps"> novas funcionalidades</span> <span class="hps">às aplicações</span> <span class="hps">da Mozilla</span><span>, como</span> <span class="hps">Firefox</span> <span class="hps">e</span> <span class="hps">Thunderbird.</span> <span class="hps">Elas podem adicionar</span> <span class="hps">qualquer coisa</span> <span class="hps">a partir de</span> <span class="hps">um botão de</span> <span class="hps">barra de ferramentas para</span> <span class="hps">uma nova funcionalidade</span> <span class="hps">completamente</span><span>.</span> <span class="hps">Elas permitem que</span> <span class="hps">o aplicativo possa</span> <span class="hps">ser personalizado</span> <span class="hps">para atender às necessidades</span> <span class="hps">pessoais de cada</span> <span class="hps">usuário, se ele</span> <span class="hps">precisar de recursos</span> <span class="hps">adicionais</span><span>, mantendo as</span> <span class="hps">pequenas aplicações</span> <span class="hps">para download.</span></span></p> -</blockquote> -<p><span class="short_text" id="result_box" lang="pt"><span class="hps">Retirado da</span></span> <a href="/en/Extensions" title="en/Extensions">Página de Extensões</a>.</p> -<p><span id="result_box" lang="pt"><span class="hps">Conforme descrito no</span> <span class="hps">texto citado</span><span> logo acima, uma extensão</span> <span class="hps">é um pequeno</span> <span class="hps">aplicativo que adiciona</span> <span class="hps">algo novo para</span> <span class="hps">uma ou mais aplicações</span> <span class="hps">da Mozilla</span><span>.</span> <span class="hps">Este</span> <span class="hps">tutorial</span> <span class="hps">concentra-se em</span> <span class="hps">extensões para o</span> <span class="hps">Firefox,</span> <span class="hps">mas os mesmos princípios</span> <span class="hps atn">(</span><span>ou muito semelhantes</span><span>) aplicam-se</span> <span class="hps">a criação de</span> <span class="hps">extensões para</span> <span class="hps">outras aplicações, como</span> <span class="hps">Thunderbird,</span> <span class="hps">Seamonkey,</span> <span class="hps">e Flock</span><span>.</span></span></p> -<p><span id="result_box" lang="pt"><span class="hps">Também é</span> <span class="hps">importante notar que</span> <span class="hps">existem diferenças entre</span> <span class="hps">a definição de</span> <span class="hps">extensão</span> <span class="hps">e</span> <span class="hps">add-on.</span> <span class="hps">Todas as extensões</span> <span class="hps">são</span> <span class="hps atn">add-</span><span>ons,</span> <span class="hps">mas</span> <span class="hps atn">add-</span><span>ons</span> <span class="hps">também podem ser</span> <span class="hps">temas</span><span>, plugins,</span> <span class="hps">ou pacotes de idiomas</span><span>.</span> <span class="hps">Este tutorial é</span> <span class="hps">sobre o desenvolvimento de</span> <span class="hps">extensão</span><span>, mas os temas</span> <span class="hps">e pacotes de idiomas</span> <span class="hps">são desenvolvidos</span> <span class="hps">de uma forma muito</span> <span class="hps">semelhante.</span> <span class="hps">Plugins</span> <span class="hps">são totalmente diferentes</span><span>,</span> <span class="hps">e</span><span class="hps"> não serão</span> <span class="hps">abordados aqui</span><span>.</span></span></p> -<p><span id="result_box" lang="pt"><span class="hps">Você pode ler</span> <span class="hps">mais sobre</span> <span class="hps">plugins</span> <span class="hps">e seu desenvolvimento</span> <span class="hps">na</span></span> <a href="/en/Plugins" title="en/Plugins">Página de Plugins </a>.</p> -<p><span id="result_box" lang="pt"><span class="hps">Firefox</span> <span class="hps">oferece uma arquitetura</span> <span class="hps">muito rica e</span> <span class="hps">flexível, que</span> <span class="hps">permite que os desenvolvedores</span> <span class="hps">de extensões</span> <span class="hps">possam adicionar</span> <span class="hps">recursos avançados</span><span>,</span> <span class="hps">personalizar</span> <span class="hps">a experiência do usuário</span><span> e </span><span class="hps">substituir completamente</span> <span class="hps">ou remover</span> <span class="hps">partes do</span> <span class="hps">browser.</span></span> <span id="result_box" lang="pt"><span class="hps">O repositório de</span> <a href="https://addons.mozilla.org/" title="https://addons.mozilla.org/"><span class="hps atn">add-</span><span>ons</span> <span class="hps">da Mozilla</span></a> <span class="hps atn">(</span><span>AMO)</span> <span class="hps">possui uma extensa</span> <span class="hps">série de extensões</span> <span class="hps">com uma grande variedade</span> <span class="hps">de funções:</span> <span class="hps">a filtragem de conteúdo</span> <span class="hps atn">(</span></span><a class="link-https" href="https://addons.mozilla.org/en-US/firefox/addon/1865" title="https://addons.mozilla.org/en-US/firefox/addon/1865">AdBlock Plus</a>, <a class="link-https" href="https://addons.mozilla.org/en-US/firefox/addon/722" title="https://addons.mozilla.org/en-US/firefox/addon/722">NoScript</a><span id="result_box" lang="pt"><span>)</span><span>, a interação</span> <span class="hps">de aplicações web</span> <span class="hps">(</span></span><a class="link-https" href="https://addons.mozilla.org/en-US/firefox/addon/3615" title="https://addons.mozilla.org/en-US/firefox/addon/3615">Delicious Bookmarks</a>, <a class="link-https" href="https://addons.mozilla.org/en-US/firefox/addon/5202" title="https://addons.mozilla.org/en-US/firefox/addon/5202">eBay Companion</a><span id="result_box" lang="pt"><span class="hps">)</span><span>, desenvolvimento</span> <span class="hps">web</span> <span class="hps">(</span></span>(<a class="link-https" href="https://addons.mozilla.org/en-US/firefox/addon/6622" title="https://addons.mozilla.org/en-US/firefox/addon/6622">DOM Inspector</a>, <a class="link-https" href="https://addons.mozilla.org/en-US/firefox/addon/1843" title="https://addons.mozilla.org/en-US/firefox/addon/1843">Firebug</a><span id="result_box" lang="pt"><span>)</span> <span class="hps">e</span> <span class="hps">proteção à criança</span> <span class="hps atn">(</span></span><a class="link-https" href="https://addons.mozilla.org/en-US/firefox/addon/5881" title="https://addons.mozilla.org/en-US/firefox/addon/5881">Glubble For Families</a><span id="result_box" lang="pt"><span class="hps">)</span><span>.</span> <span class="hps">Estes são</span> <span class="hps">extensões</span> <span class="hps">complexas</span> <span class="hps">muito avançada e</span><span>,</span> <span class="hps">e você vai aprender</span> <span class="hps">mais</span> <span class="hps">do que é preciso</span> <span class="hps">para criar</span> <span class="hps">extensões</span> <span class="hps">como estas</span> <span class="hps atn">(</span><span>Glaxstar</span> <span class="hps">realmente</span> <span class="hps">trabalhou em</span> <span class="hps">três</span> <span class="hps">das listadas</span><span>)</span><span>.</span></span></p> -<p><span id="result_box" lang="pt"><span class="hps">Extensões</span> <span class="hps">agora</span> <span class="hps">existem em</span> <span class="hps">três</span> <span class="hps">formas</span> <span class="hps">diferentes: </span></span><a class="link-https" href="https://addons.mozilla.org/en-US/developers/builder" title="https://addons.mozilla.org/en-US/developers/builder">SDK Add-ons</a><span id="result_box" lang="pt"> <span class="hps">(também conhecidos como</span> <span class="hps">Jetpacks</span><span>)</span><span>, extensões</span> <span class="hps">bootstrapped</span> <span class="hps">e extensões</span> <span class="hps">tradicionais.</span> <span class="hps">Se</span> <span class="hps">você está apenas</span> <span class="hps">começando</span> <span class="hps">a desenvolver</span> <span class="hps atn">add-</span><span>ons,</span> <span class="hps">o</span> <span class="hps">SDK</span> <span class="hps atn">Add-</span><span>ons</span> <span class="hps">oferece uma</span> <span class="hps">ótima maneira de criar</span> <span class="hps">rapidamente</span> <span class="hps">as simples</span> <span class="hps">e construir</span> <span class="hps">sobre eles.</span> <span class="hps">Este</span> <span class="hps">tutorial</span> <span class="hps">concentra-se em</span> <span class="hps">extensões</span> <span class="hps">tradicionais</span><span>, que são criados</span> <span class="hps">de forma diferente.</span> <span class="hps">Extensões de</span> <span class="hps">bootstrap</span> <span class="hps">são um passo acima</span> <span class="hps">dos tradicionais</span> <span class="hps">em termos de complexidade</span><span>, de modo</span> <span class="hps">que você deve</span> <span class="hps">passar por este</span> <span class="hps">tutorial</span> <span class="hps">antes de dar</span><span>-lhes uma tentativa</span><span>.</span></span></p> -<p><span id="result_box" lang="pt"><span class="hps">Vamos começar</span> <span class="hps">o</span> <span class="hps">tutorial</span> <span class="hps">pela análise de uma</span> <span class="hps">extensão</span> <span class="hps">muito simples.</span></span></p> -<h2 id="Extensão_Hello_World">Extensão "Hello World"</h2> -<p><span id="result_box" lang="pt"><span class="hps">Nossas extensões</span> <span class="hps">de amostra</span> <span class="hps">e este tutorial</span> <span class="hps">em geral</span> <span class="hps">são voltados para</span> <span class="hps">versões modernas do</span> <span class="hps">Firefox</span><span>, mas a maioria</span> <span class="hps">funciona</span> <span class="hps">em versões mais antigas</span> <span class="hps">também.</span></span></p> -<p><span id="result_box" lang="pt"><span class="hps">Vamos agora</span> <span class="hps">começar com um</span>a extensão <span class="hps">"Hello World"</span> <span class="hps">básica.</span> <span class="hps">Vamos começar</span> <span class="hps">a instalar.</span> <span class="hps">Clique no link</span> <span class="hps">abaixo.</span></span></p> -<p><a href="/@api/deki/files/5139/=xulschoolhello1.xpi" title="https://developer.mozilla.org/@api/deki/files/5139/=xulschoolhello1.xpi">Instalar "Hello World"</a></p> -<p><span id="result_box" lang="pt"><span class="hps">Isto poderá</span> <span class="hps">desencadear</span> <span class="hps">uma instalação</span> <span class="hps">ou</span> <span class="hps">um download de arquivo</span><span>, dependendo do</span> <span class="hps">tipo de conteúdo</span> <span class="hps">que servidor</span> <span class="hps">web</span> <span class="hps">está usando</span> <span class="hps">para o arquivo.</span> <span class="hps">O tipo de conteúdo</span> <span class="hps">apropriado</span> <span class="hps">para acionar</span> <span class="hps">uma instalação</span> <span class="hps">é</span> </span><strong>application/x-<strong>xpinstall</strong></strong><span id="result_box" lang="pt"><span>.</span> <span class="hps">No caso</span> <span class="hps">desta</span> <span class="hps">wiki,</span> <span class="hps">o tipo de conteúdo</span> <span class="hps">não</span> <span class="hps">está configurado corretamente</span> <span class="hps">e</span> <span class="hps">um download de arquivo</span> <span class="hps">deve ocorrer.</span></span></p> -<p><span id="result_box" lang="pt"><span class="hps">e</span> <span class="hps">o tipo de conteúdo</span> <span class="hps">está configurado corretamente</span><span>, provavelmente você vai</span> <span class="hps">ser notificado</span> <span class="hps">de que o site</span> <span class="hps">não</span> <span class="hps">é permitido instalar</span> <span class="hps atn">add-</span><span>ons</span> <span class="hps">no</span> <span class="hps">Firefox.</span> <span class="hps">Esta é uma</span> <span class="hps">barreira de segurança</span> <span class="hps">que impede</span> <span class="hps">locais</span> <span class="hps">de</span> <span class="hps">instalação de extensões</span> <span class="hps">sem</span> <span class="hps">o consentimento do usuário</span><span>.</span> <span class="hps">É necessário</span> <span class="hps">porque as extensões</span> <span class="hps">maliciosas</span> <span class="hps">podem fazer o mesmo</span> <span class="hps">nível de dano</span> <span class="hps">como qualquer</span> <span class="hps">programa malicioso</span><span>:</span> <span class="hps">o roubo</span> <span class="hps">de dados,</span> <span class="hps">apagar</span> <span class="hps">ou substituir</span> <span class="hps">os arquivos</span><span>,</span> <span class="hps">e fazendo com que</span> <span class="hps">o comportamento indesejado</span> <span class="hps">em geral.</span> </span><a class="link-https" href="https://addons.mozilla.org/" title="https://addons.mozilla.org/">AMO</a><span id="result_box" lang="pt"> <span class="hps">é o único local</span> <span class="hps atn">pré-</span><span>permitido porque</span> <span class="hps">todos</span> os add-ons <span class="hps">publicados</span> <span class="hps">na</span> <span class="hps">AMO</span> <span class="hps">passaram por um</span> <span class="hps">processo de revisão que</span> <span class="hps">inclui</span> <span class="hps">verificações de segurança.</span></span></p> -<p><span id="result_box" lang="pt"><span class="hps">Depois de baixar</span> <span class="hps">o arquivo, você</span> <span class="hps">pode arrastar e</span> <span class="hps">soltá-lo em</span> <span class="hps">área de conteúdo do</span> <span class="hps">Firefox,</span> <span class="hps">ea instalação</span> <span class="hps">deve começar.</span></span></p> -<p><span id="result_box" lang="pt"><span class="hps">Você verá uma</span> <span class="hps">janela</span> <span class="hps">dizendo que você</span> <span class="hps">está prestes a</span> <span class="hps">instalar uma extensão</span><span>,</span> <span class="hps">com algumas informações</span> <span class="hps">adicionais, tais</span> <span class="hps">como o nome</span> <span class="hps">do autor.</span> <span class="hps">Você verá</span> <span class="hps">uma mensagem dizendo</span> <span class="hps">que o autor não</span> <span class="hps">pode ser verificado.</span> <span class="hps">Somente</span> <span class="hps">extensões</span> <span class="hps">assinados com</span> <span class="hps">um certificado digital</span> <span class="hps">pode</span> <span class="hps">verificar a</span> <span class="hps">autoria</span><span>.</span> <span class="hps">Extensões</span> <span class="hps">assinadas</span> <span class="hps">são raras, mas</span> <span class="hps">vamos ver como</span> <span class="hps">a assiná-la</span> <span class="hps">mais tarde.</span></span></p> -<p><span id="result_box" lang="pt"><span class="hps">Clique no</span> <span class="hps">botão Instalar agora.</span> <span class="hps">Após a instalação da extensão</span><span class="hps">, você</span> <span class="hps">será solicitado a</span> <span class="hps">reiniciar o Firefox</span><span>.</span> <span class="hps">Instalar, desinstalar</span><span>,</span> <span class="hps">ativar e desativar</span> <span class="hps atn">add-</span><span>ons</span> <span class="hps">requerem</span> <span class="hps">uma reinicialização</span> <span class="hps">para completar</span><span>,</span> <span class="hps">com a exceção de</span> <span class="hps">plugins</span> <span class="hps">NPAPI</span><span>, extensões</span> <span class="hps">SDK</span> <span class="hps atn">Add-</span><span>ons</span> <span class="hps">e extensões</span> <span class="hps">bootstrap</span><span>.</span> <span class="hps">Este é um ponto</span> <span class="hps">importante</span> <span class="hps">para se ter em mente</span> <span class="hps">se você está construindo</span> <span class="hps">uma extensão que</span> <span class="hps">manipula</span> <span class="hps">outras extensões</span> <span class="hps">ou temas</span><span>.</span></span></p> -<p><span id="result_box" lang="pt"><span class="hps">Depois de instalar</span><span>, olhe para a</span> <span class="hps">janela principal do</span> <span class="hps">Firefox</span> <span class="hps">e veja se você</span> <span class="hps">notar algo</span> <span class="hps">diferente.</span></span></p> -<p><span id="result_box" lang="pt"><span class="hps">Você viu isso</span><span>?</span> <span class="hps">Há</span> <span class="hps">um novo menu</span> <span class="hps">no menu principal</span><span class="atn">, denominado "Hello World</span><span>!"</span><span>.</span> <span class="hps">Se você abrir</span> <span class="hps">o menu e</span><span>, em seguida,</span> <span class="hps">o item de menu</span> <span class="hps">abaixo, você</span> <span class="hps">verá uma</span> <span class="hps">mensagem de alerta</span><span>.</span> <span class="hps">Clique</span> <span class="hps">no botão</span> <span class="hps">OK</span> <span class="hps">para fechá-la</span><span>.</span></span></p> -<p><img alt="" class="internal" src="https://developer.mozilla.org/@api/deki/files/4138/=helloworldalert.png" style="width: 326px; height: 126px;"></p> -<p><span id="result_box" lang="pt"><span class="hps">Isso é tudo que</span> <span class="hps">a extensão</span> <span class="hps">faz.</span> <span class="hps">Agora vamos</span> <span class="hps">dar uma olhada</span> <span class="hps">nisso.</span></span></p> -<h2 id="Conteúdos_da_Extensão"><span class="short_text" id="result_box" lang="pt"><span class="hps">Conteúdo</span></span>s da Extensão</h2> -<p><span id="result_box" lang="pt"><span class="hps">Você deve ter notado</span> <span class="hps">que</span> <span class="hps">o arquivo de extensão</span> <span class="hps">que você instalou</span> <span class="hps">tem o nome </span></span><em>xulschoolhello1.xpi</em>. <a href="/en/XPI" title="en/XPI">XPI</a> (pronunciado "zippy") <span id="result_box" lang="pt"><span class="hps">significa</span> <span class="hps atn">Cross-</span><span>Platform</span> <span class="hps">Installer</span><span>,</span> <span class="hps">porque o mesmo</span> <span class="hps">arquivo de instalação</span> <span class="hps">pode funcionar</span> <span class="hps">em todas as plataformas</span> que o <span class="hps">Firefox</span> <span class="hps">suporta.</span> <span class="hps">XPIs</span> <span class="hps">são simplesmente</span> <span class="hps">arquivos ZIP</span><span>, mas</span> <span class="hps">Firefox</span> <span class="hps">reconhece a</span> <span class="hps">extensão</span> <span class="hps">XPI</span> <span class="hps">e desencadeia</span> <span class="hps">o processo de instalação</span> <span class="hps">quando um arquivo</span> <span class="hps">XPI</span> <span class="hps">é carregado.</span></span></p> -<p><span id="result_box" lang="pt"><span class="hps">Olhe para</span> <span class="hps">o arquivo</span> <span class="hps">XPI</span> <span class="hps">que você</span> <span class="hps">precisa baixá-lo</span> <span class="hps">em primeiro lugar,</span> <span class="hps">não</span> <span class="hps">instale ele.</span> <span class="hps">Se o servidor</span> <span class="hps">aciona</span> <span class="hps">uma instalação</span> <span class="hps">ao clicar em</span> <span class="hps">um link ou botão</span><span>,</span> <span class="hps">o que você</span> <span class="hps">precisa fazer</span> <span class="hps">é clicar com</span> <span class="hps">o botão direito</span> <span class="hps">sobre o</span> <span class="hps">link de instalação</span> <span class="hps">e escolha</span> <span class="hps">a opção <em>Salvar</em></span><em> <span class="hps">link como...</span></em> .</span></p> -<div class="almost_half_cell" id="gt-res-content"> - <div dir="ltr" style="zoom: 1;"> - <span id="result_box" lang="pt"><span class="hps">Descompacte o arquivo</span> <span class="hps">XPI</span> <span class="hps">em um local</span> <span class="hps">conveniente.</span> <span class="hps">Emita o seguinte comando</span> <span class="hps">para descompactar o arquivo</span> <span class="hps">no Linux ou</span> <span class="hps">Mac</span> <span class="hps">OS</span> <span class="hps">X:</span></span></div> -</div> -<pre class="syntaxbox">unzip xulschoolhello1.xpi -d xulschoolhello1 -</pre> -<p><span id="result_box" lang="pt"><span class="hps">No Windows,</span> <span class="hps">você pode alterar a</span> <span class="hps">extensão do arquivo de</span> <span class="hps">xpi</span> <span class="hps">para</span> <span class="hps">zip</span><span>,</span> <span class="hps">ou abra o arquivo</span> <span class="hps">diretamente,</span> <span class="hps">descompactá-lo</span><span>, usando uma ferramenta</span> <span class="hps">ZIP.</span></span></p> -<p><span id="result_box" lang="pt"><span class="hps">Você deverá ver a</span> <span class="hps">seguinte estrutura de diretórios</span><span>:</span></span></p> -<ul> - <li>xulschoolhello1 - <ul> - <li>chrome.manifest</li> - <li>install.rdf</li> - <li>content - <ul> - <li>browserOverlay.xul</li> - <li>browserOverlay.js</li> - </ul> - </li> - <li>skin - <ul> - <li>browserOverlay.css</li> - </ul> - </li> - <li>locale - <ul> - <li>en-US - <ul> - <li>browserOverlay.dtd</li> - <li>browserOverlay.properties</li> - </ul> - </li> - </ul> - </li> - </ul> - </li> -</ul> -<p><span id="result_box" lang="pt"><span class="hps">Isso é</span> um monte<span class="hps"> de arquivos</span> <span class="hps">para</span> <span class="hps">algo</span> <span class="hps">tão simples!</span> <span class="hps">Na próxima seção</span><span>, vamos</span> <span class="hps">examinar</span> <span class="hps">esses arquivos</span> <span class="hps">e ver o que</span> <span class="hps">eles fazem.</span></span></p> -<p>{{ PreviousNext("XUL/School_tutorial/Introdução", "XUL/School_tutorial/Os_Essenciais_de_uma_Extensao") }}</p> -<p><span style="font-size: small;">Este tutorial foi gentilmente doado à Mozilla pelo Appcoast.</span></p> diff --git a/files/pt-br/xul/school_tutorial/index.html b/files/pt-br/xul/school_tutorial/index.html deleted file mode 100644 index 2f5b990b15..0000000000 --- a/files/pt-br/xul/school_tutorial/index.html +++ /dev/null @@ -1,72 +0,0 @@ ---- -title: Tutorial da Escola XUL -slug: XUL/School_tutorial -tags: - - Add-ons - - Complementos - - Extensões - - Referências - - Tutoriais - - XUL -translation_of: Archive/Add-ons/Overlay_Extensions/XUL_School ---- -<p>Escola XUL é um compreensivo tutorial de desenvolvimento de add-ons, focalizando em desenvolvimento de extensões para o Firefox. É recomendado que você lesse pelo menos uma vez tudo, do princípio ao fim. Enquanto o Firefox muda rapidamente, o conteúdo neste seminário deverá ser atualizado e válido.</p> - -<dl> - <dt>Introdução</dt> - <dd> - <ul> - <li><a href="/pt-BR/docs/XUL/School_tutorial/Introdução" title="XUL/School_tutorial/Introduction">Introdução</a></li> - <li><a href="/pt-BR/docs/XUL/School_tutorial/Comecando_com_as_Extensoes_do_Firefox" title="XUL/School_tutorial/Getting Started with Firefox Extensions">Começando com as Extensões do Firefox</a></li> - <li><a href="https://developer.mozilla.org/pt-BR/docs/XUL/School_tutorial/Os_Essenciais_de_uma_Extensao" title="XUL/School_tutorial/The Essentials of an Extension">Os Essenciais de uma Extensão</a></li> - <li><a href="/en-US/docs/XUL/School_tutorial/Setting_Up_a_Development_Environment" title="XUL/School_tutorial/Setting Up a Development Environment">Montando um Ambiente de Desenvolvimento</a></li> - <li><a href="/en-US/docs/XUL/School_tutorial/JavaScript_Object_Management" title="XUL/School_tutorial/JavaScript Object Management">Gerenciamento de Objeto Javascript</a></li> - </ul> - </dd> - <dt>Funcionalidade básica</dt> - <dd> - <ul> - <li><a href="/en-US/docs/XUL/School_tutorial/Adding_menus_and_submenus" title="XUL/School_tutorial/Adding menus and submenus">Adicionando menus e sub-menus</a></li> - <li><a href="/en-US/docs/XUL/School_tutorial/Adding_Toolbars_and_Toolbar_Buttons" title="XUL/School_tutorial/Adding Toolbars and Toolbar Buttons">Adicionando Barras de Ferramentas e Botões da Barra de Ferramentas</a></li> - <li><a href="/en-US/docs/XUL/School_tutorial/Adding_Events_and_Commands" title="XUL/School_tutorial/Adding Events and Commands">Adicionando eventos e comandos</a></li> - <li><a href="/en-US/docs/XUL/School_tutorial/Adding_windows_and_dialogs" title="XUL/School_tutorial/Adding windows and dialogs">Adicionando janelas e diálogos</a></li> - <li><a href="/en-US/docs/XUL/School_tutorial/Adding_sidebars" title="XUL/School_tutorial/Adding sidebars">Adicionando barras laterais</a></li> - <li><a href="/en-US/docs/XUL/School_tutorial/User_Notifications_and_Alerts" title="XUL/School_tutorial/User Notifications and Alerts">Notificações de usuário e alertas</a></li> - </ul> - </dd> - <dt>Funcionalidade de intermediário</dt> - <dd> - <ul> - <li><a href="/en-US/docs/XUL/School_tutorial/Intercepting_Page_Loads" title="XUL/School_tutorial/Intercepting Page Loads">Interceptando carregamento de páginas</a></li> - <li><a href="/en-US/docs/XUL/School_tutorial/Connecting_to_Remote_Content" title="XUL/School_tutorial/Connecting to Remote Content">Conectando a Conteúdo Remoto</a></li> - <li><a href="/en-US/docs/XUL/School_tutorial/Handling_Preferences" title="XUL/School_tutorial/Handling Preferences">Controlando</a> <a href="/en-US/docs/XUL/School_tutorial/Handling_Preferences" title="XUL/School_tutorial/Handling Preferences">Preferências</a></li> - <li><a href="/en-US/docs/XUL/School_tutorial/Local_Storage" title="XUL/School_tutorial/Local Storage">Armazenamento Local</a></li> - </ul> - </dd> - <dt>Tópicos avançados</dt> - <dd> - <ul> - <li><a href="/en-US/docs/XUL/School_tutorial/The_Box_Model" title="XUL/School_tutorial/The Box Model">O Modelo de Caixa</a></li> - <li><a href="/en-US/docs/XUL/School_tutorial/XPCOM_Objects" title="XUL/School_tutorial/XPCOM Objects">Objetos XPCOM</a></li> - <li><a href="/en-US/docs/XUL/School_tutorial/Observer_Notifications" title="XUL/School_tutorial/Observer Notifications">Notificações de observador</a></li> - <li><a href="/en-US/docs/XUL/School_tutorial/Custom_XUL_Elements_with_XBL" title="XUL/School_tutorial/Custom XUL Elements with XBL">Elementos XUL Customizados com XBL</a></li> - <li><a href="/en-US/docs/XUL/School_tutorial/Mozilla_Documentation_Roadmap" title="XUL/School_tutorial/Mozilla Documentation Roadmap">Documentação de Mozilla Roadmap</a></li> - <li><a href="/en-US/docs/XUL/School_tutorial/Useful_Mozilla_Community_Sites" title="XUL/School_tutorial/Useful Mozilla Community Sites">Sites da Comunidade Mozilla</a></li> - </ul> - </dd> - <dt>Apêndices</dt> - <dd> - <ul> - <li><a href="/en-US/docs/XUL/School_tutorial/Appendix_A:_Add-on_Performance" title="XUL/School_tutorial/Appendix A: Add-on Performance">Apêndice A: Somar-em Desempenho</a></li> - <li><a href="/en-US/docs/XUL/School_tutorial/Appendix_B:_Install_and_Uninstall_Scripts" title="XUL/School_tutorial/Appendix B: Install and Uninstall Scripts">Apêndice B: Instale e Desinstale Manuscritos</a></li> - <li><a href="/en-US/docs/XUL/School_tutorial/Appendix_C:_Avoid_using_eval_in_Add-ons" title="XUL/School_tutorial/Appendix C: Avoid using eval in Add-ons">Apêndice C: Evitando usar eval dentro Somar-ons</a></li> - <li><a href="/en-US/docs/XUL/School_tutorial/Appendix_D:_Loading_Scripts" title="XUL/School_tutorial/Appendix D: Loading Scripts">Apêndice D: Manuscritos carregando</a></li> - <li><a href="/en-US/docs/XUL/School_tutorial/DOM_Building_and_HTML_Insertion" title="XUL/School_tutorial/Appendix E: DOM Building and HTML Insertion">Apêndice E: DOM Building e Inserção de HTML</a></li> - <li><a href="/en-US/docs/XUL/School_tutorial/Appendix_F:_Monitoring_DOM_changes" title="XUL/School_tutorial/Appendix F: Monitoring DOM changes">Apêndice F: Mudanças de DOM monitorando</a></li> - </ul> - </dd> -</dl> - -<p>O Projeto Escola XUL foi desenvolvido pela <a href="http://appcoast.com/" title="http://appcoast.com/">Appcoast</a>. O projeto é publicado aqui seguindo suas <a href="/Project:Copyrights" title="https://developer.mozilla.org/Project:Copyrights">licenças de compartilhamento</a>. Seus conteúdos foram modificados da fonte original como necessário.</p> - -<p>Nota: Os artigos ainda estão sendo traduzidos para PT-BR (Português do Brasil).</p> diff --git a/files/pt-br/xul/school_tutorial/introdução/index.html b/files/pt-br/xul/school_tutorial/introdução/index.html deleted file mode 100644 index 538b7663b9..0000000000 --- a/files/pt-br/xul/school_tutorial/introdução/index.html +++ /dev/null @@ -1,40 +0,0 @@ ---- -title: Introdução -slug: XUL/School_tutorial/Introdução -tags: - - Introdução - - XUL -translation_of: Archive/Add-ons/Overlay_Extensions/XUL_School/Introduction ---- -<div> - {{Next("XUL/School_tutorial/Comecando_com_as_Extensoes_do_Firefox")}}</div> -<div> - </div> -<div class="almost_half_cell" id="gt-res-content"> - <div dir="ltr" style="zoom: 1;"> - <span class="short_text" id="result_box" lang="pt"><span class="hps">Bem-vindo ao</span> Tutorial da Escola XUL<span>!</span></span></div> -</div> -<p><span id="result_box" lang="pt"><span class="hps">Este</span> <span class="hps">tutorial</span> <span class="hps">é destinado a ser</span> <span class="hps">o</span> <span class="hps">trampolim</span> <span class="hps">que</span> <span class="hps">irá transformá-lo</span> <span class="hps">em um</span> <span class="hps">desenvolvedor</span> <span class="hps">profissional</span> de extensões do Firefox <span class="hps">em pouco tempo.</span> <span class="hps">Colocamos</span> <span class="hps">anos de experiência</span> <span class="hps">XUL</span> <span class="hps">nele</span><span>, oferecendo</span> <span class="hps">diversas soluções</span> <span class="hps">para os problemas dos</span> <span class="hps">desenvolvedores de extensões</span><span class="hps">.</span></span></p> -<p><span class="short_text" id="result_box" lang="pt"><span class="hps">O Tutorial da Escola XUL</span>(XUL School Tutorial) <span class="hps">foi criado pelo</span></span> <a href="http://appcoast.com/" title="http://appcoast.com/">Appcoast</a> (formerly Glaxstar), <span id="result_box" lang="pt"><span class="hps">uma das poucas</span> <span class="hps">empresas dedicadas</span> <span class="hps">à construção de</span> <span class="hps">extensões de alta qualidade no Firefox</span><span class="hps">.</span> <span class="hps">Uma equipe</span> <span class="hps">de mais de</span> <span class="hps">uma dúzia de</span> <span class="hps">desenvolvedores</span> <span class="hps">XUL</span> <span class="hps">forma</span> <span class="hps">Glaxstar</span> <span class="hps">no</span> <span class="hps">momento em que este</span> <span class="hps">tutorial</span> <span class="hps">foi criado</span><span>,</span> <span class="hps">e as experiências</span> <span class="hps">combinadas de</span> <span class="hps">anos criando</span> <span class="hps">extensões do Firefox</span> <span class="hps">são refletidas</span> <span class="hps">aqui.</span></span></p> -<p><span id="result_box" lang="pt"><span class="hps">Com este</span> <span class="hps">tutorial</span> <span class="hps">você vai aprender</span> <span class="hps">como desenvolver</span> <span class="hps">extensões do Firefox</span><span>.</span> <span class="hps">Você vai</span> <span class="hps">aprender a fazer</span> <span class="hps">rapidamente as tarefas mais</span> <span class="hps">comuns no desenvolvimento de</span> <span class="hps">extensão</span><span>, comparando</span> <span class="hps">várias abordagens diferentes para</span> <span class="hps">resolvê-los.</span> <span class="hps">Na maioria dos casos</span> <span class="hps">nós vamos fornecer</span> <span class="hps">exemplos de código</span>s <span class="hps">que você pode facilmente</span> <span class="hps">copiar e</span> <span class="hps">adaptar às suas necessidades</span><span>, bem como</span> <span class="hps">alguns trabalhos de exemplo</span><span class="hps">.</span> <span class="hps">O</span> <span class="hps">tutorial</span> <span class="hps">tem como objetivo ser</span> <span class="hps">o mais breve possível</span><span>,</span> </span><span id="result_box" lang="pt"><span class="hps alt-edited">frequentemente</span> <span class="hps alt-edited">recorrendo à</span> <span class="hps">documentação</span> <span class="hps">Mozilla</span> <span class="hps">para</span> <span class="hps">informações mais detalhadas</span></span><span id="result_box" lang="pt"><span class="hps">.</span> <span class="hps">Você pode</span> <span class="hps">pensar nisso como</span> <span class="hps">um guia rápido para</span> <span class="hps">o mundo</span> <span class="hps">expansivo que</span> <span class="hps">é a plataforma</span> <span class="hps">Mozilla.</span> <span class="hps">A maioria dos</span> <span class="hps">links nesta</span> <span class="hps">documentação</span> <span class="hps">são feitos para serem</span> <span class="hps">clicados</span> <span class="hps">e ler.</span></span></p> -<p><span id="result_box" lang="pt"><span class="hps">Vamos começar com</span> <span class="hps">uma breve introdução a</span> <span class="hps">alguns conceitos-chave</span><span>,</span> <span class="hps">no caso de você</span> <span class="hps">não</span> <span class="hps">estiver familiarizado com o</span> <span class="hps">Mozilla</span> <span class="hps">e</span> <span class="hps">Firefox.</span></span></p> -<h2 id="Mozilla_e_Firefox">Mozilla e Firefox</h2> -<p>O termo <a href="http://en.wikipedia.org/wiki/Mozilla" title="http://en.wikipedia.org/wiki/Mozilla">Mozilla</a> <span class="short_text" id="result_box" lang="pt"><span class="hps">pode ser</span> <span class="hps">usado para se referir</span> <span class="hps">a vários conceitos</span></span>:<span class="short_text" id="result_box" lang="pt"><span class="hps"> o projeto</span> <span class="hps">Mozilla</span></span>, a <a href="http://en.wikipedia.org/wiki/Mozilla_Foundation" title="http://en.wikipedia.org/wiki/Mozilla_Foundation">Mozilla Foundation</a>, a <a href="http://en.wikipedia.org/wiki/Mozilla_Corporation" title="http://en.wikipedia.org/wiki/Mozilla_Corporation">Mozilla Corporation</a> e o antigo <a href="http://en.wikipedia.org/wiki/Mozilla_Application_Suite" title="http://en.wikipedia.org/wiki/Mozilla_Application_Suite">Mozilla browser</a>. <span id="result_box" lang="pt"><span class="hps alt-edited">Até mesmo</span> <span class="hps">Firefox</span> <span class="hps alt-edited">é referido às vezes</span> <span class="hps atn">como "</span><span>Mozilla</span><span>"</span><span>.</span> <span class="hps">Se você</span> <span class="hps">não estiver familiarizado com</span> <span class="hps">esses</span> <span class="hps">termos</span><span>, é bom</span> <span class="hps">que você tome</span> <span class="hps">algum tempo e aprender</span> <span class="hps">um pouco sobre a</span> <span class="hps">Mozilla.</span> <span class="hps">Isso ajudará você a</span> <span class="hps">entender a cultura</span> <span class="hps">que envolve</span> <span class="hps">a comunidade</span> <span class="hps">Mozilla.</span></span></p> -<p><span class="short_text" id="result_box" lang="pt"><span class="hps">Mozilla</span> <span class="hps">gerou</span> <span class="hps">vários</span></span> <a href="http://www.mozilla.org/projects/" title="http://www.mozilla.org/projects/">produtos e projetos</a>, <span id="result_box" lang="pt"><span class="hps">sendo o mais</span> <span class="hps">notável</span> <span class="hps">o navegador Mozilla</span> <span class="hps">Firefox.</span> <span class="hps">Firefox</span> <span class="hps">é um dos</span> <span class="hps">mais bem sucedidos</span> <span class="hps">projetos de código aberto</span> <span class="hps">da história,</span> <span class="hps">combinando a</span> <span class="hps">abertura,</span> <span class="hps">padrões de conformidade</span> <span class="hps">e sofisticação</span> <span class="hps">de</span> <span class="hps">open source</span> <span class="hps">com foco na</span> <span class="hps">experiência do usuário e</span> <span class="hps">poderoso</span> <span class="hps">alcance</span> <span class="hps">mais</span> <span class="hps">comumente visto em</span> <span class="hps">empresas</span> <span class="hps">menos</span> <span class="hps">abertos.</span></span></p> -<p><span id="result_box" lang="pt"><span class="hps">A versão 1.0 do</span> <span class="hps">Firefox</span> <span class="hps">foi lançada em</span> <span class="hps">Novembro de 2004,</span> <span class="hps">a versão 2.0</span> <span class="hps">em outubro de 2006</span><span>,</span> <span class="hps">ea versão</span> <span class="hps">3.0</span> <span class="hps">em junho de 2008</span><span>.</span> <span class="hps">Este tutorial foi escrito</span> <span class="hps">após</span> <span class="hps">Firefox 3</span> <span class="hps">foi lançado,</span> <span class="hps">e</span> <span class="hps">foi atualizado</span> <span class="hps">com o tempo.</span> <span class="hps">Enquanto a maioria dos</span> <span class="hps">que ainda deve</span> <span class="hps">trabalhar</span> <span class="hps">para a criação</span> <span class="hps">de extensões do Firefox</span> <span class="hps atn">3 (</span><span>e até mesmo</span> <span class="hps">o Firefox 2</span><span>)</span><span>, é altamente</span> <span class="hps">recomendável que você</span> <span class="hps">vise apoiar</span> <span class="hps">as versões modernas</span> <span class="hps">do Firefox</span><span>,</span> <span class="hps">para</span> <span class="hps">incentivar os usuários a</span> <span class="hps">manter-se atualizado</span> <span class="hps">com</span> <span class="hps">as correções de segurança</span><span>.</span> <span class="hps">Um</span> <span class="hps">lançamento que</span> <span class="hps">é mais do que</span> <span class="hps">6 meses de idade</span> <span class="hps">é provável</span> <span class="hps">vulnerável a</span> <span class="hps">bugs de segurança</span> <span class="hps">publicados.</span></span></p> -<p><span id="result_box" lang="pt"><span class="hps">Firefox</span> <span class="hps">e outras aplicações</span> <span class="hps">da Mozilla</span> <span class="hps">pode ser visto como</span> <span class="hps">composto de duas partes</span> <span class="hps">distintas:</span> <span class="hps">uma</span> <span class="hps">camada de</span> <span class="hps">interface de usuário que</span> <span class="hps">é diferente</span> <span class="hps">para cada projeto</span><span>,</span> <span class="hps">e uma plataforma</span> <span class="hps">comum</span> <span class="hps">sobre a qual</span> <span class="hps">a camada de interface</span> <span class="hps">é construída</span><span>.</span> <span class="hps">A interface de usuário</span> <span class="hps">é construído</span> <span class="hps">com a tecnologia</span> <span class="hps">conhecida como </span></span><a href="/en-US/docs/XUL" title="XUL">XUL</a>, <span class="short_text" id="result_box" lang="pt"><span class="hps">e</span> <span class="hps">a plataforma</span> <span class="hps">é conhecido como</span></span> <a href="/en-US/docs/XULRunner" title="XULRunner">XULRunner</a>.</p> -<h2 id="XUL">XUL</h2> -<p><a href="/en-US/docs/XUL" title="XUL">XUL</a> (pronunciado "zool") <span id="result_box" lang="pt"><span class="hps">é uma das muitas</span> <span class="hps">tecnologias utilizadas</span> <span class="hps">para a criação de</span> <span class="hps">produtos e extensões</span> <span class="hps">baseados em</span> <span class="hps">Mozilla.</span> <span class="hps">É</span> <span class="hps">apenas uma</span> <span class="hps">parte da paisagem</span> <span class="hps">de desenvolvimento,</span> <span class="hps">mas dado que</span> <span class="hps">é praticamente</span> <span class="hps">exclusivo</span> <span class="hps">para</span> <span class="hps">Mozilla,</span> <span class="hps">que tende a</span> <span class="hps">ser utilizado para identificar</span> <span class="hps">todo o desenvolvimento</span> <span class="hps">relacionado</span> <span class="hps">Mozilla.</span> <span class="hps">Às vezes você</span> <span class="hps">vai ler</span> <span class="hps">termos como</span> <span class="hps">"aplicações</span> <span class="hps">XUL</span><span class="atn">" e "</span><span>extensões</span><span>"</span> <span class="hps">XUL</span><span>, mas raramente</span> <span class="hps">eles</span> <span class="hps">se referem a</span> <span class="hps">projetos que são</span> <span class="hps">construídos</span> <span class="hps">exclusivamente</span> <span class="hps">com</span> <span class="hps">XUL</span><span>.</span> <span class="hps">Isso normalmente significa</span> <span class="hps">que os projetos</span> <span class="hps">foram construídos</span> <span class="hps">usando</span> <span class="hps">tecnologias Mozilla</span><span>.</span> <span class="hps alt-edited">Até mesmo</span> <span class="hps">este</span> <span class="hps">projeto, chamado</span> <span class="hps">Escola</span> <span class="hps">XUL</span><span>,</span> <span class="hps">abrange</span> <span class="hps">várias outras tecnologias</span> <span class="hps">como JavaScript</span><span>, CSS,</span> <span class="hps">XBL</span> <span class="hps">e</span> <span class="hps">XPCOM</span><span>.</span></span></p> -<h2 id="XULRunner">XULRunner</h2> -<p><a href="/en-US/docs/XULRunner" title="XULRunner">XULRunner</a> inclui o <a href="/en-US/docs/Gecko" title="Gecko">Motor de Renderização Gecko</a>, <span id="result_box" lang="pt"><span class="hps">a <a href="/en-US/docs/Necko" title="/en-US/docs/Necko">biblioteca</a></span><a href="/en-US/docs/Necko" title="/en-US/docs/Necko"> <span class="hps">de rede</span> <span class="hps">Necko</span></a><span>,</span> <span class="hps">e</span> <span class="hps">vários outros componentes</span> <span class="hps">que fornecem</span> <span class="hps atn">OS-gerenciamento </span><span>independente de</span> <span class="hps">arquivo</span><span>, acessibilidade e</span> <span class="hps">localização</span><span>, entre outros.</span> <span class="hps">É esta</span> <span class="hps">poderosa</span> <span class="hps">plataforma que</span> <span class="hps">tem permitido um crescimento</span> <span class="hps">tão rápido</span> <span class="hps">da comunidade de desenvolvimento</span> <span class="hps">em torno</span> <span class="hps">Mozilla</span> <span class="hps">e</span> <span class="hps">Firefox.</span></span></p> -<p><span class="short_text" id="result_box" lang="pt"><span class="hps">XULRunner</span> <span class="hps">está disponível em</span> <span class="hps">forma binária</span> <span class="hps">na página</span></span> <a href="/en-US/docs/XULRunner" title="XULRunner">XULRunner</a>, <span id="result_box" lang="pt"><span class="hps">e é a</span> <span class="hps">base para</span> <span class="hps">vários projetos</span><span>, como o</span> <span class="hps">Songbird,</span> <span class="hps">Miro</span> <span class="hps">e</span> <span class="hps">Eudora.</span> <span class="hps">Há uma lista</span> <span class="hps">muito abrangente</span> <span class="hps">de aplicações</span> <span class="hps">XULRunner</span> <span class="hps">no</span></span> <a href="/en-US/docs/XULRunner_Hall_of_Fame" title="XULRunner Hall of Fame">XULRunner Hall da Fama</a>.</p> -<h3 id="Gecko">Gecko</h3> -<p>O <a href="/en-US/docs/Gecko" title="Gecko">Motor Gecko</a> <span id="result_box" lang="pt"><span class="hps">é</span> <span class="hps">a parte do</span> <span class="hps">Firefox</span> <span class="hps">usada para processar</span> <span class="hps">páginas da web e</span> <span class="hps">sua própria</span> <span class="hps">interface de usuário</span><span>.</span></span> <span id="result_box" lang="pt"><span class="hps">Você pode identificar o</span> <span class="hps">nível de compatibilidade</span> <span class="hps">de</span> <span class="hps">padrões web</span> <span class="hps">em</span></span> <a href="http://en.wikipedia.org/wiki/List_of_web_browsers#Gecko-based_browsers" title="http://en.wikipedia.org/wiki/List_of_web_browsers#Gecko-based_browsers">Gecko-navegadores baseados</a> <span class="short_text" id="result_box" lang="pt"><span class="hps">olhando para a string</span></span> <a href="http://en.wikipedia.org/wiki/User_agent" title="http://en.wikipedia.org/wiki/User_agent">User Agent</a>, <span class="short_text" id="result_box" lang="pt"><span class="hps">que deve incluir</span> <span class="hps">a versão</span> <span class="hps">Gecko</span></span>. <span id="result_box" lang="pt"><span class="hps">Versões Gecko</span> <span class="hps">são um pouco</span> <span class="hps">independentes</span> <span class="hps">das versões</span> <span class="hps">do Firefox</span><span>,</span> <span class="hps">e você pode ver</span> <span class="hps">um mapeamento das</span> <span class="hps">versões</span> <span class="hps">do Firefox</span> <span class="hps">e versões</span> <span class="hps">Gecko</span> <span class="hps">na página</span></span> <a href="/en-US/docs/Gecko" title="Gecko">Gecko</a>. <span id="result_box" lang="pt"><span class="hps">A string</span> <span class="hps">User Agent</span> <span class="hps">para</span> <span class="hps">Firefox</span> <span class="hps">no momento</span> <span class="hps">da redação deste artigo</span> <span class="hps">(em</span> <span class="hps">Inglês dos EUA</span><span>, Mac</span> <span class="hps">OS</span> <span class="hps">X</span><span>) é:</span></span></p> -<p>Mozilla/5.0 (Macintosh; Intel Mac OS X 10.7; rv:<strong>7.0.1</strong>) Gecko/20100101 Firefox/7.0.1</p> -<p><span id="result_box" lang="pt"><span class="hps">A seção de</span> <span class="hps">destaque</span> <span class="hps">é a versão</span> <span class="hps">Gecko:</span> <span class="hps">7.0.1</span><span>.</span> <span class="hps">Você pode ler e</span> <span class="hps">copiar a seqüência</span> <span class="hps">de agente do usuário</span> <span class="hps">de</span> <span class="hps">qualquer janela do</span> <span class="hps">Firefox,</span> <span class="hps">escolha</span> <span class="hps">"Ajuda</span><span>> Informações sobre a</span> <span class="hps">Resolução de Problemas"</span> <span class="hps">no menu principal</span><span>.</span></span></p> -<h2 id="Para_o_Tutorial"><span class="short_text" id="result_box" lang="pt"><span class="hps">Para o</span> <span class="hps">Tutorial</span></span></h2> -<p><span id="result_box" lang="pt"><span class="hps">Com</span> <span class="hps">os conceitos básicos</span> <span class="hps">para fora</span> <span class="hps">do caminho,</span> <span class="hps">agora podemos</span> <span class="hps">ir direto para</span> <span class="hps">o desenvolvimento</span> <span class="hps">da extensão.</span> <span class="hps">Você</span> <span class="hps">provavelmente ainda está</span> <span class="hps">se perguntando</span> <span class="hps">o que exatamente é</span> <span class="hps">uma extensão,</span> <span class="hps">o que pode fazer</span><span>,</span> <span class="hps">e como você pode</span> <span class="hps">fazê-los</span><span>.</span> <span class="hps">Bem,</span> <span class="hps">todo este</span> <span class="hps">tutorial</span> <span class="hps">é dedicado paraa explicar</span> <span class="hps">isso para você.</span></span></p> -<p><span id="result_box" lang="pt"><span class="hps">Bem-vindo ao</span> <span class="hps">mundo do desenvolvimento</span> <span class="hps">da extensão.</span> <span class="hps">Agora vamos</span> <span class="hps">chegar a ela.</span></span></p> -<div> - {{Next("XUL/School_tutorial/Comecando_com_as_Extensoes_do_Firefox")}}</div> -<p><small>Este tutorial foi gentilmente doado à Mozilla pelo Appcoast.</small></p> diff --git a/files/pt-br/xul/school_tutorial/os_essenciais_de_uma_extensao/index.html b/files/pt-br/xul/school_tutorial/os_essenciais_de_uma_extensao/index.html deleted file mode 100644 index a733e8a798..0000000000 --- a/files/pt-br/xul/school_tutorial/os_essenciais_de_uma_extensao/index.html +++ /dev/null @@ -1,355 +0,0 @@ ---- -title: Os Essenciais de uma Extensão -slug: XUL/School_tutorial/Os_Essenciais_de_uma_Extensao -tags: - - Chrome - - Firefox - - Mozilla - - Tutorial - - básico - - como fazer - - criação - - essencial - - extensão -translation_of: Archive/Add-ons/Overlay_Extensions/XUL_School/The_Essentials_of_an_Extension ---- -<p>{{ PreviousNext("XUL/School_tutorial/Comecando_com_as_Extensoes_do_Firefox", "XUL_School/Setting_Up_a_Development_Environment") }}</p> -<h2 id="O_arquivo_install.rdf">O arquivo install.rdf</h2> -<p><span class="long_text" id="result_box" lang="pt"><span class="hps">Na última</span> <span class="hps">seção,</span> <span class="hps alt-edited">nós vimos</span> <span class="hps">o conteúdo da</span> <span class="hps">extensão</span> <span class="hps alt-edited">Hello World</span><span>.</span> <span class="hps">Agora</span> <span class="hps">vamos dar uma olhada</span> <span class="hps">em seus arquivos</span> <span class="hps">e códigos</span><span>, começando com</span> <span class="hps">o arquivo</span> <span class="hps">install.rdf</span><span>.</span> <span class="hps">Você pode</span> <span class="hps">abri-lo com</span> <span class="hps">qualquer editor de texto</span><span>.</span></span></p> -<p><span class="long_text" id="result_box" lang="pt"><span class="hps">O arquivo</span> <span class="hps">está formatado</span> <span class="hps alt-edited">em um "seguimento"</span> <span class="hps">especial de</span> <span class="hps">XML</span> <span class="hps">chamado</span></span> <a class="external" href="http://en.wikipedia.org/wiki/Resource_Description_Framework">RDF</a>. <span class="long_text" id="result_box" lang="pt"><span class="hps">RDF</span> <span class="hps">costumava ser o</span> <span class="hps">mecanismo de armazenamento central</span> <span class="hps">para o Firefox,</span> <span class="hps">mas agora está</span> <span class="hps">sendo substituído</span> <span class="hps">por um</span> <span class="hps">sistema de</span> <span class="hps">banco de dados</span> <span class="hps">mais simples.</span> <span class="hps">Vamos discutir</span> <span class="hps">esses dois</span> <span class="hps">sistemas de armazenamento</span> <span class="hps">mais adiante</span> <span class="hps">no</span> <span class="hps">tutorial.</span></span></p> -<p><span class="long_text" id="result_box" lang="pt"><span class="hps">Agora</span> <span class="hps">vamos olhar para</span> <span class="hps">as partes importantes</span> <span class="hps">do arquivo.</span></span></p> -<div class="code panel" style="border-width: 1px;"> - <div class="codeContent panelContent"> - <pre class="code-java"><em:id>helloworld@xulschool.com</em:id></pre> - </div> -</div> -<p><span class="long_text" id="result_box" lang="pt"><span class="hps">Este é</span> <span class="hps">o identificador exclusivo para</span> <span class="hps">a extensão.</span> <span class="hps">Firefox</span> <span class="hps">precisa disso</span> <span class="hps">para distinguir</span> <span class="hps">a sua extensão</span> <span class="hps alt-edited">de</span> <span class="hps">outras extensões</span><span>, por isso é</span> <span class="hps">necessário</span> <span class="hps">que você tenha um</span> <span class="hps">ID que</span> <span class="hps alt-edited">seja único.</span></span></p> -<p><span class="long_text" id="result_box" lang="pt"><span class="hps">Existem dois</span> <span class="hps">padrões aceitos</span> <span class="hps">para ID de</span> <span class="hps alt-edited">complementos</span><span>.</span> <span class="hps">Um deles é o</span> <span class="hps">formato</span> <span class="hps">de e-mail</span> <span class="hps">como</span> <span class="hps">no exemplo</span> <span class="hps alt-edited">Hello World</span><span>, que</span> <span class="hps">deve ser algo como</span></span><span style="color: #0000ff;"><em><nome-do-projeto>@<seudominio></em></span>. <span class="long_text short_text" id="result_box" lang="pt"><span class="hps">A outra</span> <span class="hps">prática comum</span> <span class="hps">é utilizar um</span>a string</span> <a class="external" href="http://en.wikipedia.org/wiki/Uuid">UUID</a> gerada, <span class="long_text" id="result_box" lang="pt"><span class="hps">que é extremamente</span> <span class="hps">improvável</span> <span class="hps alt-edited">que</span> <span class="hps alt-edited">seja duplicada</span><span>.</span> <span class="hps">Sistemas baseados em</span> <span class="hps">Unix</span> <span class="hps">tem uma ferramenta de</span> <span class="hps">linha de comando chamado</span> <span class="hps">uuidgen</span> <span class="hps">que gera</span> <span class="hps">UUIDs</span><span>.</span> <span class="hps">Há também ferramentas</span> <span class="hps">com download disponível para</span> <span class="hps">todas as plataformas que geram</span> <span class="hps">elas</span><span class="hps">.</span> </span><span class="long_text" id="result_box" lang="pt"> <span class="hps">Enquanto o seu</span> <span class="hps">id</span> <span class="hps">tem</span> <span class="hps">alguma exclusividade</span> <span class="hps">para ele,</span> <span class="hps">não há problema em</span> <span class="hps">usar de qualquer</span> <span class="hps">forma</span><span>.</span></span></p> -<div class="code panel" style="border-width: 1px;"> - <div class="codeContent panelContent"> - <pre class="code-java"><em:name>XUL School Hello World</em:name> -<em:description>Welcome to XUL School!</em:description> -<em:version>0.1</em:version> -<em:creator>Appcoast</em:creator> -<span class="code-comment"><em:homepageURL>https://developer.mozilla.org/en/XUL_School</em:homepageURL></span></pre> - </div> -</div> -<p><span id="result_box" lang="pt"><span class="hps">Estes são os dados</span> <span class="hps">que é exibido</span> <span class="hps">antes e depois da</span> <span class="hps">extensão instalada</span><span>,</span> <span class="hps">que</span> <span class="hps">você pode ver</span> <span class="hps">no Gerenciador de</span> <span class="hps atn">Complementos(Add-</span><span>ons).</span> <span class="hps">Existem muitas outras</span> <span class="hps">marcas que</span> <span class="hps">podem ser adicionadas</span><span>,</span> <span class="hps">para</span> <span class="hps">colaboradores e</span> <span class="hps">tradutores.</span></span> <span id="result_box" lang="pt"><span class="hps">A <a href="https://developer.mozilla.org/en/Install_Manifests#type" title="https://developer.mozilla.org/en/Install_Manifests#type">especificação completa</a></span> <span class="hps">do arquivo</span> <span class="hps">install.rdf</span> <span class="hps">tem todos os detalhes</span><span>.</span></span></p> -<p><span id="result_box" lang="pt"><span class="hps">Desde</span> que <span class="hps">extensões</span> <span class="hps">podem ser traduzidas para</span> <span class="hps">vários idiomas,</span> <span class="hps">muitas vezes é necessário</span><span class="hps"> traduzir</span> <span class="hps">a descrição da</span> <span class="hps">extensão,</span> <span class="hps">ou até mesmo</span> <span class="hps">o seu nome.</span> <span class="hps">A</span> <span class="hps">descrição localizada</span> <span class="hps">eo nome</span> <span class="hps">podem ser adicionados com</span> <span class="hps">o seguinte código:</span></span></p> -<div class="code panel" style="border-width: 1px;"> - <div class="codeContent panelContent"> - <pre class="code-java"><em:localized> - <Description> - <em:locale>es-ES</em:locale> - <em:name>XUL School Hola Mundo</em:name> - <em:description>Bienvenido a XUL School!</em:description> - </Description> -</em:localized></pre> - </div> -</div> -<p>O <em>es-ES</em> <span id="result_box" lang="pt"><span class="hps alt-edited">na string</span> <span class="hps alt-edited">locale</span> <span class="hps">indica que</span> <span class="hps">é Espanhol(es) com</span> <span class="hps">localização</span> <span class="hps">na Espanha</span> <span class="hps">(ES)</span><span>.</span></span> <span class="short_text" id="result_box" lang="pt"><span class="hps">Você pode</span> <span class="hps">adicionar muitos</span></span> <em><em:localized></em> se você precisar. <span class="short_text" id="result_box" lang="pt"><span class="hps">Para</span> <span class="hps">Firefox 2</span><span>,</span> <span class="hps">localizar</span> <span class="hps">este arquivo é um</span></span> <a href="/en/Localizing_extension_descriptions#Localizing_before_Gecko_1.9" title="en/Localizing extension descriptions#Localizing before Gecko 1.9">pouco mais complicado</a>. <span id="result_box" lang="pt"><span class="hps">Vamos discutir</span> <span class="hps">a localização</span> <span class="hps">mais adiante</span> <span class="hps">nesta seção.</span></span></p> -<div class="code panel" style="border-width: 1px;"> - <div class="codeContent panelContent"> - <pre class="code-java"><em:type>2</em:type></pre> - </div> -</div> -<p><span id="result_box" lang="pt"><span class="hps">Isto especifica que</span> <span class="hps">o</span> complemento(<span class="hps">add</span><span>-on)</span> <span class="hps">que está sendo instalado</span> <span class="hps">é uma extensão</span><span>.</span> <span class="hps">Você pode ler</span> <span class="hps">sobre os diferentes tipos</span> <span class="hps">possíveis no</span></span> <a href="/en/Install_Manifests#type" title="en/Install Manifests#type">install.rdf</a>.</p> -<div class="code panel" style="border-width: 1px;"> - <div class="codeContent panelContent"> - <pre class="code-java"><em:targetApplication> - <Description> - <em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id> - <em:minVersion>4.0</em:minVersion> - <em:maxVersion>10.*</em:maxVersion> - </Description> -</em:targetApplication> -</pre> - </div> -</div> -<p><span id="result_box" lang="pt"><span class="hps alt-edited">Este node</span> <span class="hps">especifica o</span> <span class="hps">aplicativo de destino</span> <span class="hps">e</span> <span class="hps">versões</span> <span class="hps">alvo</span> <span class="hps">para a extensão,</span> <span class="hps">especificamente</span> <span class="hps">Firefox,</span> <span class="hps">a partir da versão</span> <span class="hps">4</span> <span class="hps">até a versão</span> <span class="hps">10.</span> <span class="hps">O</span> <span class="hps">UUID</span> <span class="hps">é</span> <span class="hps">da ID única</span> <span class="hps">Firefox</span><span>.</span> <span class="hps">Outras aplicações</span> <span class="hps">Mozilla e</span> <span class="hps">baseadas no Mozilla</span><span>, como</span> <span class="hps">o Thunderbird</span> <span class="hps">e</span> <span class="hps">Seamonkey</span> <span class="hps">têm a sua própria</span><span>.</span> <span class="hps">Você pode ter</span> <span class="hps">uma extensão que</span> <span class="hps">funciona em vários</span> <span class="hps">aplicativos</span> <span class="hps">e versões.</span> <span class="hps">Por exemplo</span><span>, se você criar</span> <span class="hps">uma extensão do Firefox</span><span>,</span><span class="hps"> normalmente levaria</span> <span class="hps">pouco esforço para</span> <span class="hps">portá-lo para</span> <span class="hps">o SeaMonkey</span><span>, que possui</span> <span class="hps">recursos e</span> <span class="hps">interface do usuário</span> <span class="hps">muito semelhantes.</span></span></p> -<p><span id="result_box" lang="pt"><span class="hps">A versão</span> <span class="hps">mínima(minVersion) e a versão máxima(maxVersion)</span> <span class="hps">especifica o intervalo</span> da <span class="hps">versão em que</span> <span class="hps">a extensão</span> <span class="hps">pode ser instalada.</span></span>. <span class="short_text" id="result_box"><span style="background-color: rgb(235, 239, 249);" title="Here's more about the">Veja mais sobre o</span></span> "<a href="/en/Toolkit_version_format" title="en/Toolkit version format">version format</a>". <span class="long_text" id="result_box"><span style="background-color: rgb(255, 255, 255);" title="If the application or version range don't match, you won't be allowed to install the extension, or the extension will be installed in a disabled state.">Se o intervalo de aplicação ou a versão não coincidirem, você não terá permissão para instalar a extensão, ou a extensão será instalada em um estado desativado.</span></span> <span class="long_text" id="result_box"><span style="background-color: rgb(255, 255, 255);" title="Users can disable version checks through preferences or installing add-ons like the">Os usuários podem desativar verificações de versão através de preferências ou a instalação de add-ons como o</span></span> <a class="link-https" href="https://addons.mozilla.org/pt-BR/firefox/addon/add-on-compatibility-reporter/" title="https://addons.mozilla.org/en-US/firefox/addon/15003">Add-on Compatibility Reporter</a>. <span class="long_text" id="result_box"><span style="background-color: rgb(255, 255, 255);" title="Beginning with Firefox 11, add-ons will default to compatible and Firefox will mostly ignore the version range.">Começando com o Firefox 11, add-ons serão por padrão </span></span><span class="short_text" id="result_box" lang="pt"><span class="hps">compatível</span></span><span class="long_text" id="result_box"><span style="background-color: rgb(255, 255, 255);" title="Beginning with Firefox 11, add-ons will default to compatible and Firefox will mostly ignore the version range."> e o Firefox, na maioria das vezes ignora a faixa de versão. </span><span style="background-color: rgb(255, 255, 255);" title="Testing your add-ons with every Firefox version is always recommended, though.">No Entanto, é sempre recomendável testar seus complementos(add-ons) com cada versão do Firefox.</span></span></p> -<p><span id="result_box" lang="pt"><span class="hps">Qualquer erro</span> <span class="hps">ou falta de informação</span> <span class="hps">fará com que o</span> <span class="hps">processo de instalação</span> <span class="hps">falhe,</span> <span class="hps">ou</span> <span class="hps">a extensão vai ser</span> <span class="hps">instalada</span> <span class="hps">em um estado desativado</span><span>.</span></span></p> -<h2 id="O_arquivo_chrome.manifest">O arquivo chrome.manifest</h2> -<blockquote> - <p><span style="color: #0000ff;"><span id="result_box" lang="pt"><span class="hps">Chrome</span> <span class="hps">é o conjunto de</span> <span class="hps">elementos</span> <span class="hps">de interface de usuário</span> <span class="hps">da janela do aplicativo</span> <span class="hps">que estão fora</span> <span class="hps">da área de conteúdo</span> <span class="hps">da janela.</span></span></span> <span id="result_box" lang="pt"><span class="hps">Barras de ferramentas,</span> <span class="hps">barras de menus,</span> <span class="hps">barras de progresso e</span> <span class="hps">barras de título</span> <span class="hps">da janela</span><span>, são exemplos de</span> <span class="hps">elementos que</span> <span class="hps">normalmente fazem parte</span> <span class="hps">do chrome.</span></span></p> -</blockquote> -<p>Pego de <a href="/en/Chrome_Registration" title="en/Chrome Registration">Chrome Registration</a>.</p> -<p><span class="long_text" id="result_box" lang="pt"><span class="hps">Em outras palavras,</span> <span class="hps">o</span> C<span class="hps">hrome</span> <span class="hps">é tudo o que</span> <span class="hps">você vê no</span> <span class="hps">Firefox.</span> <span class="hps">Todas as janelas do</span> <span class="hps">Firefox</span> <span class="hps">pode ser visto</span> <span class="hps">como tendo duas partes</span><span>: (1)</span> <span class="hps">o</span> <span class="hps alt-edited">Chrome</span> <span class="hps">e (2)</span><span>, possivelmente,</span> <span class="hps">uma área de conteúdo</span><span>, como o</span> <span class="hps">que exibe</span> <span class="hps">páginas da web</span> <span class="hps">em uma aba</span> <span class="hps">do Firefox.</span> <span class="hps">O Windows</span><span>, como</span> <span class="hps">a janela de</span> <span class="hps">downloads são</span> <span class="hps">puro Chrome.</span> <span class="hps">A maior parte</span> <span class="hps">do código para</span> <span class="hps">uma extensão</span> <span class="hps">reside na pasta</span> <span class="hps">chrome</span><span>, assim como</span> <span class="hps">no exemplo</span> Hello World<span>.</span></span></p> -<p><span class="long_text" id="result_box" lang="pt"><span class="hps">Como vimos</span> <span class="hps">na estrutura de diretório</span> <span class="hps">da extensão</span> <span class="hps">descompactada,</span> <span class="hps">o</span> <span class="hps alt-edited">Chrome</span> <span class="hps">é composto de</span> <span class="hps">três</span> <span class="hps">partes:</span></span> <span style="color: #0000ff;">content</span>, <span style="color: #0000ff;">locale</span> e <span style="color: #0000ff;">skin</span>. <span class="long_text" id="result_box" lang="pt"><span class="hps">Eles</span> <span class="hps">três</span> <span class="hps">são necessários</span> <span class="hps">para a maioria das</span> <span class="hps">extensões.</span> <span class="hps">Se abrirmos</span> <span class="hps">o arquivo</span> <em><span class="hps">chrome.manifest</span></em> <span class="hps">(novamente,</span> <span class="hps">qualquer editor de texto</span> <span class="hps">serve)</span><span>, vemos que</span> <span class="hps">as mesmas</span> <span class="hps">três</span> <span class="hps">seções</span> <span class="hps">são mencionadas</span><span>:</span></span></p> -<div class="code panel" style="border-width: 1px;"> - <div class="codeContent panelContent"> - <pre class="code-java">content xulschoolhello content/ -skin xulschoolhello classic/1.0 skin/ -locale xulschoolhello en-US locale/en-US/ -</pre> - </div> -</div> -<p><span style="color: #0000ff;">O arquivo <em>chrome.manifest</em> fala ao Firefox onde procurar por arquivos chrome.</span> <span class="long_text" id="result_box" lang="pt"><span class="hps">O texto</span> <span class="hps">é espaçado</span> <span class="hps">para parecer uma</span> planilha<span class="hps">,</span> <span class="hps">mas isso</span> <span class="hps">não é necessário.</span> <span class="hps">O analisador</span> <span class="hps">ignora</span> <span class="hps">espaços</span> <span class="hps">repetidos.</span></span></p> -<p><span class="long_text" id="result_box" lang="pt"><span class="hps">A primeira palavra</span> <span class="hps">em uma linha</span> <span class="hps">diz</span> ao <span class="hps">Firefox</span> <span class="hps">o que é que</span> <span class="hps">está sendo</span> <span class="hps atn">declarado (</span><span>conteúdo</span><span>, skin,</span> locale<span>,</span> <span class="hps">ou</span> <span class="hps">outros mencionados</span> <span class="hps">mais tarde)</span><span>.</span> <span class="hps">O segundo é</span> <span class="hps">o nome do pacote</span><span>, que</span> <span class="hps">vamos explicar</span> <span class="hps">em breve.</span></span></p> -<p><span id="result_box" lang="pt"><span class="hps">Pacotes</span> <span class="hps alt-edited">Skin</span> <span class="hps alt-edited">e locale</span> <span class="hps">tem</span> <span class="hps">um terceiro valor</span> <span class="hps">para especificar</span> <span class="hps">o</span> <span class="hps">local ou</span> <span class="hps alt-edited">qual</span> skin <span class="hps">eles</span> <span class="hps">estão usando</span><span>.</span></span><span id="result_box" lang="pt"><span class="hps"> Pode haver</span> mais de uma skin<span class="hps"> e</span> <span class="hps">locales</span> </span>escolhidos. <span id="result_box" lang="pt"><span class="hps">O caso mais</span> <span class="hps">comum é usar uma skin</span> <span class="hps">mundial</span></span>, a "<em>classic/1.0"</em>, <span class="short_text" id="result_box" lang="pt"><span class="hps">e</span> <span class="hps">múltiplos</span> <span class="hps">locale</span></span>, um para cada tradução. <span class="short_text" id="result_box" lang="pt"><span class="hps">Finalmente, a localização</span> <span class="hps">esta especificada.</span></span></p> -<p><span id="result_box" lang="pt"><span class="hps">Existem algumas opções</span> <span class="hps">adicionais que podem ser</span> <span class="hps">incluídos nas</span> <span class="hps">linhas de um</span> <span class="hps">arquivo</span> <span class="hps">chrome.manifest</span><span>.</span></span> Elas estão documentadas na página <a href="/pt-BR/docs/Chrome_Registration" title="en/Chrome Registration">Chrome Registration</a>. Notavelmente, podemos especificar configurações para um SO específico. Isto é muito importante porque a aparência do navegador é muito diferente em cada Sistema Operacional. Se nossa extensão precisa ser diferente em sistemas diferentes, nós podemos mudar o arquivo manifest para se parecer com isso:</p> -<div class="code panel" style="border-width: 1px;"> - <div class="codeContent panelContent"> - <pre class="code-java">content xulschoolhello content/ -skin xulschoolhello classic/1.0 skin/unix/ -skin xulschoolhello classic/1.0 skin/mac/ os=Darwin -skin xulschoolhello classic/1.0 skin/win/ os=WinNT -locale xulschoolhello en-US locale/en-US/ -</pre> - </div> -</div> -<p>Desta maneira podemos separar skins para o Windows, Mac OS X, e Linux (<span class="short_text" id="result_box" lang="pt"><span class="hps">além de outros</span> <span class="hps">sistemas tipo Unix</span></span>), <span class="short_text" id="result_box" lang="pt"><span class="hps">cada uma definida</span> <span class="hps">em um diretório separado</span></span>. <span id="result_box" lang="pt"><span class="hps">Como a maioria dos</span> <span class="hps">outros sistemas</span> <span class="hps">são baseados em</span> <span class="hps">Unix</span><span class="atn">, a skin "</span><span>unix</span><span>"</span> <span class="hps">é a padrão,</span> <span class="hps">sem</span> flags<span>.</span></span></p> -<h2 id="O_Chrome">O Chrome</h2> -<p>Como mencionado anteriormente, o chrome é composto de 3 seções: content, locale e skin. O content é a mais importante seção, com a <span id="result_box" lang="pt"><span class="hps atn">interface de usuário (</span><span>XUL</span><span>)</span> <span class="hps">e</span> <span class="hps atn">arquivos de script (</span><span>JS</span><span>)</span><span>.</span></span> A seção skin tem os arquivos que definem mais a aparência e visual da UI (usando CSS e imagens, igual páginas da web). Finalmente, a seção locale tem todo texto usado na extensão, em DTD e <span class="short_text" id="result_box" lang="pt"><span class="hps">arquivos de propriedades</span></span>. Está divisão permite outros desenvolvedores criarem temas para substituir as skins, e criar traduções em diferentes linguagens, tudo isso sem ter que mudar sua extensão ou seu code(código). Isto dá as extensões do Firefox grande flexibilidade.</p> -<p>Arquivos Chrome são accessados através do protocolo chrome. Isto precisa de uma chrome URI parecida com isso:</p> -<div class="code panel" style="border-width: 1px;"> - <div class="codeContent panelContent"> - <pre class="code-java">chrome:<span class="code-comment">//nomedopacote/seção/caminho/para/arquivo</span></pre> - </div> -</div> -<p>Então, para instância, se você quer acessar o arquivo <em>browserOverlay.xul </em>na extensão, a chrome URI pode ser<em> <a><span class="external">chrome://xulschoolhello/content/browserOverlay.xul</span></a></em></p> -<p><span id="result_box" lang="pt"><span class="hps">Se</span> <span class="hps">você tem</span> <span class="hps">muitos arquivos</span> <span class="hps alt-edited">no content</span> <span class="hps">e quer</span> <span class="hps">organizá-los</span> <span class="hps">em subdiretórios</span><span>,</span> <span class="hps">não há nada que</span> <span class="hps">você precisa mudar</span> <span class="hps">em</span> <span class="hps">chrome.manifest</span><span>, tudo que você</span> <span class="hps">precisa é adicionar</span> <span class="hps">o caminho certo</span> <span class="hps">depois de</span> <span class="hps">content na</span> <span class="hps">URI.</span></span></p> -<p>Arquivos Skin e locale funcionam do mesmo jeito, e você não precisa especificar nome das skins ou nomes dos locale. Então, para acessar o arquivo DTD na extensão Hello World, o caminho chrome é <em><a class="external" rel="freelink">chrome://xulschoolhello/locale/browserOverlay.dtd</a></em>. O Firefox sabe qual locale procurar.</p> -<p>Este é um experimento interessante. Abra uma nova Aba do Firefox, escreva <em><a class="external" rel="freelink">chrome://mozapps/content/downloads/downloads.xul</a></em> na sua barra de endereços e pressione ENTER. Surpreso? Você só acabou de abrir a janela de Downloads em uma Aba do Firefox! Você pode acessar qualquer arquivo chrome só escrevendo esta URI na barra de endereços. Isto pode ser conveniente se você quer inspecionar arquivos de script que são parte do Firefox, outras extensões, ou a sua própria. A maioria destes arquivos são abertos como arquivos de texto, com a exceção de arquivos XUL, os quais são executados e mostrados como você normalmente vê em uma janela.</p> -<h3 id="Content">Content</h3> -<p>Existe 2 arquivos na pasta content. Vamos ver o arquivo XUL primeiro.</p> -<p>Arquivos <a href="/en/XUL" title="en/XUL">XUL</a> são arquivos XML que definem os elementos da interface de usuário no Firefox e Extensões Firefox. XUL foi inspirado em HTML, então você irá ver muita coisa parecida entre as duas. Porém, XUL é também uma melhoria sobre o HTML, tendo aprendido de muitos erros cometidos durante a evolução do HTML. XUL permite á você criar ricas e mais interativas interfaces do que o HTML permitirá, ou pelo menos XUL é mais fácil.</p> -<p>Arquivos XUL usualmente definem uma das duas coisas: janelas ou overlays. O arquivo que você tinha aberto antes, <em>downloads.xul</em>, tem o código que define a janela de Downloads. O Arquivo XUL incluído na extensão Hello World é um overlay. Um overlay amplia uma janela existente, adicionando novos elementos nela ou substituindo alguns elementos dela. A linha que nós pulamos no arquivo <em>chrome.manifest</em> coloca que este arquivo XUL é um overlay para a janela principal do navegador:</p> -<div class="code panel" style="border-width: 1px;"> - <div class="codeContent panelContent"> - <pre class="code-java">overlay chrome:<span class="code-comment">//browser/content/browser.xul chrome://xulschoolhello/content/browserOverlay.xul</span></pre> - </div> -</div> -<p>Com esta linha, O Firefox sabe que isso precisa pegar o conteúdo de <em>browserOverlay.xul</em> e colocar esse overlay na janela principal do navegador, <em>browser.xul</em>. Você pode declarar overlays para qualquer janela ou diálogo no Firefox, mas overlays na janela principal do navegador é de longe o caso mais comum.</p> -<p>Agora vamos ver o conteúdo do nosso arquivo XUL. Nós iremos pular algumas linhas do começo <span class="short_text" id="result_box" lang="pt"><span class="hps">pois se referem a</span> <span class="hps">skin</span> <span class="hps">e o locale</span></span>, <span class="short_text" id="result_box" lang="pt"><span class="hps">e vamos</span> <span class="hps">ver elas</span> <span class="hps">mais tarde</span></span>.</p> -<div class="code panel" style="border-width: 1px;"> - <div class="codeContent panelContent"> - <pre class="code-java"><overlay id="xulschoolhello-browser-overlay" - xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"></pre> - </div> -</div> -<p>O elemento raiz no arquivo é um <em>overlay</em>. Outros documentos XUL usam a tag <em>window</em> ou <em>dialog</em>. <span class="short_text" id="result_box" lang="pt"><span class="hps">O elemento tem</span> <span class="hps">um id único</span></span>, <span id="result_box" lang="pt"><span class="hps">que</span> <span class="hps">você deve ter na</span> <span class="hps">maioria dos elementos</span> <span class="hps">no seu</span> <span class="hps">XUL</span></span>. O segundo atributo é o namespace, <span id="result_box" lang="pt"><span class="hps">que é algo que</span> <span class="hps">você deve sempre</span> <span class="hps">definir</span> <span class="hps">em</span> <span class="hps">seu</span> <span class="hps">elemento raiz do arquivo</span> <span class="hps">XUL</span><span>.</span></span> <span class="short_text" id="result_box" lang="pt"><span class="hps">Ela diz que</span> <span class="hps">esse node e</span> <span class="hps">todos os outros nodes filhos</span> <span class="hps">são</span> <span class="hps">XUL</span><span>.</span></span> Você só precisa alterar as declarações de namespace quando você mistura diferentes tipos de conteúdo no mesmo documento, tal como XUL com HTML ou SVG.</p> -<div class="panel" style="border-width: 1px;"> - <div class="panelContent"> - <div class="note"> - <span id="result_box" lang="pt"><span class="hps">Você deve ter notado</span> <span class="hps">a nomeação</span> <span class="hps">usamos</span> <span class="hps">em</span> <span class="hps">vários lugares</span></span>, como a id <em>xulschoolhello-browser-overlay</em>. <span id="result_box" lang="pt"><span class="hps">Este é o </span><span class="hps">namespace padrão</span> <span class="hps">que usamos para</span> <span class="hps">evitar conflitos com</span> <span class="hps">Firefox</span> <span class="hps">e outras extensões</span><span>,</span> <span class="hps">bem como fazer</span> <span class="hps">algumas tarefas de desenvolvimento</span> <span class="hps">mais fácil. Nós colocamos namespace em todos ids e classes de estilo(style classes) nos elementos do overlay porque eles vão ser misturados com outros elementos na janela principal do navegador.</span></span> Se usássemos ids como "<em>container"</em> ou "<em>input"</em>, elas iriam entrar em conflito com as ids usadas no Firefox, ou com as ids de overlays de outra extensão. Usando namespace minimiza problemas de compatibilidade com outras extensões. Nós usamos <a href="http://pt.wikipedia.org/wiki/CamelCase">CamelCasing</a> para nomes de arquivos, e letras <span class="short_text" id="result_box" lang="pt"><span class="hps">minúsculas</span></span> com <span class="short_text" id="result_box" lang="pt"><span class="hps alt-edited">hífens</span></span> para ids de elementos e nomes de classes(class names) de estilo CSS(CSS style), mas você é livre para usar seu próprio sistema.</div> - </div> -</div> -<div class="code panel" style="border-width: 1px;"> - <div class="codeContent panelContent"> - <pre class="code-java"><script type=<span class="code-quote">"application/x-javascript"</span> - src=<span class="code-quote">"chrome:<span class="code-comment">//xulschoolhello/content/browserOverlay.js"</span> /></span></pre> - </div> -</div> -<p>Como no HTML, isto incluí um arquivo de script JavaScript. Você pode ter quantos "<em>script</em> elements" precisar em um documento XUL. Nós iremos ver isto no code(código) depois.</p> -<div class="panel" style="border-width: 1px;"> - <div class="panelContent"> - <div class="note"> - Você também deve ter notado como vamos formatar nosso código, e perguntar sobre as regras que se seguem. Nossa regra geral sobre o comprimento da linha é não ter linhas com mais de 80 caracteres. Isso parece muito restritivo, especialmente com arquivos XML, mas o número foi escolhido para permitir que praticamente qualquer editor de texto pudesse manipular esses arquivos facilmente. Mesmo os antigos editores de linha de comando funcionam bem com arquivos que tem linhas de 80 caracteres. A tabulação é muito simples: dois travessões, espaço em branco. A maioria dos nossos padrões de codificação são baseados em Mozilla ou de outros padrões conhecidos e utilizados.</div> - </div> -</div> -<p> Nós pulamos algum code(código) que será visto na seção locale, indo para a parte mais importante do conteúdo:</p> -<div class="code panel" style="border-width: 1px;"> - <div class="codeContent panelContent"> - <pre class="code-java"><menubar id="main-menubar"> - <menu id="xulschoolhello-hello-menu" label="&xulschoolhello.hello.label;" - accesskey="&xulschoolhello.helloMenu.accesskey;" insertafter="helpMenu"> - <menupopup> - <menuitem id="xulschoolhello-hello-menu-item" - label="&xulschoolhello.hello.label;" - accesskey="&xulschoolhello.helloItem.accesskey;" - oncommand="XULSchoolChrome.BrowserOverlay.sayHello(event);" /> - </menupopup> - </menu> -</menubar> - -<vbox id="appmenuSecondaryPane"> - <menu id="xulschoolhello-hello-menu-2" label="&xulschoolhello.hello.label;" - accesskey="&xulschoolhello.helloMenu.accesskey;" - insertafter="appmenu_addons"> - <menupopup> - <menuitem id="xulschoolhello-hello-menu-item-2" - label="&xulschoolhello.hello.label;" - accesskey="&xulschoolhello.helloItem.accesskey;" - oncommand="XULSchoolChrome.BrowserOverlay.sayHello(event);" /> - </menupopup> - </menu> -</vbox> -</pre> - </div> -</div> -<p>Este code(código) adiciona o menu <em>Hello World</em> na janela do navegador.</p> -<p>(Nota: Tradução incompleta temporariamente.)</p> -<p>There are two similar code blocks, because in modern versions of Firefox, particularly on Windows, a single Firefox menu button is presented, with simplified menu options, rather than an extensive menu bar. The second code block covers the common menu button case; the first code block covers all other cases. Check <em>Menu Bar </em>under the <em>Options </em>menu of the menu button to toggle display of the classic menu on Windows and some Linux distributions.</p> -<p>In order to write this code, we needed some knowledge of the XUL code in <em>browser.xul</em>. We needed to know that the id of the right pane in the unified menu is <em>appmenuSecondaryPane</em>. We're adding a menu of our own, and telling Firefox to add it in that pane, right after the Add-ons item. That's the purpose of the attribute:</p> -<div class="code panel" style="border-width: 1px;"> - <div class="codeContent panelContent"> - <pre class="code-java">insertafter=<span class="code-quote">"appmenu_addons"</span> -</pre> - </div> -</div> -<p><em>appmenu_addons</em> is the id of the menu element that corresponds to the Add-ons menu item in the main menu. We'll see later how we can find out things like the ids of browser elements, but for now let's look at the elements that compose the Hello World menu.</p> -<p>For the classic menu, we added the Hello World menu right in the "root" of the menu so that it would be very easy for you to spot it, but this is not a recommended practice. Imagine if all extensions added menus to the top menu; having a few extensions would make it look like an airplane dashboard, full of knobs and switches. In the case of the unified menu, things are a little more difficult due to lack of options. If your menu item fits in the Web Developer section, it is recommended that you add it there. Otherwise, the root menu might be your only recourse.</p> -<p>One recommended location for menus in the classic menu vase is under the <em>Tools</em> menu, so the code should really look like this:</p> -<div class="code panel" style="border-width: 1px;"> - <div class="codeContent panelContent"> - <pre class="code-java"><menupopup id=<span class="code-quote">"menu_ToolsPopup"</span>> - <menu id=<span class="code-quote">"xulschoolhello-hello-menu"</span> label=<span class="code-quote">"&</span><span class="code-quote">xulschoolhello</span><span class="code-quote">.hello.label;"</span> - accesskey=<span class="code-quote">"&</span><span class="code-quote">xulschoolhello</span><span class="code-quote">.helloMenu.accesskey;"</span> - insertbefore=<span class="code-quote">"</span>devToolsEndSeparator<span class="code-quote">"</span>> - <menupopup> - <menuitem id=<span class="code-quote">"</span><span class="code-quote">xulschoolhello</span><span class="code-quote">-hello-menu-item" - </span> label=<span class="code-quote">"&</span><span class="code-quote">xulschoolhello</span><span class="code-quote">.hello.label;"</span> - accesskey=<span class="code-quote">"&</span><span class="code-quote">xulschoolhello</span><span class="code-quote">.helloItem.accesskey;"</span> - oncommand=<span class="code-quote">"XULSchoolChrome.BrowserOverlay.sayHello(event);"</span> /> - </menupopup> - </menu> -</menupopup> -</pre> - </div> -</div> -<p>We're overlaying the menu that is deeper into the XUL tree, but it doesn't matter because all we need is the id of the element we want to overlay. In this case it is the <a href="/en/XUL/menupopup" title="en/XUL/menupopup">menupopup</a> element that's inside of the Tools <a href="/en/XUL/menu" title="en/XUL/menu">menu</a> element. The <em>insertbefore</em> attribute tells Firefox to add the menu at the bottom of the dev tools section, above its end separator. We'll discuss more about menus later on in the tutorial.</p> -<p>Now let's look at the actual code:</p> -<div class="code panel" style="border-width: 1px;"> - <div class="codeContent panelContent"> - <pre class="code-java">oncommand=<span class="code-quote">"XULSchoolChrome.BrowserOverlay.sayHello(event);"</span> -</pre> - </div> -</div> -<p>This attribute defines an event handler. The <em>command</em> event is the most frequently used in Firefox, since it corresponds to the main action for most UI elements. The value of the attribute is JavaScript code that invokes a function. This function is defined in the JS file that was included with the <em>script</em> tag. The JS function will be called once the user clicks on the menu item in the Hello World menu. All event handlers define a special object named <em>event</em>, which is usually good to pass as an argument to the function. Event handlers are explained in greater depth further ahead.</p> -<p>Now let's look at the JavaScript file and see what's going on when the event is fired.</p> -<div class="code panel" style="border-width: 1px;"> - <div class="codeContent panelContent"> - <pre class="brush: js">/** - * XULSchoolChrome namespace. - */ -if ("undefined" == typeof(XULSchoolChrome)) { - var XULSchoolChrome = {}; -};</pre> - </div> -</div> -<p>The <em>XULSchoolChrome</em> namespace is defined. All objects and variables we define in this JavaScript are global, meaning that scripts in Firefox and other extensions can see them and interact with them. This also means that if we define an object called <em>MenuHandler</em> or some other generic name, it's likely going to conflict with an existing object. What we do here is define a single global object: <em>XULSchoolChrome</em>. Now we know that all of our objects are inside this object, which is unlikely to be duplicated or overwritten by other extensions.</p> -<p>You can read more about the <a href="/en/JavaScript/Reference/Operators/typeof" title="en/Core JavaScript 1.5 Reference/Operators/Special Operators/typeof Operator"><span class="external">typeof operator</span></a>. If you're unfamiliar with JavaScript or this particular syntax, initializing an object as <em>{}</em> is the equivalent of initializing it to <em>new Object()</em>.</p> -<div class="code panel" style="border-width: 1px;"> - <div class="codeContent panelContent"> - <pre class="brush: js">/** - * Controls the browser overlay <span class="code-keyword">for</span> the Hello World extension. - */ -XULSchoolChrome.BrowserOverlay = {</pre> - </div> -</div> -<p>Finally, <em>BrowserOverlay</em> is our object. Naming and referencing objects in such a long and verbose manner can feel uncomfortable at first, but it's worth the cost.</p> -<div class="panel" style="border-width: 1px;"> - <div class="panelContent"> - <div class="note"> - We use <a class="external" href="http://java.sun.com/j2se/javadoc/writingdoccomments/index.html">Javadoc</a> style comments on all namespaces, objects and object members. This is a similar standard to the one used in Mozilla code, and some tools can generate documentation automatically from Javadoc.</div> - </div> -</div> -<div class="code panel" style="border-width: 1px;"> - <div class="codeContent panelContent"> - <pre class="brush: js">sayHello : function(aEvent) { - let stringBundle = document.getElementById("xulschoolhello-string-bundle"); - let message = stringBundle.getString("xulschoolhello.greeting.label"); - - window.alert(message); -}</pre> - </div> -</div> -<p>And, finally, this is our function declaration. Three lines of code are all we need for it to work. The first line in the body of the function declares a variable that will hold the <a href="/en/XUL/stringbundle" title="en/XUL/stringBundle">stringbundle</a> element defined in the overlay. The variable is declared using <em>let,</em> which is similar to <em>var</em> but with more restricted scope. Here you can read more about <a href="/en/JavaScript/Reference/Statements/let" title="let"><span class="external">let declarations</span>.</a></p> -<p>Just like in regular JS, we can use the <a href="/en/DOM" title="en/DOM"><span class="external">DOM</span></a> (Document Object Model) in order to manipulate the XUL document. First we get a reference of the <a href="/en/XUL/stringbundle" title="en/XUL/stringbundle"><span class="external">stringbundle element</span></a> in the document. This is a special element that allows us to obtain localized strings dynamically, by only providing a "key" that identifies the string. This is what we do on the second line. We call the <a href="/en/XUL/stringbundle#m-getString" title="en/XUL/stringbundle#m-getString">getString method</a> of the bundle element and get the localized message to be displayed. We then call the <a href="/en/DOM/window.alert" title="en/DOM/window.alert">window.alert</a> function with the message, just like we would do in an HTML document.</p> -<h3 id="Locale">Locale</h3> -<p>There are two types of locale files: DTD and properties, and in this example we use them both. DTD is the most efficient way of showing text in XUL, so you should use it whenever possible. It is somewhat inflexible so it can't be used for dynamically generated text, hence the need for an alternate way of getting localized strings.</p> -<p>Looking back at the menu code, you probably noticed some attributes such as this:</p> -<div class="code panel" style="border-width: 1px;"> - <div class="codeContent panelContent"> - <pre class="code-java">label=<span class="code-quote">"&xulschoolhello.hello.label;"</span> accesskey=<span class="code-quote">"&xulschoolhello.helloItem.accesskey;"</span></pre> - </div> -</div> -<p>These attributes define the text that you see on the menus, and they are string keys that are defined in our DTD file, <em>browserOverlay.dtd</em>. The DTD file was included in the XUL file with the following code:</p> -<div class="code panel" style="border-width: 1px;"> - <div class="codeContent panelContent"> - <pre class="code-java"><!DOCTYPE overlay SYSTEM "chrome://xulschoolhello/locale/browserOverlay.dtd" ></pre> - </div> -</div> -<p>And in the DTD file you can see the association between keys and localized strings:</p> -<div class="code panel" style="border-width: 1px;"> - <div class="codeContent panelContent"> - <pre class="code-java"><!ENTITY xulschoolhello.hello.label <span class="code-quote">"Hello World!"</span>> -<!ENTITY xulschoolhello.helloMenu.accesskey <span class="code-quote">"l"</span>> -<!ENTITY xulschoolhello.helloItem.accesskey <span class="code-quote">"H"</span>></pre> - </div> -</div> -<p>Notice that on the XUL file you enclose the string key with <em>&</em> and <em>;</em> while on the DTD file you only specify the key. You may get weird parsing errors or incorrect localization if you don't get this right.</p> -<p>Access keys are the shortcuts that allow you to quickly navigate a menu using only the keyboard. They are also the only way to navigate a menu for people with accessibility problems, such as partial or total blindness, or physical disabilities that make using a mouse very difficult or impossible. You can easily recognize the access keys on Windows because the letter that corresponds to the access key is underlined, as in the following image:</p> -<div> - <p><img alt="" class="internal" src="../../../../@api/deki/files/4226/=accesskeys.png" style="width: 167px; height: 58px;"></p> -</div> -<p>Most user interface controls have the <em>accesskey</em> attribute, and you should use it. The value of the access key is localized because it should match a letter in the label text. You should also be careful to avoid access key repetition. For example, within a menu or submenu, access keys should not be repeated. In a window you have to be more careful picking access keys because there are usually more controls there. You have to be specially careful when picking access keys on an overlay. In our case, we can't use the letter "H" as an accesskey in the Main menu item, because it would be the same as the access key in the Help menu. Same goes with "W" and the Window menu on Mac OS. So we settled on the letter "l".</p> -<p>DTD strings are resolved and set when the document is being loaded. If you request the <em>label</em> attribute value for the Hello World menu using DOM, you get the localized string, not the string key. You cannot dynamically change an attribute value with a new DTD key, you have to set the new value directly:</p> -<div class="code panel" style="border-width: 1px;"> - <div class="codeContent panelContent"> - <pre class="brush: js">let helloItem = document.getElementById(<span class="code-quote">"xulschoolhello-hello-menu-item"</span>); - -<span class="code-comment">// The alert will say <span class="code-quote">"Hello World!"</span> -</span>alert(helloItem.getAttribute(<span class="code-quote">"label"</span>)); -<span class="code-comment">// Wrong -</span>helloItem.setAttribute(<span class="code-quote">"label"</span>, <span class="code-quote">"&</span><span class="code-quote">xulschoolhello</span><span class="code-quote">.hello2.label;"</span>); -<span class="code-comment">// Better -</span>helloItem.setAttribute(<span class="code-quote">"label"</span>, <span class="code-quote">"Alternate message"</span>); -<span class="code-comment">// Right! -</span>helloItem.setAttribute(<span class="code-quote">"label"</span>, someStringBundle.getString(<span class="code-quote">"</span><span class="code-quote">xulschoolhello</span><span class="code-quote">.hello2.label"</span>));</pre> - </div> -</div> -<p>This is the reason DTD strings are not a solution for all localization cases, and the reason we often need to include string bundles in XUL files:</p> -<div class="code panel" style="border-width: 1px;"> - <div class="codeContent panelContent"> - <pre class="code-java"><stringbundleset id="stringbundleset"> - <stringbundle id="xulschoolhello-string-bundle" - src="chrome://xulschoolhello/locale/browserOverlay.properties" /> -</stringbundleset></pre> - </div> -</div> -<p>The <a href="/en/XUL/stringbundleset" title="en/XUL/stringbundleset">stringbundleset</a> element is just a container for <a href="/en/XUL/stringbundle" title="en/XUL/stringbundle">stringbundle</a> elements. There should only be one per document, which is the reason why we overlay the <em>stringbundleset</em> that is in <em>browser.xul</em>, hence the very generic id. We don't include the <em>insertbefore</em> or <em>insertafter</em> attributes because the ordering of string bundles doesn't make a difference. The element is completely invisible. If you don't include any of those ordering attributes in an overlay element, Firefox will just append your element as the last child of the parent element.</p> -<p>All you need for the string bundle is an id (to be able to fetch the element later) and the chrome path to the properties file. And, of course, you need the properties file:</p> -<div class="code panel" style="border-width: 1px;"> - <div class="codeContent panelContent"> - <pre class="code-java">xulshoolhello.greeting.label = Hi! How are you?</pre> - </div> -</div> -<p>The whitespace around the equals sign is ignored. Just like in <em>install.rdf</em>, comments can be added using the # character at the beginning of the line. Empty lines are ignored as well.</p> -<p>You will often want to include dynamic content as part of localized strings, like when you want to inform the user about some stat related to the extension. For example: "Found 5 words matching the search query". Your first idea would probably be to simply concatenate strings, and have one "Found" property and another "words matching..." property. This is not a good idea. It greatly complicates the work of localizers, and grammar rules on different languages may change the ordering of the sentence entirely. For this reason it's better to use parameters in the properties:</p> -<div class="code panel" style="border-width: 1px;"> - <div class="codeContent panelContent"> - <pre class="code-java">xulshoolhello.search.label = Found %S words matching the search query!</pre> - </div> -</div> -<p>Then you use <a href="/en/XUL/stringbundle#m-getFormattedString" title="en/XUL/stringbundle#m-getFormattedString">getFormattedString</a> instead of <em>getString</em> in order to get the localized string. Thanks to this we don't need to have multiple properties, and life is easier for translators. You can read more about it on the <a href="/en/XUL_Tutorial/Property_Files#Text_Formatting" title="en/XUL Tutorial/Property Files#Text Formatting">Text Formatting section</a> of the XUL Tutorial. Also have a look at the <a href="/en/Localization_and_Plurals" title="en/Localization and Plurals">Plurals and Localization</a> article, that covers a localization feature in Firefox that allows you to further refine this last example to handle different types of plural forms that are also language-dependent.</p> -<h3 id="Skin">Skin</h3> -<p>Styling XUL is very similar to styling HTML. We'll look into some of the differences when we cover the XUL Box Model, and other more advanced topics. There isn't much styling you can do to a minimal menu and a very simple alert message, so the Hello World extension only includes an empty CSS file and the compulsory global skin file:</p> -<div class="code panel" style="border-width: 1px;"> - <div class="codeContent panelContent"> - <pre class="code-java"><?xml-stylesheet type=<span class="code-quote">"text/css"</span> href=<span class="code-quote">"chrome:<span class="code-comment">//global/skin/"</span> ?> -</span><?xml-stylesheet type=<span class="code-quote">"text/css"</span> - href=<span class="code-quote">"chrome:<span class="code-comment">//xulschoolhello/skin/browserOverlay.css"</span> ?></span></pre> - </div> -</div> -<p>The global skin CSS file holds the default styles for all XUL elements and windows. Forgetting to include this file in a XUL window usually leads to interesting and often unwanted results. In our case we don't really need to include it, since we're overlaying the main browser XUL file, and that file already includes this global CSS. At any rate it's better to always include it. This way it's harder to make the mistake of not including it. You can enter the chrome path in the location bar and inspect the file if you're curious.</p> -<p>This covers all of the files in the Hello World extension. Now you should have an idea of the basics involved in extension development, so now we'll jump right in and set up a development environment. But first, a little exercise.</p> -<h2 id="Exercise">Exercise</h2> -<p>Make the following changes to the example extension:</p> -<ul> - <li>Edit the welcome message that is displayed in the alert window.</li> - <li>Move the Hello World menu to the <em>Tools</em> menu, where it belongs.</li> -</ul> -<p>Repackage the XPI. Issue the following command from within the extension root directory on Linux or Mac OS X:</p> -<pre>zip ../xulschoolhello2.xpi * -</pre> -<p>On Windows, use a ZIP tool to compress all files and subdirectories within the extension root directory. Name the file with extension <em>.xpi</em></p> -<p>Re-install the XPI. You can just drag the XPI file to the browser and it will be installed locally.</p> -<p>Test it and verify your changes worked. If you run into problems at installation, it's likely that you didn't reproduce the XPI structure correctly, maybe adding unnecessary folders.</p> -<div class="note"> - <strong>Note:</strong> Packaging an extension is really just creating a ZIP archive of the contents of the main folder, then changing the filename extension to <code>.XPI</code>. Do <strong>not</strong> zip the containing folder, just its contents. The <code>content</code> folder, <code>chrome.manifest</code>, <code>install.rdf</code>, and other files and directories should be at the root level of your archive. If you zip the containing folder, your extension will not load.</div> -<p>Note that the <em>Tools </em>menu is hidden by default on Firefox 4 and above, on Windows and some Linux distributions. Check <em>Menu Bar </em>under the <em>Options </em>menu of the Firefox menu button to enable it.</p> -<p>Once you're done, you can look at this reference solution: <a href="/@api/deki/files/5141/=xulschoolhello2.xpi" title="https://developer.mozilla.org/@api/deki/files/5141/=xulschoolhello2.xpi">Hello World 2</a>.</p> -<p>{{ PreviousNext("XUL/School_tutorial/Comecando_com_as_Extensoes_do_Firefox", "XUL_School/Setting_Up_a_Development_Environment") }}</p> -<p><span style="font-size: small;">This tutorial was kindly donated to Mozilla by Appcoast.</span></p> diff --git a/files/pt-br/zonas/index.html b/files/pt-br/zonas/index.html deleted file mode 100644 index 8296ec2c0e..0000000000 --- a/files/pt-br/zonas/index.html +++ /dev/null @@ -1,53 +0,0 @@ ---- -title: Zonas -slug: Zonas -translation_of: Zones ---- -<p>Zonas MDN provê à você em um único lugar acesso à informação sobre áreas especificas ou produtos. Aqui está uma lista de todas as zonas disponíveis pra você.</p> - -<div class="row topicpage-table"> -<div class="section"> -<h2 id="Desenvolvimento_Web_e_Aplicativos">Desenvolvimento Web e Aplicativos</h2> - -<dl> - <dt><a href="/pt-BR/Apps">Central de Aplicativos</a></dt> - <dd>Aprenda como criar aplicativos Web abertos — ricas experiências que executam em múltiplos dispositivos e fatores de forma —usando o mesmo padrão Web e tecnologias abertas que você já conhece.</dd> - <dt><a href="/pt-BR/docs/Aprender">Área de Aprendizado</a></dt> - <dd>Esta zona contém todos artigos para ajudar recém-chegados para o desenvolvimento Web iniciarem seu excitante mundo novo.</dd> - <dt><a href="/pt-BR/docs/Tools">Ferramentas de Desenvolvimento</a></dt> - <dd>Aprenda como usar as ferramentas de desenvolvimento Firefox para debugar, testar, e otimizar suas Web apps e sites.</dd> - <dt><a href="/pt-BR/docs/Mozilla/Marketplace">Firefox Marketplace</a></dt> - <dd>Aberto, não-proprietário, online marketplace (mercado) para aplicativos Web construídos usando HTML, CSS, and JavaScript. Envie aplicativos para o Firefox Marketplace ou use o código para construir seu próprio marketplace.</dd> - <dt><a href="/pt-BR/docs/Games">Desenvolvimento de Jogos</a></dt> - <dd>Aprenda como desenvolver games para Web, como porta de jogos para as tecnologias da Web existente, e como transformar seus jogos em aplicativos web.</dd> -</dl> -</div> - -<div class="section"> -<h2 id="Products" name="Products">Produtos e projetos</h2> - -<dl> - <dt><a href="/pt-BR/docs/Emscripten">Emscripten</a></dt> - <dd>Um LLVM (coleção modular e compiladores reusáveis) para o compilador JavaScript; este deixa você compilar, por exemplo, código C++ dentro do código JavaScript que pode ser executado em qualquer navegador.</dd> - <dt><a href="/pt-BR/docs/L20n">L20n</a></dt> - <dd>Uma estrutura de trabalho (framework) de localização para desencadear a energia da linguagem natural com um código simples.</dd> - <dt><a href="/pt-BR/docs/Project:MDN">O Projeto MDN</a></dt> - <dd>A Rede de Desenvolvedores da Mozilla (este site) confia em sua comunidade de leitores e contribuidores para crescer e aprimorar. Você pode aprender aqui, como ajudar a usar, contribuir, e construir o código por traz do MDN ! 1</dd> - <dt><a href="/pt-BR/Persona">Persona</a></dt> - <dd>Um simples novo, privado e único sistema desenvolvido pela Mozilla que permite aos usuários logar em seu Web site usando o email deles, libertando-o do gerenciamento de senhas.</dd> -</dl> - -<h2 id="Tecnologias_Mozilla">Tecnologias Mozilla</h2> - -<dl> - <dt><a href="/pt-BR/Add-ons">Add-ons</a></dt> - <dd>Aprenda como construir e instalar extensões, temas, e plug-ins para em programas baseados na Mozilla, incluindo o popular Firefox Web browser.</dd> - <dt><a href="/pt-BR/Firefox">Firefox</a></dt> - <dd>Aprenda tudo sobre Firefox, como construir, revisar e como construir add-ons especificamente para ele.</dd> - <dt><a href="/pt-BR/Firefox_OS">Firefox OS</a></dt> - <dd>Um novo sistema operacional móvel desenvolvido pela Mozilla ao qual deixa os usuários instalarem e executarem Aplicativos Web Abertos, criados usando HTML, CSS, e JavaScript.</dd> -</dl> -</div> -</div> - -<p> </p> |