Bug 591368 - Get a Feedback XPI in to mobile-browser [r=mbrubeck]
authorMark Finkle <mfinkle@mozilla.com>
Fri, 10 Sep 2010 22:52:48 -0400
changeset 66564 791f5b7ee42fa8b6b34e19c8cd98d793b92325db
parent 66563 9f2baf1caf20498df0f51cb76505f36004363203
child 66565 635caced437c8832f43414ff9b79ea2cf9720e62
push id1
push userclegnitto@mozilla.com
push dateTue, 12 Apr 2011 01:19:02 +0000
treeherdermozilla-aurora@0cfe6840e0a4 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersmbrubeck
bugs591368
Bug 591368 - Get a Feedback XPI in to mobile-browser [r=mbrubeck]
mobile/app/Makefile.in
mobile/app/profile/extensions/Makefile.in
mobile/app/profile/extensions/feedback@mobile.mozilla.org/chrome.manifest
mobile/app/profile/extensions/feedback@mobile.mozilla.org/content/overlay.js
mobile/app/profile/extensions/feedback@mobile.mozilla.org/content/overlay.xul
mobile/app/profile/extensions/feedback@mobile.mozilla.org/install.rdf
mobile/app/profile/extensions/feedback@mobile.mozilla.org/locale/en-US/overlay.dtd
mobile/app/profile/extensions/feedback@mobile.mozilla.org/skin/beta-32.png
mobile/app/profile/extensions/feedback@mobile.mozilla.org/skin/dino-32.png
mobile/app/profile/extensions/feedback@mobile.mozilla.org/skin/happy-32.png
mobile/app/profile/extensions/feedback@mobile.mozilla.org/skin/overlay.css
mobile/app/profile/extensions/feedback@mobile.mozilla.org/skin/sad-32.png
mobile/makefiles.sh
--- a/mobile/app/Makefile.in
+++ b/mobile/app/Makefile.in
@@ -37,16 +37,18 @@
 
 DEPTH     = ../..
 topsrcdir = @top_srcdir@
 srcdir    = @srcdir@
 VPATH     = @srcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
+DIRS = profile/extensions
+
 PREF_JS_EXPORTS = $(srcdir)/mobile.js
 DIST_FILES = application.ini
 
 ifndef LIBXUL_SDK
 PROGRAM=$(MOZ_APP_NAME)$(BIN_SUFFIX)
 
 CPPSRCS = nsBrowserApp.cpp
 
new file mode 100644
--- /dev/null
+++ b/mobile/app/profile/extensions/Makefile.in
@@ -0,0 +1,59 @@
+# ***** BEGIN LICENSE BLOCK *****
+# Version: MPL 1.1/GPL 2.0/LGPL 2.1
+#
+# The contents of this file are subject to the Mozilla Public License Version
+# 1.1 (the "License"); you may not use this file except in compliance with
+# the License. You may obtain a copy of the License at
+# http://www.mozilla.org/MPL/
+#
+# Software distributed under the License is distributed on an "AS IS" basis,
+# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+# for the specific language governing rights and limitations under the
+# License.
+#
+# The Original Code is Mozilla.
+#
+# The Initial Developer of the Original Code is
+# the Mozilla Foundation <http://www.mozilla.org/>.
+# Portions created by the Initial Developer are Copyright (C) 2010
+# the Initial Developer. All Rights Reserved.
+#
+# Contributor(s):
+#   Mark Finkle <mfinkle@mozilla.com>
+#
+# Alternatively, the contents of this file may be used under the terms of
+# either the GNU General Public License Version 2 or later (the "GPL"), or
+# the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
+# in which case the provisions of the GPL or the LGPL are applicable instead
+# of those above. If you wish to allow use of your version of this file only
+# under the terms of either the GPL or the LGPL, and not to allow others to
+# use your version of this file under the terms of the MPL, indicate your
+# decision by deleting the provisions above and replace them with the notice
+# and other provisions required by the GPL or the LGPL. If you do not delete
+# the provisions above, a recipient may use your version of this file under
+# the terms of any one of the MPL, the GPL or the LGPL.
+#
+# ***** END LICENSE BLOCK *****
+
+DEPTH		= ../../../..
+topsrcdir	= @top_srcdir@
+srcdir		= @srcdir@
+VPATH		= @srcdir@
+
+include $(DEPTH)/config/autoconf.mk
+
+include $(topsrcdir)/config/rules.mk
+
+ifeq (beta,$(MOZ_UPDATE_CHANNEL))
+EXTENSIONS = \
+  feedback@mobile.mozilla.org \
+  $(NULL)
+
+define _INSTALL_EXTENSIONS
+$(PYTHON) $(topsrcdir)/config/nsinstall.py $(wildcard $(srcdir)/$(dir)/*) $(DIST)/bin/extensions/$(dir)
+
+endef # do not remove the blank line!
+
+libs::
+	$(foreach dir,$(EXTENSIONS),$(_INSTALL_EXTENSIONS))
+endif
new file mode 100644
--- /dev/null
+++ b/mobile/app/profile/extensions/feedback@mobile.mozilla.org/chrome.manifest
@@ -0,0 +1,5 @@
+content feedback content/
+skin    feedback classic/1.0 skin/
+locale  feedback en-US       locale/en-US/
+
+overlay	chrome://browser/content/browser.xul  chrome://feedback/content/overlay.xul
new file mode 100644
--- /dev/null
+++ b/mobile/app/profile/extensions/feedback@mobile.mozilla.org/content/overlay.js
@@ -0,0 +1,84 @@
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1/GPL 2.0/LGPL 2.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is Feedback.
+ *
+ * The Initial Developer of the Original Code is
+ * Mozilla Corporation.
+ * Portions created by the Initial Developer are Copyright (C) 2010
+ * the Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s):
+ *   Mark Finkle <mark.finkle@gmail.com>
+ *
+ * Alternatively, the contents of this file may be used under the terms of
+ * either the GNU General Public License Version 2 or later (the "GPL"), or
+ * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
+ * in which case the provisions of the GPL or the LGPL are applicable instead
+ * of those above. If you wish to allow use of your version of this file only
+ * under the terms of either the GPL or the LGPL, and not to allow others to
+ * use your version of this file under the terms of the MPL, indicate your
+ * decision by deleting the provisions above and replace them with the notice
+ * and other provisions required by the GPL or the LGPL. If you do not delete
+ * the provisions above, a recipient may use your version of this file under
+ * the terms of any one of the MPL, the GPL or the LGPL.
+ *
+ * ***** END LICENSE BLOCK ***** */
+
+var Feedback = {
+  init: function(aEvent) {
+    let appInfo = Cc["@mozilla.org/xre/app-info;1"].getService(Ci.nsIXULAppInfo);
+    document.getElementById("feedback-about").setAttribute("desc", appInfo.version);
+  },
+
+  openReadme: function() {
+    let formatter = Cc["@mozilla.org/toolkit/URLFormatterService;1"].getService(Ci.nsIURLFormatter);
+    let url = formatter.formatURLPref("app.releaseNotesURL");
+    BrowserUI.newTab(url);
+  },
+
+  updateRestart: function updateRestart() {
+    let msg = document.getElementById("feedback-messages");
+    if (msg) {
+      let strings = Elements.browserBundle;
+
+      let value = "restart-app";
+      let notification = msg.getNotificationWithValue(value);
+      if (notification)
+        return;
+  
+      let restartCallback = function(aNotification, aDescription) {
+        // Notify all windows that an application quit has been requested
+        var cancelQuit = Cc["@mozilla.org/supports-PRBool;1"].createInstance(Ci.nsISupportsPRBool);
+        Services.obs.notifyObservers(cancelQuit, "quit-application-requested", "restart");
+  
+        // If nothing aborted, quit the app
+        if (cancelQuit.data == false) {
+          let appStartup = Cc["@mozilla.org/toolkit/app-startup;1"].getService(Ci.nsIAppStartup);
+          appStartup.quit(Ci.nsIAppStartup.eRestart | Ci.nsIAppStartup.eAttemptQuit);
+        }
+      };
+
+      let buttons = [ {
+        label: strings.getString("notificationRestart.button"),
+        accessKey: "",
+        callback: restartCallback
+      } ];
+  
+      let message = strings.getString("notificationRestart.normal");
+      msg.appendNotification(message, value, "", msg.PRIORITY_WARNING_LOW, buttons);
+    }
+  }
+};
+
+window.addEventListener("load", Feedback.init, false);
new file mode 100644
--- /dev/null
+++ b/mobile/app/profile/extensions/feedback@mobile.mozilla.org/content/overlay.xul
@@ -0,0 +1,80 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!-- ***** BEGIN LICENSE BLOCK *****
+   - Version: MPL 1.1/GPL 2.0/LGPL 2.1
+   -
+   - The contents of this file are subject to the Mozilla Public License Version
+   - 1.1 (the "License"); you may not use this file except in compliance with
+   - the License. You may obtain a copy of the License at
+   - http://www.mozilla.org/MPL/
+   -
+   - Software distributed under the License is distributed on an "AS IS" basis,
+   - WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+   - for the specific language governing rights and limitations under the
+   - License.
+   -
+   - The Original Code is Feedback.
+   -
+   - The Initial Developer of the Original Code is
+   - Mozilla Corporation.
+   - Portions created by the Initial Developer are Copyright (C) 2010
+   - the Initial Developer. All Rights Reserved.
+   -
+   - Contributor(s):
+   -   Mark Finkle <mark.finkle@gmail.com>
+   -
+   - Alternatively, the contents of this file may be used under the terms of
+   - either the GNU General Public License Version 2 or later (the "GPL"), or
+   - the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
+   - in which case the provisions of the GPL or the LGPL are applicable instead
+   - of those above. If you wish to allow use of your version of this file only
+   - under the terms of either the GPL or the LGPL, and not to allow others to
+   - use your version of this file under the terms of the MPL, indicate your
+   - decision by deleting the provisions above and replace them with the notice
+   - and other provisions required by the LGPL or the GPL. If you do not delete
+   - the provisions above, a recipient may use your version of this file under
+   - the terms of any one of the MPL, the GPL or the LGPL.
+   -
+   - ***** END LICENSE BLOCK ***** -->
+
+<?xml-stylesheet href="chrome://feedback/skin/overlay.css" type="text/css"?>
+
+<!DOCTYPE window [
+<!ENTITY % feedbackDTD SYSTEM "chrome://feedback/locale/overlay.dtd">
+%feedbackDTD;
+]>
+
+<overlay id="feedback-overlay" xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
+  <script type="application/javascript" src="chrome://feedback/content/overlay.js"/>
+
+  <box id="panel-controls">
+    <toolbarbutton id="tool-feedback" autocheck="true" type="radio" group="1" class="panel-button button-dark" linkedpanel="feedback-container" insertbefore="tool-addons"/>
+  </box>
+
+  <deck id="panel-items">
+    <vbox id="feedback-container" flex="1">
+      <hbox id="feedback-header" class="panel-header">
+        <label value="&feedbackHeader.label;" flex="1"/>
+      </hbox>
+      <notificationbox id="feedback-messages" flex="1">
+        <richlistbox id="feedback-list" flex="1" onselect="this.ensureSelectedElementIsVisible()">
+          <settings id="feedback-communicate" label="&feedback.communicate.title;">
+            <setting title="&feedback.feedback.title;" type="control">
+              <button id="feedback-feedback-happy" class="button-dark" oncommand="BrowserUI.newTab('http://m.input.mozilla.com/en-US/happy');"/>
+              <button id="feedback-feedback-sad" class="button-dark" oncommand="BrowserUI.newTab('http://m.input.mozilla.com/en-US/sad');"/>
+            </setting>
+          </settings>
+          <settings id="feedback-information" label="&feedback.information.title;">
+            <setting id="feedback-about" title="&feedback.about.title;" type="control">
+              <button id="feedback-about-button" label="&feedback.about.button;" oncommand="Feedback.openReadme();"/>
+            </setting>
+          </settings>
+          <settings id="feedback-tools" label="&feedback.tools.title;">
+            <setting pref="extensions.checkCompatibility.2.0b" title="&feedback.forceCompat.title;" type="bool" inverted="true" oninputchanged="Feedback.updateRestart();"/>
+            <setting pref="browser.console.showInPanel" title="&feedback.errorConsole.title;" type="bool" oninputchanged="Feedback.updateRestart();"/>
+          </settings>
+        </richlistbox>
+      </notificationbox>
+    </vbox>
+  </deck>
+</overlay>
new file mode 100644
--- /dev/null
+++ b/mobile/app/profile/extensions/feedback@mobile.mozilla.org/install.rdf
@@ -0,0 +1,26 @@
+<?xml version="1.0"?>
+
+<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+     xmlns:em="http://www.mozilla.org/2004/em-rdf#">
+  <Description about="urn:mozilla:install-manifest">
+    <em:id>feedback@mobile.mozilla.org</em:id>
+    <em:version>1.0.0</em:version>
+    <em:type>2</em:type>
+
+    <!-- Target Application this extension can install into, 
+         with minimum and maximum supported versions. --> 
+    <em:targetApplication>
+      <Description>
+        <em:id>{a23983c0-fd0e-11dc-95ff-0800200c9a66}</em:id>
+        <em:minVersion>2.0b1pre</em:minVersion>
+        <em:maxVersion>2.*</em:maxVersion>
+      </Description>
+    </em:targetApplication>
+   
+    <!-- Front End MetaData -->
+    <em:name>Beta Tester Tools</em:name>
+    <em:description>Help make Firefox better by giving feedback.</em:description>
+    <em:creator>Mozilla Corporation</em:creator>
+    <em:iconURL>chrome://feedback/skin/dino-32.png</em:iconURL>
+  </Description>
+</RDF>
new file mode 100644
--- /dev/null
+++ b/mobile/app/profile/extensions/feedback@mobile.mozilla.org/locale/en-US/overlay.dtd
@@ -0,0 +1,14 @@
+<!ENTITY feedbackHeader.label           "Beta Tester Tools">
+
+<!ENTITY feedback.communicate.title     "Communicate to Us!">
+<!ENTITY feedback.feedback.title        "Give feedback">
+<!ENTITY feedback.feedback.good         "Good">
+<!ENTITY feedback.feedback.bad          "Bad">
+
+<!ENTITY feedback.information.title     "More Information">
+<!ENTITY feedback.about.title           "About this Beta">
+<!ENTITY feedback.about.button          "Go to Page">
+
+<!ENTITY feedback.tools.title           "Tools">
+<!ENTITY feedback.forceCompat.title     "Force add-ons compatibility">
+<!ENTITY feedback.errorConsole.title    "Enable the Error Console">
new file mode 100644
index 0000000000000000000000000000000000000000..1f047258fc9c58983111e5b588ac143eec86b51f
GIT binary patch
literal 453
zc$@*n0XqJPP)<h;3K|Lk000e1NJLTq001BW001Be1^@s6b9#F800001b5ch_0Itp)
z=>Px#24YJ`L;wH)0002_L%V+f000SaNLh0L01FcU01FcV0GgZ_00044Nkl<ZSi|kt
zzbox=9LI4#LJ6t6Q2qieWUxuPf5X{bbqAZlu53(JgJMz^v6_@JU}Lbk-K$$DoeX~D
zVfm(aI$utFzUQRQYx>sf^?tvfz5Dj=`)z7!=sO8Nv4L}xagV>)MhPuN4erIRkF|&1
z)We&z#?@*kH9+ajfK7~}6YUtr%A3qoN`Rfvc>SH+V#uwf1h@>1hu_Kdhum38fXC3d
zt%5&-Rs0FL+mryW%31q!X5V2QGpXN!iU9Z>tV8q{bp!GMPJ=aA<n_w~cnDV4XZwHU
zbp8v^v-Q}(T(F+8{FP072B0|`8g+?MO#p&Ff#VA2y1OO-S*8Wk_#fg&Ng%2L2-zRl
z4<*Yr1<3M4q2!_-03D&^p~yRsr^)bqQ^*Ezf_aRg2d(JCFI<I^t)c*`(G$k%1yD|Q
vka7S<v6LO4a`w@3jRP!Tpz#ya(6`YGzhFPZ74@$_00000NkvXXu0mjfG9bzL
new file mode 100644
index 0000000000000000000000000000000000000000..35b3a174a5585a0f92f491066ef92dabb975cae9
GIT binary patch
literal 1583
zc$@(*2GIG5P)<h;3K|Lk000e1NJLTq001BW001Be1^@s6b9#F8000H{Nkl<ZSi|jC
zZBUd|6u$ex$1c0DF3YYg7^04ZXsDCcBn@MxGqjc;1AbsBPCrb4P+}@b<xGkqL^B#1
zQBtzXh?)U2G-DWAGd3288locuXb^~e$Yv~{0;lKheHRuPol&!o8GoGFeeZkUbDr~@
z=bZPxjELC3Y3vDr{|kUIcDp^kti1ftHwA@1mmEJ{+F`S8!um5Xnae(}yRIJ@Ku~RM
z?dR_#By{=)jmB;^U}}>;Er?y#pO=?+uHx+3{M>^FD>m;)YslW0d!e(lGvSc|^!E0y
zOifK~_3-v_1YD|MbWG3acN3%YevH!9jHXLq6tMBIS+J?F84(d=v)R@?EC8R&moHl*
zBO@KoC&(E6gn$&t=n8^=>chyY6W7Om8KrqM%Ek2>0GjE+D8fyE+PZC9JACOL6u^YS
z!oqU~gTdkCWp_q)vk10-1S2`tCMp@7F*0iNXS4;uXCtUV&geBy1Xm80C@wCp7yhO`
z2!Pq?>FF&pnQVa8WDTP-WdA3EeT>XQ5MUR6=_y9PU_A?&?}g0((EWND1&2)}PmPuW
zm2y)1=xFz6*>&){6sEi{fZMlk1903eSCPqhT@kPzwD)rs0tDr!42&wkzyf4E9dutG
z$>>|GAB8?%)wt1=pg@|gcB9o`#tS~eo_n6Y$hB5>bae2p89xj_YisMq*w|Q_Jb5xD
zBqUH+Sl9rFeNwH-EEzzQ0>CRC;{IY4qZ$CrNAN}f*`{Um9<*=}<+6db2HabVB#hXr
zH=F5=x7PHWI(@nbfoBZ>sIRa80iw%lYHF%kxNsrK<?;almy9AP58g3SsGn!cnK%g`
zUn6iA0<G5wEwo}!uM1eGbz;v^fV04-7NU-ciJ|7^=B>^WsLIRB^GzmGpCd3dFan~A
zbQb}gPBI|4TH{d1+!_$H%1?-J3|jSs;V#x(0b#vZCz9Kkm}GYVC@Cp95gHmwNl8g$
zu~-}cmVw%<ron(*15qA=QYRx$rzgQi5*S#i7LIwRa7MUrhwPR1N2|oX6>)Lx4gkf)
z#SL|Jb(dDHT1CFTzNAnpDZ+htpeYdCX6<lIRQd_QDqIB2q;@UV4=+b5n2bUhUYavU
z0O;xISq$-YrKF_v#mC2!OraomIJn?92!dxb4h}Uk$*BvtJ7zI}c+jU^=0M=saiqo+
zjZ!Pfiq^dXHt$HR9PmPi_!$L&mX?<98yg$*3JMCY^9OZ4V)RCP4hFLOi?-wHE(GPJ
zzC&4Ph7K$MF&BHbdy9F&WO7oD(337Gn7oW8GI?uhlE#ywRC1bzM3yXHZgYw-xT>mZ
zcSuMGWo2dcI&>gq@s)0nx?0pfTWZT)2=cm0sM}Ez$@omTg|)L_?+BQB6M)7lWuyfY
zzW!$N3kW2gIe_FUHI<i@opu5UMHjT8E%xT*<g}a7uTB8d+=gb#19rpu@!taH0SZym
z!+N2QXk<Q0dUh_X2y4HA`jfanR$Aven?HX(_4oHLcLI187J^xjlaY}@^XAPXtyb&k
zhHTwET1qO*O4U%|=>kU4+Z#68K1@luHh0kyGK~(V05A}OdqE~6WoBkJw6(Qu!J9VL
zd2VoyL}hn(_aO|WYP=6<Qh2z-;bGMLM}rtPcLQhx-Ae&L$;UQ^S7Kt~O*rSnB><-7
zhZXo-T~S%Nujtr!rHxHZA7RaOua}XVbhFxOwK^E!{Tz-G>;Vh6Tmtt=<@f~3UI75S
zW47-|yM|}OAN5GaDVez`Ir%2feu0O0^YMY?nmKQ~Oston6ACbJd?2n)yM6uNc_xfn
zyKY?<2XR0nX~3oL`Bbbiik>%fpwZEN51ak{j%1NLGc&K6QHpobv)7D+t@ek%7)C{U
zA-vQbX-(L#c^s!=bLGX02clvYk=b2IvDli=U%#L}8FSyj=RT%pSy@^B<35(Zc;@`C
zd28SQpnb{<GibEQM8TeJ;$*B=Q+0Lqk$>vLgm;Oh^~Q}2muhNuVtRgw*|Ddqt82}J
hehWPLH2Y5h_zN|DpW89Sou&W)002ovPDHLkV1o4=>}>!5
new file mode 100644
index 0000000000000000000000000000000000000000..49e38c58680a16fc5bc06019df4201907ee8c727
GIT binary patch
literal 2497
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
LNkvXXu0mjfwkp;v
new file mode 100644
--- /dev/null
+++ b/mobile/app/profile/extensions/feedback@mobile.mozilla.org/skin/overlay.css
@@ -0,0 +1,16 @@
+#tool-feedback {
+  list-style-image: url("chrome://feedback/skin/beta-32.png");
+}
+
+#tool-feedback[checked="true"] {
+  -moz-border-image: url("chrome://browser/skin/images/toggledarkboth-active-64.png") 10 repeat repeat;
+}
+
+
+#feedback-feedback-happy {
+  list-style-image: url("chrome://feedback/skin/happy-32.png");
+}
+
+#feedback-feedback-sad {
+  list-style-image: url("chrome://feedback/skin/sad-32.png");
+}
new file mode 100644
index 0000000000000000000000000000000000000000..a59db1ffbf433213346f489938a93ef370f3c611
GIT binary patch
literal 2394
zc$@)R38nUlP)<h;3K|Lk000e1NJLTq001BW001Be1^@s6b9#F800009a7bBm000XU
z000XU0RWnu7ytkX3`s;mR9Fd}S7~fi*A@QWHZvZ3Jf5+!0b^_fF$Sklz{C&|hyW>7
z7n-Jx5~&guYDG(vNWdRdwLj8OMNvijrx8sMt&|^$R4JiVnh3X$0!b6nR6xq&C7W<q
zV#W*O8PD?ee&^Y5WGFPWSGvA$?mhRO?|f&u*9!iRwirm<4K$~KND1(LpnM*<dKM`B
zug58Oy5R|+b9Gn8=EhWFV|q?gn-+^U#?lGHhvJ*#6SilTGh<gWL*x0}kyB?se)HGB
zhj()J7Xo-3Sh;>x*Nz1X=0B89*EPgqG1_a=Y!6Vlo%Z{l2L<H8&|#KJ7#q7ja_O_H
zhfekn?cZlvB<A+*zX7QFZQI;EE56+I#Oygu^$L~vjstL1WtR{ibOMnz*M-OK%bY4x
z9x|EHv40H=J-1_c{8!wOzZDGaR+C=?7Cf`8^ZD*I-8<5$+PG_)0F{egm6i(_)#dN$
z9<1>j1OVHDS1!Zjp6aL(Z>ozw@PO+q(R0Oj87H}$_5BBcO+d%?p5=d7zG}rrotC(A
z7&Uvk4zE;%P75_EQ>jc5P@>qe`E3VEZQF*UQMQnWZ&}a?xIR(UIa~49855=6b2ovw
z0f0pJ<6U<hSk=99gW_9&MPD0HH2rWV8o&E}IQcxR{&O(I-&6>f-JSyA(_-6kQUBx~
z%-Qu*IQ(5a^&SDzH3XWB>CM%)yYO7eI(!`<rBiJt0Oe<M8-KE9-P-MjO6zQs7MGFO
zun7%Yz5_KHLu^q8@^AkQN_HG7-2hrE^b74yp@8W9o6z{9T~HaQHOp6G;>4S9FAou@
zAAqPfl+LD-?HqNyV<7;NJk_=t#)_p~T|47Zol#yS08&bN6RYnHMWENE5$o(Cy-atr
zJk{wUpIPCW7UFBxS7g<yIBHg}gI}bvk~Jk0QL?e9+IVuift8_P2tZriI`_xT&9jrv
zWHzu&A^nP~Au^{qlnusMOIu*EPXMBr`OmRTZ`c7tGlioqt?<P~1P6--l`W)HKe<Fz
zcTg_S9sKzwu(V~~{D%~WR#~iV;(O+^9*aVaL}s1|#b5+XD;K|mT}EG&=*A7QTDpP2
zn3|>ps1tNpE<xboM}RI7Cf~rabn?Mjsk(ZnkcH03CHH}Eo$=8ivPC9r-Xx=2XxFqL
z_u)!?pb|15^D~>1$#Bksuc$0mQw2*hwZ`?+t-x0)drlaLH705|MwxRi)65s^#UcXn
z#>Zh^{B-7-DD|IbaF!}ohq6ksjPhXLjj{v$T_QMI?XkO-&(1pH_~1RVfx?=a24*D^
zwQW8F&y!Ai1HW=av4Gss!<9pw(Ge6+zQY5&z@LG2q*o}GK+C=M$BL}WK+W|YfyX7+
z^rn>C%myZp!Yr=hW!3?tv>sr7&%Bl&)J6P+U&=!zm68DpgGY)@d2j&6yjEzb6t4a9
zX_&{3K$km!z6Gg=O)!>2HxO_C$3R^j<y&xd?_OjN{V9kvvJWob(6fYb5%`Pp6^6jp
z<tzT$UaK}?aufz38dR*)x0?7@N~^CxVI@@ZlPp4PoEPO1SUxTEi9@ac4ng;-sscAj
z>E<*j0!9`jLZkx8cv(@#Ui1BL>lD&F+tVB#CNwI9E7eQty(khE1c*{71vTEJ7Eg;Z
za%!P9q=GbaMn-~|kh?&FN@t94cclx6u!kV2P3}`qXVTfGV_P-@L;_G@)l$U5X#hUI
zJpyxiA;f#uBlV4Mq58i25N&N`b&LjAu>@s#aFFqG6xR<OVxaaTEU}_6q(4+H;5g^9
zoOwze(E9V{*50M*+D>QuQ$)EMp>mx-bkgh=Z0PNaF#i|NAiZTvpp^S>+nj6`pTF<|
zt~~oJe13;65bCAVV7f!WC&0jd_+Qsq_r|i5`60WmzSCx^2<>zUG^UG0Z|#~jSn~4A
zsA_MoD3z<$92$a6>LoUerY6MN+JbeRLD;fq56kdsoPX>wh<m0j4q_pQ2L^H3_b+CE
zOHzm?KQH8t=gN2xmWFb{M1*-N6vkWI&^1GO`Qk-fJ#YXMufGm&co-fnR9KJ{W{9z1
z0qP%p6ir*VLQf`<+PD#m4<5uB&dHT7ilvJ?%4FagyuZuOz*P)5wFR+<tNdupE=>dv
z4_8&O?782dVf}i_0mHApiVL(T_r@FGQwK`17~F{RCh#UFVO_d}vBQTkcH#sQJw1pv
zHllj*V&uqF=Je?xJ0uevR>cvh6aRp>_YxTh?t*^;AAB~M>Gi7W;i@`{6s+#<M)M=A
z*lfc*_zW#GsYEu2U&DZsQ7D!sYZE6=;xzXa$(FQ*J9ombtqoF709cBKVa4lx2e=^X
z0RWD<Q+DC^*UWrguWJtiCAoGjG+sp3!~{Ory&Enq7DaMM7*I1unHP$sWd{au;i;#B
z?_^gOsyaIZ01j{05xV@0=lzb0!5cBm7Lblivz2R@lbnB#;+U}Vqlm<-(YJ3OGH<;V
z#6)Ph0GY{ve1|@kQGSp1_3>gYVVo)X$t$nG;-yq#{TOiV{eOo4;`Ell-TV%klH_A_
zn^E)pmu7Wtwlae(ulb<zvFt!DWr<ipEVQwJRW^r3CIlvdCP0KC8ChB2MXJ$nmyW&U
zyW5y~L!1s;g#r1+4cW41oo#T6_s(kQXp%RdYx9QWnj9V~5DUZN5{@AQp)2IKtoii0
z8?C{RQ|{~ao!wV}{^_GQOc@k>gnxz^b9txyUQKy&VSTE7VI)$+2TdLh3uj2X9DFnF
zGXV$)k%1A1$^Ma3Jbu`-cMSsXhfA_7?FI&>ricKzcG@%FO%^joBAV<-B<95w&0wjw
zdHFfFv_53QWtu6Z8_`;fGr0Tg{J|GJ_h}X#zQ`+a8mg+eu`)5^LtLG@2Uy#!$G_KF
zGkbF~Qd6hP1y8p)?0o9dJ>nq7h03QIyUpOpI_2zTYx3CpuJzIx;24+b_DZ&jc%?}!
zeNhu2>E*zxyP@9S6iwWpFsf!p)JRfOpeequSbX@~t~HT&%&Q}I@$C=c9Vge4=hxZA
zBe!jL0wCNhK=_bB0|`#v#eZTrvR*=ELOUNZuM5mRu8*-x0^CviH|hNKA$jU!tpET3
M07*qoM6N<$f?Z66lK=n!
--- a/mobile/makefiles.sh
+++ b/mobile/makefiles.sh
@@ -36,16 +36,17 @@
 # ***** END LICENSE BLOCK *****
 
 add_makefiles "
 netwerk/locales/Makefile
 dom/locales/Makefile
 toolkit/locales/Makefile
 security/manager/locales/Makefile
 mobile/app/Makefile
+mobile/app/profile/extensions/Makefile
 $MOZ_BRANDING_DIRECTORY/Makefile
 $MOZ_BRANDING_DIRECTORY/locales/Makefile
 mobile/chrome/Makefile
 mobile/chrome/tests/Makefile
 mobile/components/Makefile
 mobile/components/phone/Makefile
 mobile/modules/Makefile
 mobile/installer/Makefile