рд╣рдо рдПрдХрддрд╛ рдкреИрдирд▓ рдХреЗ рд╕рд╛рде рдПрдХреАрдХрд░рдг рдХреЗ рд▓рд┐рдП рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рд▓рд┐рдЦ рд░рд╣реЗ рд╣реИрдВ

рдирд░рд╡рд▓реНрд╕, рдирд░рд╡рд▓реНрд╕, рд╕рдореБрджреНрд░ рдореЗрдВ рддреИрд░рддреЗ рд╣реБрдП, рдПрдХ рд╣рдВрдЧрд╛рдорд╛ coz рдЬрд┐рд╕рд╕реЗ рд╡реЗ рдЗрддрдиреЗ рднрдпрд╛рдирдХ рд╣реИрдВ! рдЙрдмрдВрдЯреВ 11.04 рдХреА рд░рд┐рд▓реАрдЬ рдХреЗ рд╕рд╛рде, рдПрдХрддрд╛ рдЦреЛрд▓ рдиреЗ рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рд░реВрдк рд╕реЗ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╢реЗрд▓ рдХреА рдЬрдЧрд╣ рд▓реЗ рд▓реАред рдЙрдмрдВрдЯреВ рдиреЗрдЯрдмреБрдХ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдПрдХрддрд╛ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐, рдзреАрдореА рдЧрддрд┐ рдХреЗ рдмрд╛рд╡рдЬреВрдж, рдХрд╛рдлреА рдЙрдЪрд┐рдд рдереА: рдЗрд╕рдиреЗ рдЫреЛрдЯреЗ рдиреЗрдЯрдмреБрдХ рд╕реНрдХреНрд░реАрди рдХреЗ рдХреБрд╢рд▓ рдЙрдкрдпреЛрдЧ рдХреА рдЕрдиреБрдорддрд┐ рджреА, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЪрд▓ рд░рд╣реЗ рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдХреЗ рдмреАрдЪ рд╕реНрд╡рд┐рдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдКрд░реНрдзреНрд╡рд╛рдзрд░ рдкреИрдирд▓ред рдПрдХрддрд╛ рдХреЛ рдбреЗрд╕реНрдХрдЯреЙрдк рдкрд░ рдкреЛрд░реНрдЯ рдХрд░рдирд╛ рдХреНрдпреЛрдВ рдЬрд░реВрд░реА рд╣реЛ рдЧрдпрд╛? рдЗрд╕ рд╕рд╡рд╛рд▓ рдХрд╛ рдЕрдм рдЬрд╡рд╛рдм рджрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЗрд╕ рддрд░рд╣ рдХреЗ рдЕрдзреВрд░реЗ, рддреИрдпрд╛рд░ рдХрд┐рдП рдЧрдП рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЗ рдмрд┐рдирд╛, рд╡реНрдпрдХреНрддрд┐рдкрд░рдХ рдЬрд╡рд╛рдм рд╢рд╛рдпрдж рд╣реА рдЙрд╕ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рд╕рдВрддреБрд╖реНрдЯ рдХрд░реЗрдЧрд╛ рдЬреЛ рдЗрд╕ рд╕рдордп рд╕рдВрдХреНрд░рдордг рдХреА рдЕрд╕реБрд╡рд┐рдзрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рд╛ред рдЗрд╕рд▓рд┐рдП, рдпрд╣ рд╕реБрдзрд╛рд░ рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реЛрдЧрд╛, рди рдХрд┐ рдХреИрд╕реЗ рдФрд░ рдХреНрдпреЛрдВ рдЬреАрд╡рд┐рдд рд░рд╣рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВред

рдпрд╣ рд▓реЗрдЦ рд▓рд┐рдирдХреНрд╕ рдХреЗ рд▓рд┐рдП рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдХреЗ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд╕рд╛рде-рд╕рд╛рде рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рд▓рдХреНрд╖рд┐рдд рд╣реИ рдЬреЛ рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕ рдХреЗ рд▓рд┐рдП рдПрдХреНрд╕рдЯреЗрдВрд╢рди рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рд╕рдорд╛рдкреНрдд рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЗ рд▓рд┐рдП рд▓рд┐рдВрдХ рдХрд╛ рдкрд╛рд▓рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдордВрддреНрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ ред

рддреЛ рд╣рдореЗрдВ рдХреНрдпрд╛ рдЪрд╛рд╣рд┐рдП:
  1. рдПрдХреНрд╕рдЯреЗрдВрд╢рди рд░реАрд╕реНрдЯрд╛рд░реНрдЯрд▓реЗрд╕ рд░рд┐рд╕реНрдЯрд╛рд░реНрдЯ ред рд╡рд┐рдХрд╛рд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рджреМрд░рд╛рди, рдЖрдкрдХреЛ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╛рд░-рдмрд╛рд░ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЛ рдкреБрдирд░рд╛рд░рдВрдн рдХрд░рдирд╛ рд╣реЛрдЧрд╛
  2. рдЖрд░реНрдХрд╛рдЗрд╡ рдЬреЛ рдЖрдкрдХреЛ рдореИрдиреНрдпреБрдЕрд▓ рд░рд┐рдкреИрдХрд┐рдВрдЧ рдХреЗ рдмрд┐рдирд╛, рд╕реАрдзреЗ рд╕рдВрдЧреНрд░рд╣ рдореЗрдВ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдпрд╣ рдЙрдмрдВрдЯреВ рдлрд╛рдЗрд▓-рд░реЛрд▓рд░ рдореЗрдВ рдорд╛рдирдХ рдЕрднрд┐рд▓реЗрдЦрд╛рдЧрд╛рд░ рджреНрд╡рд╛рд░рд╛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ
  3. рдкрд╛рда рд╕рдВрдкрд╛рджрдХ

рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рд╡рд┐рд╕реНрддрд╛рд░ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИред рдЖрдкрдХреЛ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдбреЗрд╡рд▓рдкрд░ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдЙрдкрдпреЛрдЧреА рднреА рд▓рдЧ рд╕рдХрддрд╛ рд╣реИред

рдЕрдм рд╣рдореЗрдВ рдЕрдкрдиреЗ рд╡рд┐рд╕реНрддрд╛рд░ рдХреА рд╕рдВрд░рдЪрдирд╛ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
 unityfox
 - рдХреНрд░реЛрдо  
 ---- рд╕рд╛рдордЧреНрд░реА
 ------ main.xul
 - chrome.manifest 
 - install.rdf


рд╣рдорд╛рд░рд╛ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реНрдерд╛рдиреАрдпрдХрд░рдг рдпрд╛ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдорд╛рдирдХ рд╕реНрдерд╛рди рдФрд░ рдкреНрд░рд╛рдердорд┐рдХрддрд╛рдПрдВ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рдирд╣реАрдВ рд╣реЛрдВрдЧреАред

рдпрд╣ рд╕рдм install.rdf рдлрд╝рд╛рдЗрд▓ рд╕реЗ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИред рдпрд╣ рд╡рд┐рд╕реНрддрд╛рд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдЬрд╛рдирдХрд╛рд░реА рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рдерд╛рдЧрдд рд╣реИ: рдирд╛рдо, рд╡рд┐рд╡рд░рдг, рд╕рдВрд╕реНрдХрд░рдг, рд▓реЗрдЦрдХ, рдПрдХ рдЕрджреНрд╡рд┐рддреАрдп рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдФрд░ рд╕рдорд░реНрдерд┐рдд рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХрд╛ рдПрдХ рд╕реЗрдЯ (рд╕рдорд╛рди рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХрд╛рдо рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕реЗрдореЛрдирдХреА рдФрд░ рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕ рдореЗрдВ):
<? xml рд╕рдВрд╕реНрдХрд░рдг = "1.0" ?>

<RDF xmlns = "http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns: em = "http://www.mozilla.org/2004/em-rdf#" >

<рд╡рд┐рд╡рд░рдг рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ = "рдХрд▓рд╢: рдореЛрдЬрд╝рд┐рд▓рд╛: рд╕реНрдерд╛рдкрд┐рдд-рдкреНрд░рдХрдЯ" >
<em: id > unityfox@mozilla.org </ em: id >
<em: рд╕рдВрд╕реНрдХрд░рдг > 0.1.3 </ em: рд╕рдВрд╕реНрдХрд░рдг >
<em: рдЯрд╛рдЗрдк > 2 </ em: рдЯрд╛рдЗрдк >

<em: targetApplication >
<рд╡рд┐рд╡рд░рдг >
<em: id > {ec8030f7-c20a-464f-9b0e-13a3a9e97384} </ em: id >
<em: minVersion > 4.0 </ em: minVersion >
<em: maxVersion > 6.0a1 </ em: maxVersion >
</ рд╡рд┐рд╡рд░рдг >
</ em: targetApplication >

<em: рдирд╛рдо > unityfox </ em: рдирд╛рдо >
<em: рд╡рд┐рд╡рд░рдг > рдЙрдмрдВрдЯреВ рдПрдХрддрд╛ рдкреИрдирд▓ рдХреЗ рд╕рд╛рде рдПрдХреАрдХрд░рдг </ em: рд╡рд┐рд╡рд░рдг >
<em: рдирд┐рд░реНрдорд╛рддрд╛ > рд▓реЙрдХрд▓ </ em: рдирд┐рд░реНрдорд╛рддрд╛ >
</ рд╡рд┐рд╡рд░рдг >
</ RDF >


рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рдХреЗ рдмрд┐рдирд╛ рдлрд╝рд╛рдЗрд▓ рд╕рдВрд░рдЪрдирд╛ рд╕реНрдкрд╖реНрдЯ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред рдПрдХ рдЫреЛрдЯрд╛ рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг: <em: рдЯрд╛рдЗрдк> 2 </ em: рдЯрд╛рдЗрдк> рджрд┐рдЦрд╛рддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдлрд╝рд╛рдЗрд▓ рдПрдХ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдереАрдо рдирд╣реАрдВред {ec8030f7-c20a-464f-9b0e-13a3a9e97384} - рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЛрдбред рд╕рдВрд╕реНрдХрд░рдг 4.0 рдХреА рдирд┐рдЪрд▓реА рд╕реАрдорд╛ рдЗрд╕ рддрдереНрдп рдХреЗ рдХрд╛рд░рдг рд╣реИ рдХрд┐ рд╣рдо рдПрдХрддрд╛ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рд╕рд╛рде рд╕рдВрджреЗрд╢реЛрдВ рдХрд╛ рдЖрджрд╛рди - рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП js-ctypes рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред

рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ install.rdf рд▓рд┐рдЦрдиреЗ рдХреЗ рдмрд╛рдж, рдЖрдк рд╕реАрдзреЗ рдХрд╛рд░реНрдп рдХреЛрдб рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рд▓рд┐рдП рдЖрдЧреЗ рдмрдврд╝ рд╕рдХрддреЗ рд╣реИрдВред рдЦрд┐рдбрд╝рдХреА рдмрдирд╛рддреЗ рд╕рдордп рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рдореБрдЦреНрдп.рдХреНрд╕реБрд▓ рдлрд╝рд╛рдЗрд▓ рд╕реЗ рд╣рдорд╛рд░реЗ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛрдб рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ chrome.manifest рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдУрд╡рд░рд▓реЗ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
 рд╕рд╛рдордЧреНрд░реА unityfox рдХреНрд░реЛрдо / рд╕рд╛рдордЧреНрд░реА /
 рдУрд╡рд░рд▓реЗ рдХреНрд░реЛрдо: //browser/content/browser.xul рдХреНрд░реЛрдо: //unityfox/content/main.xul
рдпрд╣ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЛ рд╣рдорд╛рд░реА main.xul рдлрд╝рд╛рдЗрд▓ рдХреЛ browser.xul рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рд╕рд╛рде рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рддрд╛ рд╣реИред

рдпрд╣ рдЙрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд░реЛрдХрдиреЗ рдФрд░ рдпрд╛рдж рд░рдЦрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдЬрд┐рд╕реЗ рд╣рдо рд╣рд▓ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рд╣рдорд╛рд░рд╛ рд▓рдХреНрд╖реНрдп рдпреВрдирд┐рдЯреА рдкреИрдирд▓ рдореЗрдВ рдбрд╛рдЙрдирд▓реЛрдб рдмрд╛рд░ рдФрд░ рд╕рдХреНрд░рд┐рдп рдбрд╛рдЙрдирд▓реЛрдб рдХреА рд╕рдВрдЦреНрдпрд╛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдирд╛ рд╣реИред рд╕реМрднрд╛рдЧреНрдп рд╕реЗ, рдПрдХрддрд╛ рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рд╢реЗрд╖ рдПрдкреАрдЖрдИ рдкреНрд░рджрд╛рди рдХрд░рддреА рд╣реИред рдЗрд╕ рдПрдкреАрдЖрдИ рд╕реЗ рд╣рдореЗрдВ рдХрд╛рд░реНрдпреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА:gint64 si рдореЗрдВ рд▓рдВрдмреЗ рд╕рдордп рдХрд╛ рдПрдХ рдПрдирд╛рд▓реЙрдЧ рд╣реИ, рдФрд░ gboolean int рдХрд╛ рдПрдХ рдПрдирд╛рд▓реЙрдЧ рд╣реИред UnityLauncherEntry рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реВрдЪрдХ рдХреЛ рдПрдХ рдЕрдирд╛рдо рд╕рдВрд░рдЪрдирд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдВрдХреЗрддрдХ рдорд╛рдирд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рд╕рд╛рд╣рд╕рдкреВрд░реНрд╡рдХ рдПрдХ рд╕реВрдЪрдХ рдХреЛ рд╢реВрдиреНрдп рдореЗрдВ рдбрд╛рд▓рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЖрдЧреЗ рдХреА рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ рд╕реАрдзреЗ main.xul рдХреЛрдб рдкрд░ рдЬрд╛рдПрдБрдЧреА ред
<? xml рд╕рдВрд╕реНрдХрд░рдг = "1.0"?>
<рдУрд╡рд░рд▓реЗ рдЖрдИрдбреА = "рдпреВрдирд┐рдЯреАрдлрд╝реЙрдХреНрд╕"
xmlns = "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">

<script type = "text / javascript" >

// рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдореЗрдВ, рдпрд╣ xul рдореЗрдВ рд╡реИрд╢реНрд╡рд┐рдХ рдЧреБрдВрдЬрд╛рдЗрд╢ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рд╛рд╡рдзрд╛рди рд░рд╣рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рдерд╛рдЧрдд рд╣реИ
рдЕрдЧрд░ ( "рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд" == рдЯрд╛рдЗрдкреЛрдлрд╝ ( unityProgress ) ) {

var unityProgress = {

рд╕реЗрдЯрдЕрдк : рдлрд╝рдВрдХреНрд╢рди ( ) {
// рд╕рд┐рд╕реНрдЯрдо рд▓рд╛рдЗрдмреНрд░реЗрд░реА рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП ctypes рдореЙрдбреНрдпреВрд▓ рд▓реЛрдб рдХрд░реЗрдВ
рдЕрд╡рдпрд╡ред рдмрд░реНрддрди ред рдЖрдпрд╛рдд ( "рд╕рдВрд╕рд╛рдзрди: //gre/modules/ctypes.jsm" ) ;

// рдкреБрд╕реНрддрдХрд╛рд▓рдп libunity.so.4 рд▓реЛрдб рдХрд░реЗрдВ
// рд╣рдореЗрдВ рдХрд╛рдореЗрдЪреНрдЫрд╛ рдХреЗ рдЕрднрд╛рд╡ рдореЗрдВ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╕реНрддрд╛рд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ
рдХреЛрд╢рд┐рд╢ рдХрд░реЛ {
рдпрд╣ ред libunity = ctypesред рдЦреБрд▓рд╛ ( "libunity.so.4" ) ;
} рдкрдХрдбрд╝ ( рдЧрд▓рддреА ) { рд╡рд╛рдкрд╕реА ; }

// рдЖрд╡рд╢реНрдпрдХ рдХрд╛рдореЗрдЪреНрдЫрд╛ рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░реЗрдВ
рдпрд╣ ред getEntry = рдпрд╣ ред рдХрд╛рдорд╡рд╛рд╕рдирд╛ ред рдШреЛрд╖рд┐рдд рдХрд░реЗрдВ ( "unity_launcher_entry_get_for_desktop_id" ,
ctypesред default_abi ,
ctypesред voidptr_t ,
ctypesред рдЪрд╛рд░ ред рдкреАрдЯреАрдЖрд░ ) ;


рдпрд╣ ред setProgress = рдпрд╣ ред рдХрд╛рдорд╡рд╛рд╕рдирд╛ ред рдШреЛрд╖рд┐рдд рдХрд░реЗрдВ ( "unity_launcher_entry_set_progress"
ctypesред default_abi ,
ctypesред void_t,
ctypesред voidptr_t ,
ctypesред рдбрдмрд▓ ) ;

рдпрд╣ ред setVisibilityP = рдпрд╣ ред рдХрд╛рдорд╡рд╛рд╕рдирд╛ ред рдШреЛрд╖рд┐рдд рдХрд░реЗрдВ ( "рдПрдХрддрд╛_рд▓рд╛рдВрдЪрд░_рд╕реЗрдиреНрдЯреНрд░реА_рд╕реЗрдЯ_рдкреНрд░рд╡реЗрд╢рди_рд╡рд┐рднрд┐рдиреНрди" , "
ctypesред default_abi ,
ctypesред void_t,
ctypesред voidptr_t ,
ctypesред int ) ;

рдпрд╣ ред setVisibilityN = рдпрд╣ ред рдХрд╛рдорд╡рд╛рд╕рдирд╛ ред рдбрд┐рдХреНрд▓реЗрдпрд░ ( "unity_launcher_entry_set_count_v рдЕрджреГрд╢реНрдп" ,
ctypesред default_abi ,
ctypesред void_t,
ctypesред voidptr_t ,
ctypesред int ) ;

рдпрд╣ ред setCount = рдпрд╣ ред рдХрд╛рдорд╡рд╛рд╕рдирд╛ ред рдШреЛрд╖рд┐рдд рдХрд░реЗрдВ ( "unity_launcher_entry_set_count" ,
ctypesред default_abi ,
ctypesред void_t,
ctypesред voidptr_t ,
ctypesред рд▓рдВрдмреА ) ;

// рдпреВрдирд┐рдЯреАрд▓реЙрдиреНрдЪрд░рдПрдиреНрдЯреНрд░реА рдХреЗ рд╕рд╛рде рд▓рд┐рдмреБрдирд┐рдЯреА рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рд╕рднреА рдореБрдЦреНрдп рдХрд╛рд░реНрдп *
рдпрд╣ ред рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ = рдпрд╣ ред getEntry ( "firefox.desktop" ) ;

рдпрд╣ ред Cc = рдЕрд╡рдпрд╡ред рдХрдХреНрд╖рд╛рдПрдВ ;
рдпрд╣ ред рд╕рд┐рдп = рдЕрд╡рдпрд╡ред рдЗрдВрдЯрд░рдлреЗрд╕ ;
рдпрд╣ ред IDLM = рдпрд╣ ред рд╕реА.рдЖрдИ. nsIDownloadManager ;

// рдкреИрдирд▓ рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб-рдореИрдиреЗрдЬрд░ рд╕реЗрд╡рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛
// рд╕рднреА рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рд╕реЗрд╡рд╛рдУрдВ рдХреЗ рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЛ https://developer.mozilla.org рдкрд░ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ
рдпрд╣ ред dlMgr = рдпрд╣ ред Cc [ "@ mozilla.org / download-manager; 1" ] ред getService ( рдпрд╣ ред IDLM ) ;
рдпрд╣ ред dlMgr ред addListener ( рдпрд╣ ) ;
} ,

// рдЕрдкрдбреЗрдЯ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб-рдореИрдиреЗрдЬрд░ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдИрд╡реЗрдВрдЯ рдкрд░ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ
рдЕрджреНрдпрддрди : рдлрд╝рдВрдХреНрд╢рди ( ) {
var рдХреБрд▓ = 0 , cur = 0 , count = 0 ;
var dls = рдпрд╣ ред dlMgr ред activeDownloads ;
рдЬрдмрдХрд┐ ( dlsред рд╣реИрдореЛрд░рд┐рдпрд▓ ( ) ) {
var dl = dlsред getNext ( ) ред QueryInterface ( рдпрд╣ ред Ci ред рдПрдирдПрд╕рдЖрдИрдбреА рдбрд╛рдЙрдирд▓реЛрдб ) ;
// рдирд┐рд╖реНрдХреНрд░рд┐рдп рдбрд╛рдЙрдирд▓реЛрдб рдФрд░ рдбрд╛рдЙрдирд▓реЛрдб рдХреЛ рдЫреЛрдбрд╝ рджреЗрдВ рдЬрд┐рдирдХрд╛ рдЕрдВрдд рд╕рдордп рдЕрдЬреНрдЮрд╛рдд рд╣реИ
рдЕрдЧрд░ ( dlред рд░рд╛рдЬреНрдп ! = рдпрд╣ ! IDLM ред DOWNLOAD_DOWNLOADING || dlред рдкреНрд░рддрд┐рд╢рдд ред рдкреВрд░рд╛ == - 1 )
рдЬрд╛рд░реА рд░рдЦреЗрдВ ;

// рдХреБрд▓ рдЖрдХрд╛рд░, рд▓реЛрдб рдХрд┐рдП рдЧрдП рдЖрдХрд╛рд░ рдФрд░ рдбрд╛рдЙрдирд▓реЛрдб рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреА рдЧрдгрдирд╛ рдХрд░реЗрдВ
рдХреБрд▓ + = рдбреАрдПрд▓ред рдЖрдХрд╛рд░;
cur + = рдбреАрдПрд▓ред рд░рд╛рд╢рд┐
рдЧрд┐рдирддреА ++;
}

рдЕрдЧрд░ ( рдХреБрд▓ == 0 ) {
// рдпрджрд┐ рдХреЛрдИ рдбрд╛рдЙрдирд▓реЛрдб рдирд╣реАрдВ рд╣реИ, рддреЛ рдкреИрдирд▓ рдореЗрдВ рдХрд╛рдЙрдВрдЯрд░ рдФрд░ рдмрд╛рд░ рдЫрд┐рдкрд╛рдПрдВ
рдпрд╣ ред setVisibilityP ( рдпрд╣ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ ; 0 ) ;
рдпрд╣ ред setVisibilityN ( рдпрд╣ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ ; 0 ) ;
} {
// рдбрд╛рдЙрдирд▓реЛрдб рдкреНрд░рдЧрддрд┐ (0 рд╕реЗ 1 рддрдХ) рдФрд░ рдбрд╛рдЙрдирд▓реЛрдб рдХреА рд╕рдВрдЦреНрдпрд╛ рджрд┐рдЦрд╛рдПрдВ
рдпрд╣ ред рд╕реЗрдЯрдкреНрд░реЛрдЧреНрд░реЗрд╕ ( рдпрд╣ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ ; рдХреНрдпреВрд░ / рдЯреЛрдЯрд▓ ) ;
рдпрд╣ ред рд╕реЗрдЯрдХрд╛рдЙрдВрдЯ ( рдпрд╣ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ ; рдЧрд┐рдирддреА ) ;
рдпрд╣ ред setVisibilityP ( рдпрд╣ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ ; 1 ) ;
рдпрд╣ ред setVisibilityN ( рдпрд╣ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ ; 1 ) ;
}
} ,

// рдпрд╣ рдСрдмреНрдЬреЗрдХреНрдЯ рд╕рдорд╡рд░реНрддреА рд░реВрдк рд╕реЗ nsIDownloadProgressListener рд╣реИред
// nsIDownloadManager рдиреАрдЪреЗ рд╡рд░реНрдгрд┐рдд рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдВрджреЗрд╢ рднреЗрдЬреЗрдЧрд╛
onDownloadStateChange : рдлрд╝рдВрдХреНрд╢рди ( ) { рдпрд╣ ред рдЕрджреНрдпрддрди ( ) } ,
onStateChange : рдлрд╝рдВрдХреНрд╢рди ( ) { рдпрд╣ ред рдЕрджреНрдпрддрди ( ) } ,
onProgressChange : рдлрд╝рдВрдХреНрд╢рди ( ) { рдпрд╣ ред рдЕрджреНрдпрддрди ( ) } ,
onSecurityChange : рдлрд╝рдВрдХреНрд╢рди ( ) { рдпрд╣ ред рдЕрджреНрдпрддрди ( ) }
} ;
}

// рдЕрдВрдд рдореЗрдВ, рддрдерд╛рдХрдерд┐рдд рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдХрддрд╛рдкреНрд░рдгрд╛рд▓реА рдХреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд░реЗрдВ рдЕрдирд╛рдо рдирд╛рдо рд╕реНрдерд╛рди
( рдлрд╝рдВрдХреНрд╢рди ( ) { рдпрд╣ ред рд╕реЗрдЯрдЕрдк ( ) ; } ) ред рд▓рд╛рдЧреВ ( unityProgress ) ;
</ Script>
</ рдУрд╡рд░рд▓реЗ>


рдПрдХреНрд╕рдЯреЗрдВрд╢рди рддреИрдпрд╛рд░ рд╣реИред рдЕрдм рдпреВрдирд┐рдЯреАрдлреЙрдХреНрд╕ рдбрд╛рдЗрд░реЗрдХреНрдЯрд░реА рдХреА рдлрд╛рдЗрд▓реЛрдВ рдХреЛ рдЬрд╝рд┐рдк рдЖрд░реНрдХрд╛рдЗрд╡ рдореЗрдВ рдкреИрдХ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдлрд╛рдЗрд▓ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЛ .xpi рдореЗрдВ рдмрджрд▓реЗрдВ рдФрд░ рдмреНрд░рд╛рдЙрдЬрд░ рд╡рд┐рдВрдбреЛ рдкрд░ рдбреНрд░реИрдЧ рдФрд░ рдбреНрд░реЙрдк рдХрд░рдХреЗ рд╕реЗрдЯ рдХрд░реЗрдВред

рдПрдХ рд╕рдорд╛рдкреНрдд рд╡рд┐рд╕реНрддрд╛рд░ рдФрд░ рд╕рд╛рдордЧреНрд░реА рдХреА рд╕реВрдЪреА addons.mozilla.org/en/firefox/addon/unityfox рдкрд░ рджреЗрдЦреА рдЬрд╛ рд╕рдХрддреА рд╣реИред рдмреЛрди рдПрдкреЗрдЯрд┐рдЯ!

рдЗрд╕ рд▓реЗрдЦ рдХрд╛ рдкрд╛рда CC BY-SA 3.0 рдХреЗ рддрд╣рдд рд▓рд╛рдЗрд╕реЗрдВрд╕ рдкреНрд░рд╛рдкреНрдд рд╣реИ

Source: https://habr.com/ru/post/In118678/


All Articles