From a065e04d529da1d847b5062a12c46d916408bf32 Mon Sep 17 00:00:00 2001 From: Peter Bengtsson Date: Tue, 8 Dec 2020 21:46:22 -0500 Subject: update based on https://github.com/mdn/yari/issues/2028 --- files/id/_wikihistory.json | 2171 -------------------- files/id/archive/add-ons/index.html | 11 - .../b2g_os/developing_firefox_os/index.html | 51 - .../developing_firefox_os/porting/index.html | 123 -- files/id/archive/b2g_os/firefox_os_apps/index.html | 85 - .../b2g_os/firefox_os_apps/pelokalan/index.html | 92 - files/id/archive/b2g_os/index.html | 79 - .../installing_on_a_mobile_device/index.html | 100 - files/id/archive/b2g_os/introduction/index.html | 88 - .../id/archive/b2g_os/phone_guide/flame/index.html | 73 - .../flame/updating_your_flame/index.html | 411 ---- files/id/archive/b2g_os/phone_guide/index.html | 85 - files/id/archive/b2g_os/platform/index.html | 82 - .../quickstart/aplikasi_pertama_kamu/index.html | 210 -- files/id/archive/b2g_os/quickstart/index.html | 49 - files/id/archive/b2g_os/simulator/index.html | 120 -- .../b2g_os/using_the_app_manager/index.html | 233 --- files/id/archive/css3/index.html | 972 --------- files/id/archive/index.html | 18 - files/id/archive/meta_docs/index.html | 11 - files/id/archive/mozilla/index.html | 8 - files/id/archive/mozilla/xul/index.html | 84 - .../index.html | 23 - .../archive/mozilla/xul/school_tutorial/index.html | 59 - .../xul/school_tutorial/perkenalan/index.html | 32 - .../the_essentials_of_an_extension/index.html | 344 ---- files/id/archive/mozilla/xulrunner/index.html | 84 - files/id/archive/web/index.html | 15 - .../standards-compliant_authoring_tools/index.html | 25 - files/id/mdn/guidelines/layout/index.html | 7 - .../index.html | 167 -- files/id/mozilla/connect/index.html | 95 - .../id/mozilla/firefox/edisi_pengembang/index.html | 57 - files/id/mozilla/firefox/privacy/index.html | 22 - .../errors/cookieblockedtracker/index.html | 33 - .../storage_access_policy/errors/index.html | 24 - .../privacy/storage_access_policy/index.html | 261 --- files/id/mozilla/gecko/index.html | 69 - files/id/mozilla/localization/index.html | 30 - .../localizing_with_verbatim/index.html | 158 -- .../localization/quick_start_guide/index.html | 50 - .../quick_start_guide/qa_phase/index.html | 197 -- .../localization/web_localizability/index.html | 33 - files/id/mozilla/mercurial/basics/index.html | 60 - files/id/mozilla/mercurial/index.html | 45 - files/id/mozilla/persona/index.html | 126 -- files/id/mozilla/projects/index.html | 14 - files/id/mozilla/projects/nss/index.html | 180 -- files/id/mozilla/projects/rhino/index.html | 25 - files/id/sandbox/index.html | 201 -- files/id/tools/webide/index.html | 458 ----- files/id/tools/webide/troubleshooting/index.html | 117 -- files/id/web/api/mobile_connection_api/index.html | 149 -- files/id/web/events/cached/index.html | 74 - .../id/web/javascript/new_in_javascript/index.html | 74 - files/id/zones/index.html | 70 - 56 files changed, 8534 deletions(-) delete mode 100644 files/id/_wikihistory.json delete mode 100644 files/id/archive/add-ons/index.html delete mode 100644 files/id/archive/b2g_os/developing_firefox_os/index.html delete mode 100644 files/id/archive/b2g_os/developing_firefox_os/porting/index.html delete mode 100644 files/id/archive/b2g_os/firefox_os_apps/index.html delete mode 100644 files/id/archive/b2g_os/firefox_os_apps/pelokalan/index.html delete mode 100644 files/id/archive/b2g_os/index.html delete mode 100644 files/id/archive/b2g_os/installing_on_a_mobile_device/index.html delete mode 100644 files/id/archive/b2g_os/introduction/index.html delete mode 100644 files/id/archive/b2g_os/phone_guide/flame/index.html delete mode 100644 files/id/archive/b2g_os/phone_guide/flame/updating_your_flame/index.html delete mode 100644 files/id/archive/b2g_os/phone_guide/index.html delete mode 100644 files/id/archive/b2g_os/platform/index.html delete mode 100644 files/id/archive/b2g_os/quickstart/aplikasi_pertama_kamu/index.html delete mode 100644 files/id/archive/b2g_os/quickstart/index.html delete mode 100644 files/id/archive/b2g_os/simulator/index.html delete mode 100644 files/id/archive/b2g_os/using_the_app_manager/index.html delete mode 100644 files/id/archive/css3/index.html delete mode 100644 files/id/archive/index.html delete mode 100644 files/id/archive/meta_docs/index.html delete mode 100644 files/id/archive/mozilla/index.html delete mode 100644 files/id/archive/mozilla/xul/index.html delete mode 100644 files/id/archive/mozilla/xul/international_characters_in_xul_javascript/index.html delete mode 100644 files/id/archive/mozilla/xul/school_tutorial/index.html delete mode 100644 files/id/archive/mozilla/xul/school_tutorial/perkenalan/index.html delete mode 100644 files/id/archive/mozilla/xul/school_tutorial/the_essentials_of_an_extension/index.html delete mode 100644 files/id/archive/mozilla/xulrunner/index.html delete mode 100644 files/id/archive/web/index.html delete mode 100644 files/id/archive/web/standards-compliant_authoring_tools/index.html delete mode 100644 files/id/mdn/guidelines/layout/index.html delete mode 100644 files/id/mozilla/add-ons/setting_up_extension_development_environment/index.html delete mode 100644 files/id/mozilla/connect/index.html delete mode 100644 files/id/mozilla/firefox/edisi_pengembang/index.html delete mode 100644 files/id/mozilla/firefox/privacy/index.html delete mode 100644 files/id/mozilla/firefox/privacy/storage_access_policy/errors/cookieblockedtracker/index.html delete mode 100644 files/id/mozilla/firefox/privacy/storage_access_policy/errors/index.html delete mode 100644 files/id/mozilla/firefox/privacy/storage_access_policy/index.html delete mode 100644 files/id/mozilla/gecko/index.html delete mode 100644 files/id/mozilla/localization/index.html delete mode 100644 files/id/mozilla/localization/localizing_with_verbatim/index.html delete mode 100644 files/id/mozilla/localization/quick_start_guide/index.html delete mode 100644 files/id/mozilla/localization/quick_start_guide/qa_phase/index.html delete mode 100644 files/id/mozilla/localization/web_localizability/index.html delete mode 100644 files/id/mozilla/mercurial/basics/index.html delete mode 100644 files/id/mozilla/mercurial/index.html delete mode 100644 files/id/mozilla/persona/index.html delete mode 100644 files/id/mozilla/projects/index.html delete mode 100644 files/id/mozilla/projects/nss/index.html delete mode 100644 files/id/mozilla/projects/rhino/index.html delete mode 100644 files/id/sandbox/index.html delete mode 100644 files/id/tools/webide/index.html delete mode 100644 files/id/tools/webide/troubleshooting/index.html delete mode 100644 files/id/web/api/mobile_connection_api/index.html delete mode 100644 files/id/web/events/cached/index.html delete mode 100644 files/id/web/javascript/new_in_javascript/index.html delete mode 100644 files/id/zones/index.html (limited to 'files/id') diff --git a/files/id/_wikihistory.json b/files/id/_wikihistory.json deleted file mode 100644 index c7e8317627..0000000000 --- a/files/id/_wikihistory.json +++ /dev/null @@ -1,2171 +0,0 @@ -{ - "Developer_Guide": { - "modified": "2019-03-23T23:27:41.297Z", - "contributors": [ - "bskari" - ] - }, - "Developer_Guide/Virtual_ARM_di_Lingkungan_Linux": { - "modified": "2019-03-23T23:27:45.214Z", - "contributors": [ - "ariestiyansyah" - ] - }, - "Games": { - "modified": "2020-07-23T02:23:56.130Z", - "contributors": [ - "SphinxKnight", - "wbamberg", - "firmanwyd", - "Alivanza", - "Dataware" - ] - }, - "Games/Publishing_games": { - "modified": "2020-07-23T02:24:59.333Z", - "contributors": [ - "wbamberg" - ] - }, - "Games/Publishing_games/Game_promotion": { - "modified": "2020-07-23T02:28:02.464Z", - "contributors": [ - "SphinxKnight" - ] - }, - "Games/Techniques": { - "modified": "2019-04-21T11:17:49.913Z", - "contributors": [ - "wbamberg" - ] - }, - "Glossary": { - "modified": "2020-10-07T11:10:52.018Z", - "contributors": [ - "peterbe", - "SphinxKnight", - "wbamberg", - "bekti", - "Jeremie" - ] - }, - "Glossary/404": { - "modified": "2019-03-23T22:32:14.780Z", - "contributors": [ - "bekti" - ] - }, - "Glossary/AJAX": { - "modified": "2019-03-23T22:19:41.769Z", - "contributors": [ - "galuhsahid", - "yahyaman", - "bekti" - ] - }, - "Glossary/API": { - "modified": "2019-03-23T22:32:10.841Z", - "contributors": [ - "bekti" - ] - }, - "Glossary/Algoritma": { - "modified": "2019-03-23T22:41:10.845Z", - "contributors": [ - "yayansupiana", - "astrominion", - "agungprasetyosakti" - ] - }, - "Glossary/Asynchronous": { - "modified": "2019-03-23T22:29:53.061Z", - "contributors": [ - "adoel90" - ] - }, - "Glossary/CSS": { - "modified": "2019-03-23T22:19:46.534Z", - "contributors": [ - "galuhsahid", - "bekti" - ] - }, - "Glossary/HTML": { - "modified": "2019-03-18T21:44:41.786Z", - "contributors": [ - "galuhsahid" - ] - }, - "Glossary/HTTP": { - "modified": "2019-03-23T22:19:40.425Z", - "contributors": [ - "galuhsahid", - "bekti" - ] - }, - "Glossary/Identifier": { - "modified": "2019-03-23T22:10:10.171Z", - "contributors": [ - "sori-goklas-hutagalung" - ] - }, - "Glossary/JSON": { - "modified": "2019-03-18T21:44:43.807Z", - "contributors": [ - "galuhsahid" - ] - }, - "Glossary/JavaScript": { - "modified": "2019-03-23T22:19:47.350Z", - "contributors": [ - "galuhsahid", - "bekti" - ] - }, - "Glossary/Method": { - "modified": "2019-03-23T22:32:21.055Z", - "contributors": [ - "bekti" - ] - }, - "Glossary/Null": { - "modified": "2019-03-23T22:18:02.352Z", - "contributors": [ - "dinugr" - ] - }, - "Glossary/Primitive": { - "modified": "2019-03-23T22:09:59.397Z", - "contributors": [ - "sori-goklas-hutagalung" - ] - }, - "Glossary/Python": { - "modified": "2019-03-18T21:42:33.944Z", - "contributors": [ - "adityaharist19" - ] - }, - "Glossary/SEO": { - "modified": "2019-09-22T13:59:47.933Z", - "contributors": [ - "duduindo", - "rizkysaskiaputra" - ] - }, - "Glossary/SVG": { - "modified": "2019-03-23T22:19:38.489Z", - "contributors": [ - "galuhsahid", - "bekti" - ] - }, - "Glossary/Statement": { - "modified": "2019-03-23T22:09:58.650Z", - "contributors": [ - "sori-goklas-hutagalung" - ] - }, - "Glossary/URL": { - "modified": "2019-03-23T22:19:45.495Z", - "contributors": [ - "galuhsahid", - "bekti" - ] - }, - "Glossary/Variable": { - "modified": "2019-03-23T22:09:46.873Z", - "contributors": [ - "bekti" - ] - }, - "Glossary/XML": { - "modified": "2019-03-23T22:19:46.777Z", - "contributors": [ - "galuhsahid", - "bekti" - ] - }, - "Glossary/property": { - "modified": "2019-03-23T22:32:18.314Z", - "contributors": [ - "bekti" - ] - }, - "Learn": { - "modified": "2020-08-08T15:57:34.011Z", - "contributors": [ - "excelrtuhin", - "lisa.angraini.la", - "setyadi", - "Transamunos", - "SphinxKnight", - "svarlamov", - "padila50", - "milhamj", - "bekti", - "miftahafina", - "bang_eko", - "Andrew_Pfeiffer" - ] - }, - "Learn/Accessibility": { - "modified": "2020-07-16T22:39:57.425Z", - "contributors": [ - "zahrulseptian295" - ] - }, - "Learn/CSS": { - "modified": "2020-07-16T22:25:34.322Z", - "contributors": [ - "sideshowbarker" - ] - }, - "Learn/Common_questions": { - "modified": "2020-07-16T22:35:24.163Z", - "contributors": [ - "ashymee", - "dennisblight", - "stephaniehobson" - ] - }, - "Learn/Common_questions/Bagaimana_cara_kerja_Internet": { - "modified": "2020-07-16T22:35:36.880Z", - "contributors": [ - "xenavrt", - "dennisblight" - ] - }, - "Learn/Common_questions/Berfikir_sebelum_membuat_kode": { - "modified": "2020-07-16T22:35:34.339Z", - "contributors": [ - "wahyuakbarwibowo" - ] - }, - "Learn/Common_questions/Pages_sites_servers_and_search_engines": { - "modified": "2020-07-16T22:35:39.876Z", - "contributors": [ - "ilhamm11194011" - ] - }, - "Learn/Common_questions/set_up_a_local_testing_server": { - "modified": "2020-07-16T22:35:52.964Z", - "contributors": [ - "dennisblight" - ] - }, - "Learn/Getting_started_with_the_web": { - "modified": "2020-07-16T22:33:53.018Z", - "contributors": [ - "Transamunos", - "thickkoezz", - "dennisblight", - "galuhsahid", - "bekti", - "miftahafina", - "adeyahya", - "chrisdavidmills" - ] - }, - "Learn/Getting_started_with_the_web/Akan_terlihat_seperti_apa_website_anda": { - "modified": "2020-07-16T22:34:16.825Z", - "contributors": [ - "thickkoezz", - "bekti", - "dovjay", - "yayansupiana" - ] - }, - "Learn/Getting_started_with_the_web/CSS_basics": { - "modified": "2020-07-16T22:34:58.859Z", - "contributors": [ - "thickkoezz", - "galuhsahid" - ] - }, - "Learn/Getting_started_with_the_web/HTML_basics": { - "modified": "2020-07-16T22:34:45.914Z", - "contributors": [ - "thickkoezz", - "adangwihanda", - "yasminzy", - "oktafh", - "bangyasri" - ] - }, - "Learn/Getting_started_with_the_web/How_the_Web_works": { - "modified": "2020-07-16T22:34:00.538Z", - "contributors": [ - "dennisblight", - "bekti" - ] - }, - "Learn/Getting_started_with_the_web/Installing_basic_software": { - "modified": "2020-07-16T22:34:08.020Z", - "contributors": [ - "Transamunos", - "thickkoezz", - "dennisblight", - "bekti", - "yayansupiana", - "agus_nurcholis" - ] - }, - "Learn/Getting_started_with_the_web/JavaScript_basics": { - "modified": "2020-07-16T22:35:10.743Z", - "contributors": [ - "willi-dev", - "MichaelSipayung", - "bekti", - "Fidelstu", - "miftahafina", - "adeyahya" - ] - }, - "Learn/Getting_started_with_the_web/Mengelola_file": { - "modified": "2020-07-16T22:34:33.806Z", - "contributors": [ - "thickkoezz", - "galuhsahid", - "BPiVcarD", - "vdanny" - ] - }, - "Learn/Getting_started_with_the_web/Publishing_your_website": { - "modified": "2020-07-16T22:34:25.723Z", - "contributors": [ - "bekti" - ] - }, - "Learn/HTML": { - "modified": "2020-07-16T22:22:18.743Z", - "contributors": [ - "bayuYudhaSaputra", - "fikrirazor" - ] - }, - "Learn/HTML/Howto": { - "modified": "2020-08-21T10:36:52.641Z", - "contributors": [ - "ikramwadudu99" - ] - }, - "Learn/HTML/Multimedia_dan_embedding": { - "modified": "2020-07-16T22:24:25.764Z", - "contributors": [ - "SphinxKnight", - "putrapuices", - "thickkoezz" - ] - }, - "Learn/HTML/Multimedia_dan_embedding/Adding_vector_graphics_to_the_Web": { - "modified": "2020-07-16T22:24:40.529Z", - "contributors": [ - "mujahid-it" - ] - }, - "Learn/HTML/Multimedia_dan_embedding/Responsive_images": { - "modified": "2020-07-16T22:24:34.275Z", - "contributors": [ - "mujahid-it" - ] - }, - "Learn/HTML/Pengenalan_HTML": { - "modified": "2020-07-30T01:00:05.720Z", - "contributors": [ - "setyadi", - "Zen-Akira", - "thickkoezz", - "ariaenggar" - ] - }, - "Learn/HTML/Pengenalan_HTML/Document_and_website_structure": { - "modified": "2020-07-16T22:24:04.997Z", - "contributors": [ - "mujahid-it" - ] - }, - "Learn/HTML/Pengenalan_HTML/HTML_text_fundamentals": { - "modified": "2020-07-16T22:23:32.925Z", - "contributors": [ - "Transamunos" - ] - }, - "Learn/HTML/Pengenalan_HTML/Structuring_a_page_of_content": { - "modified": "2020-07-16T22:24:19.411Z", - "contributors": [ - "mujahid-it" - ] - }, - "Learn/HTML/Tabel": { - "modified": "2020-07-16T22:25:12.167Z", - "contributors": [ - "jatmikaekachandra" - ] - }, - "Learn/How_to_contribute": { - "modified": "2020-07-16T22:33:44.062Z", - "contributors": [ - "SphinxKnight", - "bekti", - "ariestiyansyah" - ] - }, - "Learn/JavaScript": { - "modified": "2020-07-16T22:29:39.927Z", - "contributors": [ - "triashand", - "ariebrainware", - "bekti", - "miftahafina" - ] - }, - "Learn/JavaScript/Building_blocks": { - "modified": "2020-11-07T05:27:42.212Z", - "contributors": [ - "cxvq", - "Fidelstu" - ] - }, - "Learn/JavaScript/Client-side_web_APIs": { - "modified": "2020-07-16T22:32:39.540Z", - "contributors": [ - "awim" - ] - }, - "Learn/JavaScript/Client-side_web_APIs/Introduction": { - "modified": "2020-07-16T22:32:45.404Z", - "contributors": [ - "rizkypjt" - ] - }, - "Learn/JavaScript/First_steps": { - "modified": "2020-11-09T23:42:16.586Z", - "contributors": [ - "inbox.jen96", - "bekti" - ] - }, - "Learn/JavaScript/First_steps/What_is_JavaScript": { - "modified": "2020-07-16T22:30:08.653Z", - "contributors": [ - "ajiprio01", - "windykurniawan-windcode" - ] - }, - "Learn/JavaScript/Objects": { - "modified": "2020-07-16T22:31:50.305Z", - "contributors": [ - "thickkoezz", - "Fidelstu" - ] - }, - "Learn/JavaScript/Objects/Dasar-dasar": { - "modified": "2020-07-16T22:31:59.183Z", - "contributors": [ - "indrayoganata" - ] - }, - "Learn/Server-side": { - "modified": "2020-07-16T22:35:58.563Z", - "contributors": [ - "chrisdavidmills" - ] - }, - "Learn/Server-side/Django": { - "modified": "2020-09-27T09:04:00.240Z", - "contributors": [ - "MuhamadAzizi", - "AgungWiyono", - "aps2201", - "fikrirazor" - ] - }, - "Learn/Server-side/Django/Tutorial_local_library_website": { - "modified": "2020-09-27T09:52:56.557Z", - "contributors": [ - "MuhamadAzizi" - ] - }, - "Learn/Server-side/Django/development_environment": { - "modified": "2020-09-27T09:24:51.296Z", - "contributors": [ - "MuhamadAzizi", - "mujahid-it" - ] - }, - "Learn/Server-side/First_steps": { - "modified": "2020-07-16T22:36:09.052Z", - "contributors": [ - "ferdian89" - ] - }, - "Learn/Web_Mechanics": { - "modified": "2020-07-16T22:22:13.418Z", - "contributors": [ - "miftahafina" - ] - }, - "MDN": { - "modified": "2020-08-29T05:39:32.291Z", - "contributors": [ - "excelrtuhin", - "jswisher", - "SphinxKnight", - "wbamberg", - "bekti", - "Sheppy" - ] - }, - "MDN/About": { - "modified": "2020-08-09T11:25:04.711Z", - "contributors": [ - "harikun" - ] - }, - "MDN/Contribute": { - "modified": "2019-01-16T19:12:55.469Z", - "contributors": [ - "wbamberg", - "bekti", - "ariestiyansyah", - "Sheppy" - ] - }, - "MDN/Contribute/Feedback": { - "modified": "2020-09-30T17:51:12.443Z", - "contributors": [ - "chrisdavidmills", - "SphinxKnight", - "thickkoezz", - "wbamberg", - "chorie", - "viankakrisna", - "afishop", - "jswisher", - "pieteru_insekai" - ] - }, - "MDN/Contribute/Getting_started": { - "modified": "2020-09-30T17:12:29.554Z", - "contributors": [ - "chrisdavidmills", - "SphinxKnight", - "excelrtuhin", - "kangsantripaud", - "ISO", - "devmio", - "agenbaccaratnet", - "wbamberg", - "nsiregar", - "chorie", - "arifpedia", - "firmanwyd", - "bekti", - "bayuah", - "Mohdsalleh", - "Bobypurnomo", - "rio.putra", - "helloeny" - ] - }, - "MDN/Contribute/Howto": { - "modified": "2019-01-16T19:12:51.064Z", - "contributors": [ - "wbamberg", - "bekti", - "Sheppy" - ] - }, - "MDN/Contribute/Howto/Create_an_MDN_account": { - "modified": "2019-03-23T22:38:48.748Z", - "contributors": [ - "wbamberg", - "padila50", - "firmanwyd", - "taqiyyuki02", - "Lukman04" - ] - }, - "MDN/Contribute/Howto/Do_a_technical_review": { - "modified": "2019-03-23T22:32:05.940Z", - "contributors": [ - "wbamberg", - "heasanking" - ] - }, - "MDN/Contribute/Howto/Do_an_editorial_review": { - "modified": "2019-03-23T22:31:28.587Z", - "contributors": [ - "wbamberg", - "ElangSBP", - "bekti", - "Pieteru" - ] - }, - "MDN/Contribute/Howto/Set_the_summary_for_a_page": { - "modified": "2019-01-16T19:13:18.495Z", - "contributors": [ - "wbamberg", - "zekaras" - ] - }, - "MDN/Contribute/Howto/Tag": { - "modified": "2019-03-23T23:04:03.858Z", - "contributors": [ - "wbamberg", - "yayasl" - ] - }, - "MDN/Contribute/Processes": { - "modified": "2019-03-23T22:33:46.372Z", - "contributors": [ - "ignchristian", - "wbamberg", - "jswisher" - ] - }, - "MDN/Contribute/Tugas": { - "modified": "2019-01-16T19:13:42.819Z", - "contributors": [ - "wbamberg", - "firmanwyd", - "Cr7Pramana" - ] - }, - "MDN/Guidelines": { - "modified": "2020-09-30T15:29:57.815Z", - "contributors": [ - "chrisdavidmills", - "wbamberg", - "bekti", - "Sheppy" - ] - }, - "MDN/Guidelines/Writing_style_guide": { - "modified": "2020-09-30T15:29:58.831Z", - "contributors": [ - "chrisdavidmills", - "alvisolikah0507" - ] - }, - "MDN/Komunitas": { - "modified": "2019-05-29T21:20:10.743Z", - "contributors": [ - "alattalatta", - "KLIWONJagung", - "wbamberg", - "Makarim", - "firmanwyd", - "padila50", - "bekti", - "eriskatp" - ] - }, - "MDN/Komunitas/Conversations": { - "modified": "2019-03-23T22:41:40.315Z", - "contributors": [ - "wbamberg", - "jswisher", - "randiproska" - ] - }, - "MDN/User_guide": { - "modified": "2020-12-07T17:30:15.270Z", - "contributors": [ - "wbamberg", - "Sheppy" - ] - }, - "MDN/User_guide/Menghapus_halaman": { - "modified": "2019-01-16T18:55:32.659Z", - "contributors": [ - "wbamberg", - "helloeny" - ] - }, - "Mozilla": { - "modified": "2019-03-23T23:28:31.556Z", - "contributors": [ - "wim449", - "Sheppy" - ] - }, - "Mozilla/Add-ons": { - "modified": "2019-09-09T13:11:45.968Z", - "contributors": [ - "SphinxKnight", - "bekti", - "soulast", - "LukmanTambose", - "pieteru_insekai", - "novita" - ] - }, - "Mozilla/Add-ons/WebExtensions": { - "modified": "2019-07-03T08:48:34.929Z", - "contributors": [ - "SphinxKnight", - "herliansyah", - "fesuydev", - "wbamberg" - ] - }, - "Mozilla/Add-ons/WebExtensions/API": { - "modified": "2019-11-26T22:19:27.565Z", - "contributors": [ - "wbamberg" - ] - }, - "Mozilla/Add-ons/WebExtensions/API/browserSettings": { - "modified": "2020-10-15T22:32:28.909Z", - "contributors": [ - "SphinxKnight", - "joelinformaticien01", - "didikpramono" - ] - }, - "Mozilla/Add-ons/WebExtensions/API/notifikasi": { - "modified": "2020-10-15T22:05:36.197Z", - "contributors": [ - "asiongtobing", - "wbamberg", - "Azhe403" - ] - }, - "Mozilla/Add-ons/WebExtensions/API/windows": { - "modified": "2020-10-15T21:51:41.708Z", - "contributors": [ - "wbamberg", - "abbycar" - ] - }, - "Mozilla/Add-ons/WebExtensions/API/windows/CreateType": { - "modified": "2020-10-15T21:51:40.999Z", - "contributors": [ - "wbamberg", - "fesuydev" - ] - }, - "Mozilla/Add-ons/WebExtensions/Apa_Itu_WebExtensions": { - "modified": "2019-03-18T21:06:29.401Z", - "contributors": [ - "fesuydev" - ] - }, - "Mozilla/Add-ons/WebExtensions/Browser_support_for_JavaScript_APIs": { - "modified": "2020-10-15T20:55:16.114Z", - "contributors": [ - "didikpramono" - ] - }, - "Mozilla/Add-ons/WebExtensions/Content_scripts": { - "modified": "2020-07-10T14:58:49.988Z", - "contributors": [ - "prajahutapea1980" - ] - }, - "Mozilla/Add-ons/WebExtensions/Your_first_WebExtension": { - "modified": "2019-03-18T21:06:21.389Z", - "contributors": [ - "fesuydev" - ] - }, - "Mozilla/Firefox": { - "modified": "2019-09-10T14:58:31.117Z", - "contributors": [ - "SphinxKnight", - "wbamberg", - "chorie", - "bekti", - "haris_haki89", - "StarGible" - ] - }, - "Mozilla/Firefox/Releases": { - "modified": "2019-03-23T23:09:29.710Z", - "contributors": [ - "wbamberg", - "bekti", - "ziyunfei" - ] - }, - "Pengembangan_Web": { - "modified": "2019-03-23T22:51:52.244Z", - "contributors": [ - "rahmatsubekti" - ] - }, - "Tools": { - "modified": "2020-07-16T22:44:15.262Z", - "contributors": [ - "SphinxKnight", - "wbamberg", - "srwicak", - "bekti", - "paleutoh", - "Rawoyo", - "agungprasetyosakti", - "abdulrahmandwn@gmail.com", - "bg17me", - "romifzld@gmail.com", - "Rusli88", - "redkhila", - "Almizajuhazamjabila", - "Dera_kom", - "InyoezzRusty", - "dodo_tgrcity" - ] - }, - "Tools/Accessibility_inspector": { - "modified": "2020-07-16T22:36:39.804Z", - "contributors": [ - "BrilliantFikri" - ] - }, - "Tools/Debugger": { - "modified": "2020-07-16T22:35:04.572Z", - "contributors": [ - "wbamberg", - "fscholz", - "trevorh", - "aslam" - ] - }, - "Tools/Page_Inspector": { - "modified": "2020-07-16T22:34:27.903Z", - "contributors": [ - "wbamberg", - "bekti" - ] - }, - "Tools/Page_Inspector/How_to": { - "modified": "2020-07-16T22:34:31.302Z" - }, - "Tools/Remote_Debugging": { - "modified": "2020-07-16T22:35:37.379Z", - "contributors": [ - "wbamberg", - "fahrizalsaler", - "Rizal712", - "zemaryal" - ] - }, - "Web": { - "modified": "2020-08-01T17:04:48.178Z", - "contributors": [ - "Transamunos", - "padila50", - "firmanwyd", - "TIYAN", - "Pieteru", - "bekti", - "nochis", - "srifqi", - "enda34", - "jefriebdn", - "groovecoder", - "Dhinicarnetta", - "pieteru_insekai", - "Jan.Ruzicka" - ] - }, - "Web/API": { - "modified": "2019-03-23T23:29:04.875Z", - "contributors": [ - "teoli", - "Rodin", - "ethertank", - "Sheppy", - "pieteru_insekai" - ] - }, - "Web/API/API_Push": { - "modified": "2019-03-23T22:39:12.627Z", - "contributors": [ - "bayuah" - ] - }, - "Web/API/AbstractWorker": { - "modified": "2019-03-23T22:32:36.681Z", - "contributors": [ - "bekti" - ] - }, - "Web/API/CacheStorage": { - "modified": "2020-10-15T22:30:28.579Z", - "contributors": [ - "AprilSylph" - ] - }, - "Web/API/Canvas_API": { - "modified": "2020-04-30T13:42:37.733Z", - "contributors": [ - "Thor-x86", - "her82man" - ] - }, - "Web/API/Console": { - "modified": "2019-03-23T22:06:01.155Z", - "contributors": [ - "chaosrock" - ] - }, - "Web/API/Document": { - "modified": "2019-03-23T22:31:44.953Z", - "contributors": [ - "teoli" - ] - }, - "Web/API/Document/createElement": { - "modified": "2019-03-18T21:40:57.940Z", - "contributors": [ - "srwicak" - ] - }, - "Web/API/Document/links": { - "modified": "2019-03-23T22:31:46.942Z", - "contributors": [ - "bekti" - ] - }, - "Web/API/Document/write": { - "modified": "2019-03-23T22:31:16.420Z", - "contributors": [ - "bekti" - ] - }, - "Web/API/Event": { - "modified": "2019-03-23T22:34:07.571Z", - "contributors": [ - "bekti" - ] - }, - "Web/API/Event/currentTarget": { - "modified": "2019-03-23T22:02:04.056Z", - "contributors": [ - "agengdp" - ] - }, - "Web/API/Event/target": { - "modified": "2020-10-15T22:29:42.203Z", - "contributors": [ - "mujahid-it" - ] - }, - "Web/API/Fetch_API": { - "modified": "2020-10-15T22:15:10.618Z", - "contributors": [ - "arifirmansyah" - ] - }, - "Web/API/Navigator": { - "modified": "2019-03-23T22:33:55.930Z", - "contributors": [ - "bekti", - "jpmedley" - ] - }, - "Web/API/Navigator/mediaDevices": { - "modified": "2020-10-15T22:35:18.495Z", - "contributors": [ - "ajid2" - ] - }, - "Web/API/Navigator/serviceWorker": { - "modified": "2019-03-23T22:33:57.198Z", - "contributors": [ - "bekti" - ] - }, - "Web/API/ServiceWorker": { - "modified": "2019-03-23T22:33:58.500Z", - "contributors": [ - "bekti" - ] - }, - "Web/API/ServiceWorkerContainer": { - "modified": "2020-10-15T22:30:32.905Z", - "contributors": [ - "Wind1808" - ] - }, - "Web/API/ServiceWorkerRegistration": { - "modified": "2019-03-23T22:24:55.454Z", - "contributors": [ - "lostsource" - ] - }, - "Web/API/ServiceWorkerRegistration/pushManager": { - "modified": "2019-03-23T22:25:01.542Z", - "contributors": [ - "bekti" - ] - }, - "Web/API/Service_Worker_API": { - "modified": "2019-03-23T22:34:03.819Z", - "contributors": [ - "chrisdavidmills" - ] - }, - "Web/API/Service_Worker_API/Using_Service_Workers": { - "modified": "2019-03-23T22:34:11.113Z", - "contributors": [ - "bekti" - ] - }, - "Web/API/SpeechSynthesis": { - "modified": "2020-10-15T22:26:55.754Z" - }, - "Web/API/SpeechSynthesis/onvoiceschanged": { - "modified": "2020-10-15T22:28:05.104Z", - "contributors": [ - "azaddogan0688" - ] - }, - "Web/API/Storage": { - "modified": "2020-10-15T22:14:31.365Z", - "contributors": [ - "daengbaco" - ] - }, - "Web/API/WebGL_API": { - "modified": "2020-04-29T19:32:33.970Z", - "contributors": [ - "bekti", - "fscholz", - "bassam", - "agungprasetyosakti" - ] - }, - "Web/API/WebRTC_API": { - "modified": "2019-03-23T22:16:11.428Z", - "contributors": [ - "fitra" - ] - }, - "Web/API/Window": { - "modified": "2019-03-23T22:04:16.389Z", - "contributors": [ - "jpmedley" - ] - }, - "Web/API/Window/getSelection": { - "modified": "2020-10-15T22:25:06.790Z", - "contributors": [ - "fsodic" - ] - }, - "Web/API/Window/window": { - "modified": "2019-03-23T22:04:14.512Z", - "contributors": [ - "Makarim" - ] - }, - "Web/API/XMLHttpRequest": { - "modified": "2020-10-15T22:29:42.073Z", - "contributors": [ - "mconley" - ] - }, - "Web/API/XMLHttpRequest/Using_XMLHttpRequest": { - "modified": "2020-10-15T22:29:44.031Z", - "contributors": [ - "cupsmaniak" - ] - }, - "Web/CSS": { - "modified": "2020-10-11T06:34:07.941Z", - "contributors": [ - "liimep", - "SphinxKnight", - "okabrionz", - "bekti", - "pieteru_insekai" - ] - }, - "Web/CSS/:active": { - "modified": "2019-03-23T22:39:29.350Z", - "contributors": [ - "fscholz", - "dedy_serang" - ] - }, - "Web/CSS/@font-face": { - "modified": "2020-10-15T22:29:43.073Z", - "contributors": [ - "Speich" - ] - }, - "Web/CSS/@font-face/font-display": { - "modified": "2020-10-15T22:29:40.410Z", - "contributors": [ - "yhogalampung" - ] - }, - "Web/CSS/CSS_Box_Model": { - "modified": "2019-11-12T01:36:35.726Z" - }, - "Web/CSS/CSS_Box_Model/Introduction_to_the_CSS_box_model": { - "modified": "2020-04-14T11:30:15.446Z", - "contributors": [ - "AndrEndru" - ] - }, - "Web/CSS/CSS_Selectors": { - "modified": "2019-03-23T22:39:36.340Z", - "contributors": [ - "dedy_serang", - "Sebastianz" - ] - }, - "Web/CSS/CSS_Selectors/Using_the_:target_pseudo-class_in_selectors": { - "modified": "2019-03-23T22:39:39.136Z", - "contributors": [ - "dedy_serang" - ] - }, - "Web/CSS/Type_selectors": { - "modified": "2019-03-23T22:39:33.121Z", - "contributors": [ - "dedy_serang" - ] - }, - "Web/CSS/background-color": { - "modified": "2020-10-15T22:13:54.838Z", - "contributors": [ - "Fairsu" - ] - }, - "Web/CSS/flex-direction": { - "modified": "2020-10-15T22:33:04.876Z", - "contributors": [ - "tegar97" - ] - }, - "Web/CSS/mask-border-width": { - "modified": "2020-11-28T00:13:02.295Z", - "contributors": [ - "alifudinashfa7" - ] - }, - "Web/CSS/referensi": { - "modified": "2020-10-11T06:52:29.728Z", - "contributors": [ - "liimep" - ] - }, - "Web/CSS/text-transform": { - "modified": "2020-10-15T22:00:17.057Z", - "contributors": [ - "fowlplay" - ] - }, - "Web/Events": { - "modified": "2019-04-30T14:00:32.443Z", - "contributors": [ - "wbamberg", - "bep" - ] - }, - "Web/Events/error": { - "modified": "2019-03-23T22:33:54.573Z", - "contributors": [ - "fscholz", - "bekti" - ] - }, - "Web/Guide": { - "modified": "2019-03-23T23:29:05.952Z", - "contributors": [ - "firmanwyd", - "bekti", - "rahmatsubekti", - "ethertank", - "Sheppy" - ] - }, - "Web/Guide/API": { - "modified": "2019-09-11T09:41:53.158Z", - "contributors": [ - "SphinxKnight", - "steffix.h2" - ] - }, - "Web/Guide/API/WebRTC": { - "modified": "2019-03-23T22:55:51.386Z", - "contributors": [ - "fitra", - "yuan8" - ] - }, - "Web/Guide/CSS/Getting_started": { - "modified": "2019-03-23T23:14:57.144Z", - "contributors": [ - "mahfudhi" - ] - }, - "Web/Guide/CSS/Media_queries": { - "modified": "2019-03-23T23:17:04.703Z", - "contributors": [ - "Sebastianz", - "mrstork", - "malayaleecoder", - "dpitaloka" - ] - }, - "Web/Guide/Grafis": { - "modified": "2019-03-23T23:29:12.829Z", - "contributors": [ - "firmanwyd", - "bekti", - "pieteru_insekai" - ] - }, - "Web/Guide/HTML/Forms": { - "modified": "2020-07-16T22:20:57.894Z", - "contributors": [ - "ariona_rian" - ] - }, - "Web/Guide/HTML/HTML5": { - "modified": "2019-04-27T02:10:19.507Z", - "contributors": [ - "eragone394", - "teoli", - "andi-sholihin", - "dac" - ] - }, - "Web/HTML": { - "modified": "2020-03-30T02:20:45.667Z", - "contributors": [ - "SphinxKnight", - "teriray23", - "Transamunos", - "GhalibPutra879", - "globalnet", - "Pieteru", - "bekti", - "pieteru_insekai", - "noorAddianna" - ] - }, - "Web/HTML/Element": { - "modified": "2020-05-04T02:43:50.266Z", - "contributors": [ - "SphinxKnight", - "ISO", - "Transamunos", - "bekti", - "kscarfone" - ] - }, - "Web/HTML/Element/base": { - "modified": "2019-09-22T14:03:48.366Z", - "contributors": [ - "duduindo", - "Ariansnirwana" - ] - }, - "Web/HTML/Element/dialog": { - "modified": "2020-10-15T22:00:58.630Z", - "contributors": [ - "jpmakangiras" - ] - }, - "Web/HTML/Element/image": { - "modified": "2019-03-23T22:11:52.537Z", - "contributors": [ - "Fidelstu" - ] - }, - "Web/HTTP": { - "modified": "2019-03-23T22:10:11.130Z", - "contributors": [ - "srwicak", - "Joe_Brown", - "Jasakontraktor", - "fscholz" - ] - }, - "Web/HTTP/Basics_of_HTTP": { - "modified": "2020-07-05T03:38:29.103Z", - "contributors": [ - "setyadi", - "mfuji09" - ] - }, - "Web/HTTP/Gambaran": { - "modified": "2020-11-29T00:41:21.794Z", - "contributors": [ - "mzgndrg", - "bcnight" - ] - }, - "Web/HTTP/Methods": { - "modified": "2020-10-15T21:55:31.625Z", - "contributors": [ - "bekti", - "fscholz" - ] - }, - "Web/HTTP/Methods/GET": { - "modified": "2020-10-15T21:55:31.974Z", - "contributors": [ - "bekti" - ] - }, - "Web/HTTP/Proxy_servers_and_tunneling": { - "modified": "2020-10-19T13:06:42.068Z", - "contributors": [ - "jwerre" - ] - }, - "Web/HTTP/Proxy_servers_and_tunneling/Proxy_Auto-Configuration_(PAC)_file": { - "modified": "2020-10-20T02:03:59.798Z", - "contributors": [ - "SphinxKnight", - "worabaiyan" - ] - }, - "Web/HTTP/Status": { - "modified": "2020-07-11T00:04:04.381Z", - "contributors": [ - "tegar97", - "dyankastutara", - "M-Husein" - ] - }, - "Web/HTTP/Status/100": { - "modified": "2020-10-15T21:51:44.217Z", - "contributors": [ - "bekti" - ] - }, - "Web/HTTP/Status/200": { - "modified": "2020-10-15T21:55:30.356Z", - "contributors": [ - "bekti" - ] - }, - "Web/HTTP/Status/400": { - "modified": "2020-05-23T03:01:36.297Z", - "contributors": [ - "xenavrt" - ] - }, - "Web/HTTP/Status/403": { - "modified": "2020-10-15T22:30:03.647Z", - "contributors": [ - "xenavrt" - ] - }, - "Web/HTTP/Status/404": { - "modified": "2020-10-15T22:30:01.735Z", - "contributors": [ - "xenavrt" - ] - }, - "Web/HTTP/Status/405": { - "modified": "2020-05-23T02:57:36.571Z", - "contributors": [ - "xenavrt" - ] - }, - "Web/HTTP/Status/410": { - "modified": "2020-10-15T22:30:04.125Z", - "contributors": [ - "xenavrt" - ] - }, - "Web/HTTP/Status/500": { - "modified": "2020-10-15T21:57:54.889Z", - "contributors": [ - "dimyati_azhar", - "awanlamph" - ] - }, - "Web/JavaScript": { - "modified": "2020-03-12T19:37:54.103Z", - "contributors": [ - "SphinxKnight", - "Fidelstu", - "arifpedia", - "bekti", - "duriterlindung68", - "teoli", - "adeyahya", - "pieteru_insekai", - "keripix" - ] - }, - "Web/JavaScript/A_re-introduction_to_JavaScript": { - "modified": "2020-09-03T08:41:07.385Z", - "contributors": [ - "gifaeriyanto", - "irsyadharfiansyah", - "od2", - "kristoforusrp" - ] - }, - "Web/JavaScript/Data_structures": { - "modified": "2020-03-12T19:40:38.717Z", - "contributors": [ - "dinugr", - "Joe_Brown", - "fadlystwn", - "witart" - ] - }, - "Web/JavaScript/Inheritance_dan_prototype_chain": { - "modified": "2020-03-12T19:46:21.083Z", - "contributors": [ - "bekti" - ] - }, - "Web/JavaScript/Language_Resources": { - "modified": "2020-03-12T19:44:02.368Z", - "contributors": [ - "bekti" - ] - }, - "Web/JavaScript/Memory_Management": { - "modified": "2020-03-12T19:44:02.914Z", - "contributors": [ - "martinserafim93", - "agungprasetyosakti" - ] - }, - "Web/JavaScript/Panduan": { - "modified": "2020-03-12T19:38:02.146Z", - "contributors": [ - "bekti", - "teoli", - "kuntoaji" - ] - }, - "Web/JavaScript/Panduan/Closures": { - "modified": "2019-05-16T14:59:16.458Z", - "contributors": [ - "wbamberg", - "xlobin", - "sutikno" - ] - }, - "Web/JavaScript/Panduan/Loops_and_iteration": { - "modified": "2020-03-12T19:46:18.223Z", - "contributors": [ - "Fidelstu", - "jakarta" - ] - }, - "Web/JavaScript/Panduan/Numbers_and_dates": { - "modified": "2020-03-12T19:48:12.489Z", - "contributors": [ - "triashand" - ] - }, - "Web/JavaScript/Panduan/Tentang": { - "modified": "2019-05-16T15:03:14.492Z", - "contributors": [ - "wbamberg", - "adeyahya" - ] - }, - "Web/JavaScript/Panduan/Values,_variables,_and_literals": { - "modified": "2020-03-12T19:40:01.295Z", - "contributors": [ - "wbamberg", - "wawansumardi", - "sori-goklas-hutagalung", - "Fidelstu", - "bekti", - "kangfend", - "adeyahya" - ] - }, - "Web/JavaScript/Panduan/Working_with_Objects": { - "modified": "2020-03-12T19:48:10.821Z", - "contributors": [ - "thickkoezz", - "Fidelstu" - ] - }, - "Web/JavaScript/Panduan/pengenalan": { - "modified": "2020-03-12T19:41:22.637Z", - "contributors": [ - "snaztoz", - "thickkoezz", - "Fidelstu", - "ardhyui", - "bekti", - "adeyahya" - ] - }, - "Web/JavaScript/Reference": { - "modified": "2020-03-12T19:38:01.752Z", - "contributors": [ - "opblang", - "bekti", - "srifqi", - "teoli", - "keripix", - "boyo" - ] - }, - "Web/JavaScript/Reference/About": { - "modified": "2019-03-23T23:32:37.338Z", - "contributors": [ - "srifqi", - "teoli", - "keripix" - ] - }, - "Web/JavaScript/Reference/Classes": { - "modified": "2020-11-05T03:06:39.925Z", - "contributors": [ - "septianayoyo", - "syaifulrmdhn", - "rifqieh", - "shilohchis", - "fscholz" - ] - }, - "Web/JavaScript/Reference/Classes/constructor": { - "modified": "2020-03-12T19:45:06.809Z", - "contributors": [ - "bayuah", - "rafafauzi", - "MichaelSipayung", - "adfie" - ] - }, - "Web/JavaScript/Reference/Classes/extends": { - "modified": "2020-10-15T22:17:13.204Z", - "contributors": [ - "kbkesit" - ] - }, - "Web/JavaScript/Reference/Errors": { - "modified": "2020-03-12T19:44:10.832Z", - "contributors": [ - "bekti" - ] - }, - "Web/JavaScript/Reference/Errors/Called_on_incompatible_type": { - "modified": "2020-03-12T19:49:06.201Z", - "contributors": [ - "thickkoezz" - ] - }, - "Web/JavaScript/Reference/Errors/Invalid_array_length": { - "modified": "2020-03-12T19:49:10.144Z", - "contributors": [ - "thickkoezz" - ] - }, - "Web/JavaScript/Reference/Errors/Missing_semicolon_before_statement": { - "modified": "2020-03-12T19:48:15.949Z", - "contributors": [ - "SphinxKnight" - ] - }, - "Web/JavaScript/Reference/Errors/Negative_repetition_count": { - "modified": "2020-03-12T19:49:08.676Z", - "contributors": [ - "thickkoezz" - ] - }, - "Web/JavaScript/Reference/Errors/Not_a_codepoint": { - "modified": "2020-03-12T19:49:02.574Z", - "contributors": [ - "thickkoezz" - ] - }, - "Web/JavaScript/Reference/Errors/Not_defined": { - "modified": "2020-03-12T19:48:26.149Z", - "contributors": [ - "alattalatta", - "KLIWONJagung", - "ariefjava" - ] - }, - "Web/JavaScript/Reference/Errors/Property_access_denied": { - "modified": "2020-03-12T19:49:07.387Z", - "contributors": [ - "thickkoezz" - ] - }, - "Web/JavaScript/Reference/Errors/Too_much_recursion": { - "modified": "2020-03-12T19:49:07.518Z", - "contributors": [ - "thickkoezz" - ] - }, - "Web/JavaScript/Reference/Functions": { - "modified": "2020-10-15T22:08:23.542Z", - "contributors": [ - "snek" - ] - }, - "Web/JavaScript/Reference/Global_Objects": { - "modified": "2020-03-12T19:38:31.023Z", - "contributors": [ - "bekti", - "teoli", - "Norbert" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Array": { - "modified": "2020-04-13T23:45:16.177Z", - "contributors": [ - "jatmikaekachandra", - "hadyandev", - "triashand", - "arai" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Array/concat": { - "modified": "2019-03-23T22:34:10.740Z", - "contributors": [ - "bekti" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Array/filter": { - "modified": "2020-10-15T21:57:56.237Z", - "contributors": [ - "yahyaman" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Array/from": { - "modified": "2019-03-23T22:33:46.573Z", - "contributors": [ - "bekti" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Array/isArray": { - "modified": "2019-03-23T22:33:50.161Z", - "contributors": [ - "bekti" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Array/join": { - "modified": "2019-01-16T22:41:40.168Z", - "contributors": [ - "bekti" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Array/length": { - "modified": "2019-03-23T22:19:38.980Z", - "contributors": [ - "bekti" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Array/of": { - "modified": "2019-03-23T22:32:18.069Z", - "contributors": [ - "bekti" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Array/pop": { - "modified": "2019-03-23T22:32:08.604Z", - "contributors": [ - "bekti" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Array/reverse": { - "modified": "2019-03-23T22:33:45.481Z", - "contributors": [ - "bekti" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Array/shift": { - "modified": "2019-03-23T22:32:14.302Z", - "contributors": [ - "verdysaputra", - "bekti" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Array/slice": { - "modified": "2020-10-15T22:30:58.309Z", - "contributors": [ - "Mikeul", - "adisetiawan" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Array/splice": { - "modified": "2020-10-15T22:01:33.229Z", - "contributors": [ - "handipriyono" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Array/unshift": { - "modified": "2019-03-23T22:32:11.465Z", - "contributors": [ - "bekti" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Array/values": { - "modified": "2019-03-23T22:32:16.581Z", - "contributors": [ - "bekti" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Date": { - "modified": "2019-03-23T22:34:07.176Z", - "contributors": [ - "fscholz" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Date/getFullYear": { - "modified": "2020-10-15T22:19:08.648Z", - "contributors": [ - "thickkoezz" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Date/now": { - "modified": "2019-03-23T22:32:46.175Z", - "contributors": [ - "bekti" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Date/toJSON": { - "modified": "2019-03-23T22:34:13.538Z", - "contributors": [ - "bekti" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Date/toTimeString": { - "modified": "2019-03-23T22:33:14.301Z", - "contributors": [ - "bekti" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Error": { - "modified": "2019-03-23T22:31:47.242Z", - "contributors": [ - "bekti" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Error/name": { - "modified": "2019-03-23T22:31:47.638Z", - "contributors": [ - "bekti" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Function": { - "modified": "2019-03-18T20:47:58.533Z", - "contributors": [ - "syaifulrmdhn", - "fscholz" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Function/displayName": { - "modified": "2019-03-23T22:32:21.293Z", - "contributors": [ - "teoli", - "bekti" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Function/length": { - "modified": "2019-03-23T22:33:40.528Z", - "contributors": [ - "bekti" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Function/name": { - "modified": "2019-03-23T22:32:16.445Z", - "contributors": [ - "bekti" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Function/prototype": { - "modified": "2019-03-23T22:32:00.489Z", - "contributors": [ - "bekti" - ] - }, - "Web/JavaScript/Reference/Global_Objects/JSON": { - "modified": "2019-01-16T22:42:04.885Z", - "contributors": [ - "bekti" - ] - }, - "Web/JavaScript/Reference/Global_Objects/JSON/parse": { - "modified": "2019-03-23T22:33:56.784Z", - "contributors": [ - "bekti" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Map": { - "modified": "2019-03-23T22:33:57.668Z", - "contributors": [ - "fscholz" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Map/clear": { - "modified": "2019-03-23T22:33:58.119Z", - "contributors": [ - "bekti" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Map/delete": { - "modified": "2019-03-23T22:33:53.697Z", - "contributors": [ - "bekti" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Math": { - "modified": "2019-03-23T23:31:07.263Z", - "contributors": [ - "bekti", - "teoli", - "trucy" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Math/E": { - "modified": "2020-10-15T22:08:43.695Z", - "contributors": [ - "oktavianusmisro94" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Math/LN10": { - "modified": "2020-10-15T22:08:43.804Z", - "contributors": [ - "oktavianusmisro94" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Math/abs": { - "modified": "2019-03-23T22:27:14.164Z", - "contributors": [ - "baponk" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Math/ceil": { - "modified": "2020-10-15T21:49:08.672Z", - "contributors": [ - "bayuah", - "baponk" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Math/floor": { - "modified": "2019-03-23T22:27:14.949Z", - "contributors": [ - "twahyono", - "baponk" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Math/max": { - "modified": "2019-03-23T22:31:59.160Z", - "contributors": [ - "bekti" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Math/min": { - "modified": "2019-03-23T22:32:03.547Z", - "contributors": [ - "bekti" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Math/pow": { - "modified": "2019-03-23T23:31:18.374Z", - "contributors": [ - "teoli", - "egiw" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Object": { - "modified": "2019-03-23T22:37:32.954Z", - "contributors": [ - "dinugr", - "bekti", - "fscholz" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Object/getPrototypeOf": { - "modified": "2019-03-23T22:26:28.903Z", - "contributors": [ - "Ganesha" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Object/keys": { - "modified": "2019-03-23T22:26:35.536Z", - "contributors": [ - "haris" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Object/preventExtensions": { - "modified": "2019-07-08T04:20:18.084Z", - "contributors": [ - "Ganesha" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Promise": { - "modified": "2020-10-15T21:46:00.705Z", - "contributors": [ - "fscholz", - "PeteDevoy" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Promise/catch": { - "modified": "2020-10-15T21:46:01.765Z", - "contributors": [ - "fscholz", - "bekti" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Promise/reject": { - "modified": "2020-10-15T21:46:00.008Z", - "contributors": [ - "fscholz", - "bekti" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Promise/resolve": { - "modified": "2020-10-15T21:46:28.393Z", - "contributors": [ - "fscholz", - "bekti" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Promise/then": { - "modified": "2020-10-15T21:46:01.723Z", - "contributors": [ - "fscholz", - "bekti" - ] - }, - "Web/JavaScript/Reference/Global_Objects/RegExp": { - "modified": "2020-10-15T22:32:16.409Z", - "contributors": [ - "SphinxKnight", - "mijoonpcyoutuube" - ] - }, - "Web/JavaScript/Reference/Global_Objects/String": { - "modified": "2019-03-23T22:54:51.028Z", - "contributors": [ - "wbamberg", - "srifqi" - ] - }, - "Web/JavaScript/Reference/Global_Objects/String/concat": { - "modified": "2019-03-23T22:34:05.198Z", - "contributors": [ - "bekti" - ] - }, - "Web/JavaScript/Reference/Global_Objects/String/fromCharCode": { - "modified": "2020-08-08T03:30:34.821Z", - "contributors": [ - "whitehoodie", - "srifqi" - ] - }, - "Web/JavaScript/Reference/Global_Objects/String/fromCodePoint": { - "modified": "2020-10-15T22:15:58.214Z", - "contributors": [ - "antonbudianto" - ] - }, - "Web/JavaScript/Reference/Global_Objects/String/indexOf": { - "modified": "2019-03-23T22:29:51.517Z", - "contributors": [ - "MuhammadFariMadyan", - "adoel90" - ] - }, - "Web/JavaScript/Reference/Global_Objects/String/length": { - "modified": "2019-03-23T22:34:08.649Z", - "contributors": [ - "bekti" - ] - }, - "Web/JavaScript/Reference/Global_Objects/String/link": { - "modified": "2019-03-23T22:31:46.275Z", - "contributors": [ - "bekti" - ] - }, - "Web/JavaScript/Reference/Global_Objects/String/purwarupa": { - "modified": "2019-03-23T22:54:49.067Z", - "contributors": [ - "bekti", - "srifqi" - ] - }, - "Web/JavaScript/Reference/Global_Objects/String/split": { - "modified": "2019-03-23T22:31:50.185Z", - "contributors": [ - "bekti" - ] - }, - "Web/JavaScript/Reference/Global_Objects/String/toLowerCase": { - "modified": "2019-03-23T22:31:46.602Z", - "contributors": [ - "bekti" - ] - }, - "Web/JavaScript/Reference/Global_Objects/String/toString": { - "modified": "2019-03-23T22:32:42.001Z", - "contributors": [ - "bekti" - ] - }, - "Web/JavaScript/Reference/Global_Objects/String/toUpperCase": { - "modified": "2019-03-23T22:33:39.473Z", - "contributors": [ - "bekti" - ] - }, - "Web/JavaScript/Reference/Global_Objects/TypedArray": { - "modified": "2019-03-23T22:31:58.327Z", - "contributors": [ - "arai" - ] - }, - "Web/JavaScript/Reference/Global_Objects/TypedArray/join": { - "modified": "2019-03-23T22:32:07.353Z", - "contributors": [ - "bekti" - ] - }, - "Web/JavaScript/Reference/Global_Objects/isNaN": { - "modified": "2020-10-15T21:57:16.564Z", - "contributors": [ - "yusrilhs" - ] - }, - "Web/JavaScript/Reference/Lexical_grammar": { - "modified": "2020-03-12T19:46:20.884Z", - "contributors": [ - "nndwn", - "sori-goklas-hutagalung" - ] - }, - "Web/JavaScript/Reference/Operators": { - "modified": "2020-03-12T19:39:41.862Z", - "contributors": [ - "galih977", - "SphinxKnight", - "teoli" - ] - }, - "Web/JavaScript/Reference/Operators/Conditional_Operator": { - "modified": "2020-10-15T22:00:22.485Z", - "contributors": [ - "syuaib", - "zainalmustofa" - ] - }, - "Web/JavaScript/Reference/Operators/fungsi": { - "modified": "2020-03-12T19:45:02.306Z", - "contributors": [ - "opblang" - ] - }, - "Web/JavaScript/Reference/Operators/yield": { - "modified": "2020-10-15T21:58:01.116Z", - "contributors": [ - "PUYUP", - "j-blank", - "tangorboyz" - ] - }, - "Web/JavaScript/Reference/Statements": { - "modified": "2020-03-12T19:38:01.955Z", - "contributors": [ - "bekti", - "teoli", - "keripix" - ] - }, - "Web/JavaScript/Reference/Statements/Empty": { - "modified": "2020-03-12T19:45:20.591Z", - "contributors": [ - "bekti" - ] - }, - "Web/JavaScript/Reference/Statements/class": { - "modified": "2020-03-12T19:43:42.480Z", - "contributors": [ - "bekti" - ] - }, - "Web/JavaScript/Reference/Statements/do...while": { - "modified": "2020-10-15T21:46:22.842Z", - "contributors": [ - "bayuah", - "bekti" - ] - }, - "Web/JavaScript/Reference/Statements/export": { - "modified": "2020-03-12T19:44:15.912Z", - "contributors": [ - "fadlystwn", - "blubMe" - ] - }, - "Web/JavaScript/Reference/Statements/for...in": { - "modified": "2020-03-12T19:43:18.701Z", - "contributors": [ - "bekti", - "haris" - ] - }, - "Web/JavaScript/Reference/Statements/fungsi": { - "modified": "2020-03-12T19:46:13.838Z", - "contributors": [ - "irhamkim" - ] - }, - "Web/JavaScript/sekilas_teknologi_JavaScript": { - "modified": "2020-03-12T19:45:33.240Z", - "contributors": [ - "arifpedia" - ] - }, - "Web/MathML": { - "modified": "2020-10-15T22:09:52.119Z", - "contributors": [ - "AzizMuslim", - "ExE-Boss" - ] - }, - "Web/MathML/Element": { - "modified": "2019-03-18T21:24:31.292Z", - "contributors": [ - "okabrionz" - ] - }, - "Web/Reference": { - "modified": "2019-03-23T23:22:42.575Z", - "contributors": [ - "kscarfone" - ] - }, - "Web/Reference/API": { - "modified": "2019-03-23T23:22:41.127Z", - "contributors": [ - "bekti", - "Al_akbar", - "drihPee", - "bertzzie", - "teguhsetiyawan" - ] - }, - "Web/Security": { - "modified": "2019-09-10T16:35:29.682Z", - "contributors": [ - "SphinxKnight", - "cahbraling" - ] - }, - "Web/Web_Components": { - "modified": "2020-10-19T12:17:25.927Z", - "contributors": [ - "guciano" - ] - } -} \ No newline at end of file diff --git a/files/id/archive/add-ons/index.html b/files/id/archive/add-ons/index.html deleted file mode 100644 index acb2f057f2..0000000000 --- a/files/id/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 ---- -

Archived add-ons documentation.

- -

Add-on SDK
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.
bookmarks.export()
Exports bookmarks to an HTML bookmark file.
bookmarks.import()
Imports bookmarks from an HTML bookmark file.
Bootstrapped extensions
browser.bookmarks.export( function() {...} // optional function )
Code snippets
Creating custom Firefox extensions with the Mozilla build system
There is a wealth of material on creating extensions for Firefox. All of these documents currently assume, however, that you are developing your extension using XUL and JavaScript 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:
Extension Etiquette
This article describes best practices when making extensions, including how to be kind to your users. It assumes that you are already familiar with Building an Extension.
Extension Packaging
By the end of 2017 WebExtensions will be the only supported add-on type in Firefox. To learn how to install a WebExtension for testing purposes, see Temporary Installation in Firefox. To learn how to package a WebExtension for distribution, see Publishing your WebExtension.
Extensions support in SeaMonkey 2
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.
Firefox addons developer guide
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).
Hotfix Extension
This document has been moved to the Add-ons wiki.
How to convert an overlay extension to restartless
First off, what kind of add-on are we talking about here? Well, XUL overlays and windows, JSM files, chrome & resource mappings with localization, default preferences, but no XPCOM components of your own. Some of that will have to be replaced and the rest will need to be loaded differently.
Inline options
Firefox 7 supports a new syntax for defining extensions' preferences for both bootstrapped and traditional extensions. The user interface for the preferences defined with this new syntax appears in the extension's detail view in the Add-on Manager. This functionality originally appeared in Firefox mobile and is now available in Firefox on the desktop as well.
Install Manifests
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.
Interaction between privileged and non-privileged pages
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 MyExtensionEvent.
Legacy Add-ons
This section contains links to documentation for legacy technology for add-on development, including:
Legacy extensions for Firefox for Android
Add-ons that work with desktop Firefox do not automatically work in Firefox for Android:
Overlay extensions
This page contains links to documentation for the approach to developing extensions for Gecko-based applications which uses:
Performance best practices in extensions
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.
Security best practices in extensions
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.
Setting up an extension development environment
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).
Tabbed browser
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.
Techniques
.
Working with multiprocess Firefox
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:

diff --git a/files/id/archive/b2g_os/developing_firefox_os/index.html b/files/id/archive/b2g_os/developing_firefox_os/index.html deleted file mode 100644 index d36360d6fa..0000000000 --- a/files/id/archive/b2g_os/developing_firefox_os/index.html +++ /dev/null @@ -1,51 +0,0 @@ ---- -title: Developing Firefox OS -slug: Archive/B2G_OS/Developing_Firefox_OS -tags: - - B2G - - Developing - - Firefox OS - - NeedsTranslation - - TopicStub -translation_of: Archive/B2G_OS/Developing_Firefox_OS ---- -
-

Bagian ini memberikan dokumentasi yang berguna yang mencakup berbagai cara di mana OS Firefox (codename Boot2Gecko, atau B2G) dapat dimodifikasi / disesuaikan selama proses pembuatan, dan bagaimana Anda dapat membantu mengembangkan area platform tingkat rendah seperti Gecko dan Gonk.

-
- -
-

Catatan: Jika Anda secara khusus tertarik untuk membantu mengembangkan Gaia, antarmuka pengguna Firefox OS, Anda harus berkonsultasi dengan halaman Mengembangkan Gaia kami.

-
- -

Catatan Kontribusi Umum

- -

Karena Gecko adalah bagian integral dari browser Firefox, berkontribusi pada komponen yang terkait dengan Firefox Gecko adalah proses yang mirip dengan Gecko pada umumnya; Menyumbang Gonk juga lumayan mirip. Pada dasarnya, Anda perlu mengenal komunitas, pelajari bagaimana basis kode bekerja, dan temukan bug untuk dikerjakan. Tempat yang baik untuk mulai mendapatkan penghasilan tentang proses kontribusi Kontribusi pada basis kode Mozilla.

- -

Anda harus belajar tentang Gecko — cara kerjanya dan bagaimana strukturnya. Halaman awal MDN Gecko memiliki beberapa catatan yang berguna pada ini, seperti halnya Gecko: halaman Tinjauan pada Mozilla Wiki. Untuk informasi tentang API (Spesifik Mozilla OS), lihat halaman Wiki WebAPI untuk ringkasan pekerjaan, dan halaman MDN WebAPI untuk indeks semua API yang terdokumentasi.

- -

Next, look at Gonk, the kernel that Firefox OS runs on top of. Gonk is basically another porting target for Gecko, just like Mac OS X, Windows and Linux are in the case of Desktop Firefox versions. Gonk itself is really just a stripped down version of the Android Open Source Project — we tend not to change much of Gonk itself since most of the source code isn't under our control, and the device partners we work with to create Firefox OS devices usually provide device-specific code to interface between the device and Gecko/Gonk.

- -

There is still work to be done on APIs, however. Most Gonk-specific Gecko code either uses #ifdef MOZ_WIDGET_GONK to only enable it in Firefox OS, and/or are contained in gonk subdirectories, such as gecko-dev/hal/gonk. Try cloning the gecko-dev repo locally and having a look around. Our Mozilla Source Code Directory Structure article is also useful.

- -

Next, you should learn more about Firefox OS architecture, how to Build Firefox OS (start with the Firefox OS build process summary), and how to Port Firefox OS to other devices.

- -

Firefox OS is developed as a series of separate Modules: review the Firefox OS Modules page to get an idea of how the codebase is grouped, and learn who the main module owners are so you can get an idea of who to talk to if you need help.

- -
-

Note: To find help, the best places to start are the dev-b2g mailing list, and the #b2g chatroom on Mozilla IRC.

-
- -

Specific Firefox OS development topics

- -
-
Filing bugs against Firefox OS
-
This article provides a guide to filing bugs against any aspect of Firefox OS.
-
Modifying the hosts file
-
A guide to what can be achieved by modifying the Firefox OS hosts file.
-
Customization with the .userconfig file
-
How to customize the build and execution of Firefox OS by changing the .userconfig file.
-
Customizing the b2g.sh script
-
An explanation of what can be achieved by customizing the b2g.sh script, which runs the b2g application and controls many aspects of the system.
-
Customizing DNS
-
This article outlines a procedure to change the DNS servers for all interfaces (wifi, cellular, etc.) on a Firefox OS device.
-
diff --git a/files/id/archive/b2g_os/developing_firefox_os/porting/index.html b/files/id/archive/b2g_os/developing_firefox_os/porting/index.html deleted file mode 100644 index 33d147813a..0000000000 --- a/files/id/archive/b2g_os/developing_firefox_os/porting/index.html +++ /dev/null @@ -1,123 +0,0 @@ ---- -title: Porting Firefox OS -slug: Archive/B2G_OS/Developing_Firefox_OS/Porting -translation_of: Archive/B2G_OS/Porting_B2G_OS/basics ---- -
-

Firefox OS (formerly Boot to Gecko) uses a kernel derived from Android, with a Gecko-based user interface on top of it. This article provides a basic guide to how to go about porting the operating system to new devices.

-
-

This guide assumes you're porting to a new device that already runs Android; if you're porting to another device, the job is going to be more involved.

-

Set up your build system

-

The first step is to configure your build system; you can follow the guide in Firefox OS build prerequisites.

-

Create a local backup of the original Android system

-

Next, you should back up your Android device before you start nuking it with your test builds of B2G. In addition, some of these bits will be needed by the build and install process.

-
mkdir my_device_backup
-cd my_device_backup
-adb pull /system system
-

Clone the B2G repositories

-

The first step is to clone the B2G repository as well as the repository with the manifests.

-
git clone https://github.com/mozilla-b2g/B2G.git
-git clone https://github.com/mozilla-b2g/b2g-manifest.git
-

Add a new device to config.sh

-

The next step is to add a new device to config.sh in the B2G repository;  you can use the existing ones as a template. This basically involves providing the instructions for fetching the correct files to do the build.

-

Create a manifest for the new device

-

Now you need to add a manifest file for the new device. Refer to one of the existing manifests for a template. You can use the hamachi manifest a reference. Once done, you should add and commit your new manifest to your local b2g-manifest repository:

-
git add my-new-device.xml
-git commit
-
-

Next, you will want the config.sh file to use your local b2g-manifest repository instead of the official one. To achieve this, change the values of the GITREPO and BRANCH variables in the config.sh file to the location of your local repository and desired branch, for example:

-
GITREPO=${GITREPO:-"file:///home/yourname/b2g-manifest"}
-BRANCH=${BRANCH:-master}
-

Create a configuration tree for the new device

-

Create a new configuration tree for the new device. This should be at device/<manufacturer>/<device_id>. This tree should include, at least:

- -

The content here may differ a great deal from one device to another. In particular, BoardConfig.mk and extract-files.sh may differ significantly. This part requires a lot of hacking, testing, and debugging to figure out which binary blobs should be extracted. To get a better idea what is supposed to be contained there, take a look at the configuration for the hamachi device. Remember to correctly reference your own configuration tree from the manifest you created for your new device.

-
-

Note: If you can find an existing reference on CyanogenMod for your device, this information will speed up the porting process. the XDA Forum is another good place to discuss and check for resources.

-
-

Rebuild boot.img

-

Once you have all that done, you need to rebuild the boot image. This isn't usually needed for the kernel itself, but to pick up the changes to init.rc.

-

Changes to init.rc

-

The init.rc you use is not the one provided by B2G; instead, you need to pull it from the device.

-

The main things you'll need to modify are:

-

Import init.b2g.rc

-

Add the following lines to import init.b2g.rc:

-
on early-init
-    start ueventd
-    import /init.b2g.rc
-

Fix permissions

-

Correct the permissions on the files /system/b2g/b2g, /system/b2g/updater, /system/b2g/plugin-container; this should be done after the lines that mount the filesystem read/write:

-
chmod 0755 /system/b2g/b2g
-chmod 0755 /system/b2g/updater
-chmod 0755 /system/b2g/plugin-container
-

You might want to start by modifying the init.rc from the new device instead of using the init.rc provided by the build system; if so, you need to remember to set TARGET_PROVIDES_INIT_RC in BoardConfig.mk.

-

Prebuilt kernel vs. building the kernel from source

-

You can use a prebuilt kernel, or you may build the kernel from source. To build the kernel from source, add AndroidKernel.mk and the kernel config to the device configuration tree.

-

The maguro on the old build system is an example that builds the kernel from source.

-

Extracting and modifying an existing boot image

-

It is possible to recover the boot image of a phone by dumping the contents of the /dev/mtd/mtd1 or /dev/mtd/mtd2 devices, the resulting image file can then be easily recovered:

-
adb shell 'cat /dev/mtd/mtd1 > /sdcard/boot.img'
-adb pull /sdcard/boot.img
-
-

Once the boot image file has been obtained it can be unpacked via a helper tool such as unmkbootimg. The tool will extract both the kernel image (zImage) and the ramdisk (initramfs.cpio.gz) as well as printing out a command to rebuild the image with the same parameters of the original one, for example:

-
$ 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
----------------
-
-

To modify the ramdisk file create an output directory and extract it there:

-
mkdir initramfs_dir
-cd initramfs_dir
-gunzip -c ../initramfs.cpio.gz | cpio -i
-
-

Make all the required changes (such as modifying init.rc) and repack the ramdisk using mkbootfs, be sure to use the version that has been built with the B2G host tools:

-
/path/to/your/B2G/out/host/linux-x86/bin/mkbootfs . | gzip > ../newinitramfs.cpio.gz
-
-

Finally go back to the top-level directory and re-pack the boot image using the mkbootimg, also make sure you're using the version built with the other B2G host tools:

-
/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
-
-

If you now copy the new boot image under out/target/product/$DEVICE/boot.img (where $DEVICE is your device name) it will be automatically flashed when invoking flash.sh. Alternatively you can flash it by hand with the following commands:

-
adb reboot bootloader
-fastboot flash boot newboot.img
-fastboot reboot
-
-

Add the new device to flash.sh

-

Add the new device to flash.sh; the specifics of how to do this will depend on what tools need to be used to flash the new device.

-

Configure, build, and flash the new device

-

Now you can try building for and flashing to your new device:

-
ANDROIDFS_DIR=my_device_backup ./config.sh <device_id> '../b2g-manifest/default.xml'
-./build.sh
-./flash.sh
-

Test and debug

-

We need some details added here; indeed, this entire article could use some help.

-

FAQ

-

Forthcoming

-

See also

- diff --git a/files/id/archive/b2g_os/firefox_os_apps/index.html b/files/id/archive/b2g_os/firefox_os_apps/index.html deleted file mode 100644 index 370236dd14..0000000000 --- a/files/id/archive/b2g_os/firefox_os_apps/index.html +++ /dev/null @@ -1,85 +0,0 @@ ---- -title: Firefox OS apps -slug: Archive/B2G_OS/Firefox_OS_apps -tags: - - Apps - - Building - - Components - - Firefox OS - - Installing - - NeedsTranslation - - TopicStub - - device APIs -translation_of: Archive/B2G_OS/Firefox_OS_apps ---- -

This section of the Firefox OS docs covers the specific techniques required — and available tools — for building Firefox OS apps. You'll find a number of details below, from Firefox OS building blocks/web components, to device APIs and App installation.

- -

Building Firefox OS apps

- -
-
Building apps for Firefox OS
-
Firefox OS/Firefox platform app specifics, including App installation and management APIs, manifest files, packaged and hosted apps, handling API permissions.
-
Localization
-
This set of articles provides information for developers wishing to provide localized versions of their apps.
-
Performance
-
This page lists performance-related topics specific to Firefox OS.
-
Firefox Accounts on Firefox OS
-
This article provides an overview of using Firefox Accounts in Firefox OS.
-
Reference apps
-
This page lists a number of sample apps we've put together for you to download, install, play with and learn from. Have fun!
-
Screencast series: App Basics for Firefox OS
-
In this collection of short videos, developers from Mozilla and Telenor explain in a few steps how you can get started with building applications for Firefox OS.
-
- -

Building blocks

- -
-
Building Blocks
-
The Firefox OS Building Blocks are reusable UI components (also called 'common controls') that reflect OS-wide design patterns. Building Blocks are used to create the interfaces of all Gaia default apps. You are free to make use of these components in your own Firefox OS apps, or general Web apps.
-
- -

Styleguides

- -
-
Firefox OS Visual styleguide
-
Our style guide for Firefox OS visual design, covering colours, typeface, backgrounds, app icons, and the design of specific UI elements.
-
Firefox OS Copy styleguide
-
This guide outlines the rules we follow for writing Firefox OS app copy, but can be used as a general guide to writing good copy for any app interfaces.
-
Firefox OS in Arabic
-
A guide to the specific UX design implementation Firefox OS has in place for dealing with Arabic (and other RTL languages.)
-
- -

Assets

- -
-
Firefox OS design asset library
-
In this section you'll find design assets, artwork, graphic templates, fonts and other materials that will be helpful as you design Firefox OS/Gaia apps.
-
Firefox OS icon font
-
Firefox OS has its own icon font set available: this article explains how to use it in your own apps.
-
Firefox OS transitions
-
A reference to some of the transitions used in Firefox OS to move between different states in apps, including animated GIFs demonstrating the animations used, plus code samples to show the CSS animation code needed to implement these animations.
-
- -

References

- -
-
Firefox OS device APIs
-
This article provides a list of pages covering those APIs, as well as the app manifest permissions for each one.
-
Firefox OS app tools
-
This page provides a list of useful tools, libraries, examples, etc. that are useful for Firefox OS app developers, whether you want a code template to copy, or need help with adding a specific feature to your Firefox OS app.
-
- -

Other app topics

- -
-
Porting Chrome apps to Firefox OS Apps
-
This article discusses the differences between Chrome apps and Firefox OS Apps, and how you can convert between the two.
-
App development FAQ
-
This FAQ is a compilation of answers to common app development questions.
-
- -

See also

- - diff --git a/files/id/archive/b2g_os/firefox_os_apps/pelokalan/index.html b/files/id/archive/b2g_os/firefox_os_apps/pelokalan/index.html deleted file mode 100644 index acb5aeb487..0000000000 --- a/files/id/archive/b2g_os/firefox_os_apps/pelokalan/index.html +++ /dev/null @@ -1,92 +0,0 @@ ---- -title: Pelokalan aplikasi -slug: Archive/B2G_OS/Firefox_OS_apps/Pelokalan -translation_of: Archive/B2G_OS/Firefox_OS_apps/Localization ---- -

- -
-

This set of articles provides information for developers wishing to provide localized versions of their apps.

-
- -

Tutorials

- -
-
Getting started with app localization
-
This tutorial provides a detailed guide to app localization.
-
Connecting developers and translators with Transifex
-
This article explores the use of Transifex for managing translation work, both for app developers and localizers.
-
- -

Reference

- -
-
L10n.js reference
-
This article provides a reference for the l10n.js library, and its associated date helper, l10n_date.js.
-
Internationalization helpers: IntlHelper and mozIntl
-
This article looks at how Firefox OS handles localization of dates, times, numbers and collators from version 2.5 onwards, using the Internationalization API and Gaia's built in helpers, IntlHelper and mozIntl.
-
App localization code best practices
-
Localization best practices and advanced techniques for experienced Gaia/app developers.
-
Developing Bidi Apps
-
Best coding practices and guidelines for developing bi-directional (left-to-right and right-to-left, RTL) apps.
-
- -

Tools

- -
-
Translation tester
-
This app is for testing translations for Firefox OS apps and provides a blueprint for adding translation support to your own apps.
-
diff --git a/files/id/archive/b2g_os/index.html b/files/id/archive/b2g_os/index.html deleted file mode 100644 index 5d4a5149dc..0000000000 --- a/files/id/archive/b2g_os/index.html +++ /dev/null @@ -1,79 +0,0 @@ ---- -title: Firefox OS -slug: Archive/B2G_OS -tags: - - Boot to Gecko - - Firefox OS - - Gaia -translation_of: Archive/B2G_OS ---- -

Firefox OS (kadang-kadang disingkat FxOS) adalah sistem operasi mobile baru yang dikembangkan oleh Mozilla. menggunakan kernel Linux dan mesin berbasis Gecko, yang memungkinkan pengguna menjalankan aplikasi yang dikembangkan seluruhnya menggunakan HTML, JavaScript, dan open web application APIs lainnya.

- -

Firefox OS saat ini dalam pengembangan besar; kami terus bekerja untuk membuatnya lebih mudah digunakan dan hack pada Gaia (aplikasi standar) dan membuat sendiri. Namun, Anda perlu pengetahuan tentang sistem untuk melakukan hal-hal seperti membangun Firefox OS stack, atau memasang Firefox OS kedalam handphne Anda. Link dibawah ini adalah panduan untuk pengembang web yang tertarik menjalankan dan membuat peribahan untuk Gaia atau mengembangkan aplikasi untuk berjalan di perangkat Firefox OS.

- - - - - - - - -
-

Dokumentasi tentang Firefox OS

- -
-
Pengantar Firefox OS
-
Informasi pengantar tentang apa itu Firefox OS dan bagaimana cara kerjanya.
-
Tips dan trik Firefox OS
-
Beberapa artikel pendek tentang tips dan trik yang berguna untuk mengetahui Firefox OS disaat melakukan hacking.
-
Menulis aplikasi untuk Firefox OS
-
Dokumentasi tentang membuat aplikasi Firefox OS.
-
Pusat pengembang
-
Kumpulan peralatan, tutorial, dan layanan untuk pengembang aplikasi Firefox OS.
-
UX (Pengalaman pengguna)
-
Panduan untuk Gaya user experience desain, maupun pola kode dan template untuk membantu Anda membuat aplikasi Firefox OS yang menarik dan konsisten.
-
Platform Firefox OS
-
Dokumentasi tentang platform Firefox OS, termasuk Gonk, Gaia, dan lainnya. Ini termasuk dokumentasi untuk membangun dan memasang platform ke perangkat, serta membangun simulator dan emulator.
-
Keamanan
-
Dokumentasi tentang keamnan  di Firefox OS; ini termasuk topik tentang keamanan perangkat dari setiap perspektif: untuk pengembang aplikasi, perangkat integrator, dan sebagainya.
-
Performa
-
Artikel tentang mengoptimalisasi aplikasi Firefox OS.
-
Pemecahan Masalah
-
Panduan untuk mengatasi masalah umum pada Firefox OS.
-
Debugging pada Firefox OS
-
Panduan untuk debugging aplikasi mobile dan Firefox OS itu sendiri.
-
Panduan untuk  Firefox OS developer phone
-
Panduan untuk Firefox OS developer phones, Mozilla memberikan telepon ke beberapa pengembang. Panduan ini juga berlaku jika sesorang memasang Firefox OS ke teleponnya
-
- -

Lihat Semua...

-
-

Dapatkan bantuan dari komunitas

- -

Jika Anda bekerja dengan Firefox OS, atau mengembangkan aplikasi yang ingin dijalankan di perangkat Firefox OS, ada komunitas yang akan membantu Anda!

- -
    -
  • Ajukan pertanyaan Anda ke Mozilla Boot to Gecko IRC channel: #b2g
  • -
- -

Jangan lupa tentang netiquette...

- - - - - - -

Sumber Lain

- - -
diff --git a/files/id/archive/b2g_os/installing_on_a_mobile_device/index.html b/files/id/archive/b2g_os/installing_on_a_mobile_device/index.html deleted file mode 100644 index 9ee7eb6251..0000000000 --- a/files/id/archive/b2g_os/installing_on_a_mobile_device/index.html +++ /dev/null @@ -1,100 +0,0 @@ ---- -title: Installing Firefox OS on a mobile device -slug: Archive/B2G_OS/Installing_on_a_mobile_device -translation_of: Archive/B2G_OS/Installing_on_a_mobile_device ---- -
-

Once you've built Boot to Gecko for a supported mobile device, you can install it. This article will guide you through the process.

-
-
- Note: The first time you flash your phone, it must have Android 4 (Ice Cream Sandwich) installed. The process will not work correctly otherwise. Once you've done your first install of B2G, however, you can simply update on top of it.
-

Installing ADB

-

On OSX

-

If you have homebrew on OSX:

-
brew install android-platform-tools
-

Otherwise, download the Android Developer Tools and add the binaries to your PATH.

-

On Ubuntu

-
sudo apt-get install android-tools-adb
-

Flashing your phone

-

To flash everything to your phone, simply connect your phone and type:

-
./flash.sh
-
-

That's it. The B2G you've currently got built will flash onto your device.

-

Note that If you are updating across revisions with significant Gaia changes, you might need also do:

-
cd gaia
-make reset-gaia
-

This will wipe all of your data stored in Gaia, but also clear out obsolete Gaia settings and prefs so that you'll boot into a "clean" Gaia. In theory ./flash.sh should do this already, but for some devices (e.g. hamachi) ./flash.sh only flashes a subset of modules (./flash.sh -f will force flash everything.)

-

Configuring the udev rule for your device

-

On Linux, if you get this,

-
< waiting for device >
-

that probably means that you haven't added a udev rule for the fastboot device, which is not the same as the one for adb. (Though it also might just mean you need to run ./flash.sh with sudo) You can get the USB vendor ID by running lsusb now, but typically it's Google's: 18d1, so adding this line in your /etc/udev/rules.d/51-android.rules would work:

-
SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", MODE="0666", GROUP="plugdev"
-
- Note: If you get a very helpful libusb error "-3" on Linux, it means you need to be root to have the needed access to the USB device. Run the script again using sudo.
-
- Note 2: If you have an Unagi or a Geeksphone Keon phone, you need two lines like this - one for the original phone vendor's ID, and one for Google's.
-

Special notes for Hamachi, Helix, and Leo devices

-

If your phone is a hamachi, helix or leo device, the ./flash.sh script will now default to flashing only gecko and gaia.  It is recommended that you flash with the OEM as a base build to get the firmware and the gonk layers and then flash the gecko and gaia on top.  If you want to flash using the images, there is an override flash where you can ./flash.sh -f and it will use the image files to flash your device.

-

Special notes for the Samsung Galaxy S2

-

If your phone is a Galaxy S2 and you are using heimdall 1.3.2 (the latest version; use heimdall version to check), you may see an alarming error "FACTORYFS upload failed!" followed by "Heimdall flashing failed" and some additional information. This is actually a success condition, and you can ignore the advice.

-

To get rid of this strange behavior, grab a source copy of heimdall, downgrading to the 1.3.1 release ("git checkout fbbed42c1e5719cc7a4dceeba098981f19f37c06"), then compile it  according to the README, then install that to make the error go away. However, this isn't strictly necessary.

-
-

Note: the image size may not a problem. see the next tip

-
-

All versions of heimdall are unable to flash a system.img larger than 100MB. Do:

-
ls -l ./out/target/product/galaxys2/system.img
-
-

to see how big yours is. If it's too large, ask in IRC for advice; there are ways to do it in two stages.

-

The argument of heimdall command may not work and result in fail when trying to flash. You'll need to change it in the ./flash.sh script, the argument must be in uppercase (l.185) :

-
case $project in
-        "system")
-                $HEIMDALL flash --FACTORYFS out/target/product/$DEVICE/$project.img
-                ;;
-
-        "kernel")
-                $HEIMDALL flash --KERNEL device/samsung/$DEVICE/kernel
-                ;;
-
-        "")
-                $HEIMDALL flash --FACTORYFS out/target/product/$DEVICE/system.img --KERNEL device/samsung/$DEVICE/kernel &&
-                update_time
-                ;;
-        esac
-

 

-

Added step for the Samsung Galaxy S2

-

If you're flashing onto the Galaxy S2, there is an additional step to follow. Gaia does not get flashed automatically by the flash.sh script; you'll need to also do:

-
./flash.sh gaia
-
-

Flashing specific partitions to fastboot phones

-

You can flash specific partitions to fastboot phones (that is, any phone other than the Samsung Galaxy S2). For example:

-
./flash.sh system
-./flash.sh boot
-./flash.sh user
-
-

WARNING: flashing user (at least) may delete your user-specific data (contacts, etc.).

-

Updating specific modules

-

You can update specific components of B2G by specifying their names when flashing. For example:

-
./flash.sh gaia
-./flash.sh gecko
-
-

In order to update only one application you can use BUILD_APP_NAME environment variable:

-
BUILD_APP_NAME=calendar ./flash.sh gaia
-

If your phone is not for developer (you aren't interested on test apps and/or require optimization), you can update gaia using:

-
VARIANT=user ./flash.sh gaia
-

Next steps

-

At this point, your phone should be running Boot to Gecko! It's time to experiment, write some code, test, or do some debugging!

-
- Note: A helpful usage tip: if your build of B2G starts up with the lock screen requesting a pass code to unlock the phone, the default code is 0000.
-

Troubleshooting

-

Here are a some tips for what to do if your device doesn't work right after installing B2G, or updating it to a new version

-

If the UI doesn't start up

-

If you update your phone and the user interface doesn't start up, you can reset it to clear out out-of-date configuration and the like. This may bring it back to life, but note that it may also delete your user-specific data (contacts, etc.). Here's how:

-
cd gaia
-make reset-gaia
-
-

If you want change from developer to production mode

-
cd gaia
-make reset-gaia PRODUCTION=1
-

WARNING: reset-gaia may delete your user-specific data (contacts, etc.).

-

"image is too large" error message on ./flash.sh execution

-

It might mean that you phone needs to be rooted first before flashing it. As b2g needs to be written on root partition, your phone needs to be rooted in order to install it.

diff --git a/files/id/archive/b2g_os/introduction/index.html b/files/id/archive/b2g_os/introduction/index.html deleted file mode 100644 index 1c113d8712..0000000000 --- a/files/id/archive/b2g_os/introduction/index.html +++ /dev/null @@ -1,88 +0,0 @@ ---- -title: Pengantar Firefox OS -slug: Archive/B2G_OS/Introduction -tags: - - B2G - - Firefox OS -translation_of: Archive/B2G_OS/Introduction ---- -

Firefox OS (juga disebut dengan codename "Boot to Gecko" atau "B2G") adalah sistem operasi open source Mozilla berbasis Linux dan teknologi Mozilla Gecko. Firefox OS adalah sistem operasi mobile yang bebas dari teknologi ekslusif saat ini menjadi platform yang kuat yang memberikan pengembang aplikasi kesempatan untuk menciptakan produk unggulan Selain itu, Firefox OS fleksibel dan cukup mampu membuat pengguna bahagia.

-

Untuk pengembang Web bagian yang paling penting untuk dipahami adalah bahwa seluruh antarmuka pengguna adalah aplikasi web, yang mampu menampilkan dan meluncurkan aplikasi Web lainnya. Modifikasi yang Anda buat ke antarmuka pengguna dan aplikasi yang Anda buat untuk berjalan di Firefox OS adalah halaman Web, meskipun dengan meningkatkan akses ke perangkat kerasa dan layanan mobile.

-

Anda dapat belajar bagaimana membangun dan memasang Firefox OS dengan mengikuti panduan praktis kami.

-

Persyaratan perangkat keras

-

Perangakat mobile berbasis ARM terbaru cukup kuat untuk mendukung proting Firefox OS. Bagian ini mencakup persyaratan perangkat  keras dasar serta fitur perangkat keras yang direkomendasikan.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
KomponenMinimumRekomendasi
CPUARMv6Cortex A5 class atau lebih
- ARMv7a dengan NEON
GPUAdreno 200 class atau lebih
ConnectivityWiFi
- 3G
SensorsAccelerometer
- Proximity
- Ambient light
- A-GPS
-

Untuk pengalaman pengguna yang baik, itu ide yang baik untuk memilih perangakat yang menawarkan profil warna seragam (Implementasi dengan graphics device driver) dan dukungan headphone untuk mematikan dan menyalakan dan untuk menghentikan dan memutar media. Fitur ini umumnya ada di kalangan smartphone modern.

-

Tips penggunaan

-

Bagian ini  memberikan beberapa tips yang akan membantu Anda menggunakan Firefox OS. Ini adalah penampung sampai kita memiliki dokumentasi penggunaan nyata.

-

Membuka Kunci telepone

-

Jika Anda membangun Firefox OS, pada saat dijalankan meminta kode pass untuk membuka kunci perangkat Anda, kode standar adalah 0000. Beberapa Firefox OS akan melakukan ini seraya kami mengembangkan dan menguki layar kunci.

-

Menangkap screenshot

-

Menangkap screenshot simpel dengan menekan tombol power dan home secara bersamaan. Gambar screenshot akan berada di /sdcard/screenshots pada perangkat Anda; Anda dapat mengaksesnya menggunakan aplikasi Galeri pada telepon Anda, juga.

-

Jika karena alasan tertentu tidak dapat bekerja, Anda juga dpaat melakukannya dari terminal Linux atau Mac OS X komputer yang memiliki sistem Firefox OS.

-
    -
  1. Pastikan Anda telah memasang aplikasi ffmpeg. -
      -
    1. Pada Mac, Jika Anda menggunakan, Anda dapat melakukan ini dengan sudo port install ffmpeg. untuk homebrew, jalankan brew install ffmpeg.
    2. -
    3. Pada Linux (Ubuntu/Debian), gunakan sudo apt-get install ffmpeg.
    4. -
    -
  2. -
  3. Sambungkan telepon ke komputer menggunakan kabel USB.
  4. -
  5. Arahkan telepon Anda kedalam situasi apapun yang ingin Anda screenshot.
  6. -
  7. cd ke direktori B2G/gaia
  8. -
  9. make screenshot
  10. -
  11. Anda sekarang memiliki screenshot bernama screenshot.png.
  12. -
-

Remote debugging dengan ADB

-

Untuk mengaktifkan USB Debugging via adb, buka aplikasi Pengaturan dan arahkan ke Informasi Pernagkat > Informasi Lebih Lanjut > Pengembang. Dari daftar, berikan tanda centang pada Remote Debugging. Terakhir, hubungkan perankat via USB dengan komputer Anda.

-

Tombol dan kontrol

-

sebuah perangkat Firefox OS memiliki sejumlah tombol fisik:

-
-
- Tombol Home
-
- Tombol ini umumnya berpusat dibawah layar. Menekannya akan mengembalikan Anda ke peluncur aplikasi. Menekannya secara lama membuka tampilan card switching; gesekan ke atas pada tampilan tersebut akan hilang.
-
- Volume rocker kontrol
-
- Pada sisi kiri adalah volume rocker; Menekan bagian atas dari rocker akan meningkatkan volume dan menekan bagian bawah akan menurunkan volume.
-
- Tombol Power
-
- Tombol power berada di pojok kanan atas perangkat.
-
diff --git a/files/id/archive/b2g_os/phone_guide/flame/index.html b/files/id/archive/b2g_os/phone_guide/flame/index.html deleted file mode 100644 index 697980244f..0000000000 --- a/files/id/archive/b2g_os/phone_guide/flame/index.html +++ /dev/null @@ -1,73 +0,0 @@ ---- -title: Flame -slug: Archive/B2G_OS/Phone_guide/Flame -tags: - - B2G - - Firefox OS - - Flame - - NeedsTranslation - - TopicStub - - developer phone - - official reference device -translation_of: Archive/B2G_OS/Phone_guide/Flame ---- -

A picture of the Flame device, showing the Firefox OS homescreen containing several app icons.

- -

The Flame device is the official reference device for developing, testing, and debugging Firefox OS and open web apps. This guide provides basic information about its hardware specifications as well as practical documentation specific to experimenting with, developing for, and testing of software compatible with this phone.

- -

The Flame hardware offers a representative set of specs — including FWVGA display and dual-core processor — to help developers build great content and experiences. A stable hardware platform is also good for testers, making it easier to test and address specific software issues without having to worry about device model-specific bugs, etc.

- -

If you have your phone in hand and want to start playing with it, developing and distributing apps, or contributing to the Firefox platform, the following links will also get you where you need to go:

- - - -

If you’d like to find out more about updating the operating system, recovering it, pushing apps to it, or phone specs, you’ll find the information you need at the following two articles :

- - - -

Get a device

- -

Flame sales have come to an end. There are still opportunities left for Mozilla contributors to get free Flames, including the upcoming Foxtrot program. If you have questions about getting a device for development or testing, please reach out to Asa Dotzler on the #fxos channel on IRC.

- -

Device specifications

- -

You can find more of the device specifications listed on our Phone and device specs page.

- -

Network

- - - -

Hardware

- - - -

See also

- - diff --git a/files/id/archive/b2g_os/phone_guide/flame/updating_your_flame/index.html b/files/id/archive/b2g_os/phone_guide/flame/updating_your_flame/index.html deleted file mode 100644 index f3ca1ae59c..0000000000 --- a/files/id/archive/b2g_os/phone_guide/flame/updating_your_flame/index.html +++ /dev/null @@ -1,411 +0,0 @@ ---- -title: Updating your Flame -slug: Archive/B2G_OS/Phone_guide/Flame/Updating_your_Flame -translation_of: Archive/B2G_OS/Phone_guide/Flame/Updating_your_Flame ---- -
-

This article covers how to update the software on your Flame — including updating Firefox OS and pushing new apps to your phone — along with backing up your data, and other useful troubleshooting and testing information. Before starting to do any of this, you should make sure you have run through the Initial setup information.

-
- -

Quick guide to updating your device

- -

There is a lot of information in this article, so here we've included a quick start guide that takes you through the steps you need quickly to get your device updated. You can refer to the below sections for more detail if it is needed.

- -

Full flash to the latest base image

- -

This set of steps needs to be done before you do anything else to your phone (see {{anch("Base image")}} and {{anch("Base image installation")}} if you require more details.)

- -
Prerequisites: Make sure you have adb and fastboot installed and available in your system's PATH (see Installing ADB and Fastboot.)
- -
    -
  1. Download the latest base image —Base image v18D_nightly_v4to your computer.
  2. -
  3. On your Flame device, enable remote debugging by navigating to Settings > Developer and enabling the Debugging via USB option.
  4. -
  5. Connect your Flame to your computer via a USB cable.
  6. -
  7. Verify that the computer is connected to the device by typing this command: -
    adb devices  
    -
    - You should see something like the following: - -
    List of devices attached
    -94f7ce4c    device
    - If you don't see your device attached (no second line), then try unplugging and replugging the USB cable and trying again; also check that Debugging via USB is enabled on the phone as mentioned in step 2. If you get a message saying that adb could not be found, you probably haven't set your path correctly (see prerequisites.)
  8. -
  9. Extract the base image zip file and navigate to the new directory, using for example: -
    cd v18D_nightly_v4
    -
  10. -
  11. Run the flashing script by running the correct below command for your system -
    # Windows
    -flash.bat
    -
    -# Linux / OSX
    -./flash.sh
    -
  12. -
- -
-

Note: if you don't see the right filename for your system, you can rename flash.bat or flash.sh back and forth as needed. The contents are the same.

-
- -
-

Note: Verify the contents of the base image using the checksum below:

- -
Checksum: SHA512(v18D_nightly_v4.zip)= 9105e29fd39da1ae487b01da4431a803d619d31482147b4383002b8a10268905fd444b108a438395a78d289cfe4e8fba10c3fb6b0d187f3535f027bf90c2391a Build id: 20150527010201
-
- -

At this point you should be on the latest 2.5 base image, and be able to receive OTA updates.

- -
-

Note: if you want to be on the very latest builds of flame (that have not been smoke tested), go to settings -> developer, scroll down to the bottom, and change the channel to nightly-latest.  Reboot the device, then go back to settings -> device info and check for updates.  You can update to the latest version without having to shallow flash.  For shallow flashing see the next section.

-
- -

Update channel reset bug

- -

As mentioned in {{bug(1217490)}}, some Firefox OS testers testing Firefox OS 2.5 latest OTA updates (on Flame, but also on other dogfooding devices) may find that when they install an OTA update, their update channel is reset to nightly, meaning that they won’t receive subsequent OTA updates coming through other channels. To avoid this, it is recommended that you set your  update channel to nightly-latest in the Firefox OS settings via WebIDE. To do this:

- -
    -
  1. Plug your phone into your computer via USB (make sure Debugging via USB is set to ADB and DevTools in the Phone's Developer Settings)
  2. -
  3. Go to Firefox Desktop and open WebIDE.
  4. -
  5. Connect WebIDE to your phone by selecting it under USB Devices. Accept the connection prompt that appears on your phone.
  6. -
  7. Under Other on the right hand side of the WebIDE UI, select Device Settings.
  8. -
  9. Find app.update.channel in the list, and change the setting value in the corresponding textbox to nightly-latest.
  10. -
  11. Find app.update.channel.backup and change the setting value to nightly-latest if you want it to persist after further updates.
  12. -
- -

Shallow Flash to the latest Firefox OS nightly (Gaia and Gecko)

- -

This set of steps only needs to be done if you want to update to the VERY latest builds (see {{anch("Updating your Flame to a nightly build")}} if you require more details.)

- -
Prerequisites: Windows users will need to install Cygwin, which provides a Linux-like environment on Windows. The instructions below include steps for how to automatically install the appropriate packages if you don't already have it installed.
- -
 
- -
    -
  1. Download the latest build from Mozilla Central.  Download both the b2g-XX.XX.en-US.android-arm.tar.gz and gaia.zip files.
  2. -
  3. All platforms: Download the shallow flash script in the same directory as the build files.
  4. -
  5. Windows users: Also download the shallow_flash.bat Windows script in the same directory. If you don't already have Cygwin installed, also download the installation file (you don't have to run it, the shallow_flash.bat script will use the installer to automatically configure the necessary packages).
  6. -
  7. In your terminal, cd into the directory you saved the files in and flash the builds to your phone using the following: -
    # Linux
    -./shallow_flash.sh --gaia=gaia.zip --gecko=b2g-XX.XX.en-US.android-arm.tar.gz
    -
    -# Mac
    -./shallow_flash.sh --gaia gaia.zip --gecko b2g-XX.XX.en-US.android-arm.tar.gz
    -
    -# Windows
    -# You could also double click the shallow_flash.bat icon (with the cogs) from Windows Explorer.
    -shallow_flash.bat
    -
  8. -
- -

This process will flash gaia.zip and a single b2g-XX.XX.en-US.android-arm.tar.gz file onto your phone. The files will be sent to the device and it will reboot after the process completes.

- -
-

Note : On Linux, if the script fails during flashing Gaia, you can try replacing full options by their shortened version to see if that helps. Replace --gaia=gaia.zip by -g gaia.zip and --gecko=b2g-XX.XX.en-US.android-arm.tar.gz by -G b2g-XX.XX.en-US.android-arm.tar.gz.

-
- -

Updating & upgrading the Flame's software

- -

We have two main "channels" of Firefox OS software version releases for the Flame phone:

- - - -

Base Image

- -

You can get recovery files and tools at the following storage locations:

- -

Up-to-date (use these unless you have a good reason not to)

- - - -
-

Note: You can find out what base image your device is running using the command adb shell getprop ro.bootloader. The version is the last four characters, with the last one then removed, prefixed by 'v' (e.g. L1TC000118D0 > v18D).

-
- -
-

Important: When running a shallow or full flash, your phone data will be overwritten: you should therefore back up your data before updating! See the {{anch("Backing up and restoring your Flame data")}} section for more details.

-
- -

Outdated

- -

These base images are stable & production only.

- - - -
-

Note: Using a locale with base image v188 produces a mixed UI with locale and English languages.

-
- -
-

Note: Firefox OS images v180 and above are based on Android KK (Kitkat, 4.4); JB (Jellybean, 4.1–4.3) builds have now been discontinued and are no longer supported, so don't use anything older than v180.

-
- -

Base Image installation

- -

To install the base image on your device:

- -
    -
  1. Make sure remote debugging is enabled on your Flame, using the Remote debugging/Debugging via USB option in the device's Developer settings (the option is different, depending on whether you have Firefox 1.3 and under, or Firefox 1.4+ installed).
  2. -
  3. Connect your Flame to your computer via a USB cable if it isn't already. Verify that the computer is connected to the device by running the adb devices command in a terminal.
  4. -
  5. Download the base image .zip file referenced above. Unzip it onto your Desktop.
  6. -
  7. Go into the directory you extracted the software into and run it: -
      -
    • On Windows, enter the directory in your command prompt, then run the flash.bat script using flash.bat (or double click the file in explorer).
      - Note: If flash.bat is missing, simply rename the flash.sh file to flash.bat, then run that. Make sure you have adb and fastboot installed and available on PATH.
    • -
    • On Linux / OSX, enter the directory in your terminal, then run the flash.sh script using ./flash.sh (previous instructions encouraged you to use sudo. Don't. It is really dangerous to use sudo with things you download from the Internet. If the flash script fails to see your device, please double-check that your udev rules are correct). If you do not see a flash.sh file, simply rename flash.bat to flash.sh first and then use the above command.
    • -
    -
  8. -
- -
-

Note: If you get a "permission denied" error when running the above commands, your shell script probably doesn't have the right permissions. Running chmod +x flash.sh on it should solve this problem.

-
- -
-

Note: If the flash script gets stuck at "< waiting for device >" while the display shows "ThunderSoft(R)", the script doesn't have permission to access the device while in fastboot mode. You need to setup the udev rules to give it access. Also USB 3 ports may not work well with fastboot and can be the cause of this problem.

-
- -
-

Note: You are also welcome to build your own builds to install on the Flame: see Building and installing Firefox OS.

-
- -

Font fix

- -
-

Important: This step is only needed for base image v180.

-
- -

After updating Gecko and Gaia to nightly with the v180 base image, there will be a mismatch between the fonts that Gecko and Gaia expects and what the base image provides (this has been fixed as of v188). To fix this, you have two choices:

- - - -

Updating your Flame to a nightly build

- -
-

Note: For the current build, Nightly development builds of Firefox OS do not support A-GPS, which may lead to slow performance of GPS functionality. We plan to resolve this in an updated future Nightly channel.

-
- -
-

Important: When running a shallow or full flash, your phone data will be overwritten: you should therefore back up your data before updating! See the {{anch("Backing up and restoring your Flame data")}} section for more details.

-
- -
    -
  1. Before updating your phone to a Nightly build you should flash the latest base image to make sure the underlying systems are up to date. Download a base image with the same or a higher version of Firefox OS than the version you intend to use in step 3 below and use it to update your device's software, as explained above.
  2. -
  3. Because the above step installs a fresh operating system on your device, you'll need to enable remote debugging on your Flame again, using the Remote debugging option in the device's Developer settings.
  4. -
  5. Next, choose a build to install (found on https://ftp.mozilla.org/pub/mozilla.org/b2g/nightly/). You'll want one of the following: - -
  6. -
  7. Pick a version and download both the b2g-XX.XX.en-US.android-arm.tar.gz and gaia.zip files. Save them inside a directory on your Desktop called something like fxos.
  8. -
  9. Download the shallow flash script and save it in the same directory as the above two files.
  10. -
  11. For Windows users: Also download the shallow_flash.bat windows script and install Cygwin, which provides a Linux-like command environment on Windows. You will need to install the default Cygwin base category plus the unzip package but shallow_flash.bat will do this for you if you download and copy the Cygwin setup*.exe to the same folder as the script.
  12. -
  13. -

    In your Terminal, cd into the directory you saved the files in and Flash the builds to your phone using the following:

    - -

    Linux:

    - -
    ./shallow_flash.sh --gaia=gaia.zip --gecko=b2g-XX.XX.en-US.android-arm.tar.gz
    -
    - -

    Mac:

    - -
    ./shallow_flash.sh --gaia gaia.zip --gecko b2g-XX.XX.en-US.android-arm.tar.gz
    - -

    Windows:

    - -

    Double click shallow_flash.bat (with the cogs icon) or run it from a command shell. It will flash gaia.zip and a single b2g-XX.XX.en-US.android-arm.tar.gz file.

    -
  14. -
- -
-

Note: If your update fails with an error "Flashing out/target/product/flame/system.img failed because the image was too large.", you will need to update to the newest {{anch("Base Image","base image")}}, then try applying the nightly build again. This is because the system partition size has been updated (see {{Bug("1184980")}}.)

-
- -
-

Note: If you get a "permission denied" error when running the above commands, your shell script probably doesn't have the right permissions. Running chmod +x shallow_flash.sh on it should solve this problem.

-
- -
-

Note: A "shallow flash" updates Gecko and Gaia plus data directories, as opposed to a full flash, which updates Gecko/Gaia, but also the underlying Gonk layer and associated binaries particular to that device type. This is why it is a good idea to update to the official base image first, as suggested above, then shallow flash over the top of that, once you've got the Gonk/binary layer right.

-
- -
-

Note: You can check the update status of each build on the Flame OTA status page.

-
- -

Once the install procedure finishes the phone should reboot into the updated build and display the first time user workflow.

- -

Switch to nightly update channel

- -

In v2.2 you can change the Update channel from default to nightly under Developer settings.

- -

Below is the older method, if you don't find that setting in your device.

- -
    -
  1. Make sure remote debugging is enabled on your Flame, using the Remote debugging/Debugging via USB option in the device's Developer settings.
  2. -
  3. Download the change channel script: follow the link, press the Raw button, then use your browser's save functionality to save the page directly as change_channel.sh.
  4. -
  5. In your Terminal, cd into the directory you saved the script in and change the update channel on your phone using the following command:
    - -
    ./change_channel.sh -v nightly
    -
  6. -
  7. Once the phone reboots, check for updates by going into Settings > Device information > Check now.
  8. -
- -
-

Note: This step isn't needed in newer versions of the Firefox OS software — you should just get OTA updates automatically.

-
- -
-

Note: You can choose between several different update channels. Run "./change_channel.sh -h" to see the other channel options.

-
- -

Fastboot mode

- -

If flashing a new build to your phone fails to work, your phone may become unresponsive, leading to the phone rebooting in recovery mode. The recovery mode provides few options (Reboot, Update from adb, Wipe data, Wipe cache, and Update from sdcard). Unfortunately, selecting Update from adb triggers a sideload mode in which you cannot use the other adb commands. The adb sideload command would work but the various flash scripts rely on other adb commands.

- -

You can force fastboot mode as follows:

- -
    -
  1. Power off the phone (which may involve removing the battery in extreme cases...).
  2. -
  3. Plug in the USB cable.
  4. -
  5. Power the phone up again by pressing the Volume Down and Power buttons together.
  6. -
- -

The phone should now display the text "FASTBOOT": it is in fastboot mode and is waiting for a USB connection. At this point, a USB-connected, computer with adb installed should see the phone listed when the fastboot devices command is run. Note that regular adb would not see the device — only fastboot sees it. In this mode, you can use the flash script to install the last base image as explained above. As the script does use both adb and fastboot commands, you may see some initial error and warnings from adb, but the device should be flashed properly at the end of the procedure.

- -

Emergency download mode

- -

If flashing a new build to your phone fails to work, your phone becomes unresponsive, and the phone cannot enter fastboot mode, you can use emergency mode for recovery. You'll need the provided emergency USB cable with the “Recovery Cable” red label on it and the Emergency Download Tool to enter this mode. For full instructions, see the Flame emergency rescue tool tutorial included in the download tool's files. Contact the device maker (flameservice [at] thundersoft.com) if you need any more technical support.

- -

Emergency download tool dialog box as it is when it start.

- -
-

Note: The tool provided is Windows-only.

-
- -

Recovery mode

- -

You can enter recovery mode to clear your phone data or manually update the firmware. There are two ways to enter this mode:

- - - -

When in recovery mode, press the Volume up/down keys to move the selection highlight, and the Power key to select. Make sure you have your phone data (Contacts, SMS, etc.) backed up before clearing data, and your upgrade packages downloaded before updating.

- -

Backing up and restoring your Flame data

- -

When using a Flame, you won't want to lose your phone's contacts and other data while upgrading to a new build (as explained earlier in this article). To backup and restore data you can use our Backup and restore profile tool, which is contained in the B2G-flash-tool Git repo.

- -
    -
  1. To use this, first open up your terminal/command line.
  2. -
  3. Clone the above repo (you'll need Git installed) using -
    git clone https://github.com/Mozilla-TWQA/B2G-flash-tool
    -
  4. -
  5. The tool is a Python file: backup_restore_profile.py. Make sure you have Python installed (2.7.x is probably best.) Linux and Mac systems should have this out of the box.
  6. -
  7. Enter the directory you just cloned using cd B2G-flash-tool.
  8. -
- -
-

Note: When using this tool, you'll also need to make sure that your phone is connected via USB to your computer, and that ADB (see {{anch("Important steps to follow first")}} above) and Debugging via USB (in your device's Developer settings) are enabled.

-
- -
-

Note: If you get a message complaining about lack of permissions to execute this file, cd into the directory where you saved the file, and run the following command:

- -
chmod +x backup_restore_profile.py
-
- -

Backing up data from your phone

- -

Before backing up you should make sure your device is updated with the most recent OTA update. To do this, on your phone go to Settings app > Device Information > Check for updates > click Check Now. If there is an update available, you should shortly get a notification of an available update. Choose to install the update.

- -

Now, in the directory where you saved the backup_restore_profile.py file, run the following:

- -
python backup_restore_profile.py -b
- -

This should save your device profile to a directory called mozilla-profile, in the same directory as the script is located.

- -
-

Warning: by default, it does not save the internal sd card content. So files like photos or videos from the gallery app will not be saved. If you want to backup the sd card content, add the --sdcard option

- -
python backup_restore_profile.py -b --sdcard
-
- -

Restoring data to your phone

- -

Before restoring you should again make sure your device is updated with the most recent OTA update. Go to Settings app > Device Information > Check for updates > click Check Now. If there is an update available, you should shortly get a notification of an available update. Choose to install the update.

- -

In the directory where your mozilla-profile directory is located (see above section), run the following:

- -
python backup_restore_profile.py -r
- -
-

Note: You can get a list of all the options the tool supports by running python backup_restore_profile.py -h.

-
- -

Pushing apps to your Flame

- -

The App Manager and WebIDE tools make it easy to push apps to your phone, for testing, etc.

- -

RAM adjustment

- -

You can adjust the available RAM capacity to see how apps perform on Firefox OS phones with lower memory footprints.

- -

This is accomplished by entering fastboot mode (install fastboot first, which is available on the same SDK page as ADB) and typing:

- -
adb reboot bootloader
-fastboot oem mem [0|256-1024]
- -

“0” is the memory automatically detected and “256-1024” is the number of megabytes. For example, if you want to adjust device RAM capacity to 512M, enter fastboot oem mem 512.

- -

You'll need to then reboot your device for the settings to take effect. This can be done using:

- -
fastboot reboot
- -

The current memory size can be returned by entering fastboot mode and typing:

- -
fastboot getvar mem
-
diff --git a/files/id/archive/b2g_os/phone_guide/index.html b/files/id/archive/b2g_os/phone_guide/index.html deleted file mode 100644 index bbfc5ecee3..0000000000 --- a/files/id/archive/b2g_os/phone_guide/index.html +++ /dev/null @@ -1,85 +0,0 @@ ---- -title: Firefox OS phone guide -slug: Archive/B2G_OS/Phone_guide -tags: - - Firefox OS - - Landing - - NeedsTranslation - - Phones - - TopicStub -translation_of: Archive/B2G_OS/Phone_guide ---- -
-

This section contains developer information relevant to specific phones that run Firefox OS — both developer and consumer devices. We have general information available on Building and installing Firefox OS and Hacking Firefox OS, so please go there for information about building and installing the platform from scratch. Developers with specific phones in their possession may however find the following articles useful.

-
- -

Developer phone information

- -

The phones listed here are specifically geared towards developers wanting to experiment with Firefox OS, including developing apps and contributing to the operating system itself. As such, they typically have unlocked SIMs, system files, etc.

- -
-
Flame
-
The Flame device is the official reference device for developing, testing, and debugging Firefox OS and open web apps, produced in partnership with T2Mobile.
-
Geeksphone
-
In this article we cover some basic tips on how to keep your Geeksphone up-to-date and how to tweak the system Gaia applications.
-
Nexus 5
-
This article provides information about using Firefox OS on a Nexus 5, including Flashing Firefox OS onto your device.
-
Nexus 4
-
This article provides information about using Firefox OS on a Nexus 4, including Flashing Firefox OS onto your device.
-
ZTE OPEN
-
This article contains information on the ZTE OPEN Firefox OS device.
-
ZTE OPEN C
-
The ZTE Open C is an updated ZTE-produced Firefox OS device, with higher end hardware and newer software.
-
- -

Consumer phone information

- -

The phones listed here are consumer models, so not ideal for developers wanting to hack on devices. However, might be still useful for developers looking for more technical information on these consumer models. For a more complete list of devices, see our Find Firefox OS near you page.

- -
-
Alcatel One Touch Fire
-
Based on Firefox OS 1.3 and available in more than 5 countries.
-
Alcatel One Touch Pixi 3 (3.5)
-
High-end consumer smartphone, powered by Firefox OS 2.0, with a 2 megapixel camera.
-
Alcatel Onetouch Fire 2C 4020D
-
Based on Tarako Firefox OS (1.3T) and released in India.
-
Alcatel Onetouch Fire C
-
Based on Tarako Firefox OS (1.3T) and released in India.
-
Alcatel Onetouch Fire E
-
Available in 5 countries.
-
Cherry Mobile Ace
-
Based on Firefox OS 1.3T and available in the Philippines.
-
Fx0
-
First Firefox OS phone released in Japan, by KDDI.
-
Huawei Y300 II
-
Based on Firefox OS 1.1 and available in the Philippines and Mexico.
-
Intex Cloud FX
-
First Firefox OS Tarako phone released in India and based on Firefox OS 1.3T.
-
LG Fireweb
-
Based on Firefox OS 1.1 and available in Uruguay and Brasil.
-
Spice Firefox MI FX1
-
Based on Tarako Firefox OS (1.3T) and released in India.
-
Spice Firefox MI FX2
-
High-end consumer 3G smartphone powered by FirefoxOS 1.4 with a 2 megapixel camera, released in India.
-
Symphony GoFox F15
-
First Firefox OS Device to come with 3G video calling capability, launched in Bangladesh.
-
Zen U105 Fire
-
Based on Firefox OS Tarako, available in India.
-
ZTE Open II
-
Has a1.2 GHz dual core processor and a 2.0 MP Rear Camera, available in 7 countries.
-
Orange Klif
-
The Orange Klif is a 3G Smartphone, powered by Firefox OS 2.0, with a 2 megapixel camera. It is available in a number of African countries.
-
- -

General Firefox OS information

- -
-
Firefox OS phone data
-
In this article we list the various available Firefox OS phones along with information such as their code names, availability, and specific hardware features.
-
General device features
-
This page lists typical Firefox OS hardware features and minimum hardware requirements.
-
Troubleshooting
-
This article provides tips for resolving common problems you may have while using Firefox OS.
-
Best practices for open reference devices
-
A set of best practices that we believe should come highly recommended for any widely available open reference devices. All of the recent Firefox OS reference devices have followed these practices.
-
diff --git a/files/id/archive/b2g_os/platform/index.html b/files/id/archive/b2g_os/platform/index.html deleted file mode 100644 index ec17b4cd1d..0000000000 --- a/files/id/archive/b2g_os/platform/index.html +++ /dev/null @@ -1,82 +0,0 @@ ---- -title: The Firefox OS platform -slug: Archive/B2G_OS/Platform -translation_of: Archive/B2G_OS/Platform ---- -
-

The Firefox OS platform consists of many components. While you don't need to understand its architecture in order to build applications that run on Firefox OS, if you're working on developing or porting the platform — or are simply curious — the following documentation may be of interest to you.

-
- - - - - - - -
-

Documentation about the Firefox OS platform

-
-
- Firefox OS architecture overview
-
- An overview of how Firefox OS is structured internally; this is primarily of interest to platform developers and people doing porting work.
-
- Firefox OS apps architecture
-
- An overview of the application model on Firefox OS.
-
- Gaia
-
- Documentation about Gaia, the user interface application for Firefox OS devices; this is a Web application running atop the Firefox OS software stack.
-
- Gonk
-
- Documentation about Gonk, the operating system layer underneath Gaia. This consists of a Linux kernel and a hardware abstraction layer to which Gecko communicates.
-
- Gecko
-
- 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.
-
-  Security
-
- Documentation about security in Firefox OS; this includes topics about security devices from every perspective: for app developers, device integrators, and so forth.
-
- Out of memory management on Firefox OS
-
- This article explains how low memory situations are managed on Firefox OS, using the low memory killer and low memory notifications.
-
- Feature support chart
-
- A chart of which features are available in which types of Firefox OS builds.
-
- Firefox OS settings list
-
- A list of common setting names that can be used with the Settings API.
-
-

View All...

-
-

Getting help from the community

-

If you're working with Firefox OS, or developing applications you'd like to run on Firefox OS devices, there are community resources to help you!

-
    -
  • Consult the Boot to Gecko project forum: {{ DiscussionList("dev-b2g", "mozilla.dev.b2g") }}
  • -
-
    -
  • Ask your question on Mozilla's Boot to Gecko IRC channel: #b2g
  • -
-

Don't forget about the netiquette...

-
- - -

Resources

- -
-

 

diff --git a/files/id/archive/b2g_os/quickstart/aplikasi_pertama_kamu/index.html b/files/id/archive/b2g_os/quickstart/aplikasi_pertama_kamu/index.html deleted file mode 100644 index ecc95018a2..0000000000 --- a/files/id/archive/b2g_os/quickstart/aplikasi_pertama_kamu/index.html +++ /dev/null @@ -1,210 +0,0 @@ ---- -title: Aplikasi Pertama Kamu -slug: Archive/B2G_OS/Quickstart/aplikasi_pertama_kamu -translation_of: Archive/B2G_OS/Quickstart/Your_first_app ---- -
-
-

Aplikasi Open web memberikan kemudahan kepada Pengembang web persis seperti apa yang mereka inginkan selama ini: lingkungan cross-platform yang didedikasikan untuk aplikasi yang diinstal dan dibuat hanya dengan menggunakan HTML, CSS, dan JavaScript saja - dengan Firefox OS sebagai yang pertama yang mendedikasikan platform Aplikasi Open web ini. Panduan ini bertujuan untuk membuat Anda belajar dan membangun aplikasi, dengan petunjuk arsitektur dasar dan petunjuk membangun Aplikasi sehingga Anda dapat membuat aplikasi besar berikutnya!

-
-

Jika Anda tidak ingin mengikuti panduan ini, Anda dapat men-download template aplikasi quick start kami. Cari tahu lebih banyak tentang apa ini, dengan membaca panduan Template aplikasi kami.

-

Struktur Aplikasi

-

Paket vs. Aplikasi yang dihost

-

Ada dua jenis aplikasi Open web yaitu: dikemas dan dihosting.

- -

Kedua jenis aplikasi ini memerlukan file manifest yang valid. Ketika tiba saatnya Anda ingin untuk mendaftarkan aplikasi Anda di Firefox Marketplace, Anda akan meng-upload aplikasi Anda sebagai file .zip atau memberikan URL di mana aplikasi anda dihosting.

-
-

-
-

Dibuat dalam kemitraan dengan Treehouse: Periksa mereka!

-
-
-

Untuk tujuan panduan ini, Anda akan membuat aplikasi host yang akan tinggal di alamat localhost Anda. Setelah aplikasi Anda sudah siap untuk daftar di Firefox Marketplace, Anda dapat membuat keputusan untuk bundel sebagai aplikasi dikemas atau meluncurkannya sebagai aplikasi host.

-

Manifests Aplikasi

-

Every Firefox app requires a manifest.webapp file at the app root. The manifest.webapp file provides important information about the app, such as version, name, description, icon location, locale strings, domains the app can be installed from, and much more. Only the name and description are required. The simple manifest included within the app template is similar to the following:

-
{
-  "version": "0.1",
-  "name": "Open Web App",
-  "description": "Your new awesome 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": "Your Name",
-    "url": "http://yourawesomeapp.com"
-  },
-  "locales": {
-    "es": {
-      "description": "Su nueva aplicación impresionante Open Web",
-      "developer": {
-        "url": "http://yourawesomeapp.com"
-      }
-    },
-    "it": {
-      "description": "La tua nuova fantastica Open Web App",
-      "developer": {
-        "url": "http://yourawesomeapp.com"
-      }
-    }
-  },
-  "default_locale": "en"
-}
-
-

-
-

Made in partnership with Treehouse: Check them out!

-
-
-

 

-

A basic manifest is all you need to get started. For more details about manifests, read App Manifest.

-

App Layout & Design

-

Responsive design has become increasingly important as more screen resolutions become standard on different devices. Even if the main target of your app is mobile platforms such as Firefox OS, other devices will likely have access to it as well. CSS media queries allow you to adapt layout to device, as shown in this skeleton CSS example:

-
/* The following are examples of different CSS media queries */
-
-/* Basic desktop/screen width sniff */
-@media only screen and (min-width : 1224px) {
-  /* styles */
-}
-
-/* Traditional iPhone width */
-@media
-  only screen and (-webkit-min-device-pixel-ratio : 1.5),
-  only screen and (min-device-pixel-ratio : 1.5) {
-  /* styles */
-}
-
-/* Device settings at different orientations */
-@media screen and (orientation:portrait) {
-  /* styles */
-}
-@media screen and (orientation:landscape) {
-  /* styles */
-}
-

There are many JavaScript and CSS frameworks available to aid in responsive design and mobile app development (Bootstrap, etc.) Choose the framework(s) that best fit your app and development style.

-

Web APIs

-

JavaScript APIs are being created and enhanced as quickly as devices are. Mozilla's WebAPI effort brings dozens of standard mobile features to JavaScript APIs. A list of device support and status is available on the WebAPI page. JavaScript feature detection is still the best practice, as shown in the following example:

-
// If this device supports the vibrate API...
-if('vibrate' in navigator) {
-    // ... vibrate for a second
-    navigator.vibrate(1000);
-}
-

In the following example, the display style of a <div> is modified based on changes in the battery state of the device:

-
// Create the battery indicator listeners
-(function() {
-  var battery = navigator.battery || navigator.mozBattery || navigator.webkitBattery,
-      indicator, indicatorPercentage;
-
-  if(battery) {
-    indicator = document.getElementById('indicator'),
-    indicatorPercentage = document.getElementById('indicator-percentage');
-
-    // Set listeners for changes
-    battery.addEventListener('chargingchange', updateBattery);
-    battery.addEventListener('levelchange', updateBattery);
-
-    // Update immediately
-    updateBattery();
-  }
-
-  function updateBattery() {
-    // Update percentage width and text
-    var level = (battery.level * 100) + '%';
-    indicatorPercentage.style.width = level;
-    indicatorPercentage.innerHTML = 'Battery: ' + level;
-    // Update charging status
-    indicator.className = battery.charging ? 'charging' : '';
-  }
-})();
-

In the code sample above, once you confirm that the Battery API is supported, you can add event listeners for chargingchange and levelchange to update the element's display. Try adding the following to the quickstart template, and see if you can get it working.

-

Check the WebAPI page frequently to keep up to date with device API statuses.

-

Install API functionality

-

In our sample quickstart app template, we've implemented an install button that you can click when viewing the app as a standard Web page, to install that site on Firefox OS as an app. The button markup is nothing special:

-
<button id="install-btn">Install app</button>
-

This button's functionality is implemented using the Install API (see install.js):

-
var manifest_url = location.href + 'manifest.webapp';
-
-function install(ev) {
-  ev.preventDefault();
-  // define the manifest URL
-  // install the app
-  var installLocFind = navigator.mozApps.install(manifest_url);
-  installLocFind.onsuccess = function(data) {
-    // App is installed, do something
-  };
-  installLocFind.onerror = function() {
-    // App wasn't installed, info is in
-    // installapp.error.name
-    alert(installLocFind.error.name);
-  };
-};
-
-// get a reference to the button and call install() on click if the app isn't already installed. If it is, hide the button.
-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);
-  };
-};
-
-

Let's run through briefly what is going on:

-
    -
  1. We get a reference to the install button and store it in the variable button.
  2. -
  3. We use navigator.mozApps.checkInstalled to check whether the app defined by the manifest at http://people.mozilla.com/~cmills/location-finder/manifest.webapp is already installed on the device. This test is stored in the variable installCheck.
  4. -
  5. When the test is successfully carried out, its success event is fired, therefore installCheck.onsuccess = function() { ... } is run.
  6. -
  7. We then test for the existence of installCheck.result using an if statement. If it does exist, meaning that the app is installed, we hide the button. An install button isn't needed if it is already installed.
  8. -
  9. If the app isn't installed, we add a click event listener to the button, so the install() function is run when the button is clicked.
  10. -
  11. When the button is clicked and the install() function is run, we store the manifest file location in a variable called manifest_url, and then install the app using navigator.mozApps.install(manifest_url), storing a reference to that installation in the installLocFind variable. You'll notice that this installation also fires success and error events, so you can run actions dependent on whether the install happened successfully or not.
  12. -
-

You may want to verify the implementation state of the API when first coming to Installable web apps.

-
-

Note: 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 allows you to install installable web apps on the desktop. See FAQs about apps manifests for more information on origins.

-
-

WebRT APIs (Permissions-based APIs)

-

There are a number of WebAPIs that are available but require permissions for that specific feature to be enabled. Apps may register permission requests within the manifest.webapp file like so:

-
// New key in the manifest: "permissions"
-// Request access to any number of APIs
-// Here we request permissions to the systemXHR API
-"permissions": {
-    "systemXHR": {}
-}
-

The three levels of permission are as follows:

- -

For more information on app permission levels, read Types of packaged apps. You can find out more information about what APIs require permissions, and what permissions are required, at App permissions.

-
-

It's important to note that not all Web APIs have been implemented within the Firefox OS Simulator.

-
-

Tools & Testing

-

Testing is incredibly important when supporting mobile devices. There are many options for testing installable open web apps.

-

Firefox OS Simulator

-

Installing and using the Firefox OS Simulator is the easiest way to get up and running with your app. After you install the simulator, it is accessible from the Tools -> Web Developer -> Firefox OS Simulator menu. The simulator launches with a JavaScript console so you can debug your application from within the simulator.

-

App Manager

-

The new kid on the block with regards to testing tools is called the App Manager. This tool allows you to connect desktop Firefox to a compatible device via USB (or a Firefox OS simulator), push apps straight to the device, validate apps, and debug them as they run on the device.

-

Unit Testing

-

Unit tests are extremely valuable when testing on different devices and builds. jQuery's QUnit is a popular client-side testing utility, but you can use any set of testing tools you'd like.

-

Installing Firefox OS on a Device

-

Since Firefox OS is an open source platform, code and tools are available to build and install Firefox OS on your own device. Build and installation instructions, as well as notes on what devices it can be installed on, can be found on MDN.

-

Dedicated Firefox OS developer preview devices are also available: read our Developer preview phone page for more information.

-

App Submission and Distribution

-

Once your app is complete, you can host it yourself like a standard web site or app (read Self-publishing apps for more information), or it can be submitted to the Firefox Marketplace. Your app's manifest will be validated and you may choose which devices your app will support (e.g. Firefox OS, Desktop Firefox, Firefox Mobile, Firefox Tablet). Once validated, you can add additional details about your app (screenshots, descriptions, price, etc.) and officially submit the app for listing within the Marketplace. Once approved, your app is available to the world for purchase and installation.

-

More Marketplace & Listing Information

-
    -
  1. Submitting an App to the Firefox OS Marketplace
  2. -
  3. Marketplace Review Criteria
  4. -
  5. App Submission Video Walkthrough
  6. -
-
diff --git a/files/id/archive/b2g_os/quickstart/index.html b/files/id/archive/b2g_os/quickstart/index.html deleted file mode 100644 index ebe1f7c220..0000000000 --- a/files/id/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 ---- -
-

Quickstart information on coding open web apps.

-
-
-
- Introduction to open web apps
-
- 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.
-
- Your first app
-
- This article takes you through the basic steps and additional knowledge on top of regular web development required to create installable open web apps.
-
- Introduction to Firefox OS
-
- An introduction to Firefox OS, Mozilla's new open web app-based mobile platform.
-
- Introduction to manifests
-
- An FAQ designed to answer any questions you may have about manifests, hosting apps, origins, and other such topics.
-
- App development for web developers
-
- If you're a web developer, how do open web apps differ from what you're used to? This article explains all.
-
- App development for mobile developers
-
- 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.
-
- Developing app functionality
-
- This page talks about the kinds of different functionality that you might want to build into your apps, with links to further information.
-
- Payments
-
- How do you build functionality to make people pay for installing your open web apps? Here is the lowdown.
-
- App tools
-
- Last for this section, we provide some links to more information on the tools available to help you develop great open web apps.
-
diff --git a/files/id/archive/b2g_os/simulator/index.html b/files/id/archive/b2g_os/simulator/index.html deleted file mode 100644 index 6bc32a3c38..0000000000 --- a/files/id/archive/b2g_os/simulator/index.html +++ /dev/null @@ -1,120 +0,0 @@ ---- -title: Firefox OS Simulator -slug: Archive/B2G_OS/Simulator -translation_of: Archive/B2G_OS/Simulator ---- -
-

Halaman ini menjelaskan Firefox OS Simulator untuk pengembang menargetkan Firefox OS 1.2 atau yang lebih baru. Jika Anda sedang mengembangkan aplikasi untuk Firefox OS 1.1, maka Anda harus memeriksa dokumentasi untuk Firefox OS 1.1 Simulator gantinya.

-
- -

Firefox OS Simulator adalah versi dari lapisan yang lebih tinggi dari Firefox OS yang mensimulasikan perangkat Firefox OS, tapi berjalan pada desktop. Ini berarti bahwa dalam banyak kasus, Anda tidak perlu perangkat nyata untuk menguji dan men-debug aplikasi Anda. Ini berjalan di jendela ukuran yang sama sebagai perangkat Firefox OS, termasuk antarmuka pengguna Firefox OS dan built-in aplikasi, dan mensimulasikan banyak dari Firefox OS perangkat API.

- -

 

- -

Simulator ini dikemas dan didistribusikan sebagai Firefox add-on. Setelah Anda download dan diinstal di Firefox, Anda dapat menjalankannya, mendorong aplikasi untuk itu, dan melampirkan alat pengembang untuk itu menggunakan App Manajer alat atau WebIDE.

- -

Instalasi

- -

Untuk menginstal simulator, menggunakan WebIDE ini Mengelola penambahan Komponen panel (tersedia sebagai bagian dari Firefox 34 dan seterusnya). Beberapa versi yang tersedia, dan Anda disarankan untuk menginstal mereka semua, untuk fleksibilitas maksimum.

- -
-

Dimulai dengan Firefox 43, tentang: halaman addons mungkin menampilkan peringatan tentang addon Anda menjadi unsigned. Simulator yang benar ditandatangani pada waktu menginstal, namun mereka kemudian dimodifikasi sehingga muncul "rusak". Mereka akan terus berjalan dengan sukses meskipun pesan peringatan ini. Rinciannya di bug 1.197.262.

-
- -

Untuk memulai Simulator, Anda memilih dari daftar runtime WebIDE ini. Untuk lebih jelasnya, lihat petunjuk pada dokumentasi WebIDE. Setelah menjalankan Simulator, Anda dapat mendorong aplikasi untuk itu dan debug mereka menggunakan WebIDE, seperti yang Anda bisa dengan perangkat nyata.

- -

Jika Anda menggunakan Manajer App (alat tua tersedia sebelum WebIDE), Anda dapat menginstal simulator melalui tombol berikut:

- -

Install Simulator

- -

Simulator UI

- -

Simulator muncul sebagai jendela terpisah, berukuran sehingga area layar simulasi adalah 320x480 piksel. Untuk mensimulasikan peristiwa sentuhan Anda dapat mengklik tombol mouse dan tarik sambil memegang tombol ke bawah. Jadi dengan mengklik dan menyeret kanan-ke-kiri dari Home Screen, Anda akan melihat aplikasi built-in, serta setiap aplikasi yang telah ditambahkan:

- -

- -

Simulator ini memiliki dua tombol di toolbar di bagian bawah:

- - - -

Emulasi kartu SD

- -

Dalam Simulator kartu SD perangkat dipetakan ke "fake-sdcard" direktori di profil Simulator ini, yang itu sendiri terletak di dalam "ekstensi" direktori di bawah profil Firefox yang Simulator diinstal. Sebagai contoh:

- -
/path/to/Firefox/Profiles/Firefox-profile-name/extensions/fxos_2_2_simulator@mozilla.org/profile/fake-sdcard
- -

File membaca atau menulis menggunakan getDeviceStorage API akan muncul di sini.

- -

Sebelum versi 2.2 dari Simulator, Anda harus menciptakan "palsu-sdcard" direktori secara manual untuk bekerja. Dari 2,2 dan seterusnya, "palsu-sdcard" direktori dibuat untuk Anda secara otomatis.

- -

Juga dari versi 2.2 dan seterusnya, jika Anda menjalankan Simulator dari baris perintah Anda dapat menentukan direktori yang berbeda dengan melewati --storage-path option.

- -

.

- -
Catatan: ini sebagian besar dimaksudkan untuk pengujian API. Musik akan dibaca tidak dari "palsu-sdcard" direktori, tapi dari sistem anda ~/Music gambar dari ~/Pictures video dari ~/Videos Download pergi ke ~/Downloads user-dirs.dirs redefinitions didukung.
- -

Keterbatasan Simulator

- -

Perhatikan bahwa Firefox OS Simulator bukan simulasi sempurna.

- -

Keterbatasan hardware

- -

Terlepas dari ukuran layar, Simulator tidak mensimulasikan keterbatasan perangkat keras dari perangkat Firefox OS seperti memori yang tersedia atau kecepatan CPU.

- -

Codec audio / video

- -

Codec berikut tergantung pada decoding hardware-accelerated dan karena itu belum didukung:

- - - -

Ini berarti tidak mungkin untuk menggunakan Simulator untuk pemutaran video tes di aplikasi dan di website seperti Youtube yang mengandalkan codec ini.

- -

API yang tidak didukung

- -

API tertentu yang bekerja pada perangkat tidak akan bekerja pada Simulator, umumnya karena hardware pendukung tidak tersedia pada desktop. Kami telah menerapkan simulasi untuk beberapa API seperti geolocation, dan berharap untuk menambahkan lebih banyak dalam rilis mendatang. Namun, saat ini API tidak didukung. Menggunakan mereka mungkin melemparkan kesalahan atau hanya mengembalikan hasil yang salah:

- - - -

 

- -

Mendapatkan bantuan

- -

Jika Anda memiliki pertanyaan, mencoba meminta kami pada daftar dev-pengembang-alat mailing atau #devtools pada irc.mozilla.org.

- -

Cara mengaktifkan verbose logging

- -

Anda dapat melihat pesan login dari aplikasi Anda di Web Console, yang dapat Anda melampirkan ke aplikasi Anda menggunakan WebIDE. Jika Anda ingin menangkap pesan awal terjadi selama startup aplikasi, sebelum konsol akan terhubung dan bekerja, Anda dapat mengaktifkan verbose logging di Simulator.

- -

Kunjungi about: config dan menciptakan preferensi baru. Nama preferensi yang berbeda untuk setiap versi Simulator:

- - - -

Set ke nilai string "semua", dan menonaktifkan, kemudian mengaktifkan kembali, add-on di Add-on manajer. Sekarang pesan tambahan tentang operasi Simulator akan muncul di Browser Console.

- -

Membangun Simulator

- -

Jika Anda ingin menguji patch ke Gecko atau Gaia kode yang Simulator mengandung, Anda mungkin tertarik dalam memodifikasi simulator untuk menggunakan kustom Gecko membangun atau profil Gaia. Atau, Anda dapat membangun Simulator baru dari checkout Gecko Anda.

- -

Alternatif

- -

Berbagai cara untuk menjalankan Gaia - termasuk daftar mereka dalam rangka kemudahan untuk menjalankan dan ketertiban kedekatan membalikkan untuk produk dikirim (sesuai dengan itu, Firefox OS Simulator paling mudah tapi terjauh.

diff --git a/files/id/archive/b2g_os/using_the_app_manager/index.html b/files/id/archive/b2g_os/using_the_app_manager/index.html deleted file mode 100644 index 39a43a9762..0000000000 --- a/files/id/archive/b2g_os/using_the_app_manager/index.html +++ /dev/null @@ -1,233 +0,0 @@ ---- -title: Using the App Manager -slug: Archive/B2G_OS/Using_the_App_Manager -translation_of: Archive/B2G_OS/Using_the_App_Manager ---- -
-

The App Manager is a new tool available in Firefox for Desktop, which provides a number of useful tools to help you test, deploy and debug HTML5 web apps on Firefox OS phones and the Firefox OS Simulator, directly from your browser.

-
- -

{{EmbedYouTube("z1Bxg1UJVf0")}}

- -

The App Manager is composed of:

- - - -

Quick setup:

- -

This section is designed to get you up and running as soon as possible; if you need some more detail please skip forward to the {{ anch("Device and system configuration") }} section and start reading from there.  Also see the {{ anch("Troubleshooting") }} section for help if you are having trouble.

- -
    -
  1. Make sure you have Firefox Desktop 26+ installed
  2. -
  3. Open the App Manager (in the URL bar, type about:app-manager)
  4. -
  5. If you don't have a real device: -
      -
    1. Install the Firefox OS Simulator
    2. -
    3. In App Manager's bottom toolbar, click on Start Simulator, then click on the name of the installed simulator, which should appear there.
    4. -
    -
  6. -
  7. If you have a real device: -
      -
    1. Make sure your device is running Firefox OS 1.2+
    2. -
    3. In the Settings of your device, disable Screen Lock (Settings > Screen Lock) and enable Remote Debugging (Settings > Device information > More information > Developer)
    4. -
    5. Install the ADB Helper add-on in Firefox Desktop
    6. -
    7. Connect your device to your machine via a USB cable
    8. -
    9. You should see the name of your device in the App Manager's bottom bar. Click on it.
    10. -
    -
  8. -
  9. The bottom bar should show "Connected to: xxx"
  10. -
  11. Click on the Apps panel and add an app (packaged or hosted)
  12. -
  13. The Refresh button validates your app and installs it on the Simulator/Device
  14. -
  15. The Debug button connects the developer tools to the running app
  16. -
- -

Device and system configuration

- -

The first thing you'll need to do when using the App Manager is make sure your system and phone are set up correctly. This section will run thrugh all the steps required.

- -

Firefox 1.2+ required

- -

Make sure your device is running Firefox OS 1.2/Boot2Gecko 1.2 or higher. To check which version of Firefox OS the device is runing, go to Settings > Device Information > Software.

- -

If you don't have a high enough version installed, depending on what phone you have you will need to either install an available nightly build of Firefox 1.2+, or configure and build it yourself from source.

- -

Builds available:

- - - -

To build your own Firefox OS 1.2+ distribution, follow the instructions located at Building and installing Firefox OS, starting with Firefox OS build prerequisites.

- -

Remote debugging

- -

Next, you need to enable remote debugging in Firefox OS. To do so, go to Settings > Device information > More information > Developer and check the Remote Debugging checkbox.

- -

ADB or ADB helper

- -

The process uses the Android Debug Bridge (ADB) to handle the device-computer connection and communication. There are two options for running ADB:

- - - -
-

Note: There's no need to run this command if you installed the ADB Helper Add-on.

-
- -

Connecting your device to the App Manager

- -

With all your configuration done, it's now time to plug your device into your computer and start the App Manager:

- -
    -
  1. Plug the device into your computer via USB.
  2. -
  3. Disable Screen lock on your device by going to Settings > Screen Lock and unchecking the Lock Screen 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.
  4. -
  5. Start the App Manager — In Firefox Desktop select the Tools > Web Developer > App Manager menu option, or type about:app-manager in the URL bar.
  6. -
  7. At the bottom of the App Manager tab, you will see a connection status bar (see screenshot below). You should be able to connect your device by clicking the "Connect to localhost:6000" button.
  8. -
  9. If this works successfully, a prompt should appear on your device: "An incoming request to permit remote debugging connection was detected. Allow connection?". Tap the OK button (You may also have to press the power button on the phone so you can see the prompt.) The connection status bar should update to say "Connected to B2G", with a Disconnect button available to press if you want to cancel the connection.
  10. -
- -

- -
-

Note that the other controls in the connection status bar allow you to connect a simulator to the App Manager, which we cover in the next section, below, and change the port that the connection happens on. If you change the port, you'll also need to enable port forwarding for this port as well, as instructed in the {{anch("Enable port forwarding")}} section, above.

-
- -

Using a Firefox OS Simulator Add-on

- -

If you haven't got a real device available to use with App Manager, you can still try it out using a Firefox OS Simulator Add-on. To start off, install the appropriate simulator for your operating system:

- -

Install Simulator

- -
-

Note that currently there is only a Firefox OS 1.2 simulator available, although more may appear in the future.

-
- -

Once you've installed the simulator, you need to go to the connection status bar at the bottom of the App Manager tab, and click the "Start simulator" button. Three buttons will appear:

- - - -

Apps panel

- -

Now everything is working, let's review the functionality available inside the App Manager, starting with the Apps Panel. From here, you can import an existing app to push onto your device and debug:

- - - -

Information about your app should appear on the right hand side of the window, as seen below:

- -

- -

Clicking on "Update" will update (install) the app on the device. Clicking on "debug" will connect a toolbox to the app, allowing you to debug its code directly:

- -

- -
-

Note: You'll enjoy playing around with the toolbox — try altering the DOM, CSS etc. and you'll see the updates reflected on the device in realtime. Such updates will be saved on the installed app code; you'll see them next time you open the app on the device.

-
- -

If an app was not added successfully — for example if the URL was incorrect, or you selected a packaged app folder — an entry will be added to the page for this app, but this will include error information.

- -

- -

You can also delete an app from this view, by hovering over the App name/description on the left of the window, and pressing the "X" button that appears in each case. This however doesn't remove the app from the device. To do that you need to manually remove the app using the device itself.

- -

Device panel

- -

The Device tab displays information about the connected device. From the "Installed Apps" window, apps on the device can be started and debugged.

- -

- -
-

Note: Certified Apps are not listed by default. See how to debug certified apps.

-
- -

The "Permissions" window shows the required priviledges for different Web APIs on the current device:

- -

- -

Finally, you can take a screenshot of the current device display by clicking the "Screenshot" button. The screenshot appears in a new tab on Firefox, and from there you can save or discard it as you wish.

- -

Debugging Certified Apps

- -

Currently only devices running a development build of Firefox OS 1.2 are capable of debugging certified apps. If you have a development build, you can enable certified app debugging by changing the pref devtools.debugger.forbid-certified-apps to false in your profile. To do this, follow the steps below:

- -
    -
  1. -

    On your computer, enter the following command in Terminal/console to enter your device's filesystem via the shell:

    - -
    adb shell
    - -

    Your prompt should change to root@android.

    -
  2. -
  3. -

    Next, stop B2G running using the following command:

    - -
    stop b2g
    -
  4. -
  5. -

    Navigate to the following directory:

    - -
    cd /data/b2g/mozilla/*.default/
    -
  6. -
  7. -

    Here, update the prefs.js file with the following line:

    - -
    echo 'user_pref("devtools.debugger.forbid-certified-apps", false);' >> prefs.js
    -
  8. -
  9. -

    After you've finished editing and saving the file, start B2G again using the following command:

    - -
    start b2g
    -
  10. -
  11. -

    Exit the android filesystem using the exit command; this will return you to your normal terminal prompt.

    -
  12. -
  13. -

    Next, reconnect to the App Manager and you should see certified apps appear for debugging.

    -
  14. -
- -
-

Note: If you want to add this preference to your Gaia build you can run make DEVICE_DEBUG=1 reset-gaia.

-
- -

Troubleshooting

- -

If the device is not recognized:

- - - -

Can't connect your device to the App Manager or start the simulator? Let us know or file a bug.

diff --git a/files/id/archive/css3/index.html b/files/id/archive/css3/index.html deleted file mode 100644 index 0c5eae08d5..0000000000 --- a/files/id/archive/css3/index.html +++ /dev/null @@ -1,972 +0,0 @@ ---- -title: CSS3 -slug: Archive/CSS3 -translation_of: Archive/CSS3 ---- -

CSS3 merupakan perubahan terakhir dari bahasa Cascading Style Sheets dan bertujuan untuk perpanjangan dari CSS2.1. Menghadirkan banyak  catatan yang lama dinantikan, seperti di seputar lingkaran sudut, bayangan, gradients, transitions or animations, sama halnya pada layout baru multi-columns (beberapa kolom), flexible box (kemudahan tampilan) atau grid layouts. Bagian bagian pengalaman vendor-prefixed (penyedia-memperbaharui) dan kemungkinan yang lainnya dihilangkan dalam lingkungan pembuatan, atau digunakan dengan berlebihan menyebabkan keduanya syntax (penulisan) and semantics (bentuk penulisan) dapat berubah kemudian.

- -

Modul and Proses Standarisasi

- -

CSS Tingkat 2 diperlukan 9 tahun, dari Agustus 2002 sampai Juni 2011 yang kaya status rekomendasi. Ini merupakan tindakan nyata bahwa featur bagian kedua kembali didasarkan pada spesifikasi yang menyeluruh. Dalam melengkapi percepatan featur standarisasi tanpa gangguan, the CSS Working Group of the W3C (Pekerjaan Group CSS W3C), dalam sebuah bagian mereferensi pada Beijing doctrine, CSS dibagi dalam komponen komponen lebih kecil disebut modules . Masing masing modul sekarang ini merupakan sebuah bagian yang berdiri sendiri dari bahasa dan bergerak pada standarisasi percepatannya sendiri. Selagi beberapa modul telah menjadi rekomendasi W3C, yang lainnya masih merupakan bagian yang baru dalam rancangan atau draft pekerjaan. Modul modul baru juga ditambahkan ketika dibutuhkan pengidentifikasin baru.

- -

CSS Modules and Snapshots as defined since CSS3 Secara bentukan, tidak ada uraian standar CSS. Masing masing modul dijadikan standar secara independen. Standar CSS terdiri dari CSS2.1 perubahan and diperpanjang dengan modul yang lengkap. Seluruhnya tidak diperlukan pada angka yang sama. Di tiap tiap titik waktu, sebuah snapshot (tampilan) dari standar CSS dapat digambarkan, daftar CSS2.1 dan modul saat ini.

- -

Konsorsium W3C secara priode dipublikasikan yang menampilkan, seperti dalam tahun 2007 atau 2010.

- -

Meski hari ini tanpa modul dengan tingkat yang lebih tinggi dari standarisasi CSS3, ini dapat berubah ke depannya. Beberapa modul, seperti Selectors 4 or CSS Borders and Backgrounds Level 4 telah mempunyai sebuah rancangan atau draft editor, meski mereka belum diperkaya dengan publikasi awal status Draft atau Rancangan Pekerjaan.

- -

Status Modul CSS

- -

Stabilitas Modul

- -

Sedikitnya modul CSS telah stabil secara bersamaan dan telah kaya dari satu atau tiga tingkatan rekomensasi dari CSSWG: Rekomendasi Kandidat, Proposal Rekomendasi atau Rekomendasi. Ini dapat digunakan tanpa sebelum perbaikan dan merupakan kestabilan yang baik, meski sedikitnya featur dapat dihilangkan pada Tingkat Kandidat Rekomendasi.

- -

Perpanjangan modul modul ini dan perubahan CSS2.1 spesifikasi yang mana membangun inti dari spesifikasi. Bersamaan dengan itu, mereka adalah tampilan sekarang dari spesifikasi CSS.

- - - - - - - - - - - -
{{ SpecName("CSS3 Colors", "", "") }}{{ Spec2("CSS3 Colors") }} since June 7th, 2011
-

Adds the {{ cssxref("opacity") }} property, and the hsl(), hsla(), rgba() and rgb() functions to create {{cssxref("<color>")}} values. It also defines the currentColor keyword as a valid color.

- -

The transparent color is now a real color (thanks to the support for the alpha channel) and is a now an alias for rgba(0,0,0,0.0) .

- -

It deprecates the system-color keywords that shouldn't be used in a production environment anymore.

-
- - - - - - - - - - - -
{{ SpecName("CSS3 Selectors", "", "") }}{{ Spec2("CSS3 Selectors") }} since September 29th, 2011
-

Adds:

- -
    -
  • Substring matching attribute selectors, E[attribute^="value"], E[attribute$="value"], E[attribute*="value"] .
  • -
  • 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") }}.
  • -
  • Pseudo-elements are now characterized by two colons rather than one: :after becomes {{ cssxref("::after") }}, :before becomes {{ cssxref("::before") }}, :first-letter becomes {{ cssxref("::first-letter") }}, and :first-line becomes {{ cssxref("::first-line") }}.
  • -
  • The new general sibling combinator ( h1~pre ).
  • -
-
- -

The next iteration of the Selectors specification is already in progress, though it still hasn't reached the First Public Working Draft stage.

- - - - - - - - - - - -
{{ SpecName("CSS3 Namespaces", "", "") }}{{ Spec2("CSS3 Namespaces") }} since September 29th, 2011
-

Adds the support for the XML Namespaces by defining the notion of CSS qualified name, using the ' | ' syntax and adding the {{ cssxref("@namespace") }} CSS at-rule.

-
- - - - - - - - - - - -
{{ SpecName("CSS3 Media Queries", "", "") }}{{ Spec2("CSS3 Media Queries") }} since June 19th, 2012
-

Extends the former media type ( print, screen, ) to a full language allowing queries on the device media capabilities like only screen and (color) .

- -

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.

-
- -

The next iteration of this specification is in the work, allowing to tailor a Web site regarding the input methods available on the user agent, with new media features like hover or pointer. Detection of EcmaScript support, using the script media features is also proposed.

- - - - - - - - - - - -
{{ SpecName("CSS3 Style", "", "") }}{{ Spec2("CSS3 Style") }} since November 7th, 2013
Formally defines the syntax of the content of the HTML style global attribute.
- - - - - - - - - - - -
{{ SpecName("CSS3 Backgrounds", "", "") }}{{ Spec2("CSS3 Backgrounds") }}
-

Adds:

- -
    -
  • Support, on backgrounds, for any type of {{cssxref("<image>")}}, and not only for uri() defined ones.
  • -
  • Support for multiple background images.
  • -
  • The {{ cssxref("background-repeat") }} space and round values, and for the 2-value syntax of this CSS property.
  • -
  • The {{ cssxref("background-attachment") }} local value.
  • -
  • The CSS {{ cssxref("background-origin") }}, {{ cssxref("background-size") }}, and {{ cssxref("background-clip") }} properties.
  • -
  • 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.
  • -
  • 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.
  • -
  • Support for shadows of the element with the CSS {{ cssxref("box-shadow") }} property.
  • -
-
- -

The CSS4 iteration of the Backgrounds and Borders specification 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).

- - - - - - - - - - - -
{{ SpecName("CSS3 Multicol", "", "") }}{{ Spec2("CSS3 Multicol") }}
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") }}.
- - - - - - - - - - - -
{{ SpecName("CSS3 Speech", "", "") }}{{ Spec2("CSS3 Speech") }}
Defines the speech media type, an aural formatting model and numerous properties specific for speech-rendering user agents.
- - - - - - - - - - - -
{{ SpecName("CSS3 Images", "", "") }}{{ Spec2("CSS3 Images") }}
-

Defines the {{cssxref("<image>")}} data type.

- -

Extends the url() syntax to support image slices using media fragments.

- -

Adds:

- -
    -
  • The dppx unit to the {{cssxref("<resolution>")}} data type.
  • -
  • The image() function as a more flexible alternative to url() to define an image from an url.
    - At risk : due to insufficient browser support, standardization of the image() function may be postponed to the next iteration of this module .
  • -
  • Support for linear-gradient(), repeating-linear-gradient(), radial-gradient() and repeating-radial-gradient().
  • -
  • The ability to define how a replaced element should fit in its element, using the CSS {{ cssxref("object-fit") }} property.
    - At risk : due to insufficient browser support, standardization of the {{ cssxref("object-fit") }} and property may be postponed to the next iteration of this module .
  • -
  • The ability to override the resolution and orientation of an external image using the CSS {{ cssxref("image-resolution") }} and {{ cssxref("image-orientation") }} properties.
    - At risk : due to insufficient browser support, standardization of the {{ cssxref("image-resolution") }} and {{ cssxref("image-orientation") }} properties may be postponed to the next iteration of this module .
  • -
-
- -

The CSS Image Values and Replaced Content Level 4 which will supersede CSS Image Level 3 is in development and is a {{Spec2("CSS4 Images")}}.

- - - - - - - - - - - -
{{ SpecName("CSS3 Values", "", "") }}{{ Spec2("CSS3 Values") }}
-

Makes initial and inherit keywords usable on any CSS property.

- -

Formally defines the CSS data types of CSS 2.1, that were implicitely defined by their grammar token and some textual precisions.

- -

Adds:

- -
    -
  • Definition for new font-relative length units: rem and ch .
  • -
  • Definition for viewport-relative length units: vw, vh, vmax, and vmin .
  • -
  • Precision about the real size of the absolute length units, which are not really absolute, but defined in relation with the reference pixel .
  • -
  • Definition for {{ cssxref("<angle>") }}, {{cssxref("<time>")}}, {{cssxref("<frequency>")}}, {{cssxref("<resolution>")}}.
  • -
  • Normative value to the definition of {{cssxref("<color>")}}, {{cssxref("<image>")}}, and {{ cssxref("<position>") }}.
  • -
  • Definition for the {{ cssxref("calc", "calc()") }}, {{ cssxref("attr", "attr()")}}, and toggle() functional notations.
    - At risk: due to insufficient browser support, standardization of the calc(), attr(), and toggle() functional notations may be postponed to the next iteration of this module.
  • -
-
- -

Several types definition, like <ident> and <custom-ident>, have been deferred to CSS Values and Units Module Level 4.

- - - - - - - - - - - -
{{ SpecName("CSS3 Flexbox", "", "") }}{{ Spec2("CSS3 Flexbox") }}
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") }}.
- - - - - - - - - - - -
{{ SpecName("CSS3 Conditional", "", "") }}{{ Spec2("CSS3 Conditional") }}
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()")}}.
- - - - - - - - - - - -
{{ SpecName("CSS3 Text Decoration", "", "") }}{{ Spec2("CSS3 Text Decoration") }}
-

Extends:

- -
    -
  • 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.
  • -
- -

Adds:

- -
    -
  • 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.
  • -
  • Support for script shadows with the CSS {{ cssxref("text-shadow") }} property.
  • -
- -

Clarifies:

- -
    -
  • The paint order of the decorations.
  • -
- -

At risk: due to insufficient browser support, standardization of the text-decoration-skip, line positioning rules and the ability to place both emphasis marks and ruby above the same base text may be postponed to the next iteration of this module.

-
- - - - - - - - - - - -
{{ SpecName("CSS3 Fonts", "", "") }}{{ Spec2("CSS3 Fonts") }}
-

Amends the CSS2.1 Font matching algorithm to be closer to what is really implemented.

- -

Adds:

- -
    -
  • Support for downloadable fonts via the CSS {{ cssxref("@font-face") }} at-rule.
  • -
  • The control of the contextual inter-glyph spacing via the CSS {{ cssxref("font-kerning") }} property.
  • -
  • The choice of language-specific glyphs via the CSS {{ cssxref("font-language-override") }} property.
  • -
  • The choice of glyphs with specific OpenType features via the CSS {{ cssxref("font-feature-settings") }} property.
  • -
  • The control of the aspect ratio to use when fallback fonts are selected via the CSS {{ cssxref("font-size-adjust") }} property.
  • -
  • 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-feature-values") }} at-rule.
  • -
  • The control of the automatic generation of an oblique or bold face when none are found via the CSS {{ cssxref("font-synthesis") }} property.
  • -
-
- - - - - - - - - - - -
{{ SpecName("CSS3 Cascade", "", "") }}{{ Spec2("CSS3 Cascade") }}
-

Adds:

- -
    -
  • The initial, unset values for properties.
  • -
  • The CSS {{ cssxref("all") }} property.
  • -
  • The scoping mechanism.
  • -
- -

Clarifies:

- -
    -
  • Interaction of media-dependent @import statements and style sheet loading requirements.
  • -
-
- - - - - - - - - - - -
{{ SpecName("CSS3 Writing Modes", "", "") }}{{ Spec2("CSS3 Writing Modes") }}
Defines the writing modes of both horizontal and vertical scripts and clarifies how the CSS {{ cssxref("direction") }} and {{ cssxref("unicode-bidi") }} properties interact with the new CSS {{ cssxref("text-orientation") }} property, and extends them where needed.
- - - - - - - - - - - -
{{ SpecName("CSS Shapes", "", "") }}{{ Spec2("CSS Shapes") }}
Defines geometric shapes, which can be applied to floats. These shapes describe areas, around which inline content wraps instead of wrapping around the bounding box.
- - - - - - - - - - - -
{{ SpecName("CSS Masks", "", "") }}{{ Spec2("CSS Masks") }}
Defines a way for partially or fully hiding portions of visual elements. It describes how to use another graphical element or image as a luminance or alpha mask.
- -

Modules in the refining phase

- -

Specifications that are deemed to be in the refining phase 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.

- - - - - - - - - - - -
{{ SpecName("Web Animations", "", "") }}{{ Spec2("Web Animations") }}
 
- - - - - - - - - - - -
{{ SpecName("CSS3 Counter Styles", "", "") }}{{ Spec2("CSS3 Counter Styles") }}
 
- - - - - - - - - - - -
{{ SpecName("Compositing", "", "") }}{{ Spec2("Compositing") }}
 
- - - - - - - - - - - -
{{ SpecName("CSS3 Syntax", "", "") }}{{ Spec2("CSS3 Syntax") }}
Clarifies how charsets are determined; minor changes in parsing and tokenization algorithms.
- - - - - - - - - - - -
{{ SpecName("CSS Will Change", "", "") }}{{ Spec2("CSS Will Change") }}
 
- - - - - - - - - - - -
{{ SpecName("CSS3 Transitions", "", "") }}{{ Spec2("CSS3 Transitions") }}
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.
- - - - - - - - - - - -
{{ SpecName("CSS3 Animations", "", "") }}{{ Spec2("CSS3 Animations") }}
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.
- - - - - - - - - - - -
{{ SpecName("CSS3 Transforms", "", "") }}{{ Spec2("CSS3 Transforms") }}
-

Adds:

- -
    -
  • 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: matrix(), translate(), translateX(), translateY(), scale(), scaleX(), scaleY(), rotate(), skewX(), and skewY().
  • -
  • 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: matrix 3d(), translate3d(), translateZ()scale3d(), scaleZ(), rotate3d(), rotateX()rotateY(), rotateZ(), and perspective().
  • -
- -

Note: this specification is a merge of CSS 2D-Transforms, CSS 3D-Transforms and SVG transforms.

-
- - - - - - - - - - - -
{{ SpecName("CSS3 Fragmentation", "", "") }}{{ Spec2("CSS3 Fragmentation") }}
Defines how partitions of a Web page should happen, that is page, column breaks, and widows and orphans handling. -

Adds:

- -
    -
  • 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.
  • -
-
- - - - - - - - - - - -
{{ SpecName("CSS3 Text", "", "") }}{{ Spec2("CSS3 Text") }}
-

Extends:

- -
    -
  • the CSS {{ cssxref("text-transform") }} property with the value full-width.
  • -
  • the CSS {{ cssxref("text-align") }} property with the value start, end, start end, and match-parent for a better support of documents with multiple directionalities of text.
  • -
  • 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.
  • -
  • the CSS {{ cssxref("word-spacing") }} and {{ cssxref("letter-spacing") }} properties with range constraints to control flexibility in justification.
  • -
- -

Adds:

- -
    -
  • Control on how whitespaces are displayed using the CSS {{ cssxref("text-space-collapse") }} and {{ cssxref("tab-size") }} properties.
  • -
  • 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.
  • -
  • Control on how justification is happening, in order to support more type of scripts, using the CSS {{ cssxref("text-justify") }} property.
  • -
  • Control on edge effect using the CSS {{ cssxref("text-indent") }} and {{ cssxref("hanging-punctuation") }} properties.
  • -
-
- -

A few features present in early CSS Text Level 3 draft have being postponed to the next iteration of this module .

- - - - - - - - - - - -
{{ SpecName("CSS3 Variables", "", "") }}{{ Spec2("CSS3 Variables") }}
Defines a mechanism allowing to define variables in CSS.
- - - - - - - - - - - -
{{ SpecName("Compositing", "", "") }}{{ Spec2("Compositing") }}
 
- -

Modules in the revising phase

- -

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 syntaxes are tested and often implemented.

- - - - - - - - - - - -
{{ SpecName("CSS3 Basic UI", "", "") }}{{ Spec2("CSS3 Basic UI") }}
-

Adds:

- -
    -
  • The ability to tweak the box model using the CSS {{ cssxref("box-sizing") }} property.
    - At risk: due to insufficient browser support, standardization of the padding-box value may be postponed to the next iteration of this module .
  • -
  • 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.
    - At risk: 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 the next iteration of this module .
  • -
  • Support for icons, defined by the CSS {{ cssxref("icon") }} property simultaneously with the new icon value of the CSS {{ cssxref("content") }} property.
    - At risk: due to insufficient browser support, standardization of the {{ cssxref("icon") }} property and the icon value may be postponed to CSS4.
  • -
  • Support for the CSS {{ cssxref("outline-offset") }} property giving more control on the position of the outline.
  • -
  • Support for the CSS {{ cssxref("resize") }} property allowing Web authors to control if and how elements should be resized.
  • -
  • Support for the CSS {{ cssxref("text-overflow") }} property defining how text overflows, if needed.
    - At risk: 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 the next iteration of this module .
  • -
  • The ability to define the hotspot of a cursor as well as the new none, context-menu, cell, vertical-text, alias, copy, no-drop, not-allowed, nesw-resize, nwse-resize, col-resize, row-resize, all-scroll, zoom-in, zoom-out, extending the {{ cssxref("cursor") }} property.
  • -
  • The ability to specify the sequential navigation order (that is the tabbing order ) using the CSS {{ cssxref("nav-index") }}, {{ cssxref("nav-up") }}, {{ cssxref("nav-right") }}, {{ cssxref("nav-left") }}, {{ cssxref("nav-down") }} properties.
    - At risk: due to insufficient browser support, standardization of the navigation properties may be postponed to the next iteration of this module .
  • -
  • The ability to control the usage of an IME editor, using the CSS {{ cssxref("ime-mode") }} property.
    - At risk: due to insufficient browser support, standardization of the {{ cssxref("ime-mode") }} property may be postponed to the next iteration of this module .
  • -
-
- -

An early list of what could be in the next iteration of the CSS Basic User Interface Module is available.

- - - - - - - - - - - -
{{ SpecName("CSS3 Grid", "", "") }}{{ Spec2("CSS3 Grid") }}
Add a grid layout to the CSS display 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")}}.
- - - - - - - - - - - -
{{ SpecName("CSS3 Box Alignment", "", "") }}{{ Spec2("CSS3 Box Alignment") }}
 
- - - - - - - - - - - -
{{ SpecName("CSS3 Paged Media", "", "") }}{{ Spec2("CSS3 Paged Media") }}
 
- - - - - - - - - - - -
{{ SpecName("CSSOM View", "", "") }}{{ Spec2("CSSOM View") }}
 
- - - - - - - - - - - -
{{ SpecName("CSS4 Selectors", "", "") }}{{ Spec2("CSS4 Selectors") }}
 
- -

Modules in the exploring phase

- - - - - - - - - - - -
{{ SpecName("CSS4 Images", "", "") }}{{ Spec2("CSS4 Images") }}
-

Extends:

- -
    -
  • the image() functional notation to describe the directionality of the image (rtl or ltr), allowing for bidi-sensitive images.
  • -
  • the {{ cssxref("image-orientation") }} property by adding the keyword from-image, allowing to follow EXIF data stored into images to be considered.
  • -
- -

Adds:

- -
    -
  • the image-set() functional notation to allow the definition to equivalent images at different resolution allowing for resolution-negotiated selection of images.
  • -
  • the element() functional notation allowing the use of part of the page as image.
  • -
  • the cross-fade() functional notation allowing to refer to intermediate images when transitioning between two images and defines the interpolation between two images.
  • -
  • the conic-gradient() and repeating-conic-gradient() functional notation describing a new type of gradient.
  • -
  • the {{cssxref("image-rendering")}} property that allow to define how resize of the object should be handled.
  • -
-
- - - - - - - - - - - -
{{ SpecName("CSS3 Device", "", "") }}{{ Spec2("CSS3 Device") }}
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.
- - - - - - - - - - - -
{{ SpecName("CSS3 GCPM", "", "") }}{{ Spec2("CSS3 GCPM") }}
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.
- - - - - - - - - - - -
{{ SpecName("CSS Exclusions", "", "") }}{{ Spec2("CSS Exclusions") }}
Extends the floats mechanism to define exclusion regions in any positioning scheme. Adds the notion of shapes, in which content must flows.
- - - - - - - - - - - -
{{ SpecName("CSS3 Lists", "", "") }}{{ Spec2("CSS3 Lists") }}
Extends the list counter mechanism so that list markers can be styled and Web developers can define new list counter schemes.
- - - - - - - - - - - -
{{ SpecName("CSS3 Regions", "", "") }}{{ Spec2("CSS3 Regions") }}
Defines a new mechanism allowing content to flow across, eventually non-contiguous, multiple areas called regions.
- - - - - - - - - - - -
{{ SpecName("CSS3 Device", "", "") }}{{ Spec2("CSS3 Device") }}
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.
- - - - - - - - - - - -
{{ SpecName("Filters 1.0", "", "") }}{{ Spec2("Filters 1.0") }}
 
- - - - - - - - - - - -
{{ SpecName("CSS3 Template", "", "") }}{{ Spec2("CSS3 Template") }}
 
- - - - - - - - - - - -
{{ SpecName("CSS3 Sizing", "", "") }}{{ Spec2("CSS3 Sizing") }}
 
- - - - - - - - - - - -
{{ SpecName("CSS Line Grid", "", "") }}{{ Spec2("CSS Line Grid") }}
 
- - - - - - - - - - - -
{{ SpecName("CSS3 Positioning", "", "") }}{{ Spec2("CSS3 Positioning") }}
 
- - - - - - - - - - - -
{{ SpecName("CSS3 Ruby", "", "") }}{{ Spec2("CSS3 Ruby") }}
 
- - - - - - - - - - - -
{{ SpecName("CSSOM", "", "") }}{{ Spec2("CSSOM") }}
 
- - - - - - - - - - - -
{{ SpecName("CSS3 Overflow", "", "") }}{{ Spec2("CSS3 Overflow") }}
 
- - - - - - - - - - - -
{{ SpecName("CSS3 Font Loading", "", "") }}{{ Spec2("CSS3 Font Loading") }}
 
- - - - - - - - - - - -
{{ SpecName("CSS3 Display", "", "") }}{{ Spec2("CSS3 Display") }}
 
- - - - - - - - - - - -
{{ SpecName("CSS Scope", "", "") }}{{ Spec2("CSS Scope") }}
 
- - - - - - - - - - - -
{{ SpecName("CSS4 Media Queries", "", "") }}{{ Spec2("CSS4 Media Queries") }}
 
- - - - - - - - - - - -
{{ SpecName("CSS Non-element Selectors", "", "") }}{{ Spec2("CSS Non-element Selectors") }}
 
- - - - - - - - - - - -
{{ SpecName("Geometry Interfaces", "", "") }}{{ Spec2("Geometry Interfaces") }}
 
- - - - - - - - - - - -
{{ SpecName("CSS3 Inline", "", "") }}{{ Spec2("CSS3 Inline") }}
 
- -

Modules in the rewriting phase

- -

Modules that are in the rewriting phase are outdated and require to be rewritten. The syntax is still under scrutiny and may evolve a lot, in a non-compatible way. Alternative syntaxes are tested and often implemented.

- - - - - - - - - - - -
{{ SpecName("CSS3 Box", "", "") }}{{ Spec2("CSS3 Box") }}
 
- - - - - - - - - - - -
{{ SpecName("CSS3 Content", "", "") }}{{ Spec2("CSS3 Content") }}
 
- - - - - - - - - - - -
{{ SpecName("CSS3 Inline Layout", "", "") }}{{ Spec2("CSS3 Inline Layout") }}
 
- -

 

diff --git a/files/id/archive/index.html b/files/id/archive/index.html deleted file mode 100644 index 6361867424..0000000000 --- a/files/id/archive/index.html +++ /dev/null @@ -1,18 +0,0 @@ ---- -title: Arsipkan konten usang -slug: Archive -translation_of: Archive ---- -

Di sini, di MDN, kami mencoba untuk menghindari penghapusan konten secara langsung yang mungkin berguna bagi orang-orang yang menargetkan platform, sistem operasi, dan browser lawas. Mungkin target pemirsa Anda adalah orang-orang yang menggunakan perangkat keras lama, misalnya, dan tidak dapat melakukan upgrade ke browser terbaru dan terbaik. Atau untuk "alasan", perusahaan Anda diharuskan menggunakan perangkat lunak yang sangat tua dan Anda perlu membangun konten Web yang berjalan pada perangkat lunak itu. Atau mungkin Anda hanya ingin tahu tentang sejarah fitur usang atau API, dan bagaimana cara kerjanya.

- -

Ada banyak alasan dokumentasi yang lebih tua bisa bermanfaat. Jadi, kami telah menetapkan area ini untuk mengarsipkan dokumentasi yang lebih tua. Materi di zona Konten yang Diarsipkan ini seharusnya tidak digunakan untuk membuat situs Web baru atau aplikasi untuk peramban modern. Itu hanya untuk referensi sejarah saja.

- -
-

Catatan untuk penulis: Kita perlu mencoba untuk menjaga bagian halaman di sini diatur bukan semua dibuang ke dalam satu folder besar. Cobalah untuk membuat bagan pohon  untuk kategori materi. Selain itu, hanya memindahkan halaman di sini yang sangat usang. Jika ada orang yang secara realistis memerlukan informasi dalam produk yang hidup, mungkin tidak tepat untuk memindahkannya ke sini. Secara umum, sebaiknya Anda mendiskusikannya di saluran MDN Web Docs sebelum memindahkan konten di sini.

-
- -

{{SubpagesWithSummaries}}

- - - -

{{ListSubpages("/en-US/docs/Archive", 2, 0, 1)}}

diff --git a/files/id/archive/meta_docs/index.html b/files/id/archive/meta_docs/index.html deleted file mode 100644 index 55e2f91374..0000000000 --- a/files/id/archive/meta_docs/index.html +++ /dev/null @@ -1,11 +0,0 @@ ---- -title: Arsip MDN "meta-documentation" -slug: Archive/Meta_docs -tags: - - Archive - - MDN -translation_of: Archive/Meta_docs ---- -

Di sini Anda akan menemukan arsip "meta-documentation"; Yaitu dokumentasi tentang bagaimana menulis dokumentasi tentang MDN. Artikel di sini sudah usang dan seharusnya tidak lagi direferensikan; Kami mempertahankannya di sini untuk referensi sementara kami memigrasikan beberapa konten ke tempat baru, namun sangat sedikit hal ini berguna.

- -

{{LandingPageListSubpages}}

diff --git a/files/id/archive/mozilla/index.html b/files/id/archive/mozilla/index.html deleted file mode 100644 index 132253aacf..0000000000 --- a/files/id/archive/mozilla/index.html +++ /dev/null @@ -1,8 +0,0 @@ ---- -title: Archived Mozilla and build documentation -slug: Archive/Mozilla -translation_of: Archive/Mozilla ---- -

In progress. These articles are archived, obsolete documents about Mozilla, Gecko, and the process of building Mozilla projects.

- -

{{SubpagesWithSummaries}}

diff --git a/files/id/archive/mozilla/xul/index.html b/files/id/archive/mozilla/xul/index.html deleted file mode 100644 index 17aa6ed66c..0000000000 --- a/files/id/archive/mozilla/xul/index.html +++ /dev/null @@ -1,84 +0,0 @@ ---- -title: XUL -slug: Archive/Mozilla/XUL -tags: - - NeedsTranslation - - TopicStub - - XUL -translation_of: Archive/Mozilla/XUL ---- -
XUL Tutorial
-A guided tutorial that will help you get started with XUL, originally from XULPlanet.
- -
-

XUL (XML User Interface Language) is Mozilla's XML-based language for building user interfaces of applications like Firefox. The term XUL is sometimes used to refer to the whole Mozilla platform (e.g. XUL applications are applications using XUL and other components of the platform).

- -

XUL Controls lists some of the common controls provided by XUL.

-
- - - - - - - - -
-

Documentation

- -
-
XUL Tutorial
-
A guided tutorial that will help you get started with XUL, originally from XULPlanet.
-
XUL Reference
-
XUL elements, attributes, properties, methods, and event handlers.
-
XUL Controls
-
A quick list of all of the available XUL controls.
-
The Joy of XUL
-
Describes the key features and components of XUL.
-
Menus and Popups Guide
-
A guide on using menus and popup panels.
-
Template Guide
-
A detailed guide on XUL templates, which is a means of generating content from a datasource.
-
Drag and Drop
-
How to perform drag and drop operations.
-
- -
-
XUL Periodic Table
-
This collection of XUL demos was available as a web page, but can no longer be viwed in Firefox since support for Remote XUL was disabled.  There is a XULRunner application containing the XUL Periodic Table which can be opened with Gecko based browsers. You can get it here. See: XULRunner_tips#Using_Firefox_3_to_run_XULRunner_applications for instructions on running XULRunner apps in Firefox.
-
Changes to XUL
-
New XUL features and changes to existing features are included in the Firefox developer release notes.
-
- -

View All...

-
-

Community

- - - -

Tools

- - - -

View All...

- - - - -
- -

 

diff --git a/files/id/archive/mozilla/xul/international_characters_in_xul_javascript/index.html b/files/id/archive/mozilla/xul/international_characters_in_xul_javascript/index.html deleted file mode 100644 index d3ddd60359..0000000000 --- a/files/id/archive/mozilla/xul/international_characters_in_xul_javascript/index.html +++ /dev/null @@ -1,23 +0,0 @@ ---- -title: International characters in XUL JavaScript -slug: Archive/Mozilla/XUL/International_characters_in_XUL_JavaScript -translation_of: Archive/Mozilla/XUL/International_characters_in_XUL_JavaScript ---- -

Introduction

-

Gecko 1.8, as used in Firefox 1.5 and other applications, added support for non-ASCII characters in JavaScript files loaded from XUL files.

-

This means that such script files can use any character from virtually any language of the world. For example, they can contain a line:

-
var text = "Ein schönes Beispiel eines mehrsprachigen Textes: 日本語";
-
-

This mixes German and Japanese characters.

-

Earlier versions always interpreted JS files loaded from XUL as ISO-8859-1 (Latin-1), in both local and remote cases. Unicode escapes, as discussed below, have always worked.

-

How the character encoding is determined in Gecko 1.8 and later

-

When the JavaScript file is loaded from a chrome:// URL, a Byte Order Mark ({{todo}})({{ interwiki('wikipedia', 'Byte_Order_Mark', 'BOM') }}) is used to determine the character encoding of the script. Otherwise, the character encoding will be the same as the one used by the XUL file (which can be specified using an encoding attribute in the <?xml?> tag). By default this will use UTF-8, which can represent virtually all characters in the world.

-

If the script file is loaded via HTTP, the HTTP header can contain a character encoding declaration as part of the Content-Type header, for example:

-
Content-Type: application/javascript; charset=UTF-8
-
-

If no charset parameter is specified, the same rules as above apply.

-

Cross-version compatibility

-

If you want the same code to work in both Gecko 1.8 and earlier versions, you must limit yourself to ASCII. However, you can use unicode escapes – the earlier example rewritten using them would be:

-
var text = "Ein sch\u00F6nes Beispiel eines mehrsprachigen Textes: \u65E5\u672C\u8A9E";
-
-

An alternative might be to use property files via {{interface("nsIStringBundle")}} or the XUL <stringbundle> element; this would allow for localization of the XUL. This can not be done in XUL files loaded from the web, only in privileged code, e.g. in extensions.

diff --git a/files/id/archive/mozilla/xul/school_tutorial/index.html b/files/id/archive/mozilla/xul/school_tutorial/index.html deleted file mode 100644 index 4ae723e85a..0000000000 --- a/files/id/archive/mozilla/xul/school_tutorial/index.html +++ /dev/null @@ -1,59 +0,0 @@ ---- -title: XUL School Tutorial -slug: Archive/Mozilla/XUL/School_tutorial -tags: - - Add-ons - - Extensions - - NeedsTranslation - - References - - TopicStub - - Tutorials - - XUL -translation_of: Archive/Add-ons/Overlay_Extensions/XUL_School ---- -

XUL School is a comprehensive add-on development tutorial, focusing on Firefox extension development. It is recommended that you read through all of it at least once. While Firefox changes rapidly, the content in this tutorial should be up to date and valid.

-
-
Introduction
-
-
Basic functionality
-
-
Intermediate functionality
-
-
Advanced topics
-
-
Appendices
-
-
-

The XUL School project was developed by Appcoast (formerly Glaxstar). The project is now published here following its sharing licenses. Its contents have been modified from the original source as necessary.

diff --git a/files/id/archive/mozilla/xul/school_tutorial/perkenalan/index.html b/files/id/archive/mozilla/xul/school_tutorial/perkenalan/index.html deleted file mode 100644 index 5ce760d1be..0000000000 --- a/files/id/archive/mozilla/xul/school_tutorial/perkenalan/index.html +++ /dev/null @@ -1,32 +0,0 @@ ---- -title: Perkenalan -slug: Archive/Mozilla/XUL/School_tutorial/Perkenalan -translation_of: Archive/Add-ons/Overlay_Extensions/XUL_School/Introduction ---- -
- {{Next("XUL_School/Getting_Started_with_Firefox_Extensions")}}
-

Selamat datang di Tutorial Sekolah XUL !

-

Tutorial ini dimaksudkan untuk menjadi batu loncatan yang akan mengubah Anda menjadi seorang pengembang ekstensi Firefox profesional dalam waktu singkat . Kami telah dituangkan tahun pengalaman XUL ke dalamnya , menyediakan banyak solusi untuk masalah pengembang ekstensi pada umumnya.

-

XUL School was created by Appcoast (formerly Glaxstar), one of the few companies dedicated to building high-quality Firefox extensions. A team of over a dozen XUL developers conformed Glaxstar at the time this tutorial was created, and the combined experiences of years creating Firefox extensions are reflected here.

-

With this tutorial you'll learn how to develop Firefox extensions. You'll learn how to quickly do the most common tasks in extension development, comparing several different approaches to solve them. In most cases we'll provide code samples that you can easily copy and adapt to your needs, as well as some working example extensions. The tutorial aims to be as brief as possible, often falling back on Mozilla documentation for more detailed information. You can think of it as a quick guide to the expansive world that is the Mozilla platform. Most links in this documentation are meant to be clicked and read.

-

We'll start with a brief introduction to some key concepts, in case you're not familiar with Mozilla and Firefox.

-

Mozilla and Firefox

-

The term Mozilla can be used to refer to several concepts: the Mozilla project, the Mozilla Foundation, the Mozilla Corporation and the old Mozilla browser. Even Firefox is sometimes referred to as "Mozilla". If you're unfamiliar with these terms, it's good that you take some time and learn a little about Mozilla. This will help you understand the culture that surrounds the Mozilla community.

-

Mozilla has spawned several products and projects, the most notable being the Mozilla Firefox web browser. Firefox is one of the most successful open source projects in history, combining the openness, standards-compliance and sophistication of open source with the focus on user experience and powerful outreach more commonly seen in less open companies.

-

Version 1.0 of Firefox was released in November 2004, version 2.0 in October 2006, and version 3.0 in June 2008. This tutorial was written after Firefox 3 was released, and has been updated with time. While most of it should still work for creating extensions Firefox 3 (and even Firefox 2), it is strongly recommended that you aim to support modern Firefox versions, to encourage users to stay up to date with security fixes. A release that is more than 6 months old is likely vulnerable to published security bugs.

-

Firefox and other Mozilla applications can be seen as composed of two different parts: a user interface layer that is distinct for each project, and a common platform on top of which the interface layer is built. The user interface is built with technology known as XUL, and the platform is known as XULRunner.

-

XUL

-

XUL (pronounced "zool") is one of many technologies used for creating Mozilla-based products and extensions. It is only one part of the development landscape, but given that it's practically exclusive to Mozilla, it tends to be used to identify all Mozilla-related development. You'll sometimes read terms like "XUL applications" and "XUL extensions", but rarely will they refer to projects that are exclusively built with XUL. It usually means that the projects were built using Mozilla technologies. Even this project, called XUL School, covers several other technologies such as JavaScript, CSS, XBL and XPCOM.

-

XULRunner

-

XULRunner includes the Gecko rendering engine, the Necko networking library, and several other components that provide OS-independent file management, accessibility, and localization, among others. It is this very powerful platform that has allowed such a fast growth of the development community surrounding Mozilla and Firefox.

-

XULRunner is available in binary form at the XULRunner page, and it is the base for several projects, such as Songbird, Miro and Eudora. There's a very comprehensive list of XULRunner applications in the XULRunner Hall of Fame.

-

Gecko

-

The Gecko engine is the part of Firefox used to render web pages and its own user interface. You can identify the level of compatibility of web standards in Gecko-based browsers looking at their User Agent string, which should include the Gecko version. Gecko versions are somewhat independent from Firefox versions, and you can see a mapping of Firefox versions and Gecko versions at the Gecko page. The User Agent String for Firefox at the time of this writing (in US English, Mac OS X) is:

-

Mozilla/5.0 (Macintosh; Intel Mac OS X 10.7; rv:7.0.1) Gecko/20100101 Firefox/7.0.1

-

The highlighted section is the Gecko version: 7.0.1. You can read and copy the user agent string of any Firefox window, choosing "Help > Troubleshooting Information" from the main menu.

-

On to the Tutorial

-

With the basic concepts out of the way, we can now get right into extension development. You are probably still wondering what exactly is an extension, what can it do, and how can you make them. Well, this whole tutorial is devoted to explaining that to you.

-

Welcome to the world of extension development. Now let's get to it.

-
- {{Next("XUL_School/Getting_Started_with_Firefox_Extensions")}}
-

This tutorial was kindly donated to Mozilla by Appcoast.

diff --git a/files/id/archive/mozilla/xul/school_tutorial/the_essentials_of_an_extension/index.html b/files/id/archive/mozilla/xul/school_tutorial/the_essentials_of_an_extension/index.html deleted file mode 100644 index 9fa34889f3..0000000000 --- a/files/id/archive/mozilla/xul/school_tutorial/the_essentials_of_an_extension/index.html +++ /dev/null @@ -1,344 +0,0 @@ ---- -title: The Essentials of an Extension -slug: Archive/Mozilla/XUL/School_tutorial/The_Essentials_of_an_Extension -translation_of: Archive/Add-ons/Overlay_Extensions/XUL_School/The_Essentials_of_an_Extension ---- -

{{ PreviousNext("XUL_School/Getting_Started_with_Firefox_Extensions", "XUL_School/Setting_Up_a_Development_Environment") }}

-

The install.rdf File

-

In the last section we looked at the contents of the Hello World extension. Now we'll look into its files and code, starting with the install.rdf file. You can open it with any text editor.

-

The file is formatted in a special flavor of XML called RDF. RDF used to be the central storage mechanism for Firefox, but it is now being replaced for a simpler database system. We'll discuss both of these storage systems further ahead in the tutorial.

-

Now let's look at the important parts of the file.

-
-
-
<em:id>helloworld@xulschool.com</em:id>
-
-
-

This is the unique identifier for the extension. Firefox needs this to distinguish your extension from other extensions, so it is required that you have an ID that is unique.

-

There are two accepted standards for add-on ids. One is the email-like format in the Hello World example, which should be something like <project-name>@<yourdomain>. The other standard practice is to use a generated UUID string, which is extremely unlikely to be duplicated. Unix-based systems have a command line tool called uuidgen that generates UUIDs. There are also downloadable tools for all platforms that generate them. The enclosing brackets are just notation, and they're just common practice. As long as your id has some uniqueness to it, it's OK to use either form.

-
-
-
<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>
-<em:homepageURL>https://developer.mozilla.org/en/XUL_School</em:homepageURL>
-
-
-

This is the data that is displayed before and after the extension is installed, that you can see in the Add-ons Manager. There are many other tags that can be added, for contributors and translators. The full specification of the install.rdf file has all the details.

-

Since extensions can be translated to multiple languages, it is often necessary to translate the extension's description, or even its name. A localized description and name can be added with the following code:

-
-
-
<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>
-
-
-

The es-ES locale string indicates that this is the Spanish (es) localization for Spain (ES). You can add as many <em:localized> sections as you need. For Firefox 2, localizing this file is a little more complicated. We'll discuss localization further ahead in this section.

-
-
-
<em:type>2</em:type>
-
-
-

This specifies that the add-on being installed is an extension. You can read about different possible types in the install.rdf specification.

-
-
-
<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>
-
-
-
-

This node specifies the target application and target versions for the extension, specifically Firefox, from version 4 up to version 10. The UUID is Firefox's unique ID. Other Mozilla and Mozilla-based applications such as Thunderbird and Seamonkey have their own. You can have an extension that works on multiple applications and versions. For example, if you create a Firefox extension, it would normally take little effort to port it to SeaMonkey, which has very similar features and UI.

-

The min and max version specify the version range in which the extension can be installed. Here's more about the version format. 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. Users can disable version checks through preferences or installing add-ons like the Add-on Compatibility Reporter. Beginning with Firefox 11, add-ons will default to compatible and Firefox will mostly ignore the version range. Testing your add-ons with every Firefox version is always recommended, though.

-

This is the information Firefox and other Mozilla applications need to install an add-on. Any errors or missing information will cause the installation process to fail, or the extension to be installed in a disabled state.

-

The chrome.manifest File

-
-

Chrome is the set of user interface elements of the application window that are outside of a 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.

-
-

Taken from Chrome Registration.

-

In other words, the chrome is everything you see in Firefox. All Firefox windows can be seen as having two parts: (1) the chrome and (2) possibly a content area, like the one that displays web pages in a Firefox tab. Windows like the Downloads window are pure chrome. Most of the code for an extension resides in the chrome folder, just like in the Hello World example.

-

As we saw in the directory structure of the unpacked extension, the chrome is composed of 3 sections: content, locale and skin. The 3 are necessary for most extensions. If we open the chrome.manifest file (again, any text editor will do), we see that the same 3 sections are mentioned:

-
-
-
content   xulschoolhello              content/
-skin      xulschoolhello  classic/1.0 skin/
-locale    xulschoolhello  en-US       locale/en-US/
-
-
-
-

The chrome.manifest file tells Firefox where to look for chrome files. The text is spaced to look like a table, but that is not necessary. The parser ignores repeated spaces.

-

The first word in a line tells Firefox what it is that is being declared (content, skin, locale, or others mentioned later on). The second is the package name, which we will explain shortly.

-

Skin and locale packages have a third value to specify what locale or what skin they are extending. There can be multiple skin and locale entries relating to different skins and locales. The most common case is having one skin entry for the global skin, classic/1.0, and multiple locale entries, one for each translation. Finally, the location is specified.

-

There are some additional options that can be included in the entries of a chrome.manifest file. They are documented in the Chrome Registration page. Notably, we can have entries that are OS-specific. This is important because the appearance of the browser is very different for each operating system. If our extension needed to look differently on different systems, we could change the manifest file so that it looks like this:

-
-
-
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/
-
-
-
-

This way we can have separate skins for Windows, Mac OS X, and Linux (plus other unix-like systems), each defined in a separate directory. Since most other systems are Unix-based, the "unix" skin is the default, with no flags.

-

The Chrome

-

As mentioned earlier, the chrome is composed of 3 sections: content, locale and skin. The content is the most important section, holding user interface (XUL) and script (JS) files. The skin section has the files that define most of the look and feel of the UI (using CSS and images, just like web pages). Finally, the locale section holds all text used in the extension, in DTD and properties files. This division allows other developers to create themes that replace skins, and translators to create localizations in different languages, all of this without having to change your extension or your code. This gives Firefox extensions a great deal of flexibility.

-

Chrome files are accessed through the chrome protocol. This is what a chrome URI looks like:

-
-
-
chrome://packagename/section/path/to/file
-
-
-

So, for instance, if I want to access the file browserOverlay.xul in the extension, the chrome URI would be chrome://xulschoolhello/content/browserOverlay.xul.

-

If you have too many files in the content and you want to organize them in subdirectories, there's nothing you need to change in chrome.manifest, all you need is to add the right path after content in the URI.

-

Skin and locale files work in the same way, and you don't need to specify skin names or locale names. So, to access the DTD file in the Hello World extension, the chrome path is chrome://xulschoolhello/locale/browserOverlay.dtd. Firefox knows what locale to look for.

-

Here's an interesting experiment. Open a new Firefox tab, type chrome://mozapps/content/downloads/downloads.xul on your location bar and press ENTER. Surprised? You just opened the Downloads window in a Firefox tab! You can access any chrome file by just typing its URI in the location bar. This can come in handy if you want to inspect script files that are part of Firefox, other extensions, or your own. Most of these files are opened as text files, with the exception of XUL files, which are executed and displayed like you would normally see them on a window.

-

Content

-

There are 2 files in the content directory. Let's look at the XUL file first.

-

XUL files are XML files that define the user interface elements in Firefox and Firefox extensions. XUL was inspired by HTML, so you'll see many similarities between the two. However, XUL is also an improvement over HTML, having learned from many of the mistakes made during the evolution of HTML. XUL allows you to create richer and more interactive interfaces than the ones you can create with HTML, or at least XUL makes it easier.

-

XUL files usually define one of two things: windows or overlays. The file you opened before, downloads.xul, has the code that defines the Downloads window. The XUL file included in the Hello World extension is an overlay. An overlay extends an existing window, adding new elements to it or replacing some of the elements in it. The line that we skipped in the chrome.manifest file states that this XUL file is an overlay for the main browser window:

-
-
-
overlay chrome://browser/content/browser.xul  chrome://xulschoolhello/content/browserOverlay.xul
-
-
-

With this line, Firefox knows that it needs to take the contents of browserOverlay.xul and overlay it on the main browser window, browser.xul. You can declare overlays for any window or dialog in Firefox, but overlaying the main browser window is the most common case by far.

-

Now let's look at the contents of our XUL file. We'll skip the first few lines because they relate to skin and locale, and we'll cover them later.

-
-
-
<overlay id="xulschoolhello-browser-overlay"
-  xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
-
-
-

The root element in the file is an overlay. Other XUL documents use the window or dialog tag. The element has a unique id, which you should have on most elements in your XUL. The second attribute is the namespace, which is something you should always define in your XUL root element. It says that this node and all child nodes are XUL. You only need to change namespace declarations when you mix different types of content in the same document, such as XUL with HTML or SVG.

-
-
-
- You may have noticed the naming we use on several places, such as the id xulschoolhello-browser-overlay. This is the namespacing standard that we use to avoid conflicts with Firefox and other extensions, as well as making some development tasks easier. We namespace all ids and style classes in overlay elements because they will be mixed with other elements in the main browser window. If we used generic ids like container or input, they will likely conflict with ids used within Firefox, or with ids from other extension overlays. Using namespaces minimizes compatibility problems with other extensions. We use camel casing for file names, and all lower case with dashes for element ids and CSS style class names, but you're free to use your own system.
-
-
-
-
-
<script type="application/x-javascript"
-  src="chrome://xulschoolhello/content/browserOverlay.js" />
-
-
-

Just like in HTML, this includes a JavaScript script file. You can have as many script elements in a XUL document as you need. We'll look into its code later.

-
-
-
- You also probably noticed how we format our code, and wonder about the rules we follow. Our general rule on line length is not having lines longer than 80 characters. This feels very restrictive, specially with XML files, but the number was chosen to allow pretty much any text editor to handle these files easily. Even old command line editors work well with files that cut their lines at 80 characters. The tabulation is very straightforward: 2 blank space indents. We never use actual tab characters, with the exception of Makefiles, which will be covered later on. Most of our coding standards are based on Mozilla's or other known and used standards.
-
-
-

 We'll skip some code that is covered in the locale section, moving on to the most important part of the content:

-
-
-
<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>
-
-
-
-

This is the code that adds the Hello World menu to the browser window.

-

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 Menu Bar under the Options menu of the menu button to toggle display of the classic menu on Windows and some Linux distributions.

-

In order to write this code, we needed some knowledge of the XUL code in browser.xul. We needed to know that the id of the right pane in the unified menu is appmenuSecondaryPane. 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:

-
-
-
insertafter="appmenu_addons"
-
-
-
-

appmenu_addons 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.

-

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.

-

One recommended location for menus in the classic menu vase is under the Tools menu, so the code should really look like this:

-
-
-
<menupopup id="menu_ToolsPopup">
-  <menu id="xulschoolhello-hello-menu" label="&xulschoolhello.hello.label;"
-    accesskey="&xulschoolhello.helloMenu.accesskey;"
-    insertbefore="devToolsEndSeparator">
-    <menupopup>
-      <menuitem id="xulschoolhello-hello-menu-item"
-        label="&xulschoolhello.hello.label;"
-        accesskey="&xulschoolhello.helloItem.accesskey;"
-        oncommand="XULSchoolChrome.BrowserOverlay.sayHello(event);" />
-    </menupopup>
-  </menu>
-</menupopup>
-
-
-
-

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 menupopup element that's inside of the Tools menu element. The insertbefore 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.

-

Now let's look at the actual code:

-
-
-
oncommand="XULSchoolChrome.BrowserOverlay.sayHello(event);"
-
-
-
-

This attribute defines an event handler. The command 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 script 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 event, which is usually good to pass as an argument to the function. Event handlers are explained in greater depth further ahead.

-

Now let's look at the JavaScript file and see what's going on when the event is fired.

-
-
-
/**
- * XULSchoolChrome namespace.
- */
-if ("undefined" == typeof(XULSchoolChrome)) {
-  var XULSchoolChrome = {};
-};
-
-
-

The XULSchoolChrome 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 MenuHandler 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: XULSchoolChrome. Now we know that all of our objects are inside this object, which is unlikely to be duplicated or overwritten by other extensions.

-

You can read more about the typeof operator. If you're unfamiliar with JavaScript or this particular syntax, initializing an object as {} is the equivalent of initializing it to new Object().

-
-
-
/**
- * Controls the browser overlay for the Hello World extension.
- */
-XULSchoolChrome.BrowserOverlay = {
-
-
-

Finally, BrowserOverlay 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.

-
-
-
- We use Javadoc 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.
-
-
-
-
-
sayHello : function(aEvent) {
-  let stringBundle = document.getElementById("xulschoolhello-string-bundle");
-  let message = stringBundle.getString("xulschoolhello.greeting.label");
-
-  window.alert(message);
-}
-
-
-

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 stringbundle element defined in the overlay. The variable is declared using let, which is similar to var but with more restricted scope. Here you can read more about let declarations.

-

Just like in regular JS, we can use the DOM (Document Object Model) in order to manipulate the XUL document. First we get a reference of the stringbundle element 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 getString method of the bundle element and get the localized message to be displayed. We then call the window.alert function with the message, just like we would do in an HTML document.

-

Locale

-

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.

-

Looking back at the menu code, you probably noticed some attributes such as this:

-
-
-
label="&xulschoolhello.hello.label;" accesskey="&xulschoolhello.helloItem.accesskey;"
-
-
-

These attributes define the text that you see on the menus, and they are string keys that are defined in our DTD file, browserOverlay.dtd. The DTD file was included in the XUL file with the following code:

-
-
-
<!DOCTYPE overlay SYSTEM "chrome://xulschoolhello/locale/browserOverlay.dtd" >
-
-
-

And in the DTD file you can see the association between keys and localized strings:

-
-
-
<!ENTITY xulschoolhello.hello.label            "Hello World!">
-<!ENTITY xulschoolhello.helloMenu.accesskey    "l">
-<!ENTITY xulschoolhello.helloItem.accesskey    "H">
-
-
-

Notice that on the XUL file you enclose the string key with & and ; 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.

-

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:

-
-

-
-

Most user interface controls have the accesskey 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".

-

DTD strings are resolved and set when the document is being loaded. If you request the label 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:

-
-
-
let helloItem = document.getElementById("xulschoolhello-hello-menu-item");
-
-// The alert will say "Hello World!"
-alert(helloItem.getAttribute("label"));
-// Wrong
-helloItem.setAttribute("label", "&xulschoolhello.hello2.label;");
-// Better
-helloItem.setAttribute("label", "Alternate message");
-// Right!
-helloItem.setAttribute("label", someStringBundle.getString("xulschoolhello.hello2.label"));
-
-
-

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:

-
-
-
<stringbundleset id="stringbundleset">
-  <stringbundle id="xulschoolhello-string-bundle"
-    src="chrome://xulschoolhello/locale/browserOverlay.properties" />
-</stringbundleset>
-
-
-

The stringbundleset element is just a container for stringbundle elements. There should only be one per document, which is the reason why we overlay the stringbundleset that is in browser.xul, hence the very generic id. We don't include the insertbefore or insertafter 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.

-

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:

-
-
-
xulshoolhello.greeting.label = Hi! How are you?
-
-
-

The whitespace around the equals sign is ignored. Just like in install.rdf, comments can be added using the # character at the beginning of the line. Empty lines are ignored as well.

-

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:

-
-
-
xulshoolhello.search.label = Found %S words matching the search query!
-
-
-

Then you use getFormattedString instead of getString 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 Text Formatting section of the XUL Tutorial. Also have a look at the Plurals and Localization 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.

-

Skin

-

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:

-
-
-
<?xml-stylesheet type="text/css" href="chrome://global/skin/"  ?>
-<?xml-stylesheet type="text/css"
-  href="chrome://xulschoolhello/skin/browserOverlay.css"  ?>
-
-
-

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.

-

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.

-

Exercise

-

Make the following changes to the example extension:

- -

Repackage the XPI. Issue the following command from within the extension root directory on Linux or Mac OS X:

-
zip ../xulschoolhello2.xpi **/*
-
-

On Windows, use a ZIP tool to compress all files and subdirectories within the extension root directory. Name the file with extension .xpi

-

Re-install the XPI. You can just drag the XPI file to the browser and it will be installed locally.

-

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.

-
- Note: Packaging an extension is really just creating a ZIP archive of the contents of the main folder, then changing the filename extension to .XPI. Do not zip the containing folder, just its contents. The content folder, chrome.manifest, install.rdf, 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.
-

Note that the Tools menu is hidden by default on Firefox 4 and above, on Windows and some Linux distributions. Check Menu Bar under the Options menu of the Firefox menu button to enable it.

-

Once you're done, you can look at this reference solution: Hello World 2.

-

{{ PreviousNext("XUL_School/Getting_Started_with_Firefox_Extensions", "XUL_School/Setting_Up_a_Development_Environment") }}

-

This tutorial was kindly donated to Mozilla by Appcoast.

diff --git a/files/id/archive/mozilla/xulrunner/index.html b/files/id/archive/mozilla/xulrunner/index.html deleted file mode 100644 index 2bc8fd2c15..0000000000 --- a/files/id/archive/mozilla/xulrunner/index.html +++ /dev/null @@ -1,84 +0,0 @@ ---- -title: XULRunner -slug: Archive/Mozilla/XULRunner -translation_of: Archive/Mozilla/XULRunner ---- -
- Getting Started with XULRunner
- A short introduction to XULRunner.
-
- XULRunner is a Mozilla runtime package that can be used to bootstrap XUL+XPCOM applications that are as rich as Firefox and Thunderbird. It provides mechanisms for installing, upgrading, and uninstalling these applications. XULRunner also provides libxul, a solution which allows the embedding of Mozilla technologies in other projects and products.
- - - - - - - -
-

Releases

-
-

XULRunner can be downloaded from ftp.mozilla.org. Please read the release notes for installation, uninstallation, and other information.

-

Firefox 3 and later ships with a private XULRunner package, which can run any compatible XULRunner application using the -app switch.

-

Older builds are also available.

-
-

Overview

- -

Documentation

-
-
- Getting Started with XULRunner
-
- Short tutorial on building desktop applications with XULRunner.
-
- XUL Tutorial
-
- Once you have a working XULRunner application, use the XUL tutorial to expand it into a fantastic XUL application.
-
- XULRunner tips
-
- A collection of tips for working with XULRunner.
-
- Deploying XULRunner
-
- An introduction on how to package your application with XULRunner.
-
- XULRunner Hall of Fame
-
- Tracks all available applications based on XULRunner.
-
- Build Documentation
-
- Learn how to get the source and build it.
-
- Debug Documentation
-
- Steps to configure Venkman to debug your App
-
- XULRunner Guide
-
- A fairly complete, but outdated, introduction and tutorial for XULRunner which collates much of the documentation found here.
-
-

View all...

-
-

Community

- - - -

See also

- -
-

 

diff --git a/files/id/archive/web/index.html b/files/id/archive/web/index.html deleted file mode 100644 index 1784816dc4..0000000000 --- a/files/id/archive/web/index.html +++ /dev/null @@ -1,15 +0,0 @@ ---- -title: Arsip dokumentasi Web terbuka -slug: Archive/Web -tags: - - Archived - - NeedsTranslation - - TopicStub - - Web -translation_of: Archive/Web ---- -

{{obsolete_header}}

- -

Dokumentasi yang tercantum di bawah ini adalah arsip, materi usang tentang topik Web terbuka.

- -

{{LandingPageListSubpages}}

diff --git a/files/id/archive/web/standards-compliant_authoring_tools/index.html b/files/id/archive/web/standards-compliant_authoring_tools/index.html deleted file mode 100644 index 2126ebd25c..0000000000 --- a/files/id/archive/web/standards-compliant_authoring_tools/index.html +++ /dev/null @@ -1,25 +0,0 @@ ---- -title: Standards-Compliant Authoring Tools -slug: Archive/Web/Standards-Compliant_Authoring_Tools -translation_of: Archive/Web/Standards-Compliant_Authoring_Tools ---- -

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:

- -

Some caveats: It appears that tools currently available from Namo generate IE-specific or Netscape 4-specific code that may require extra debugging for compatibility with standards-based browsers. Newer versions of Microsoft FrontPage™ have improved, however be sure not to rely on FrontPage-specific extensions for critical website content or functionality. Some versions of Microsoft Word create invalid HTML code that only works with Internet Explorer. Always be sure to validate your web pages.

-
-

Original Document Information

- -
- - diff --git a/files/id/mdn/guidelines/layout/index.html b/files/id/mdn/guidelines/layout/index.html deleted file mode 100644 index 9bb0fe9ea3..0000000000 --- a/files/id/mdn/guidelines/layout/index.html +++ /dev/null @@ -1,7 +0,0 @@ ---- -title: MDN page layout guide -slug: MDN/Guidelines/Layout -translation_of: Archive/Meta_docs/MDN_page_layout_guide ---- -
{{MDNSidebar}}

These guides supplement the MDN style guide with specific layouts for the various types of pages on MDN. This helps contributors create new content that's structurally consistent with the rest of MDN.

-

{{LandingPageListSubpages}}

diff --git a/files/id/mozilla/add-ons/setting_up_extension_development_environment/index.html b/files/id/mozilla/add-ons/setting_up_extension_development_environment/index.html deleted file mode 100644 index 6519e6752d..0000000000 --- a/files/id/mozilla/add-ons/setting_up_extension_development_environment/index.html +++ /dev/null @@ -1,167 +0,0 @@ ---- -title: Setting up an extension development environment -slug: Mozilla/Add-ons/Setting_up_extension_development_environment -translation_of: Archive/Add-ons/Setting_up_extension_development_environment ---- -

This article gives suggestions on how to set up your Mozilla application for extension development. Unless otherwise specified, these suggestions apply to both Firefox and Thunderbird as well as SeaMonkey version 2.0 and above.

- -

Overview

- - - -

Development profile

- -

To avoid performance degradation from development-related prefs and extensions, and to avoid losing your personal data, you can use a separate profile for development work.

- -

You can run two instances of Thunderbird or Firefox at the same time by using separate profiles and starting the application with parameters -no-remote and -P ProfileName. For example, the following command will start Firefox with a profile called "dev" whether an instance of Firefox is already running or not. (If there is no "dev" user yet, you'll get the profile selection screen instead, where you can create one.)

- -

On Ubuntu (and many other Linux distributions):

- -
/usr/bin/firefox -no-remote -P dev
- -

On some other distributions of Linux/Unix:

- -
/usr/local/bin/firefox -no-remote -P dev
-
- -

On Mac OS Snow Leopard (10.6) and newer:

- -
/Applications/Firefox.app/Contents/MacOS/firefox-bin -no-remote -P dev &
-
- -

On Mac OS Leopard (10.5) and older, you must request the 32-bit portion of the Universal Binary (https://bugzilla.mozilla.org/show_bug.cgi?id=622970):

- -
arch -arch i386 /Applications/Firefox.app/Contents/MacOS/firefox-bin -no-remote -P dev &
-
- -

On Windows:

- -
Start -> Run "%ProgramFiles%\Mozilla Firefox\firefox.exe" -no-remote -P dev
-
- -

On Windows 64 bit:

- -
Start -> Run "%ProgramFiles(x86)%\Mozilla Firefox\firefox.exe" -no-remote -P dev
- -

To start Thunderbird or SeaMonkey instead of Firefox, substitute "thunderbird" or "seamonkey" for "firefox" in the examples above.

- -

Note that you can run Firefox using your regular profile while developing.

- -

Parameter -P ProfileName doesn't imply -no-remote, therefore use them together. Otherwise, if you already run a Firefox instance without -no-remote, and you attempt to start another instance with -P ProfileName but again without -no-remote, that second invocation would ignore its -P ProfileName parameter, but instead it would open a new blank window for the already running instance (sharing its profile, sessions etc.).

- -

(There is a thread in the Mozillazine forums that explains how to use both stable and development versions of Firefox to check extension compatibility. See Installing Firefox 3 or Minefield while keeping Firefox 2.)

- -

Development command flags

- -

As of Gecko 2 (Firefox 4), JavaScript files are cached ("fastload"). The -purgecaches command-line flag disables this behavior. Alternatively, you can set the MOZ_PURGE_CACHES environment variable. See this bug for more information.

- -

Development preferences

- -

There is a set of development preferences that, when enabled, allows you to view more information about application activity, thus making debugging easier. However,  these preferences can degrade performance, so you may want to use a separate development profile when you enable these preferences.

- -

Accessing Firefox development preferences

- -

To change preference settings in Firefox or SeaMonkey, type about:config in the Location Bar. You can also use the Extension Developer's Extension, which provides a menu interface for Firefox settings. Alternatively, install the Developer Profile to set the preferences listed below and skip the rest of this section.

- -

Accessing Thunderbird development preferences

- -

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.

- - - -

Not all preferences are defined by default, and are therefore not listed by default. You will have to create new (boolean) entries for them. For more information about Mozilla preferences, refer to the mozillaZine article on "about:config". (Tip: Download addon DevPrefs, it will automatically handle this)

- - - -

Never 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.
.

- -
-

Note:The Error Console is disabled by default starting in {{Gecko("2.0")}}. You can re-enable it by changing the devtools.errorconsole.enabled preference to true and restarting the browser. With this, javascript.options.showInConsole is also set to true by default.

-
- -
-

Tip: Download the addon DevPrefs from AMO to automatically configure the preferences.

-
- -

Development extensions

- -

These extensions may help you with your development.

- - - -

Firefox extension proxy file

- -

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.

- -
    -
  1. Get the extension ID from the extension's install.rdf file.
  2. -
  3. Create a file in the "extensions" directory under your profile directory with the extension's ID as the file name (for example "your_profile_directory/extensions/{46D1B3C0-DB7A-4b1a-863A-6EE6F77ECB58}"). (How to find your profile directory) Alternatively, rather than using a GUID, create a unique ID using the format "name@yourdomain" (for example chromebug@mydomain.com) - then the proxy filename will be same as that ID, with no curly brackets {}.
  4. -
  5. -

    The contents of this file should be the path to the directory that contains your install.rdf file, for example /full/path/to/yourExtension/ on Mac and Linux, and C:\full\path\to\yourExtension\ on Windows. Remember to include the closing slash and remove any trailing whitespace.

    - -
      -
    • Note: If you already installed the extension via XPI, you should uninstall it first before creating the pointer file.
    • -
    • 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.
    • -
    -
  6. -
  7. Place the file in the extensions folder of your profile and restart the application.
  8. -
- -

Using directories rather than JARs

- -

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

- -
content	myExtension	jar:chrome/myExtension.jar!/content/
-
- -

use

- -
content	myExtension	chrome/content/
-
- -

{{ h1_gecko_minversion("Preventing the first launch extension selector", "8.0") }}

- -

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.

- -

However, this interface can be disruptive when debugging add-ons. You can avoid this by setting the preference extensions.autoDisableScopes to 14.

- -

{{ 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/Настройка_среды_разработки_расширений" } ) }}

diff --git a/files/id/mozilla/connect/index.html b/files/id/mozilla/connect/index.html deleted file mode 100644 index e9d3f28280..0000000000 --- a/files/id/mozilla/connect/index.html +++ /dev/null @@ -1,95 +0,0 @@ ---- -title: Connect with Mozilla -slug: Mozilla/Connect -translation_of: Mozilla/Connect ---- -
-

Aktifkan, menginspirasi dan berkolaborasi untuk membuat Web platform utama yang digunakan untuk menciptakan pengalaman di semua perangkat yang terhubung.

-
- - -
-
-
- -
- -
- -
- -
- -
-
- -
-

Terhubung dengan Mozilla

- -

Pengembang menciptakan masa depan dengan membangun layanan dan aplikasi untuk orang di seluruh dunia. Tujuan Hubungan Pengembang Mozilla adalah untuk membantu pengembang untuk menggunakan teknologi web terbuka dan standar untuk berhasil dalam mencapai tujuan mereka. Selain dokumentasi di sini di MDN, kami menawarkan bantuan dan sumber lainnya menuju tujuan ini, melalui berbagai saluran. Kami mengundang Anda untuk menghubungkan, belajar, dan berbagi pengetahuan Anda sendiri.

- -

Kami menawarkan bantuan melalui Q & A pada Stack Overflow, untuk memecahkan masalah teknis yang spesifik dan tantangan yang mungkin Anda miliki. Kami juga memiliki newsletter menjaga Anda informasi tentang kejadian terbaru dalam adegan web sekitar aplikasi web dan banyak lagi. Langganan Apps & Hacks buletin.

- -

Kami memiliki banyak rencana dan ide-ide untuk iteratif memperluas Hubungan Pengembang penawaran kami, dan kami ingin Anda terlibat seperti yang kita melakukannya! Jadi, ikuti tag pada Stack Overflow , berlangganan ke blog Hacks , berlangganan newsletter, dan mendaftar untuk sebuah account !

-
- -
-
-

Q & A pada Stack Overflow Lihat semua Q & A ...

- -

Kami memiliki Q & A untuk membahas tantangan dan masalah ketika mengembangkan, khususnya untuk Firefox OS dan Open Web di ponsel. Ini tersedia di Stack Overflow di bawah URL mudah http://stackoverflow.com/r/mozilla .

- - -
Bentuk Stack
- -

Terbaru Q & A Topik

-
- -
 
-
- -

Pengembang pada lokakarya Firefox OS di Madrid.

- -
-
-

Dimana Mozilla? Lihat peserta dan rincian pada halaman Acara kami ...

- -

Berikut ini adalah daftar peristiwa di mana perwakilan Mozilla akan berbicara. Pastikan untuk berbicara dengan mereka!

-
- - -
-
- -

 

diff --git a/files/id/mozilla/firefox/edisi_pengembang/index.html b/files/id/mozilla/firefox/edisi_pengembang/index.html deleted file mode 100644 index 6f3a9a91bf..0000000000 --- a/files/id/mozilla/firefox/edisi_pengembang/index.html +++ /dev/null @@ -1,57 +0,0 @@ ---- -title: Edisi Pengembang -slug: Mozilla/Firefox/Edisi_Pengembang -translation_of: Mozilla/Firefox/Developer_Edition ---- -
{{FirefoxSidebar}}

- -

Sebuah versi Firefox yang dikhususkan untuk para web developer.

- -

Unduh Firefox Edisi Pengembang

- -
-
-
-

Fitur Firefox terbaru

- -

Firefox Edisi Pengembang menggantikan kanal Aurora pada Proses Rilis Firefox. Seperti Aurora, fitur-fitur baru akan tersedia pada versi ini setiap enam minggu, setelah distabilkan dari Nightly build.

- -

Dengan menggunakan Edisi Pengembang, anda mendapatkan akses ke fitur peralatan dan platform 12 minggu lebih awal dari rilis Firefox utama.

- -

Temukan apa yang baru dalam Edisi Pengembang.

-
- -
-

Peralatan pengembang eksperimental

- -

Kami akan memasukkan fitur-fitur eksperimental yang belum masuk di versi biasa.

- -

Sebagai contoh, Edisi Pengembang memasukkan Firefox Tools Adapter, yang dapat membuat anda terhubung dengan peralatan pengembang Firefox ke browser lain seperti Chrome pada Android atau Safari di iOS.

-
-
- -
-
-

Profil terpisah

- -

Firefox Edisi Pengembang menggunakan profil terpisah dari versi Firefox lain yang terinstall di komputer anda. Artinya, anda bisa menjalankan Edisi Pengembang bersamaan dengan Firefox versi biasa atau Beta.

-
- -
-

Dibuat untuk pengembang web

- -

Kami telah mengatur beberapa pengaturan untuk pengembang web. Sebagai contoh, chrome dan debug remote telah diaktifkan dari awal.

-
-
- -
-
-

Tema tersendiri

- -

Termasuk di dalamnya akses cepat ke fitur pengembang.

-
- -
 
-
- -

 

diff --git a/files/id/mozilla/firefox/privacy/index.html b/files/id/mozilla/firefox/privacy/index.html deleted file mode 100644 index fe82422987..0000000000 --- a/files/id/mozilla/firefox/privacy/index.html +++ /dev/null @@ -1,22 +0,0 @@ ---- -title: Privacy -slug: Mozilla/Firefox/Privacy -tags: - - NeedsTranslation - - Privacy - - Security - - TopicStub -translation_of: Mozilla/Firefox/Privacy ---- -
{{FirefoxSidebar}}
- -

This document lists privacy-related documentation.

- -

{{ ListSubpages () }}

- -

See also

- - diff --git a/files/id/mozilla/firefox/privacy/storage_access_policy/errors/cookieblockedtracker/index.html b/files/id/mozilla/firefox/privacy/storage_access_policy/errors/cookieblockedtracker/index.html deleted file mode 100644 index f4415aedc2..0000000000 --- a/files/id/mozilla/firefox/privacy/storage_access_policy/errors/cookieblockedtracker/index.html +++ /dev/null @@ -1,33 +0,0 @@ ---- -title: 'Blocked: Storage access requests from trackers' -slug: Mozilla/Firefox/Privacy/Storage_access_policy/Errors/CookieBlockedTracker -translation_of: Mozilla/Firefox/Privacy/Storage_access_policy/Errors/CookieBlockedTracker ---- -
{{FirefoxSidebar}}
- -

back up from last user

- -

What went wrong?

- -

A request to access cookies or storage was blocked because the browser identified it as coming from a tracker and content blocking is enabled.

- -

The permission can be changed or removed by:

- - - -

If the blocked resource doesn't need authentication, you can fix the warning message by adding a crossorigin="anonymous" attribute to the relevant element.

- -

See also

- - diff --git a/files/id/mozilla/firefox/privacy/storage_access_policy/errors/index.html b/files/id/mozilla/firefox/privacy/storage_access_policy/errors/index.html deleted file mode 100644 index a1e1f54a75..0000000000 --- a/files/id/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 ---- -
{{FirefoxSidebar}}
- -

This page lists the errors that can be raised due to Firefox's anti-tracking functionality, governed by the Storage access policy. You can find further information about them by clicking on the links below:

- -

A request to access cookies or storage was blocked because

- - diff --git a/files/id/mozilla/firefox/privacy/storage_access_policy/index.html b/files/id/mozilla/firefox/privacy/storage_access_policy/index.html deleted file mode 100644 index 801d5bfad1..0000000000 --- a/files/id/mozilla/firefox/privacy/storage_access_policy/index.html +++ /dev/null @@ -1,261 +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 ---- -
{{FirefoxSidebar}}
- -

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 older cookie policies, 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.

- -

Testing in Firefox

- -

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 Firefox Nightly, 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.

- -

We recommend sites test with Firefox Nightly, 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.

- -

These protections are on by default in Nightly. The cookie policy can be enabled in other versions of Firefox through the Content Blocking settings (these steps will vary by version; the linked documentation includes a dropdown to select the appropriate Firefox version).

- -

Report Broken Sites

- -

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 Bugzilla. Alternatively you can report broken sites directly in Firefox by clicking "Report a Problem" in the Content Blocking section of the Control Center (this shortcut may not be available in all versions of Firefox).

- -

Tracking protection explained

- -

How does Firefox determine which resources are tracking resources?

- -

Firefox uses the Tracking Protection list to determine which resources are tracking resources. The Tracking Protection list is maintained by Disconnect. When the list is applied in Firefox, we make two important changes:

- - - -

Firefox uses the built-in Tracking Protection URL classifier to determine which resources match the tracking protection list. Domains are matched against the list in accordance with the SafeBrowsing v4 specification. 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:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Hostname on the listHostname of resourceMatched
example.comexample.comYes
example.coma.b.example.comYes
blah.example.comexample.comNo
a.b.example.comc.d.example.comNo
blah.example.comfoo.blah.example.comYes
- -

What does the storage access policy block?

- -

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:

- -

Cookies:

- - - -

DOM Storage:

- - - -

Messaging and Workers:

- - - -

DOM Cache:

- - - -

Browser caches:

- - - -

Network connections:

- - - -

What is not blocked by the policy?

- -
    -
  1. 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.
  2. -
  3. 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.
  4. -
  5. Origins classified as trackers will have access to their own storage when they are loaded in a first-party context.
  6. -
  7. Cross-origin resources loaded from the same eTLD+1 as the top-level context will still have access to their storage.
  8. -
  9. Origins normally classified as trackers will not be blocked if the top-level page origin is determined to be from the same organization as them.
  10. -
- -

Storage access grants

- -

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 Storage Access API, 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.

- -

Automatic storage access upon interaction

- -

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.

- -

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 opener access to the originating document. When that occurs, there are two possible ways a third-party origin can be granted access:

- - - -

Scope of storage access

- -

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 tracker.example is granted storage access on foo.example.com, then tracker.example will be able to access its cookies on bar.foo.example.com but not example.com. Instead, if tracker.example were granted access on example.com it would be able to access its storage on bar.foo.example.com, foo.example.com, and example.com.

- -

When storage access is granted to tracker.example on example.com, all resources loaded from tracker.example on any top-level document loaded from example.com are immediately given storage access. This includes all resources loaded in the main context of the page, embedded <iframe>s, and resources loaded within embedded <iframe>s. Storage access is not extended to other resources loaded on example.com (e.g. other-tracker.example), nor to other first parties on which tracker.example is embedded (e.g. example.org).

- -

Storage access grants extend into the first level of nested contexts, but no further. This means that <iframe>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 <iframe>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.

- -

Consider the following embedding scenarios on a top-level page loaded from example.com on which tracker.example has been granted storage access.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Embeddingtracker.example resource storage access
An image is loaded from tracker.example and embedded in the main context of example.com.HTTP: Yes
- JS: N/A
example.com embeds an <iframe> from example.org. That <iframe> goes on to load an image from tracker.example.HTTP: Yes
- JS: N/A
example.com embeds an <iframe> from example.org. That <iframe> goes on to embed an <iframe> from tracker.example.HTTP: Yes
- JS: No
example.com embeds an <iframe> from tracker.example.HTTP: Yes
- JS: Yes
example.com embeds an <iframe> from example.com (same origin). The nested <iframe> embeds an <iframe> from tracker.example.HTTP: Yes
- JS: No
- -

Storage access expiration

- -

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.

- -

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.

- -

Debugging

- -

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.

- -

Developer Tools notifications

- -

The Network Monitor 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, trackertest.org is classified as a tracking resource, while the request to example.com is not.

- -

network requests in Firefox devtools indicating which ones are tracking resources with a small shield icon

- -

Adding custom domains to the Tracking Protection list

- -

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:

- -
    -
  1. Type about:config in your address bar. If you are presented with a page that warns you "This may void your warranty!", click "I accept the risk!"
  2. -
  3. Right click on the next page and click "New" > "String".
  4. -
  5. For the preference name enter "urlclassifier.trackingAnnotationTable.testEntries".
  6. -
  7. For the preference value enter comma separated origins that you’d like to have classified as trackers. E.g. "example.net,example.org".
  8. -
- -
-

Warning: Be sure to remove these entries after you have finished testing.

-
- -

FAQ

- -

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.

- -

Will this storage access policy block ads from displaying on my website?

- -

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.

- -

I use a third-party analytics service that is classified as a tracker. Will I still receive analytics data?

- -

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.

- -

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.

- -

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?

- -

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.

- -

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:

- - - -

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 initial implementation of this API is currently available in Nightly.

- -

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?

- -

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:

- -
    -
  1. 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.
  2. -
  3. 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.
  4. -
  5. 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.
  6. -
diff --git a/files/id/mozilla/gecko/index.html b/files/id/mozilla/gecko/index.html deleted file mode 100644 index a2fb0f60ab..0000000000 --- a/files/id/mozilla/gecko/index.html +++ /dev/null @@ -1,69 +0,0 @@ ---- -title: Gecko -slug: Mozilla/Gecko -translation_of: Mozilla/Gecko ---- -
-

Gecko adalah nama dari pengatur tata letak yang dikembangkan oleh Proyek Mozilla. It was originally named NGLayout. Gecko's function is to read web content, such as HTML, CSS, XUL, JavaScript, and render it on the user's screen or print it. In XUL-based applications Gecko is used to render the application's user interface as well.

-
-

Gecko di gunakan di banyak aplikasi, termasuk beberapa peramban (browsers), contohnya Firefox, SeaMonkey, dll. (for a complete list, please refer to Wikipedia's article on Gecko.) Products using the same version of Gecko have identical support for standards.

- - - - - - - -
-

Documentation

-
-
- Gecko FAQ
-
- Frequently asked questions about Gecko.
-
- Gecko DOM reference
-
- Reference to the DOM.
-
- Gecko event reference
-
- Reference to events used within Gecko and Mozilla applications; for web-standard DOM events, see the DOM event reference.
-
- Gecko versions and application versions
-
- Versions of Gecko and the applications they're used in.
-
- Introduction to Layout in Mozilla
-
- Tech Talk on layout.
-
- Embedding Mozilla
-
- Using Gecko in your own application.
-
- Character sets supported by Gecko
-
- A list of the character sets supported by Gecko.
-
- HTML parser threading
-
- Description of multithreading in the HTML parser.
-
- {{interwiki('wikimo', 'Gecko:Home_Page', 'Gecko Homepage on MozillaWiki')}}
-
- Home for the active developers. Roadmaps and more up-to-date resources.
-
-

View All...

-
-

Community

-
    -
  • View Mozilla forums... {{DiscussionList("dev-tech-layout", "mozilla.dev.tech.layout")}}
  • -
- -
-
- Web Standards, XUL, Embedding Mozilla, Developing Mozilla
-
-
-

 

diff --git a/files/id/mozilla/localization/index.html b/files/id/mozilla/localization/index.html deleted file mode 100644 index ea5809653c..0000000000 --- a/files/id/mozilla/localization/index.html +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: Pelokalan di Mozilla -slug: Mozilla/Localization -tags: - - ButuhPenerjemahan - - Landing - - Localization - - Mozilla - - NeedsTranslation - - Pelokalan - - Pendaratan - - Penerjemahan - - RintisanTopik - - TopicStub - - Translation - - l10n -translation_of: Mozilla/Localization ---- -

Pelokalan (L10n) adalah proses menerjemahkan antarmuka pengguna sebuah perangkat lunak dari satu bahasa ke bahasa yang lain, dan menyesuaikannya agar sesuai dengan kultur setempat. Semua sumber daya tersedia bagi siapa saja yang berminat dalam aspek teknis untuk terlibat dalam pelokalan, bagi para pengembang dan semua kontributor.

- -

Lihat pula

- -
-
Pelokalan MDN
-
Sumber daya ini mencakup pelokalan dokumentasi di MDN.
-
Pelokalan aplikasi
-
Kumpulan dokumen ini secara khusus digunakan untuk pelokalan aplikasi, termasuk aplikasi Firefox OS.
-
L10n
-
Dokumen referensi untuk API L10n yang digunakan Mozilla dalam pelokalan Firefox OS.
-
diff --git a/files/id/mozilla/localization/localizing_with_verbatim/index.html b/files/id/mozilla/localization/localizing_with_verbatim/index.html deleted file mode 100644 index 14e7d665b6..0000000000 --- a/files/id/mozilla/localization/localizing_with_verbatim/index.html +++ /dev/null @@ -1,158 +0,0 @@ ---- -title: Pelokalan dengan Verbatim -slug: Mozilla/Localization/Localizing_with_Verbatim -translation_of: Mozilla/Localization/Localizing_with_Pontoon ---- -

Verbatim adalah suatu alat berbasis web (khususnya Pootle yang dihosting Mozilla) untuk melokalkan konten web Mozilla. Alat tersebut dapat digunakan untuk melokalkan berbagai proyek Mozilla dan mampu mendukung bahasa apa saja. Panduan ini akan membantu Anda melakukan pelokalan proyek Mozilla pada umumnya. Tutorial yang disediakan di sini akan memberi Anda landasan yang bermanfaat dalam penggunaan Verbatim untuk melokalkan setiap proyek Mozilla yang ingin Anda ikut sertakan dalam upaya komunitas pelokalan Anda. Kita akan membahas proyek-proyek khusus yang sedang menggunakan Verbatim, cara untuk mulai menggunakan Verbatim, dan pekerjaan-pekerjaan yang umumnya dapat diselesaikan dengan Verbatim.

- -

Mulai menggunakan Verbatim

- -

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.

- - - - - - - - - - - - - - - - - - - - - - -
Start a new localization on VerbatimJoin an existing localization on Verbatim
-
    -
  1. Point your browser to http://localize.mozilla.org. This is where Verbatim is hosted.
  2. -
-
-
    -
  1. Point your browser to http://localize.mozilla.org. This is where Verbatim is hosted.
  2. -
-
-
    -
  1. 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.
  2. -
-
-
    -
  1. 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.
  2. -
-
-
    -
  1. File a bug 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.
  2. -
- -
Example: I would like to request that you add the en-US as a new localization in Verbatim. The langauge is English. Also, I like cookies. Lots and lots of cookies. I can easily be motivated by any and all baked goods.
-
-
    -
  1. Contact the community 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.
  2. -
- -
Example: 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!
-
- -

Now that you're registered and logged in, we'll outline the general translation workflow, using the MDN project page as our example.

- -

Translating

- -

First thing's first, you need to find untranslated source strings to translate.

- -
    -
  1. Navigate to the MDN project page.
  2. -
  3. Select your language from the Overview tab.
  4. -
  5. Now click on the the Translate tab. This tab will display the directories for the MDN user interface.
  6. -
  7. Select the LC Messages directory. This is where the project's .po files containing translatable strings are located. You will now see an overview of each .po file.
  8. -
  9. 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.
  10. -
- -

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:

- -
    -
  1. Simply type your translation in the box to below the English string
  2. -
  3. Select Suggest. If you have approval permission, select Submit. You will then be taken to the next string that needs translating.
  4. -
  5. Hooray! You're translating! Repeat steps one and two for the remainder of the untranslated strings.
  6. -
- -
Note: 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.
- -

Some extra cool features on Verbatim

- -

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.

- -

Translate Tab.png

- - - -

Additional tasks

- -

If you are a localizer with approval priviledges, here are a few more tasks that you should be aware of.

- -

Review suggested translations

- -
    -
  1. Click on the Review tab. It will show how many strings are waiting for review for each .po file.Review Tab1.png
  2. -
  3. Select Review suggestions to start approving suggestions. It will take you to the first string that needs to be reviewed.
  4. -
  5. 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).
  6. -
- -

It is important to note that only 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.

- -

Using VCS on Verbatim

- -

VCS (Version Control System) 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.

- -

VCS.pngTo push your strings onto the web and see your changes, simply select the Commit to VCS link underneath each file name. It usually takes about an hour before you can see your changes on the project site.

- -

To update your .po files with new untranslated strings, simple select the Update from VCS link underneath each file name.

- -

 

- -

-Note: 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.
- -

Translating Verbatim files with an external application

- -

While in the Translate tab, you have the option to export the .po and .xliff files and translate the strings with an external application (i.e., a text editor or translation memory tool).

- -
    -
  1. To download the .po file, select the Download link found underneath each file name. To download the .xliff file, select the Download XLIFF link.
  2. -
  3. Proceed to translate the strings using your selected tool.
  4. -
- -

Once you've finished your translations, you'll need to upload your file to Verbatim. You can do this from the Translate tab.

- -
    -
  1. Navigate to the bottom of the files list to the Upload File section.
  2. -
  3. Click on the Browse button and select the file you wish to upload.
  4. -
  5. Select an upload setting from the options provided.
  6. -
  7. Once your upload setting has been selected, click Upload.
  8. -
- -
-

Important: 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.

-
- -

You're ready to go!

- -

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 let us know if you run into any difficulties. We'll be happy to help in any way we can.

- -

 

- -

Back: Quick Start Guide

diff --git a/files/id/mozilla/localization/quick_start_guide/index.html b/files/id/mozilla/localization/quick_start_guide/index.html deleted file mode 100644 index 216207c9c4..0000000000 --- a/files/id/mozilla/localization/quick_start_guide/index.html +++ /dev/null @@ -1,50 +0,0 @@ ---- -title: Panduan memulai cepat pelokalan -slug: Mozilla/Localization/Quick_start_guide -tags: - - ButuhPenerjemahan - - Guide - - Localization - - Mozilla - - NeedsTranslation - - Panduan - - Pelokalan - - Penerjemahan - - RintisanTopik - - TopicStub - - Translation -translation_of: Mozilla/Localization/Quick_start_guide ---- -

Selamat datang di pelokalan Mozilla (singkatnya L10n)!

- -

Entah Anda berada di sini untuk memulai pelokalan Anda sendiri dalam proyek Mozilla ataupun untuk bergabung dalam upaya pelokalan yang sedang berlangsung, Anda datang ke tempat yang tepat! Panduan ini memuat semua informasi dasar dan teknis yang Anda perlukan untuk terlibat dalam program L10n Mozilla. Kami akan menunjukkan kepada Anda langkah-langkah untuk memulainya, dari pengaturan awal hingga pengetesan dan perilisan pelokalan Anda sendiri. Dalam prosesnya, Anda akan mempelajari berbagai proyek yang di dalamnya Anda dapat berkontribusi dan semua alat yang digunakan untuk pelokalan.

- -

Bilamana kita berhadapan dengan kasus-kasus khusus, kita mengambilnya dari proyek Firefox sebagai proyek yang paling banyak dilakukan pelokalan di Mozilla. Dan ketika Anda hampir menyelesaikan panduan ini, Anda seharusnya mampu melakukan perubahan pada pengaturan lokal Firefox Anda dan menyaksikan perubahan pada antarmukanya. Akhir kata, setelah Anda menyelesaikan panduan ini, Anda akan memiliki semua alat yang diperlukan untuk mulai berkontribusi!

- -

Ingat, panduan ini hanya memuat instruksi seputar aspek teknis L10n Mozilla saja. Kunjungi halaman Proses L10n untuk mempelajari keseluruhan prosesnya.

- -
-

Pengaturan awal

-Persiapan teknis sebelum melakukan pelokalan.
- -
-

Tahap penerjemahan

-Tutorial penggunaan alat L10n untuk penerjemahan.
- -
-

Tahap QA

-Tutorial pengetesan L10n.
- -
-

Tahap perilisan

-Langkah-langkah mengirimkan pekerjaan pelokalan Anda.
- -
Keempat tahap ini merupakan sisi teknis dari program L10n. Untuk mempelajari lebih lanjut tentang semua ini, silakan klik salah satu tautan di atas. Untuk mendapatkan gambaran besarnya, kami sarankan Anda memulai dengan boks hijau dan melanjutkannya secara bertahap.
- -

 

- -
Note: This guide is written for two types of contributors: those starting a new localization and those joining an existing localization. It is important to know which information applies to which type of contributor. To help you filter through to the most applicable information, note that all information that is unique to those starting a new localization will be in orange font. All information that is unique to those joining an existing localization will be in blue font.
- -

 

- -

{{ Next("Localization_Quick_Start_Guide/Initial_setup") }}

diff --git a/files/id/mozilla/localization/quick_start_guide/qa_phase/index.html b/files/id/mozilla/localization/quick_start_guide/qa_phase/index.html deleted file mode 100644 index 0ee69f43e4..0000000000 --- a/files/id/mozilla/localization/quick_start_guide/qa_phase/index.html +++ /dev/null @@ -1,197 +0,0 @@ ---- -title: Tahap QA -slug: Mozilla/Localization/Quick_start_guide/QA_phase -translation_of: Mozilla/Localization/Quick_start_guide/QA_phase ---- -

Setelah hasil kerja keras anda dalam melokalisasi kami yakin bahwa anda tidak hanya ingin melihat hasil kerja anda tapi juga ingin memastikan bahwa itu tepat! Jika anda tidak begitu awam dengan kode, anda pasti khawatir akan merusak sesuatu (oops!). Sekarang kami akan menuntun anda melakukan test kualitas pekerjaan anda untuk memastikan anda berada di jalur yang tepat.

- -

Jika anda melokalisasi halaman Mozilla, hasil pekerjaan anda akan ditampilkan segera setelah anda menyelesaikannya tanpa membutuhkan paket bahasa. Seperti halnya kasus ini, bagian dari pedoman ini tidak sepenuhnya dapat di aplikasikan oleh anda. Silahkan tekan tombol Next pada bagian paling bawah laman jika anda ingin melewati.

- -

Untuk melihat hasil pekerjaan anda di Firefox (atau dalam aplikasi Mozilla yang lain), anda butuh paket bahasa yang terinstal pada direktori anda.

- -

Manual & automated builds

- -

Dengan menekan tombol, beberapa alat L10n (seperti Narro and Koala) secara otomatis membuat paket bahasa untuk anda. Jika anda menggunakan salah satu dari alat tersebut, silahkan menuju ke bagian Melihat pekerjaan anda, Sekarang mari menuju ke pembuatan paket bahasa anda sendiri secara manual.

- -
Note: Remember all of those pre-requisite tools we asked you to install in the initial setup? Here's where you'll need almost all of them. If you haven't installed them yet, now is the time to do it.
- -

Persiapan

- -

Kita akan menggunakan file direktori berikut sebagai contoh:

- -
your working directory (root)/
-    mozilla-aurora (en-US source, pulled from http://hg.mozilla.org/releases/mozilla-aurora  )/
-    l10n-central (directory for L10n directories, one per L10n; often referred to as "l10n base")/
-       your-locale-code (a directory with your L10n files, in this example we'll use x-testing)
-
-Example: root/mozilla-aurora & root/l10n-central/x-testing
-
- -

Additionally, you will need to c

- -

Please either follow the above structure closely or adjust the commands below according to your custom setup.

- -

To copy this file to the appropriate directory, do the following:

- -
    -
  1. Navigate to your working directory from your command-line terminal (i.e., where you created the folder structure described above).
  2. -
  3. Enter the following commands:
  4. -
- -
mkdir -p l10n-central/x-testing/toolkit/
-
-cp mozilla-aurora/toolkit/locales/en-US/defines.inc l10n-central/x-testing/toolkit/defines.inc
-
- -

Tah-dah! Copied!

- -

Finally, you will need a file called .mozconfig to proceed with manual builds. This file contains the necessary build instructions.

- -

To create and configure this file, follow these instructions:

- -
    -
  1. Update the Mozilla source code:
  2. -
- -

$ cd mozilla-aurora
- $ hg pull -u

- -
    -
  1. Enter the following command to create the .mozconfig file: $ nano -w .mozconfig
  2. -
  3. Enter the following lines in your .mozconfig file:
  4. -
- -
mk_add_options MOZ_OBJDIR=@TOPSRCDIR@/../firefox-build
-ac_add_options --disable-compile-environment
-ac_add_options --with-l10n-base=../l10n-central # path relative to MOZ_OBJDIR
-ac_add_options --enable-application=[browser or mail]
-
- -

You will need to specify which application you're localizing in the fourth line (e.g., for Firefox, that's browser, Thunderbird would be mail).

- -
    -
  1. Enter the following command to perform the configuration: $ mach configure
  2. -
  3. Once your command-line finishes spitting out the config command's output, navigate to the newy created directory: $ cd ../firefox-build/browser/locales
  4. -
- -

Now you're ready to build! At this point you can choose between two build options. You can either:

- - - -

Visit the links above to learn how to make these testing builds.

- -

Testing your L10n & seeing your work

- -

Now that you have your langpack or L10n repack, let's discuss seeing your work and testing it in the application.

- -

Testing the langpack will put you one step closer to having your localization added to the L10n releases. Follow the steps below to test your localization:

- -
    -
  1. Install Aurora in your preferred language.
  2. -
  3. Install the .xpi langpack you just created (or exported).
  4. -
  5. Set your language using the Quick Locale Switcher or Locale Switcher add-ons by navigating to Tools->Language->Your localization's language code.
  6. -
  7. Restart your browser and start testing!
  8. -
- -

Now you should be able to see all of your work up to this point. Click here for guidelines on how to test your localization.

- -

Don't lose your work!

- -

You're work is SO important! We would really hate to see you lose any of it. After you test your localization, you should send it to a remote repository, which will serve as a backup for your work and will let others follow your progress. We're going to go through the process below.

- -

The official localization teams use repositories at hg.mozilla.org. Before a team becomes official, we like to get the localizers comfortable with the Hg commands that allow for cloning, pulling, committing, and pushing work to an experimental repository.  We use a web service called Bit Bucket to start the learning process.

- -
Note: You must have Mercurial configured before you begin. That step is back on the initial setup page. If you haven't done that yet, don't worry, we'll wait for you!
- -

Pushing to your repository

- -

There are a couple of things you should take note of before you push to your repository:

- - - -

The instructions below will help you learn how to use your Hg repository.

- -
    -
  1. After your new repository is created by the l10n-drivers, please visit the URL for your repo. We'll use x-testing here for our example. You can do this by entering the following URL into your browser: http://hg.mozilla.org/l10n-central/x-testing
  2. -
  3. Now, navigate to your locale's directory on your local machine.
  4. -
- -

If you're using Koala, this should be located at /path/to/your/koala.project/locale/3.6/x-testing, otherwise, it should be located at /path/to/your/working_dir/l10n_base/x-testing.

- -

In this directory, you should have an hg repository. You might have created it yourself by running hg init or hg clone or you might have had it created by Koala when you were setting up a new localization project. Also at this point, you shouldn't have any uncommitted changes (i.e., running the hg status command should show nothing). Let's see what the last revision in this repository is.

- -
    -
  1. Enter the following command: $ hg log -l 1
  2. -
- -

You should see an output similar to the one below:

- -
changeset:   0:7c543e8f3a6a
-tag:         tip
-user:        Your Name <email@example.com>
-date:        Mon Nov 23 18:08:25 2009 +0100
-summary:     Added search bar strings
-
- -
    -
  1. Now compare the local repository on your machine with the remote Hg repository by entering this command: $ hg outgoing http://hg.mozilla.org/l10n-central/x-testing
  2. -
- -

The hg outgoing command compares the two repositories and lists all changesets that are present locally, but not in the remote repository. These changesets will need to be "pushed" to the remote repository. You can expect to see output like this:

- -
comparing with http://hg.mozilla.org/l10n-central/x-testing
-searching for changes
-
-changeset:   0:7c543e8f3a6a
-tag:         tip
-user:        Your Name <email@example.com>
-date:        Mon Nov 23 18:08:25 2009 +0100
-summary:     Added search bar strings
-
- -
    -
  1. Let's now push this changeset. Enter the following command: hg push http://hg.mozilla.org/l10n-central/x-testing
  2. -
  3. Mercurial will connect to your repo and ask you to provide your account information (i.e., the username and the password).
  4. -
- -
real URL is http://hg.mozilla.org/l10n-central/x-testing
-pushing to http://hg.mozilla.org/l10n-central/x-testing
-searching for changes
-http authorization required
-realm: hg.mozilla.org HTTP
-user: your_id
-password:
-
- -

After you enter your account information, the changeset will be pushed.

- -
adding changesets
-adding manifests
-adding file changes
-added 1 changesets with 2 changes to 2 files
-bb/acl: your_id is allowed. accepted payload.
-quota: 979.7 KB in use, 150.0 MB available (0.64% used)
-
- -

Your changeset has been successfully pushed to your repository!

- -

As you begin to move through your translations, you should commit the changes locally and push your work to this experimental repository. For instance, if you have finished translating all the .dtd and .properties files in your x-testing/browser/chrome/browser/ directory, then you should run these commands:

- -
$ hg status
-$ hg commit -m "Translated browser/chrome/browser/"
-$ hg outgoing
-$ hg push http://hg.mozilla.org/l10n-central/x-testing
- -

Note that due to the distributed nature of Hg, hg commit saves the changes locally (i.e., in your computer's Hg repository). You can see the history of commits with hg log. After doing hg commit, you still need to send the changes to the remote repository. This is where hg push comes in. This sends your commits to the remote repository.

- -

Now you're ready to proceed to the release phase!

- -

 

- -

{{ PreviousNext("Localization_Quick_Start_Guide/Translation_phase", "Localization_Quick_Start_Guide/Release_phase") }}

diff --git a/files/id/mozilla/localization/web_localizability/index.html b/files/id/mozilla/localization/web_localizability/index.html deleted file mode 100644 index e4ff426a11..0000000000 --- a/files/id/mozilla/localization/web_localizability/index.html +++ /dev/null @@ -1,33 +0,0 @@ ---- -title: Kemampulokalan Web -slug: Mozilla/Localization/Web_Localizability -tags: - - Internationalization - - Localizability - - Localization - - NeedsTranslation - - TopicStub - - Web Development -translation_of: Mozilla/Localization/Web_Localizability ---- -

Kemampulokalan (atau singkatnya l12y) adalah karakteristik yang terkandung dalam suatu aplikasi atau konten yang memungkinkan untuk dilakukan pelokalan. Daftar berikut ini berisi tautan ke halaman yang menjabarkan langkah-langkah untuk membuat konten web dapat dilokalkan.  Dokumentasi dibagi menjadi 4 bagian:

- -
    -
  1. How to create localizable content.
  2. -
  3. How to choose the right localization format.
  4. -
  5. How to create localizable web applications.
  6. -
  7. How to set up the infrastructure for localization.
  8. -
- -

Why localizability is important

- -

There are many reasons why you should start thinking about making your web app localizable as soon as possible.

- -
    -
  1. You will make localizer's life easier, for which they will be grateful.
  2. -
  3. You will have quality content, localized and adapted to the needs of the local market.
  4. -
  5. Extending you web app to support new languages will be easy.
  6. -
  7. The content will be easier to maintain and update.
  8. -
  9. You will end up writing more semanticly-correct code, which is good for your SEO.
  10. -
  11. By reviewing your content and code for l12y, you will find and fix bugs in your original language too.
  12. -
diff --git a/files/id/mozilla/mercurial/basics/index.html b/files/id/mozilla/mercurial/basics/index.html deleted file mode 100644 index e3b797d0f2..0000000000 --- a/files/id/mozilla/mercurial/basics/index.html +++ /dev/null @@ -1,60 +0,0 @@ ---- -title: Dasar-dasar Mercurial -slug: Mozilla/Mercurial/Basics -translation_of: Mozilla/Mercurial/Basics ---- -

Saya ingin berbagi pengetahuan denganmu tentang Mercurial yang mungkin dapat melindungimu dari frustasi. Halaman ini memang sinis dan survival-oriented. Tetapi saya masih menganggap Mercurial sedikit lebih baik dari pada CVS. —jorendorff 16:06, 12 May 2008 (PDT)

- -

 

- -

Expectations

- -

Mercurial bukan CVS. Perintah-perintahnya tidak sama. The konsepnya tidak sama. Bagaimana Mercurial berbeda dengan CVS?

- -

Sepanan ini sudah terisi. Anda dapat menembak dirimu sendiri. Anda dapat kehilangan pekerjaan. Perkakasa sudah mencoba melindungi Anda , tetapi kecelakan tetap dapat terjadi. Ada dua kesalahan umum: (a) Anda menjalankan perintah tanpa mengetahui apa yang akan dilakukan oleh perintah tersebut; (b) Anda melakukan hg commitatau hg qrefresh dengan salah paham pada status direktori kerja Anda. Oleh karena itu tanpa sengaja Anda membuat commit pada perubahan yang sebenarnya tidak ingin Anda buat commit; atau tanpa sengaka Anda membuat commit sebuah merge yang rusak; dlsb. Seringkali kesalahan seperti ini tidak langsung ketahuan.

- -

Forewarned is forearmed. Don't do these things. Don't run commands without knowing what they're going to do—hg help is your friend. Don't commit without diffing and thinking. And don't let yourself get into "play mode" and stop paying attention to the fact that what you're playing with is your own uncommitted work.

- -

Mercurial is not magic dust. Mercurial is flexible, powerful, and fun. It lets you attempt stuff you never would have tried in CVS. But of course not everything turns out to have been a good idea. (For example, we tried sharing patch queues. It sort of sucked.)

- -

Avoiding trouble

- -

Use the latest stable release of Mercurial.

- -

Learn how to get your bearings. Use read-only commands (like hg status, hg head, hg parents, hg log, hg diff, hg outgoing) to check the status of your repository. This is a key skill.

- -

Configure a merge program and make sure you know how to use it. DO IT NOW. Otherwise you will likely screw up your repository at some point.

- -

Mercurial doesn't leave conflict markers in your files; instead, it wants you to fix the conflicts immediately, using a merge program (like kdiff3) which it can launch for you.

- -

This can be error-prone. By default, Mercurial uses the first merge program it finds on your system, and merge programs can have a learning curve. Mercurial does not do a good job of detecting busted merges and refusing to proceed, so just by closing a window you can unwittingly put yourself in a bad state. Bad merges may lead to seemingly inexplicable Mercurial behavior in the future.

- -

If a merge fails, make sure Mercurial knows that it has failed. When you're first learning the ropes, merges often go wrong. You might see this message:

- -
0 files updated, 0 files merged, 0 files removed, 1 files unresolved
-There are unresolved merges, you can redo the full merge using:
-  hg update -C 2
-  hg merge 1
-
- -

This means some conflicts weren't resolved during the merge. If you don't know exactly what they are and how to fix them, use that hg update -C command to tell Mercurial that you've given up on that merge.

- -

If you don't, Mercurial won't know, and the next time you commit, it'll make a merge changeset. This is bad. The result can look a lot like accidentally destroying a bunch of work, actually, but the damage can be undone.

- -

If hg parents shows two parents, you're merging.

- -

If you use Mercurial Queues, back up your work. hg qrefresh destructively replaces the old patch with the new one! Use hg qinit -c to create a separate backup repository for your patches and hg commit --mq -m backup regularly.

- -

Don't use Mercurial Queues in a repository that someone might pull from since applied (non-public) patches would also be pulled.

- -

Recovering

- -

Oops! Mercurial cut off your arm!

- -

Don't randomly try stuff to see if it'll magically fix it. Remember what you stand to lose, and set down the chainsaw while you still have one good arm.

- -

Get help on IRC. Try #hg or #developers on Mozilla IRC or #mercurial on freenode.

- -

 

- -

{{ languages( { "es": "es/Lo_b\u00e1sico_de_Mercurial", "fr": "fr/Les_bases_de_Mercurial", "ja": "ja/Mercurial_basics" } ) }}

diff --git a/files/id/mozilla/mercurial/index.html b/files/id/mozilla/mercurial/index.html deleted file mode 100644 index 3e940e7690..0000000000 --- a/files/id/mozilla/mercurial/index.html +++ /dev/null @@ -1,45 +0,0 @@ ---- -title: Mercurial -slug: Mozilla/Mercurial -tags: - - Developing Mozilla - - Mercurial - - NeedsTranslation - - TopicStub -translation_of: Mozilla/Mercurial ---- -

 

- -
-

Please refer to Mercurial For Mozillians at ReadTheDocs for current best-practices around Mercurial, including many helpful extra tools and guidelines that make using Mercurial fast and easy.

-
- -

Mercurial (also known as "hg"), is the distributed version control software used for the development of Firefox, Thunderbird, and the shared Gecko core. It replaced CVS after Mozilla 1.9 was branched.

- -

hg is the Mercurial command-line tool, Hg being the chemical symbol for the element mercury.

- -

Installation, configuration, and getting the source

- -

See Installing Mercurial for installation and configuration tips.

- -

See Getting Mozilla Source Code Using Mercurial for getting a tree to build.

- -

Learning to use Mercurial

- -

If you are new to Mercurial, you should start with the official guide.

- -

Then, move on to Mercurial basics and Mercurial FAQ and the version control tool docs for Mozilla-centric Mercurial information.

- -

Further reading

- -

The Mercurial tag lists the Mercurial-related articles on MDN.

- -

And on wiki.mozilla.org, these helpful pages:

- - - -

{{ languages( { "es": "es/Mercurial", "fr": "fr/Mercurial", "ja": "ja/Mercurial" } ) }}

diff --git a/files/id/mozilla/persona/index.html b/files/id/mozilla/persona/index.html deleted file mode 100644 index 529d510e4d..0000000000 --- a/files/id/mozilla/persona/index.html +++ /dev/null @@ -1,126 +0,0 @@ ---- -title: Persona -slug: Mozilla/Persona -translation_of: Archive/Mozilla/Persona ---- -
-

Tetap berhubungan atau dapatkan bantuan!

- -

Ikuti blog kami, bergabung dalam milis kami, atau cari kami dalam #identity di IRC.

-
- -

Mozilla Persona adalah Sistem otentikasi yang sepenuhnya aman dan desentralisasi untuk web berdasarkan pada protokol BrowserID. Untuk memastikan Persona berkerja dimana saja dan untuk siapa saja, Mozilla saat ini mengoperasikan serangkaian kecil optional, centralized services yang terkait dengan Persona.

- -

Mengapa Anda seharusnya menggunakan Persona pada situs web anda?

- -
    -
  1. Persona sepenuhnya menghilangkan password situs-spesifik, membebaskan pengguna dan situs jejaring dari beban dalam menciptakan, mengatur, dan menyimpan kata sandi dengan aman.
  2. -
  3. Persona mudah digunakan. Hanya dengan dua kali klik pengguna Persona dapat masuk kedalam sebuah situs baru seperti Voost atau The Times Crossword, melewati kesulitan yang berhubungan dengan pembuatan akun.
  4. -
  5. Persona mudah diimplementasikan. Pengembang dapat menambah Persona kedalam sebuah situs hanya dalam semalam.
  6. -
  7. Yang terbaik dari semuanya, tidak adanya ketergantungan. Pengembang mendapat alamat-alamat surel yang telah diverifikasi dari semua pengguna mereka, dan pengguna situs dapat menggunakan surel apapun dengan Persona.
  8. -
  9. Persona dibuat dengan protokol BrowserID. Sekali penyedia peramban populer menggunakan BrowserID, mereka tidak perlu lagi ke Mozilla untuk log in.
  10. -
- -

Baca Memulai!

- -
Note: Persona sedang dalam pengembangan. ikuti blog kami untuk menemukan fitur-fitur baru, atau bergabunglah dengan milis kami dan tawarkan umpan-balik anda!
- -

Gunakan Persona untuk laman anda

- - - - - - - - - - - - -
-

Memulai

- -
-
Kenapa Persona?
-
Pelajari tentang alasan Persona untuk pendukung dalam laman anda, dan bandingkan dengan sistem identitas otentikasi lainnya.
-
Pengaturan cepat
-
Pedoman cepat bagaimana cara untuk menambahkan Persona dalam laman/website anda.
-
-
-

Persona API

- -
-
Referensi navigator.id API
-
Referensi untuk the navigator.id object, yang mana web developers dapat gunakan untuk memadukan Persona kedalam laman.
-
Verifikasi API
-
Referensi untuk remote verification API hosted at https://verifier.login.persona.org/verify.
-
-
-

Panduan

- -
-
Perhatian Keamanan
-
Latihan dan Teknik untuk memastikan Persona anda aman.
-
Kococokan Peramban (Browser)
-
Pelajari dengan cermat peramban/browser mana yang mendukung Persona.
-
Internasionalisasi
-
Pelajari bagaimana Persona menangani Bahasa yang berbeda.
-
-
-
-
Pustaka dan plugins
-
Temukan pustaka Drop-in untuk Bahasa pemrograman favorit, web framework, blog, atau sistem konten manajemen anda.
-
Persona cookbook
-
Contoh kode sumber/source code untuk laman Persona. Termasuk snippets dalam C# (MVC3), PHP, Node.JS, dan lainnya.
-
Branding resources
-
Tombol Sign in dan gambar lainnya untuk membantu menampilkan Persona kepada anda.
-
-
- - - - - - - - -
-

Informasi untuk penyedia layanan identitas

- -

Jika anda penyedia layanan surel atau layanan penyedia Identitas lainnya, Periksa tautan/link dibawah ini untuk mempelajari bagaimana menjadi penyedia layanan Identitas untuk Persona.

- -
-
Ringkasan IdP
-
Gambaran Persona Identity Providers.
-
Implementasi IdP
-
Pedoman teknis terinci untuk menjadi idP (Penyedia layanan Identitas).
-
Tips Pengembangan
-
Kumpulan tips dan trik yang berguna saat mengembangkan penyedia identitas baru.
-
.well-known/browserid
-
Ringkasan setruktur dan tujuan dari .well-known/browserid file, yang mana IdPs gunakan untuk meyatakan dukungannya.
-
-
-

Proyek Persona

- -
-
Istilah
-
Definisi istilah BrowserID and Persona.
-
FAQ
-
Jawaban untuk pertanyaan umum.
-
Ringkasan Protokol
-
Ringkasan teknik menengah yang mendasar dari BrowserID protocol.
-
Keriptografi
-
lihat konsep kriptografi dibalik Persona dan BrowserID.
-
Sepesifikasi
-
Detail teknis mendalam langsung sisini.
-
Laman Persona
-
To get Persona going, we're hosting three services at https://login.persona.org: a fallback Identity Provider, a portable implementation of the {{ domxref("navigator.id") }} APIs, and an identity assertion verification service.
-
Kode sumber Persona
-
The code behind the Persona website lives in a repository on GitHub. Patches welcome!
-
-
- -

 

- -
 
diff --git a/files/id/mozilla/projects/index.html b/files/id/mozilla/projects/index.html deleted file mode 100644 index c1e43934a2..0000000000 --- a/files/id/mozilla/projects/index.html +++ /dev/null @@ -1,14 +0,0 @@ ---- -title: Projects -slug: Mozilla/Projects -tags: - - Mozilla - - NeedsContent - - NeedsTranslation - - Projects - - TopicStub -translation_of: Mozilla/Projects ---- -

{{ draft() }}

-

Below you'll find links to documentation about various Mozilla projects; these are often parts of Firefox or other products, but may also be used in other projects as well.

-

{{ LandingPageListSubpages() }}

diff --git a/files/id/mozilla/projects/nss/index.html b/files/id/mozilla/projects/nss/index.html deleted file mode 100644 index 3f7f3ed094..0000000000 --- a/files/id/mozilla/projects/nss/index.html +++ /dev/null @@ -1,180 +0,0 @@ ---- -title: Network Security Services -slug: Mozilla/Projects/NSS -translation_of: Mozilla/Projects/NSS ---- -

Keamanan Jaringan Layanan (NSS) adalah satu set perpustakaan yang dirancang untuk mendukung pengembangan cross-platform dari klien dan server aplikasi keamanan-diaktifkan. Aplikasi yang dibangun dengan NSS dapat mendukung SSL v2 dan v3, TLS, PKCS # 5, PKCS # 7, PKCS # 11, # 12 PKCS, S / MIME, sertifikat X.509 v3, dan standar keamanan lainnya.

- -

Untuk informasi rinci tentang standar yang didukung, lihat Ikhtisar NSS. Untuk daftar pertanyaan yang sering diajukan, lihat FAQ.

- -

NSS tersedia di bawah Mozilla Public License. Untuk informasi tentang men-download NSS rilis sebagai file tar, melihat Unduh PKI Sumber.

- -

Jika Anda seorang pengembang dan ingin berkontribusi NSS, Anda mungkin ingin membaca dokumen ikhtisar highlevel rincian internal NSS dan memulai dengan NSS.

- - - - - - - - -
-

Dokumentasi

- -

Informasi latar belakang

- -
-
Ikhtisar NSS
-
Memberikan ringkasan singkat dari NSS dan kemampuannya.
-
NSS FAQ
-
Menjawab pertanyaan dasar tentang NSS.
-
Pengantar Kriptografi Public-Key
-
Menjelaskan konsep dasar kriptografi kunci publik yang mendasari NSS.
-
Pengantar SSL
-
Memperkenalkan protokol SSL, termasuk informasi tentang cipher kriptografi didukung oleh SSL dan langkah-langkah yang terlibat dalam jabat tangan SSL.
-
- -

Mulai

- -
-
NSS Pers
-
Halaman ini berisi informasi tentang rilis saat ini dan masa lalu dari NSS.
-
Dapatkan kode sumber dan Membangun
-
Petunjuk tentang bagaimana membangun NSS pada platform yang didukung berbeda.
-
Dapatkan Mozilla Source Code Menggunakan Mercurial
-
Informasi tentang dengan bekerja sama dengan Mercurial.
-
Dapatkan Mozilla Source Code Menggunakan CVS (usang)
-
Old usang dokumentasi CVS.
-
- -

NSS API

- -
-
Pengantar Keamanan Jaringan
-
Memberikan gambaran tentang perpustakaan NSS dan apa yang perlu Anda ketahui untuk menggunakannya.
-
Fungsi NSS Umum
-
Merangkum diekspor oleh perpustakaan NSS bersama API.
-
NSS Referensi
-
API yang digunakan untuk memanggil operasi SSL.
-
Pedoman API NSS
-
Menjelaskan bagaimana perpustakaan dan kode diatur, dan pedoman untuk mengembangkan kode (konvensi penamaan, penanganan error, benang pengaman, dll)
-
NSS Catatan Teknis
-
Link ke NSS catatan teknis, yang menyediakan informasi terbaru tentang fitur NSS baru dan dokumentasi tambahan untuk topik-topik lanjutan dalam pemrograman dengan NSS.
-
- -

Alat, pengujian, dan rincian teknis lainnya

- -
-
Membangun Petunjuk untuk NSS
-
Jelaskan bagaimana untuk memeriksa dan membangun NSS rilis.
-
- -
-
NSS Tutorial Pengembang
-
Bagaimana membuat perubahan di NSS. Coding gaya, menjaga kompatibilitas ABI.
-
- -
-
NSS Alat
-
Alat untuk mengembangkan, debugging, dan mengelola aplikasi yang menggunakan NSS.
-
Contoh Kode
-
Menunjukkan bagaimana NSS dapat digunakan untuk operasi kriptografi, penanganan sertifikat, SSL, dll
-
NSS 3.2 Uji Suite
-
Versi diarsipkan. Menjelaskan bagaimana menjalankan tes NSS standar.
-
NSS Laporan Kinerja
-
Versi diarsipkan. Link laporan kinerja untuk NSS 3.2 dan rilis berikutnya.
-
Enkripsi Teknologi Tersedia dalam NSS 3.11
-
Versi diarsipkan. Mencantumkan algoritma kriptografi yang digunakan oleh NSS 3.11.
-
NSS 3.1 loadable Sertifikat Akar
-
Versi diarsipkan. Menjelaskan skema untuk sertifikat CA memuat akar.
-
cert7.db
-
Versi diarsipkan. Format Umum database cert7.db.
-
- -

PKCS # 11 informasi

- - - -
-
- -

CA sertifikat pre-loaded ke NSS

- - - -
-
- -

NSS dibangun di atas Netscape Portabel Runtime (NSPR)

- -
-
Netscape Portabel Runtime
-
Halaman proyek NSPR.
-
NSPR Referensi
-
NSPR dokumentasi API.
-
- -

informasi tambahan

- - - -

Pengujian

- - - -

Perencanaan

- -

Informasi tentang perencanaan NSS dapat ditemukan di wiki.mozilla.org, termasuk:

- - -
-

Masyarakat

- -
    -
  • Lihat forum Mozilla Keamanan ...
  • -
- -

{{DiscussionList ("dev-keamanan", "mozilla.dev.security")}}

- -
    -
  • Lihat forum Mozilla Kriptografi ...
  • -
- -

{{DiscussionList ("dev-tech-kripto", "mozilla.dev.tech.crypto")}}

- - - - -
- -

 

diff --git a/files/id/mozilla/projects/rhino/index.html b/files/id/mozilla/projects/rhino/index.html deleted file mode 100644 index 8396dc5c22..0000000000 --- a/files/id/mozilla/projects/rhino/index.html +++ /dev/null @@ -1,25 +0,0 @@ ---- -title: Rhino -slug: Mozilla/Projects/Rhino -tags: - - JavaScript - - Mozilla - - NeedsUpdate - - Rhino -translation_of: Mozilla/Projects/Rhino ---- -

Image:rhino.jpg

- -

Rhino adalah implementasi sumber-terbuka dari JavaScript yang ditulis keseluruhannya dalam bahasa pemrograman Java. Ini biasanya disisipkan di aplikasi Java untuk memberikan fasilitas scripting pada pengguna. Rhino telah disisipkan di J2SE 6 sebagai mesin scripting utama.

- -

Unduh Rhino

- -

Bagaimana mendapatkan sumber dan binari

- -

Dokumentasi Rhino

- -

Informasi tentang Rhino bagi penulis script dan yang menyisipkannya.

- -

Bantuan Rhino

- -

Beberapa sumber jika anda mengalami kebuntuan.

diff --git a/files/id/sandbox/index.html b/files/id/sandbox/index.html deleted file mode 100644 index 7d1668aea0..0000000000 --- a/files/id/sandbox/index.html +++ /dev/null @@ -1,201 +0,0 @@ ---- -title: Sandbox -slug: Sandbox -translation_of: Sandbox ---- -

This is a page

- -
-
Sample HTML Content
-
-
- -

{{EmbedLiveSample('file')}}

- -

coucou les amis

- -

HTML

- -
Sample HTML Content
- -

CSS Content

- -
Sample CSS Content
- -

JavaScript Content

- -
Sample JavaScript Content
- -

Result

- -

{{ EmbedLiveSample('asdfghjk') }}

- - - -
<html>
-</html>
- - - - - -

CSS Content

- -
@ Compteur de style fisheye {
-  système: cyclique;
-  symboles: ◉;
-
- -
-


- <h1>CSS font-family</h1>
- <p class="serif">This is a paragraph, shown in the Times New Roman font.</p>
- <p class="sansserif">This is a paragraph, shown in the Arial font.</p>

-
- -

-}
-
-.liste {
-    list-style: fisheye, cercle;
-}
- -

Hello World

- -

HTML

- -
<p>Hello World</p>
- -

{{EmbedLiveSample ( 'Linux is life')}}

- -

Linux logo

- -

logo couleur MDN (bleu)

- - - -

Des trucs

- -
-

Une note 

- -
-

Un avertissement dans une note

- -
-

Une note dans un avertissement dans une note

- -
- - -
- - -
- - -
- - -
- - -
- -
-
-
-
-
-
-
-
-
- - - -
-

une autre note

- -
-

Une note dans une note

-
- -

This is an example of how to use the MDN!

-
- - - -

π×1=1×π=2π÷π=π\ Pi \ times 1 = 1 \ times \ pi = 2 \ pi \ div \ pi = \ pi

- -

ππππππ\ Pi \ frac {\ pi} {\ pi} \ frac {\ frac {\ pi} {\ pi}} {\ pi}

- -

ππππππ\ Pi \ frac {\ pi} {\ pi} \ frac {\ frac {\ pi} {\ pi}} {\ pi}

- -

limjets13e3/XX2X\ Int \ limits_ {1} ^ {3} \ frac {e ^ 3 / x} {x ^ 2} \, dx

- -

ln(x) dx = x[ln(x) - 1]l\ Int \ limits_ {1} ^ {3} \ frac {e ^ 3 / x} {x ^ 2} \, d+x

- -

abcdefghijklmnopqrstuvwxyz\alphabet

- -

πest un nombre irrationnel, et cela est le rapport entre la circonférence d'un cercle à son diamètre. Il est communément approchée comme 3,14159.\ pifacts {3}

- -

contenu

- - - -

Test live sample

- -

HTML Content

- -
<p>Hello World</p>
- -

Result

- -

{{ EmbedLiveSample('Test live sample') }}

- -

- -

Focus on a text field

- -

HTML Content

- -
<input type="text" id="myTextField" value="Text field.">
-<p></p>
-<button type="button" onclick="focusMethod()">Click me to focus on the text field!</button> 
- -

CSS Content

- -
Sample CSS Content
- -

JavaScript Content

- -
focusMethod = function getFocus() {
-  document.getElementById("myTextField").focus();
-} 
- -

Result

- -

{{ EmbedLiveSample('Focus_on_a_text_field') }}

- -

Focus on a button

- -

HTML Content

- -
<button type="button" id="myButton">Click Me!</button>
-<p></p>
-<button type="button" onclick="focusMethod()">Click me to focus on the button!</button> 
- -

CSS Content

- -
Sample CSS Content
- -

JavaScript Content

- -
focusMethod = function getFocus() {
-  document.getElementById("myButton").focus();
-} 
- -

Result

- -

{{ EmbedLiveSample('Focus_on_a_button') }}

diff --git a/files/id/tools/webide/index.html b/files/id/tools/webide/index.html deleted file mode 100644 index 3cf3b7bf2b..0000000000 --- a/files/id/tools/webide/index.html +++ /dev/null @@ -1,458 +0,0 @@ ---- -title: WebIDE -slug: Tools/WebIDE -translation_of: Archive/WebIDE ---- -
{{ToolsSidebar}}
-

WebIDE is available from Firefox 34 onwards.

-
- -
-

WebIDE is the replacement for the App Manager. Like the App Manager, it enables you to run and debug Firefox OS apps using the Firefox OS Simulator or a real Firefox OS device.

- -

However, it also provides an editing environment for you to create and develop Firefox OS apps, including a tree view of all the files in your app with the ability to edit and save them, and two app templates to help you get started.

- -

Finally, WebIDE enables you to connect the Firefox Developer Tools to a number of other browsers, including Firefox for Android, Chrome on Android, and Safari on iOS. See the Remote Debugging page for instructions on how to connect to a specific browser.

-
- -

With WebIDE, you first set up one or more runtimes. A runtime is an environment in which you'll run and debug the app. A runtime could be a Firefox OS device connected to the desktop over USB, or it could be a Firefox OS Simulator installed on the desktop itself.

- -

Next, you create an app, or open an existing app. If you're creating a new app you start with a template that includes the directory structure and the minimum boilerplate you need to get started, or a more complete template that shows how to use a privileged API. WebIDE shows your app's files in a tree, and you can edit and save them using a built-in source editor. Of course, you don't have to use the built-in editor: you can develop your app entirely outside WebIDE, and only use it for debugging.

- -

Finally, you can install the app in one of the runtimes and run it. You can then open the usual suite of developer tools - the Inspector, Console, JavaScript Debugger and so on - to examine and modify the running app.

- -

System requirements

- -

To develop and debug apps using WebIDE, all you need is Firefox version 33 or later. To test on a real Firefox OS device, you need a device running Firefox OS 1.2 or later, and a USB cable.

- -

You can only use WebIDE for Firefox OS if you're targeting Firefox OS 1.2 or later.

- -

Opening WebIDE

- -

There are three ways to open WebIDE:

- - - -

- -

Here's what the WebIDE looks like:The dropdown on the left labeled "Open App" lets you open existing apps or create new ones. The dropdown on the right labeled "Select Runtime" lets you select a runtime or set up a new runtime.

- -

The buttons in the middle run, stop, and debug the app: they are only enabled when you have opened an app and selected a runtime.

- -

From Firefox 36, you can change the font size throughout WebIDE using the standard keyboard shortcuts (use Command instead of Control on OS X):

- - - -

Setting up runtimes

- -

Under the "Select Runtime" dropdown, runtimes are grouped into three types:

- - - -

The first time you click the dropdown, you might not see any runtimes here:

- -

The rest of this section describes how you can add some runtimes.

- -

Connecting a Firefox OS device

- -

Before you can connect a Firefox OS device, there's some setup you have to go through:

- - - -
-

Linux only:

- - -
- -
-

Windows only:

- - -
- -

If there are any other Android devices connected to your computer, disconnect them. Now connect the device to the computer using USB. You should see the device appear under "USB DEVICES":

- -

- -

If you don't see your device, see the Troubleshooting page.

- -

Connecting to Firefox for Android

- -

From Firefox 36 onwards Android devices connected over USB and running Firefox for Android appear as a runtime under "USB devices". See the article on connecting to Firefox for Android from WebIDE.

- -

Before Firefox 36, you can connect to Firefox for Android without using WebIDE at all, or can use WebIDE by setting up a custom remote runtime.

- -

Adding a Simulator

- -

The Firefox OS Simulator is a version of the higher layers of Firefox OS that simulates a Firefox OS device, but runs on the desktop. It runs in a window the same size as a Firefox OS device, includes the Firefox OS user interface and built-in apps, and simulates many of the Firefox OS device APIs.

- -

This means that in many cases, you don't need a real device to test and debug your app.

- -

The Simulator is big, so it doesn't ship inside Firefox but as a Firefox add-on. If you click "Install Simulator" in the Runtimes dropdown menu, you will go to a page from which you can install Simulators for various versions of Firefox OS.

- -

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:

- -

To learn more about the Simulator, see its documentation page.

- -

Custom runtimes

- -

Remote runtime

- -

With a custom remote runtime you can use an arbitrary hostname and port to connect to the remote device.

- -

Under the hood, Firefox OS devices and Android devices connect to the desktop using a program called the Android Debug Bridge, or ADB. By default, 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.

- -

This is convenient in most cases, but sometimes you might want to use ADB outside of 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 adb forward command (example: adb forward tcp:6000 localfilesystem:/data/local/debugger-socket).
-
- If you then want to use WebIDE to connect as well, you should disable the ADB Helper add-on and connect WebIDE using the Custom runtime option, entering the host and port that you passed to adb forward (example: localhost:6000).

- -

Also, before Firefox 36, 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. See more about connecting to Firefox for Android using ADB prior to Firefox 36.

- -

Valence-enabled runtimes

- -

If you have the Valence add-on installed, you'll see three additional runtimes:

- - - -

For instructions on how to connect to these runtimes, see the relevant entry in the Remote Debugging page.

- -

Selecting a runtime

- -

Once you've set up a runtime you can select it using the "Select Runtime" menu.

- - - -

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.

- -

Runtime menu items

- -

When a runtime is selected, the Runtimes dropdown menu has up to five extra items:

- -
-
Runtime Info
-
Information on the current runtime
-
Permissions Table
-
A table summarising app permissions for the current runtime, indicating, for each API and each app type, whether access is allowed (✓), denied (✗), or whether the user is prompted (!)
-
- -
-
Device Preferences
-
A table listing, and letting you edit, the preferences that are made available in the runtime via the Preferences service. These are platform-level configuration values exposing the same set of data as Firefox's about:config (but for the device). Because these preferences are highly security-sensitive, you need to disable the DevTools restricted privileges setting before you can modify them.
-
Device Settings (new in Firefox 38/Firefox OS 3)
-
A table listing, and letting you edit, the settings that can be controlled in the Firefox OS Settings app. Most things on the device which have a UI control to change (volume, alarm, etc.) are found in Device Settings. Because these settings are less sensitive than the device preferences, you can modify them without removing the restricted privileges setting. However, since this feature is new in Gecko 38 you need the WebIDE in Firefox 38 and a nightly build of Firefox OS or the Simulator.
-
Screenshot
-
A command to take a screenshot from the runtime.
-
- -

- -

 

- -

Creating and opening apps

- -

Under the "Open App" menu you get three options: create a new app, open a packaged app, and open a hosted app:

- -

- -

Create a new app

- -

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".

- -

- -

Both templates are from Mozilla's app template collection, 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.

- -

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 project editor.

- -

Open a packaged app

- -

Select "Open Packaged App..." to open a packaged app. You'll be asked to select a directory containing the app's manifest, and the app will be opened in the project editor.

- -

Open a hosted app

- -

Select "Open Hosted App..." to open a hosted app. You'll be asked to enter a URL pointing to the app's manifest, and the app will be opened in the project editor.

- -

Editing apps

- -

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.

- -

The app summary page

- -

When you first open or create an app, the editor pane is occupied by the app summary page, which is shown below:

- -

- -

You can always get back to the app summary page by clicking on the root of the tree on the left.

- -

Manifest validation

- -

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:

- -

- -

Of course, you can edit the manifest.webapp file right in the project editor as well.

- -

The source editor

- -

WebIDE uses the CodeMirror source editor.

- -

Source editor shortcuts

- -

{{ Page ("en-US/docs/tools/Keyboard_shortcuts", "source-editor") }}

- -

Code completion

- -

When editing CSS and JavaScript, the editor provides autocomplete suggestions. CSS autocompletion is always enabled:

- -

To display autocomplete suggestions in JavaScript press Control + Space:

- -

- -

Inline documentation

- -

The editor also shows inline documentation for JavaScript. Press Shift + Space to see a popup containing documentation for the symbol your cursor is on:

- -

- -

Clicking the [docs] link in the popup will take you to the MDN page for the symbol.

- -

Saving files

- -

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).

- -

Removing projects

- -

To remove an app from WebIDE, go to the app summary page and click "Remove Project".

- -

Running a custom build step

- -
-

New in Firefox 37.

-
- -

For some use cases you need to run a custom command before pushing your app to the device. For example, you might want to satisfy JavaScript dependencies or minify CSS, or use WebIDE to develop Gaia apps or Cordova apps, both of which require a custom build step.

- -

From Firefox 37 you can do this by including a file called "package.json" in the root of your app. This is the same file that's used to package a node.js library, so you might already have one in the root of your project. If you don't, you can create one for this purpose.

- -

Inside package.json, WebIDE looks for a property called "webide". The table below summarises the syntax of "webide":

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
webide   -

Object containing instructions for WebIDE.

- -

This may contain two properties, both optional: "prepackage" and "packageDir".

-
 prepackage  -

Specifies a command-line command for WebIDE to run before pushing the app to the runtime.

- -

This may be a string, in which case the command is just executed as-is, or may be an object which must contain "command", and may contain any of "env", "args", and "cwd".

-
  command -

The command to execute in the command shell.

- -

For example: "echo".

-
  env -

Any environment variables to set.

- -

This is specified as an array of strings in the form "NAME=value". For example: ["NAME=world"]

-
  args -

Any arguments to pass along with the command.

- -

This is specified as an array of strings.

-
  cwd -

The directory from which to run the command.

- -

This may be absolute or relative to the current directory.

-
 packageDir  -

The directory from which WebIDE should look for the app to push to the runtime.

- -

Use this if you want the project in WebIDE to be the source from which to build a packaged app. The build step specified in prepackage would place the built app in an output directory, you will specify the output directory in packageDir, and WebIDE will install the app from that output directory rather than the project directory.

- -

This property is optional, and if it's omitted WebIDE will package the app from the project root, just as if package.json was omitted.

-
- -

Examples

- -

A "package.json" to build a Gaia app:

- -
{
-  "webide": {
-    "prepackage": {
-      "command": "make",
-      "env": ["APP=settings"],
-      "cwd": "../.."
-    },
-    "packageDir": "../../build_stage/settings/"
-  }
-}
- -

A "package.json" for working with Cordova:

- -
{
-  "webide": {
-    "prepackage": "cordova prepare",
-    "packageDir": "./platforms/firefoxos/www"
-  }
-}
- -

Running and debugging apps

- -

When you're ready to run the app, you need to select a runtime from the "Select Runtime" dropdown menu. If you don't have any available runtimes here, find out how to add some in Setting up runtimes.

- -

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:

- -

To debug the app, click the "Pause" button and the Developer Tools Toolbox appears, connected to your app:

- -

- -
-

From Firefox 36 onwards, the "Pause" button is replaced with a wrench icon.

-
- -

Exactly which tools you'll have available depends on the runtime, but you will at least have the basics: the Inspector, Console, JavaScript Debugger, Style Editor, Profiler and Scratchpad. 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.

- -

Unrestricted app debugging (including certified apps, main process, etc.)

- -

You can run the debugger against the simulator, b2g desktop, or a real device.

- -

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 certified apps:

- -

- -


- However, when connecting to a real device we have a security policy in force:

- - - -

To remove this restriction:

- - - -

To disable DevTools restricted privileges, connect to the runtime, and then, in the menu, go to Runtime > Runtime Info. The path then differs depending on what you are debugging against:

- - - -

Now (or after a restart of the B2G desktop client) in WebIDE you should see all the apps on the device.

- -
-

Note: As indicated above, to enable unrestricted privileges on a real device through WebIDE you'll need a rooted device. There is however a developer setting available in Firefox OS 2.2 onwards called Reset and enable full DevTools — when activated this will wipe all user data (for security reasons), reset the device, and enable unrestricted priviledges on any device.

-
- -

Monitoring performance

- -

If you're interested in the performance of your apps, there are a few ways to measure their impact on the runtime in WebIDE:

- - - -

Troubleshooting

- -

If you have any problems working with WebIDE, see the Troubleshooting page.

- -

 

- -

 

diff --git a/files/id/tools/webide/troubleshooting/index.html b/files/id/tools/webide/troubleshooting/index.html deleted file mode 100644 index d39320049b..0000000000 --- a/files/id/tools/webide/troubleshooting/index.html +++ /dev/null @@ -1,117 +0,0 @@ ---- -title: WebIDE -slug: Tools/WebIDE/Troubleshooting -tags: - - Indonesia -translation_of: Archive/WebIDE/Troubleshooting ---- -
{{ToolsSidebar}}

Connecting a Firefox OS device over USB

- -

If you're trying to connect a Firefox OS device to WebIDE and it doesn't show up, here are some things you can try:

- - - -

Connecting a Firefox OS device over Wi-Fi

- - - -

Connecting to Firefox for Android

- -

If you're trying to connect to a Firefox instance running on the Android OS and it doesn't show up, here are some things you can try:

- - - -

Connecting to other browsers (Chrome, Safari)

- -

WebIDE makes use of Valence (formerly Firefox Tools Adapter) to reach other browsers, like Chrome and Safari. 

- -

If you are having trouble connecting to these other browsers, check the setup steps and other notes for those browsers on the Valence page.

- -

Can't debug some apps

- -

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 Unrestricted app debugging (including certified apps, main process, etc.).

- -

Unable to load project list

- -

If you open WebIDE in one version of Firefox, and then downgrade to a previous Firefox version with the same profile, you may see the error "Unable to load project list" when opening WebIDE in the earlier Firefox version.

- -

This can occur when the storage system that WebIDE uses (IndexedDB) needs to move or restructure its internal files for the newer Firefox version. The project list then becomes effectively inaccessible to older versions of Firefox.

- -

No data has been lost, but you will need to keep using the newest version of Firefox that was used with your profile to get the project list back.

- -

If really want to use the older version of Firefox, you can attempt to delete just the project list in the following way, but this is unsupported and could result in the further problems or additional data loss:

- -
    -
  1. Close Firefox
  2. -
  3. Find your Firefox profile directory
  4. -
  5. Find the storage folder inside the profile directory
  6. -
  7. Under some part of this file tree, there should be files and/or directories that start with 4268914080AsptpcPerjo (a hashed name of the database)
  8. -
  9. Remove any such files and directories
  10. -
  11. Start Firefox and WebIDE again
  12. -
- -

Enable logging

- -

You can also enable verbose logging to gather diagnostics:

- -
    -
  1. Open about:config, and add a new preference called extensions.adbhelper@mozilla.org.sdk.console.logLevel, with the string value all, and set extensions.adbhelper@mozilla.org.debug to true.
  2. -
  3. In the Add-ons Manager, disable and then re-enable the ADB Helper add-on.
  4. -
  5. Open the Browser Console and you'll now see console messages prefixed with adb. If the messages don't mean anything to you, ask for help.
  6. -
- -

Get help

- -

Go to the #devtools room on IRC and we will try to help.

diff --git a/files/id/web/api/mobile_connection_api/index.html b/files/id/web/api/mobile_connection_api/index.html deleted file mode 100644 index 7b5462e2ef..0000000000 --- a/files/id/web/api/mobile_connection_api/index.html +++ /dev/null @@ -1,149 +0,0 @@ ---- -title: Mobile Connection -slug: Web/API/Mobile_Connection_API -translation_of: Archive/B2G_OS/API/Mobile_Connection_API ---- -

{{ draft }}

-

{{ non-standard_header() }}

-

{{ B2GOnlyHeader2('certified') }}

-

Summary

-

This API has 2 purposes:

- -

As this API can access functionalities that can have an impact on the mobile plan subscribed by the user (some of the functionalities can cost money to use or can damage the ICC), it is restricted to certified applications only.

-

The main entry point for this API is the {{domxref("window.navigator.mozMobileConnection","navigator.mozMobileConnection")}} property which is an instance of the {{domxref("MozMobileConnection")}} interface.

-

State of mobile connection

-

The state of the mobile connection is divided in two: on the one hand the voice connection, on the other hand the data connection. The data related to each type of connection are accessible through the {{domxref("MozMobileConnection.voice")}} and {{domxref("MozMobileConnection.data")}} properties which both return a {{domxref("MozMobileConnectionInfo")}} object.

-

Those objects give access to all information related to the quality of the network (signal strength, quality of the signal, position of the network's cells, restricted usage, roaming, etc.), and related to the carrier operating the network.

-
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);
-}
-
-

ICC Functionalities

-

The functionalities available for the ICC can be divided into two categories: the management of the ICC itself and the use of the integrated command available within the STK (SIM Application Toolkit).

-

Basic actions

-

The {{domxref("MozMobileConnection")}} provides a set of methods to deal with common behaviors on ICCs.

-
-

Note: All original methods from the MozMobileConnection interface are fully asynchronous. They all return a {{domxref("DOMRequest")}} object which has an onsuccess and onerror event handler to handle the success or failure of the method call.

-
-

Card lock

-

As long as a card is locked, a user is unable to use it to reach its mobile network. It's possible to manage the card lock with the {{domxref("MozMobileConnection.getCardLock","getCardLock()")}}, {{domxref("MozMobileConnection.setCardLock","setCardLock()")}}, and {{domxref("MozMobileConnection.unlockCardLock","unlockCardLock()")}} methods.

-

If {{domxref("MozMobileConnection.getCardLock","getCardLock()")}} allows to get some detailed information about the lock, it's also possible to have quick info about the lock through {{domxref("MozMobileConnection.cardState")}} which returns a string representing the current state of the lock.

-
-

Note: 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:

- -
-
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();
-}
-
-

MMI Messages

-

MMI messages are human understandable code that, once typed with a phone keyboard, allow to trigger specific action from the RIL or get response from the network through a USSD request. A common example is typing a short code to get the IMEI phone number.

-

Such messages are sent using the {{domxref("MozMobileConnection.sendMMI()")}} method (and can be canceled with {{domxref("MozMobileConnection.cancelMMI","cancelMMI()")}}). Even if it will return a {{domxref("DOMRequest")}} object, the response to such messages are handled in two ways:

- -
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.");
-}
-
-

Call forwarding options

-

Call forwarding options allow to define how a call can or cannot be forwarded to another phone number.

-

Those options are handled with the {{domxref("MozMobileConnection.getCallForwardingOption","getCallForwardingOption()")}} and {{domxref("MozMobileConnection.setCallForwardingOption","setCallForwardingOption()")}} methods.

-
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);
-}
-
-

STK commands

-

The STK commands depend on many factors (carriers, chips model, etc.) but can always be accessed through the {{domxref("MozMobileConnection.icc")}} property which returns a {{domxref("MozIccManager")}} object.

-
-

Warning: It's recommended to use the STK command only if you already know exactly what you are doing, as a misusage can damage the chip and make it unusable.

-
-

Specification

-

Not part of any specification.

-

See also

- diff --git a/files/id/web/events/cached/index.html b/files/id/web/events/cached/index.html deleted file mode 100644 index 195f18f846..0000000000 --- a/files/id/web/events/cached/index.html +++ /dev/null @@ -1,74 +0,0 @@ ---- -title: cached -slug: Web/Events/cached -translation_of: Archive/Events/cached ---- -

Event cached dijalankan ketika resource pada daftar application cache manifest telah terunduh, dan aplikasi sekarang ter-cache.

- -

Info Umum

- -
-
Spesifikasi
-
Offline
-
Interface
-
Event
-
Bubbles
-
No
-
Cancelable
-
No
-
Target
-
applicationCache
-
Default Action
-
None
-
- -

Properti

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
PropertiTypeDeskripsi
targetEventTarget (DOM element)The event target (the topmost target in the DOM tree). Read Only.
typestringThe type of event. Read only.
canBubblebooleanDoes the event normally bubble? Read only.
cancelablebooleanIs it possible to cancel the event? Read only.
- -

Event Terkait

- - - -

Lihat juga

- - diff --git a/files/id/web/javascript/new_in_javascript/index.html b/files/id/web/javascript/new_in_javascript/index.html deleted file mode 100644 index 79ee10c2b3..0000000000 --- a/files/id/web/javascript/new_in_javascript/index.html +++ /dev/null @@ -1,74 +0,0 @@ ---- -title: New in JavaScript -slug: Web/JavaScript/New_in_JavaScript -tags: - - ECMAScript - - JavaScript - - NeedsTranslation - - TopicStub - - Versions -translation_of: Archive/Web/JavaScript/New_in_JavaScript ---- -
{{jsSidebar("New_in_JS")}}
- -

This chapter contains information about JavaScript's version history and implementation status for Mozilla/SpiderMonkey-based JavaScript applications, such as Firefox.

- -

ECMAScript versions

- -
-
Language resources
-
Learn more about the ECMAScript standards on which the JavaScript language is based on.
-
ECMAScript 5 support
-
Implementation status for the current standard ECMA-262 Edition 5.1 in Mozilla-based engines and products.
-
ECMAScript 2015 support
-
Implementation status for the draft ECMA-262 Edition 6 (ES2015) in Mozilla-based engines and products.
-
ECMAScript Next support
-
Implementation status for upcoming ECMA-262 features as per the yearly (ES2016/ES2017/ES2018/...) release schedule in Mozilla-based engines and products.
-
- -

JavaScript release notes

- -
-
Firefox JavaScript changelog
-
See this changelog for JavaScript features implemented in Firefox 5 and later.
-
- -

JavaScript versions

- -

Deprecated ({{deprecated_inline}}). The explicit versioning and opt-in of language features was Mozilla-specific and are in process of being removed. Firefox 4 was the last version which referred to a JavaScript version (1.8.5). With new ECMA standards, JavaScript language features are now often mentioned with their initial definition in ECMA-262 Editions such as ECMAScript 2015.

- -

JavaScript was released as version 1.0 in March 1996 in Netscape Navigator 2.0 and Internet Explorer 2.0.

- -
-
JavaScript 1.1
-
Version shipped in Netscape Navigator 3.0. Released on August 19, 1996.
-
JavaScript 1.2
-
Version shipped in Netscape Navigator 4.0-4.05. Released on June 11, 1997.
-
JavaScript 1.3
-
Version shipped in Netscape Navigator 4.06-4.7x. Released on October 19, 1998.
- Standardization work to be compliant with ECMA-262 1st and 2nd Edition.
-
JavaScript 1.4
-
Version shipped with Netscape's server-side JavaScript. Released in 1999.
-
JavaScript 1.5
-
Version shipped in Netscape Navigator 6.0 and Firefox 1.0. Release on November 14, 2000.
- Standardization work to be compliant with ECMA-262 3rd Edition.
-
JavaScript 1.6
-
Version shipped in Firefox 1.5. Released in November 2005.
- Includes ECMAScript for XML (E4X), new Array methods plus String and Array generics.
-
JavaScript 1.7
-
Version shipped in Firefox 2. Released in October 2006.
- Includes generators, iterators, array comprehensions, let expressions, and destructuring assignment.
-
JavaScript 1.8
-
Version shipped in Firefox 3. Released in June 2008.
- Includes expression closures, generator expressions and Array.reduce()
-
JavaScript 1.8.1
-
Version shipped in Firefox 3.5. Released on June 30, 2009.
- Includes the TraceMonkey JIT and supports native JSON.
-
JavaScript 1.8.2
-
Version shipped in Firefox 3.6. Released June 22, 2009.
- Includes only minor changes.
-
JavaScript 1.8.5
-
Version shipped in Firefox 4. Released July 27, 2010.
- Includes many new features for ECMA-262 Edition 5 compliance.
- This is the last JavaScript version.
-
diff --git a/files/id/zones/index.html b/files/id/zones/index.html deleted file mode 100644 index 1e9cf86546..0000000000 --- a/files/id/zones/index.html +++ /dev/null @@ -1,70 +0,0 @@ ---- -title: Zones -slug: Zones -translation_of: Zones ---- -

MDN zones provide you one-stop access to information about specific topic areas or products. Here's a list of all the zones available to you.

-
-
-

Web and app development

-
-
- App Center
-
- Learn how to create open Web apps—rich experiences that run across multiple devices and form factors—using the same Web standards and open technologies you already know.
-
- Developer tools
-
- Learn how to use the Firefox developer tools to debug, test, and optimize your Web apps and sites.
-
- Firefox Marketplace
-
- An open, non-proprietary online marketplace for Web applications built using HTML, CSS, and JavaScript. Submit apps to the Firefox Marketplace or use the code to build your own marketplace.
-
- Game development
-
- Learn how to develop games for the Web, how to port existing games to Web technologies, and how to turn your games into Web apps.
-
- Mozilla Developer Program
-
- Learn more about the Mozilla Developer Program, where you can sign up for membership in the program, subscribe to our newsletter, and access our growing array of features for Web developers.
-
-
-
-

Products and projects

-
-
- Emscripten
-
- An LLVM to JavaScript compiler; this lets you compile, for example, C++ code into JavaScript code which can be run in any Web browser.
-
- L20n
-
- A JavaScript localization framework for unleashing your natural language's power with simple code.
-
- The MDN project
-
- The Mozilla Developer Network (this site) relies on its community of readers and contributors to grow and improve. You can learn here how to help use, contribute to, and build the code behind MDN!1
-
- Persona
-
- A new simple, privacy-sensitive single-sign in system developed by Mozilla which lets users log into your Web site using their email address, freeing you from password management.
-
-

Mozilla technologies

-
-
- Add-ons
-
- Learn how to build and install extensions, themes, and plug-ins for Mozilla-based software, including the popular Firefox Web browser.
-
- Firefox
-
- Learn all about Firefox, from how to build and revise it to how to build add-ons specifically for it.
-
- Firefox OS
-
- A new mobile operating system developed by Mozilla which lets users install and run open Web applications created using HTML, CSS, and JavaScript.
-
-
-
-

 

-- cgit v1.2.3-54-g00ecf