[meego-commits] 7112: Changes to devel:browser/fennec-qt

hhuo halton.huo at intel.com
Fri Aug 27 03:47:24 UTC 2010


Hi,
I have made the following changes to fennec-qt in project devel:browser. Please review and accept ASAP.

Thank You,
hhuo

[This message was auto-generated]

---

Request #7112:

  submit:   home:hhuo:branches:devel:browser/fennec-qt(r7)(cleanup) -> devel:browser/fennec-qt


Message:
    None

State:   new          2010-08-26T15:36:57 hhuo
Comment: None



changes files:
--------------
--- fennec-qt.changes
+++ fennec-qt.changes
@@ -0,0 +1,21 @@
+* Fri Aug 27 02:49:26 UTC 2010 Halton Huo <halton.huo at intel.com> - 2.0a1pre0824.1
+- Add missing patch use_fennec_promptservice.diff and home_btn_once_hack.diff
+  to platform-patches.tar.gz
+- Add missing patch add_VKB_support.diff to mobile-patches.tar.gz
+
+* Thu Aug 26 07:30:48 UTC 2010 Halton Huo <halton.huo at intel.com> - 2.0a1pre0824.1
+- Revert last time commit, rework the mobile patches to avoid the git apply issue.
+
+* Thu Aug 26 06:33:36 UTC 2010 Halton Huo <halton.huo at intel.com> - 2.0a1pre0824.1
+- Use "patch -p1" instead of "git apply" to fix losting files after patched
+
+* Thu Aug 26 03:13:28 UTC 2010 Halton Huo <halton.huo at intel.com> - 2.0a1pre0824.1
+- Add yasm as BuildRequires 
+
+* Thu Aug 26 02:14:54 UTC 2010 Halton Huo <halton.huo at intel.com> - 2.0a1pre0824.1
+- Rebase to upstream trunk at changeset 51353:9a623cc1c5e7 20100824
+- BMC#5638, Fix issue that edit bookmarks function does not work
+- BMC#5707, Fix issue that elements are invisible on drop-down list
+- BMC#5431, Fix issue that two message dialogs popup before download
+- Fix bug that green background is shown when accessing https://addons.mozilla.org/en-US/firefox/?browse=featured
+

old:
----
  fennec-tip-91da083f3478-af67cbcea09d.tar.bz2

new:
----
  fennec-tip-9a623cc1c5e7-0e849c208873.tar.bz2

spec files:
-----------
--- fennec-qt.spec
+++ fennec-qt.spec
@@ -8,12 +8,12 @@
 
 Name:       fennec-qt
 Summary:    Fennec Mobile Web Browser with Qt/MeeGo Touch
-Version:    2.0a1pre0721.6
+Version:    2.0a1pre0824.1
 Release:    1
 Group:      Applications/Internet
 License:    MPLv1.1 or GPLv2+ or LGPLv2+
 URL:        http://www.mozilla.org/projects/fennec/
-Source0:    fennec-tip-91da083f3478-af67cbcea09d.tar.bz2
+Source0:    fennec-tip-9a623cc1c5e7-0e849c208873.tar.bz2
 Source1:    platform-patches.tar.gz
 Source2:    mobile-patches.tar.gz
 Source3:    mozconfig
@@ -55,6 +55,7 @@
 BuildRequires:  wireless-tools-devel
 BuildRequires:  git
 BuildRequires:  desktop-file-utils
+BuildRequires:  yasm
 Conflicts:   fennec
 
 

other changes:
--------------

++++++ fennec-qt.yaml
--- fennec-qt.yaml
+++ fennec-qt.yaml
@@ -1,12 +1,12 @@
 Name: fennec-qt
 Summary: Fennec Mobile Web Browser with Qt/MeeGo Touch
-Version: 2.0a1pre0721.6
+Version: 2.0a1pre0824.1
 Release: 1
 Group: Applications/Internet
 License: MPLv1.1 or GPLv2+ or LGPLv2+
 URL: http://www.mozilla.org/projects/fennec/
 Sources:
-    - fennec-tip-91da083f3478-af67cbcea09d.tar.bz2
+    - fennec-tip-9a623cc1c5e7-0e849c208873.tar.bz2
     - platform-patches.tar.gz
     - mobile-patches.tar.gz
     - mozconfig

++++++ fennec-tip-9a623cc1c5e7-0e849c208873.tar.bz2 (new)

++++++ meego-theme.tar.gz
--- skin/browser.css
+++ skin/browser.css
@@ -40,6 +40,25 @@
   background: #fff;
 }
 
+/* add special color */
+#identity-box[mode="verifiedIdentity"] {
+  background: #fff;
+}
+
+#identity-box[mode="verifiedIdentity"]:-moz-locale-dir(rtl) {
+  background: #fff;
+}
+
+#identity-box[mode="verifiedIdentity"]:hover:active,
+#identity-box[mode="verifiedIdentity"][open] {
+  background: #fff;
+}
+
+#identity-box[mode="verifiedIdentity"]:hover:active:-moz-locale-dir(rtl),
+#identity-box[mode="verifiedIdentity"][open]:-moz-locale-dir(rtl) {
+  background: #fff;
+}
+
 #urlbar-favicon {
   width: 24px;
   height: 24px;

++++++ mobile-patches.tar.gz
--- add_VKB_support.diff
+++ add_VKB_support.diff
-diff --git a/chrome/content/browser-ui.js b/chrome/content/browser-ui.js
---- a/chrome/content/browser-ui.js
-+++ b/chrome/content/browser-ui.js
-@@ -1540,6 +1540,10 @@
-     this._autofillContainer = document.getElementById("form-helper-autofill");
-     this._cmdPrevious = document.getElementById(this.commands.previous);
-     this._cmdNext = document.getElementById(this.commands.next);
-+    
-+    //hack mathod, hard code of virtual keyboard height
-+    this._vkbHeight = 280;
-+    this._containerHeight = this._container.getBoundingClientRect().height;
- 
-     // Listen for form assistant messages from content
-     messageManager.addMessageListener("FormAssist:Show", this);
-@@ -1565,8 +1569,16 @@
-       value: aElement.value,
-       maxLength: aElement.maxLength,
-       isAutocomplete: aElement.isAutocomplete,
--      list: aElement.choices
-+      list: aElement.choices,
-+      isValidText: aElement.isValidText
-     }
-+    //resize the height of container according to vitual keyboard's close and open
-+    if (this._currentElement.isValidText) {
-+      this._container.setAttribute("height", this._vkbHeight);
-+    } else {
-+      this._container.setAttribute("height", this._containerHeight);
-+    }
-+
-     this._updateContainer(lastElement, this._currentElement);
- 
-     this._zoom(Rect.fromRect(aElement.rect), Rect.fromRect(aElement.caretRect));
-diff --git a/chrome/content/forms.js b/chrome/content/forms.js
---- a/chrome/content/forms.js
-+++ b/chrome/content/forms.js
-@@ -254,6 +254,12 @@
-     return this._isNavigableElement(aElement) && this._isVisibleElement(aElement);
-   },
- 
-+  _isValidTextElement: function formHelperIsValidTextElement(aElement) {
-+    if (aElement instanceof HTMLTextAreaElement || (aElement instanceof HTMLInputElement && aElement.type == "text"))
-+      return this._isValidElement(aElement);
-+    return false;
-+  },
-+
-   _isNavigableElement: function formHelperIsNavigableElement(aElement) {
-     if (aElement.disabled)
-       return false;
-@@ -389,7 +395,8 @@
-         choices: list,
-         isAutocomplete: this._isAutocomplete(this.currentElement),
-         rect: this._getRect(),
--        caretRect: this._getCaretRect()
-+        caretRect: this._getCaretRect(),
-+        isValidText: this._isValidTextElement(this.currentElement)
-       },
-       hasPrevious: !!this._elements[this._currentIndex - 1],
-       hasNext: !!this._elements[this._currentIndex + 1]
--- autoconnect.patch
+++ autoconnect.patch
-# HG changeset patch
-# User roger.wang at intel.com
-# Date 1274951240 -28800
-# Branch meego
-# Node ID 29ce758e627349c5d291cc5ce17706135ba6d44a
-# Parent b3959e8a47999b3e16265e0f31f9234cecec2ef4
-autoconnect on MeeGo
-
-diff --git a/chrome/content/Util.js b/chrome/content/Util.js
---- a/chrome/content/Util.js
-+++ b/chrome/content/Util.js
-@@ -203,6 +203,8 @@
-   forceOnline: function forceOnline() {
- #ifdef MOZ_ENABLE_LIBCONIC
-     Services.io.offline = false;
-+#elifdef MOZ_PLATFORM_MEEGO
-+    Services.io.offline = false;
- #endif
-   },
- 
--- copy_NSDISTMODE.patch
+++ copy_NSDISTMODE.patch
-# HG changeset patch
-# User roger.wang at intel.com
-# Date 1274951303 -28800
-# Branch meego
-# Node ID 3e3ddc7400c122d42401d299c500566b91bb0a24
-# Parent c892fc6bf24f0e48ff77e9b745d3b3179f0c6213
-use copy NSDISTMODE
-
-diff --git a/components/Makefile.in b/components/Makefile.in
---- a/components/Makefile.in
-+++ b/components/Makefile.in
-@@ -43,6 +43,8 @@
- 
- include $(DEPTH)/config/autoconf.mk
- 
-+NSDISTMODE = copy
-+
- MODULE = MobileComponents
- XPIDL_MODULE = MobileComponents
- 
-diff --git a/components/phone/Makefile.in b/components/phone/Makefile.in
---- a/components/phone/Makefile.in
-+++ b/components/phone/Makefile.in
-@@ -43,6 +43,8 @@
- 
- include $(DEPTH)/config/autoconf.mk
- 
-+NSDISTMODE = copy
-+
- MODULE_NAME     = mozphone
- MODULE          = mozphone
- LIBRARY_NAME    = mozphone
--- correct_plugin_options_ipc.patch
+++ correct_plugin_options_ipc.patch
-# HG changeset patch
-# User roger.wang at intel.com
-# Date 1275362358 -28800
-# Branch meego
-# Node ID 8a629b4eb58772ebd9c22795b08b56e66c4c1697
-# Parent  58a4226965aefb850910b01a4da0d7e26ed6154f
-correct plugin options for IPC
-
-diff --git a/app/mobile.js b/app/mobile.js
---- a/app/mobile.js
-+++ b/app/mobile.js
-@@ -373,8 +373,8 @@
- 
- // plugins
- pref("plugin.disable", false);
--pref("plugin.default_plugin_disabled", true);
--pref("dom.ipc.plugins.enabled", false);
-+pref("plugin.default_plugin_disabled", false);
-+pref("dom.ipc.plugins.enabled", true);
- 
- // product URLs
- // The breakpad report server to link to in about:crashes
--- download_dlg_open.patch
+++ download_dlg_open.patch
-diff --git a/chrome/content/downloads.js b/chrome/content/downloads.js
---- a/chrome/content/downloads.js
-+++ b/chrome/content/downloads.js
-@@ -361,12 +361,25 @@
-   },
- 
-   openDownload: function dv_openDownload(aItem) {
--    let f = this._getLocalFile(aItem.getAttribute("file"));
--    try {
--      f.launch();
--    } catch (ex) { }
- 
--    // TODO: add back the code for "dontAsk"?
-+    let f = aItem.getAttribute("file");
-+
-+    var exe = Components.classes["@mozilla.org/file/local;1"]
-+      .createInstance(Components.interfaces.nsILocalFile);
-+    exe.initWithPath("/usr/bin/xdg-open");
-+
-+    // create an nsIProcess
-+    var process = Components.classes["@mozilla.org/process/util;1"]
-+      .createInstance(Components.interfaces.nsIProcess);
-+    process.init(exe);
-+
-+    // Run the process.
-+    // If first param is true, calling thread will be blocked until
-+    // called process terminates.
-+
-+    var args = [f];
-+    process.run(false, args, args.length);
-+
-   },
- 
-   removeDownload: function dv_removeDownload(aItem) {
--- enable_plugin_force_windowless_flash.patch
+++ enable_plugin_force_windowless_flash.patch
-diff --git a/app/mobile.js b/app/mobile.js
---- a/app/mobile.js
-+++ b/app/mobile.js
-@@ -319,6 +319,10 @@
- pref("plugins.force.wmode", "opaque");
- #endif
- 
-+#ifdef MOZ_PLATFORM_MEEGO
-+pref("plugins.force.wmode", "opaque");
-+#endif
-+
- // URL to the Learn More link XXX this is the firefox one.  Bug 495578 fixes this.
- pref("browser.geolocation.warning.infoURL", "http://www.mozilla.com/%LOCALE%/firefox/geolocation/");
- 
-@@ -368,7 +372,7 @@
- pref("browser.ui.touch.weight.visited", 120); // percentage
- 
- // plugins
--pref("plugin.disable", true);
-+pref("plugin.disable", false);
- pref("plugin.default_plugin_disabled", true);
- pref("dom.ipc.plugins.enabled", false);
- 
--- eng_home_screen_button.patch
+++ eng_home_screen_button.patch
-# HG changeset patch
-# User roger.wang at intel.com
-# Date 1276409659 -28800
-# Branch meego
-# Node ID 4d9b87caf0c4bbc4f2ad6c9ab5a19e65dcd5c7de
-# Parent 03c227c7dc53beba7785feded3eee9c37f0444e4
-add engineering home screen button
-
-diff --git a/chrome/content/browser.xul b/chrome/content/browser.xul
---- a/chrome/content/browser.xul
-+++ b/chrome/content/browser.xul
-@@ -154,6 +154,8 @@
-     <command id="cmd_formNext" oncommand="FormHelperUI.goToNext();"/>
-     <command id="cmd_formClose" oncommand="FormHelperUI.hide();"/>
- 
-+    <command id="cmd_homescreen" oncommand="window.minimize();"/>
-+
-     <!-- find navigation -->
-     <command id="cmd_findPrevious" oncommand="FindHelperUI.goToPrevious();"/>
-     <command id="cmd_findNext" oncommand="FindHelperUI.goToNext();"/>
-@@ -295,6 +297,7 @@
-           <toolbarbutton id="tool-star" class="browser-control-button button-image" command="cmd_star"/>
-           <toolbarbutton id="tool-back" class="browser-control-button button-image" command="cmd_back"/>
-           <toolbarbutton id="tool-forward" class="browser-control-button button-image" command="cmd_forward"/>
-+	  <toolbarbutton id="tool-homescreen" class="browser-control-button button-image" command="cmd_homescreen"/>
-           <toolbarspring/>
-           <toolbarbutton id="tool-panel-open" class="page-button button-image" command="cmd_panel"/>
-         </vbox>
-diff --git a/themes/core/browser.css b/themes/core/browser.css
---- a/themes/core/browser.css
-+++ b/themes/core/browser.css
-@@ -254,6 +254,14 @@
-   list-style-image: url("chrome://browser/skin/images/bookmark-active-64.png");
- }
- 
-+#tool-homescreen {
-+  list-style-image: url("chrome://browser/skin/images/home-64.png");
-+}
-+
-+#tool-homescreen:hover:active {
-+  list-style-image: url("chrome://browser/skin/images/home-64.png");
-+}
-+
- #tool-star[starred="true"] {
-   list-style-image: url("chrome://browser/skin/images/bookmarked-default-64.png");
- }
-diff --git a/themes/core/images/home-64.png b/themes/core/images/home-64.png
-new file mode 100644
-index 0000000000000000000000000000000000000000..ff2fff0e4e14adb0ff9e2c8621d515e51bd80485
-GIT binary patch
-literal 2033
-zc$@+82M+j&P)<h;3K|Lk000e1NJLTq002M$002M;1^@s6s%dfF00001b5ch_0Itp)
-z=>Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2igV=
-z1`9d5Cza&@00(hNL_t(|+U=WfXdCAp$3Kr`on_%ju at fgtZFi~>&SE>H%ff=}_0PJ6
-z(iU%HfzW{|8H^df*{c!C0yTS)6~Z8|)@)<2u)G;FDPv~sOgF41Z8FCtBRE!Slh#pF
-zJ9Xk(KG}7ZlTW|B at X1_cN%bGev6TGa0n2x%dp_U${d-P#itMHVdjUVN4X6g(6o<uu
-zY2b6<CNKmTnRZlJzTg>6)1E$f at Ze{`U@*FG- at f_Q*4BBy- at i}{^fzzbEW3E|qUY+>
-ztDZ}jE>#T-41CQnjPt;|D-qzO#>U34pEz;i!^Xx&gA%aO(NXRA@#EhZ9UYAT|I8)8
-zi_Oi=wI@%W3{!%3?AWoU;o;$N;H^vo?60Y*dHVF}(;sM>CIEADb4D~8y{GGXA|8(?
-z<MDX17(m at _x5MprJA6K$tE#H1yt1-V127Cjb#-+exO?~RdEg2_neDg(9UUDbPN!2$
-z(`0;neD21L8}r3 at r47SK#$vJLojZ3HfG-1qfTy;$w$kZzN=HY>$f;AO4x|fEzkU05
-zPg`4?Zki_3)6?;AIQ&JaxPCYs{zB6<XLWV8yREHFKYRA<?y0G%df-+{fW0j(Ew at e6
-zWPW}=F*rCFE4BC^92|_bwzfJw9*?V~rR8=g6xwSSpsuN@=@Zj5B^r$yhG9r4Cc$Vl
-zYLu6kmo+st>7h{QaeD|<2Lgc)P19s-Y%FdVMk(?$HZ~Tosj2Y<0)cs}v0D<rT~kw&
-z0GOGXF|&EVxpU_}E;i`HhYvTT{+^kcF##-A_kC3$nM?|RuIpx at CnX}~Kqv4DkecAf
-zz+ZqrD5dV@>s*OMV(DV)x^AX8Q)U++RYD34|CrT{J(;%YTh{ogh`gkfn#fa0yzg_0
-zGm`+4u2=!!_gY<8U5?$J1O`OpMWxhGK0UzBnbiXliA15`zYm-Pyertf4tP&Q4lAYp
-zy-opE=K+N%fg*Ag_#@z2#bI9HEfM*-QtHe)LSSVcAR+|`0TKB%@Y)&=cL9GEktdW=
-z-T4TC6z4JlOw-J32#AOa_>-0C*K4ndh#&ZwQYx{Y5J+(@695o^g at pyl1H2D-6L>C<
-z&h!dUCn7&qO6e;-C<Biav<isG<5s3`E<i4Q4tU?H5TE3=3Z#@-j{qX_O{>Q5Dqt(o
-z4E)#X75=wc0djdj%4OCH{{rwgpmGB`++DzV5jmoidiyIvAZHnLq$wi{3kz9C4){)>
-zcZ1+lRtfZ4=gye}(ip_<1?x(JBBFrb0IxovwT=_`y;UK8rIeC2Cqbvv$!Y|!7Bpvo
-zmp8$p?^VDrB1h8~Qt3P?&P<I^#yXh=z8d&D at YE(+`MwO)ipY<YQq$S$ep(;2`VbJ2
-zCxEws-J5Xv{}gahL|#xzjjbvKQt at M&X0BxSZ7bRB*u?ihc3Wk#T`6 at rohLm{EL8!A
-z!yyibLz2m4#xXQB^gPhN$>CGB1Lzl#AEtApIF|_^B8Uj4X)YV#aJap(vGEMxDWbb!
-z9^lPzINWY$NpWWNfK1lV(C~U%&rmGpXlQ77-OiHk0roN|nUVy+$jHbq>gwvg=k<EE
-z3 at 14RJobP=CxCY{{697_GV;Ei$;P>I0h*he-?2_Gogp#)YZC}Cq?9_EWm|PxAFz4>
-zirgfZ01h5<d+0r2Nr1AlvWG$d8|VE3xLhtC1_5lG%hm!LW%q#J0wG{3ZQC~ByTC7j
-z@(s-aE|+T~LLdP=qm&xRvCn@*q!+lr>V8L9sRv}P0#2t>tOSv3tk>T73i#B5WdL|1
-zk0G!$Y at GKC;BvXdQm2ptTqw}KD;B`U`9S)B&kMBg`g6cTUj|dp29~-2HqJ*L at MtaY
-zC<O8&z}zN)oLj2^`3QjzHh}<Zo`b`#jHS+M8=>E^_*TY)vYXZ%R at 4aDIP>EHN~u{O
-z2>cbevw`4utaApfIjk!Q#)pT8wf+0|8*52|N~zC)pX8HHDHS67D?MvYg5~AqT)A>Z
-zWAVMBB at dYH@9*E at cDtpsvs2{=0cR18rTKSub}F~qE&cudTd;2MrUdx(^5x4r09spH
-zouyjyQ*0LNr}l02Uaz++8jaRPB9X0 at FeNu4k;v9)G+O8Ndb at yny9eBg#bR5!ySukn
-zR8(lC>H!rM6<T+9_x4yUwgtGAzWs>L=j)o7n5frvy~;{JB{OtgubP;csQ3ANUBHn{
-zW$;~H*DHg;V4J3Co~fy+%2K)VQ&Urwnx=Vz!C;%N>y_AEptK7x349cZMC$#1|DnFV
-zzMZqPv)d*oCq3bC*wxe1Q#1>wo}L~@I2?9OPELAeXJ at zd_4V!a`~8O^kw`u8k;S at L
-zZqtt43H$)?IvfsnZEfw1J$v at tZfR-J+uPgqXP<qxDBh(Bg+f|yZ?Es#wQIiX*RSsy
-zA0H1SlgT&`1OAaq0DwI#K5C+X3KnlqJFTXvSiB$!EC42px8c9EdVveT_4^vGEMMRU
-zzC&?65RuE~f%h`4S#q_SE+D|-Q<+;?e15-JN~B at A`wVa!xWVFY63guWs39UNbI3X~
-P00000NkvXXu0mjfw|UFH
-
-diff --git a/themes/core/jar.mn b/themes/core/jar.mn
---- a/themes/core/jar.mn
-+++ b/themes/core/jar.mn
-@@ -124,3 +124,4 @@
-   skin/images/task-close-40.png             (images/task-close-40.png)
-   skin/images/task-back-40.png              (images/task-back-40.png)
-   skin/images/geo-16.png                    (images/geo-16.png)
-+  skin/images/home-64.png                    (images/home-64.png)
--- fullscreen_default.patch
+++ fullscreen_default.patch
-# HG changeset patch
-# User roger.wang at intel.com
-# Date 1274952340 -28800
-# Branch meego
-# Node ID 58a4226965aefb850910b01a4da0d7e26ed6154f
-# Parent  3e3ddc7400c122d42401d299c500566b91bb0a24
-Full scrren mode by default
-
-diff --git a/chrome/content/browser.xul b/chrome/content/browser.xul
---- a/chrome/content/browser.xul
-+++ b/chrome/content/browser.xul
-@@ -59,6 +59,8 @@
-         title="&brandShortName;"
- #ifdef MOZ_PLATFORM_MAEMO
-         sizemode="fullscreen"
-+#elifdef MOZ_PLATFORM_MEEGO
-+        sizemode="fullscreen"
- #else
-         width="800"
-         height="500"
--- mailto_tel_proto.patch
+++ mailto_tel_proto.patch
-# HG changeset patch
-# User roger.wang at intel.com
-# Date 1274951042 -28800
-# Branch meego
-# Node ID 7da974f3f519cdb56f00b8f170ecd03f79d50f0f
-# Parent  15b98be453bcc63dc72eb8516563969a877177b7
-enable mailto and tel protocol
-
-diff --git a/app/mobile.js b/app/mobile.js
---- a/app/mobile.js
-+++ b/app/mobile.js
-@@ -463,6 +463,13 @@
- pref("font.default.x-western", "SwissA");
- #endif
- 
-+pref("network.protocol-handler.expose.mailto", false);
-+pref("network.protocol-handler.external.mailto", true);
-+
-+pref("network.protocol-handler.expose.tel", false);
-+pref("network.protocol-handler.external.tel", true);
-+
-+
- // See bug 545869 for details on why these are set the way they are
- pref("network.buffer.cache.count", 24);
- pref("network.buffer.cache.size",  16384);
--- meego
+++ meego
+(directory)
--- meego/add_VKB_support.diff
+++ meego/add_VKB_support.diff
+diff --git a/chrome/content/browser-ui.js b/chrome/content/browser-ui.js
+--- a/chrome/content/browser-ui.js
++++ b/chrome/content/browser-ui.js
+@@ -1567,6 +1567,10 @@
+     this._autofillContainer = document.getElementById("form-helper-autofill");
+     this._cmdPrevious = document.getElementById(this.commands.previous);
+     this._cmdNext = document.getElementById(this.commands.next);
++    
++    //hack mathod, hard code of virtual keyboard height
++    this._vkbHeight = 280;
++    this._containerHeight = this._container.getBoundingClientRect().height;
+ 
+     // Listen for form assistant messages from content
+     messageManager.addMessageListener("FormAssist:Show", this);
+@@ -1598,8 +1602,16 @@
+       maxLength: aElement.maxLength,
+       type: aElement.type,
+       isAutocomplete: aElement.isAutocomplete,
+-      list: aElement.choices
++      list: aElement.choices,
++      isValidText: aElement.isValidText
+     }
++    //resize the height of container according to vitual keyboard's close and open
++    if (this._currentElement.isValidText) {
++      this._container.setAttribute("height", this._vkbHeight);
++    } else {
++      this._container.setAttribute("height", this._containerHeight);
++    }
++
+     this._updateContainer(lastElement, this._currentElement);
+ 
+     this._zoom(Rect.fromRect(aElement.rect), Rect.fromRect(aElement.caretRect));
+diff --git a/chrome/content/forms.js b/chrome/content/forms.js
+--- a/chrome/content/forms.js
++++ b/chrome/content/forms.js
+@@ -257,6 +257,12 @@
+     return this._isNavigableElement(aElement) && this._isVisibleElement(aElement);
+   },
+ 
++  _isValidTextElement: function formHelperIsValidTextElement(aElement) {
++    if (aElement instanceof HTMLTextAreaElement || (aElement instanceof HTMLInputElement && aElement.type == "text"))
++      return this._isValidElement(aElement);
++    return false;
++  },
++
+   _isNavigableElement: function formHelperIsNavigableElement(aElement) {
+     if (aElement.disabled)
+       return false;
+@@ -398,7 +404,8 @@
+         choices: list,
+         isAutocomplete: this._isAutocomplete(this.currentElement),
+         rect: this._getRect(),
+-        caretRect: this._getCaretRect()
++        caretRect: this._getCaretRect(),
++        isValidText: this._isValidTextElement(this.currentElement)
+       },
+       hasPrevious: !!this._elements[this._currentIndex - 1],
+       hasNext: !!this._elements[this._currentIndex + 1]
--- meego/autoconnect.diff
+++ meego/autoconnect.diff
+diff --git a/chrome/content/Util.js b/chrome/content/Util.js
+--- a/chrome/content/Util.js
++++ b/chrome/content/Util.js
+@@ -210,6 +210,8 @@
+   forceOnline: function forceOnline() {
+ #ifdef MOZ_ENABLE_LIBCONIC
+     Services.io.offline = false;
++#elifdef MOZ_PLATFORM_MEEGO
++    Services.io.offline = false;
+ #endif
+   },
+ 
--- meego/copy_NSDISTMODE.diff
+++ meego/copy_NSDISTMODE.diff
+diff --git a/components/Makefile.in b/components/Makefile.in
+--- a/components/Makefile.in
++++ b/components/Makefile.in
+@@ -43,6 +43,8 @@
+ 
+ include $(DEPTH)/config/autoconf.mk
+ 
++NSDISTMODE = copy
++
+ MODULE = MobileComponents
+ XPIDL_MODULE = MobileComponents
+ 
+diff --git a/components/phone/Makefile.in b/components/phone/Makefile.in
+--- a/components/phone/Makefile.in
++++ b/components/phone/Makefile.in
+@@ -43,6 +43,8 @@
+ 
+ include $(DEPTH)/config/autoconf.mk
+ 
++NSDISTMODE = copy
++
+ MODULE_NAME     = mozphone
+ MODULE          = mozphone
+ LIBRARY_NAME    = mozphone
--- meego/download_dlg_open.diff
+++ meego/download_dlg_open.diff
+diff --git a/chrome/content/downloads.js b/chrome/content/downloads.js
+--- a/chrome/content/downloads.js
++++ b/chrome/content/downloads.js
+@@ -356,12 +356,25 @@
+   },
+ 
+   openDownload: function dv_openDownload(aItem) {
+-    let f = this._getLocalFile(aItem.getAttribute("file"));
+-    try {
+-      f.launch();
+-    } catch (ex) { }
+ 
+-    // TODO: add back the code for "dontAsk"?
++    let f = aItem.getAttribute("file");
++
++    var exe = Components.classes["@mozilla.org/file/local;1"]
++      .createInstance(Components.interfaces.nsILocalFile);
++    exe.initWithPath("/usr/bin/xdg-open");
++
++    // create an nsIProcess
++    var process = Components.classes["@mozilla.org/process/util;1"]
++      .createInstance(Components.interfaces.nsIProcess);
++    process.init(exe);
++
++    // Run the process.
++    // If first param is true, calling thread will be blocked until
++    // called process terminates.
++
++    var args = [f];
++    process.run(false, args, args.length);
++
+   },
+ 
+   removeDownload: function dv_removeDownload(aItem) {
--- meego/eng_home_screen_button.diff
+++ meego/eng_home_screen_button.diff
+changeset:   1852:89a1cd5ebea1
+tag:         meego/eng_home_screen_button.diff
+user:        roger.wang at intel.com
+date:        Sun Jun 13 14:14:19 2010 +0800
+summary:     add engineering home screen button
+
+diff --git a/chrome/content/browser.xul b/chrome/content/browser.xul
+--- a/chrome/content/browser.xul
++++ b/chrome/content/browser.xul
+@@ -163,6 +163,8 @@
+     <command id="cmd_formNext" oncommand="FormHelperUI.goToNext();"/>
+     <command id="cmd_formClose" oncommand="FormHelperUI.hide();"/>
+ 
++    <command id="cmd_homescreen" oncommand="window.minimize();"/>
++
+     <!-- find navigation -->
+     <command id="cmd_findPrevious" oncommand="FindHelperUI.goToPrevious();"/>
+     <command id="cmd_findNext" oncommand="FindHelperUI.goToNext();"/>
+@@ -307,6 +309,7 @@
+           <toolbarbutton id="tool-star" class="browser-control-button button-image" command="cmd_star"/>
+           <toolbarbutton id="tool-back" class="browser-control-button button-image" command="cmd_back"/>
+           <toolbarbutton id="tool-forward" class="browser-control-button button-image" command="cmd_forward"/>
++	  <toolbarbutton id="tool-homescreen" class="browser-control-button button-image" command="cmd_homescreen"/>
+           <toolbarspring/>
+           <toolbarbutton id="tool-panel-open" class="page-button button-image" command="cmd_panel"/>
+         </vbox>
+diff --git a/themes/core/browser.css b/themes/core/browser.css
+--- a/themes/core/browser.css
++++ b/themes/core/browser.css
+@@ -304,6 +304,14 @@
+   list-style-image: url("chrome://browser/skin/images/bookmark-active-64.png");
+ }
+ 
++#tool-homescreen {
++  list-style-image: url("chrome://browser/skin/images/home-64.png");
++}
++
++#tool-homescreen:hover:active {
++  list-style-image: url("chrome://browser/skin/images/home-64.png");
++}
++
+ #tool-star[starred="true"] {
+   list-style-image: url("chrome://browser/skin/images/bookmarked-default-64.png");
+ }
+diff --git a/themes/core/jar.mn b/themes/core/jar.mn
+--- a/themes/core/jar.mn
++++ b/themes/core/jar.mn
+@@ -143,3 +143,4 @@
+   skin/images/task-back-40.png              (images/task-back-40.png)
+   skin/images/task-back-rtl-40.png          (images/task-back-rtl-40.png)
+   skin/images/geo-16.png                    (images/geo-16.png)
++  skin/images/home-64.png                    (images/home-64.png)
+diff --git a/themes/core/images/home-64.png b/themes/core/images/home-64.png
+new file mode 100644
+index 0000000000000000000000000000000000000000..ff2fff0e4e14adb0ff9e2c8621d515e51bd80485
+GIT binary patch
+literal 2033
+zc$@+82M+j&P)<h;3K|Lk000e1NJLTq002M$002M;1^@s6s%dfF00001b5ch_0Itp)
+z=>Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2igV=
+z1`9d5Cza&@00(hNL_t(|+U=WfXdCAp$3Kr`on_%ju at fgtZFi~>&SE>H%ff=}_0PJ6
+z(iU%HfzW{|8H^df*{c!C0yTS)6~Z8|)@)<2u)G;FDPv~sOgF41Z8FCtBRE!Slh#pF
+zJ9Xk(KG}7ZlTW|B at X1_cN%bGev6TGa0n2x%dp_U${d-P#itMHVdjUVN4X6g(6o<uu
+zY2b6<CNKmTnRZlJzTg>6)1E$f at Ze{`U@*FG- at f_Q*4BBy- at i}{^fzzbEW3E|qUY+>
+ztDZ}jE>#T-41CQnjPt;|D-qzO#>U34pEz;i!^Xx&gA%aO(NXRA@#EhZ9UYAT|I8)8
+zi_Oi=wI@%W3{!%3?AWoU;o;$N;H^vo?60Y*dHVF}(;sM>CIEADb4D~8y{GGXA|8(?
+z<MDX17(m at _x5MprJA6K$tE#H1yt1-V127Cjb#-+exO?~RdEg2_neDg(9UUDbPN!2$
+z(`0;neD21L8}r3 at r47SK#$vJLojZ3HfG-1qfTy;$w$kZzN=HY>$f;AO4x|fEzkU05
+zPg`4?Zki_3)6?;AIQ&JaxPCYs{zB6<XLWV8yREHFKYRA<?y0G%df-+{fW0j(Ew at e6
+zWPW}=F*rCFE4BC^92|_bwzfJw9*?V~rR8=g6xwSSpsuN@=@Zj5B^r$yhG9r4Cc$Vl
+zYLu6kmo+st>7h{QaeD|<2Lgc)P19s-Y%FdVMk(?$HZ~Tosj2Y<0)cs}v0D<rT~kw&
+z0GOGXF|&EVxpU_}E;i`HhYvTT{+^kcF##-A_kC3$nM?|RuIpx at CnX}~Kqv4DkecAf
+zz+ZqrD5dV@>s*OMV(DV)x^AX8Q)U++RYD34|CrT{J(;%YTh{ogh`gkfn#fa0yzg_0
+zGm`+4u2=!!_gY<8U5?$J1O`OpMWxhGK0UzBnbiXliA15`zYm-Pyertf4tP&Q4lAYp
+zy-opE=K+N%fg*Ag_#@z2#bI9HEfM*-QtHe)LSSVcAR+|`0TKB%@Y)&=cL9GEktdW=
+z-T4TC6z4JlOw-J32#AOa_>-0C*K4ndh#&ZwQYx{Y5J+(@695o^g at pyl1H2D-6L>C<
+z&h!dUCn7&qO6e;-C<Biav<isG<5s3`E<i4Q4tU?H5TE3=3Z#@-j{qX_O{>Q5Dqt(o
+z4E)#X75=wc0djdj%4OCH{{rwgpmGB`++DzV5jmoidiyIvAZHnLq$wi{3kz9C4){)>
+zcZ1+lRtfZ4=gye}(ip_<1?x(JBBFrb0IxovwT=_`y;UK8rIeC2Cqbvv$!Y|!7Bpvo
+zmp8$p?^VDrB1h8~Qt3P?&P<I^#yXh=z8d&D at YE(+`MwO)ipY<YQq$S$ep(;2`VbJ2
+zCxEws-J5Xv{}gahL|#xzjjbvKQt at M&X0BxSZ7bRB*u?ihc3Wk#T`6 at rohLm{EL8!A
+z!yyibLz2m4#xXQB^gPhN$>CGB1Lzl#AEtApIF|_^B8Uj4X)YV#aJap(vGEMxDWbb!
+z9^lPzINWY$NpWWNfK1lV(C~U%&rmGpXlQ77-OiHk0roN|nUVy+$jHbq>gwvg=k<EE
+z3 at 14RJobP=CxCY{{697_GV;Ei$;P>I0h*he-?2_Gogp#)YZC}Cq?9_EWm|PxAFz4>
+zirgfZ01h5<d+0r2Nr1AlvWG$d8|VE3xLhtC1_5lG%hm!LW%q#J0wG{3ZQC~ByTC7j
+z@(s-aE|+T~LLdP=qm&xRvCn@*q!+lr>V8L9sRv}P0#2t>tOSv3tk>T73i#B5WdL|1
+zk0G!$Y at GKC;BvXdQm2ptTqw}KD;B`U`9S)B&kMBg`g6cTUj|dp29~-2HqJ*L at MtaY
+zC<O8&z}zN)oLj2^`3QjzHh}<Zo`b`#jHS+M8=>E^_*TY)vYXZ%R at 4aDIP>EHN~u{O
+z2>cbevw`4utaApfIjk!Q#)pT8wf+0|8*52|N~zC)pX8HHDHS67D?MvYg5~AqT)A>Z
+zWAVMBB at dYH@9*E at cDtpsvs2{=0cR18rTKSub}F~qE&cudTd;2MrUdx(^5x4r09spH
+zouyjyQ*0LNr}l02Uaz++8jaRPB9X0 at FeNu4k;v9)G+O8Ndb at yny9eBg#bR5!ySukn
+zR8(lC>H!rM6<T+9_x4yUwgtGAzWs>L=j)o7n5frvy~;{JB{OtgubP;csQ3ANUBHn{
+zW$;~H*DHg;V4J3Co~fy+%2K)VQ&Urwnx=Vz!C;%N>y_AEptK7x349cZMC$#1|DnFV
+zzMZqPv)d*oCq3bC*wxe1Q#1>wo}L~@I2?9OPELAeXJ at zd_4V!a`~8O^kw`u8k;S at L
+zZqtt43H$)?IvfsnZEfw1J$v at tZfR-J+uPgqXP<qxDBh(Bg+f|yZ?Es#wQIiX*RSsy
+zA0H1SlgT&`1OAaq0DwI#K5C+X3KnlqJFTXvSiB$!EC42px8c9EdVveT_4^vGEMMRU
+zzC&?65RuE~f%h`4S#q_SE+D|-Q<+;?e15-JN~B at A`wVa!xWVFY63guWs39UNbI3X~
+P00000NkvXXu0mjfw|UFH
+
--- meego/force_flash_opaque.diff
+++ meego/force_flash_opaque.diff
+diff --git a/app/mobile.js b/app/mobile.js
+--- a/app/mobile.js
++++ b/app/mobile.js
+@@ -318,6 +318,8 @@
+ 
+ #ifdef MOZ_PLATFORM_MAEMO
+ pref("plugins.force.wmode", "opaque");
++#elifdef MOZ_PLATFORM_MEEGO
++pref("plugins.force.wmode", "opaque");
+ #endif
+ 
+ // URL to the Learn More link XXX this is the firefox one.  Bug 495578 fixes this.
--- meego/fullscreen_default.diff
+++ meego/fullscreen_default.diff
+diff --git a/chrome/content/browser.xul b/chrome/content/browser.xul
+--- a/chrome/content/browser.xul
++++ b/chrome/content/browser.xul
+@@ -62,6 +62,8 @@
+         title="&brandShortName;"
+ #ifdef MOZ_PLATFORM_MAEMO
+         sizemode="fullscreen"
++#elifdef MOZ_PLATFORM_MEEGO
++        sizemode="fullscreen"
+ #else
+         width="800"
+         height="500"
--- meego/mailto_tel_proto.diff
+++ meego/mailto_tel_proto.diff
+diff --git a/app/mobile.js b/app/mobile.js
+--- a/app/mobile.js
++++ b/app/mobile.js
+@@ -474,6 +474,13 @@
+ pref("font.default.x-western", "SwissA");
+ #endif
+ 
++pref("network.protocol-handler.expose.mailto", false);
++pref("network.protocol-handler.external.mailto", true);
++
++pref("network.protocol-handler.expose.tel", false);
++pref("network.protocol-handler.external.tel", true);
++
++
+ // See bug 545869 for details on why these are set the way they are
+ pref("network.buffer.cache.count", 24);
+ pref("network.buffer.cache.size",  16384);
--- meego/popup_position_meego_theme.diff
+++ meego/popup_position_meego_theme.diff
+diff --git a/chrome/content/browser-ui.js b/chrome/content/browser-ui.js
+--- a/chrome/content/browser-ui.js
++++ b/chrome/content/browser-ui.js
+@@ -336,7 +336,7 @@
+   get toolbarH() {
+     if (!this._toolbarH) {
+       let toolbar = document.getElementById("toolbar-main");
+-      this._toolbarH = toolbar.boxObject.height;
++      this._toolbarH =  Math.round(toolbar.getBoundingClientRect().height);
+     }
+     return this._toolbarH;
+   },
+@@ -355,6 +355,7 @@
+   },
+ 
+   sizeControls: function(windowW, windowH) {
++    this._toolbarH = null;
+     // tabs
+     document.getElementById("tabs").resize();
+ 
--- meego/turnoff_e10s_sync.diff
+++ meego/turnoff_e10s_sync.diff
+diff --git a/app/mobile.js b/app/mobile.js
+--- a/app/mobile.js
++++ b/app/mobile.js
+@@ -42,7 +42,7 @@
+ 
+ pref("browser.tabs.warnOnClose", true);
+ #ifdef MOZ_IPC
+-pref("browser.tabs.remote", true);
++pref("browser.tabs.remote", false);
+ #else
+ pref("browser.tabs.remote", false);
+ #endif
+diff --git a/chrome/content/browser-ui.js b/chrome/content/browser-ui.js
+--- a/chrome/content/browser-ui.js
++++ b/chrome/content/browser-ui.js
+@@ -428,7 +428,7 @@
+ 
+ #ifdef MOZ_SERVICES_SYNC
+       // Init the sync system
+-      WeaveGlue.init();
++      //WeaveGlue.init();
+ #endif
+     });
+ 
+diff --git a/confvars.sh b/confvars.sh
+--- a/confvars.sh
++++ b/confvars.sh
+@@ -52,7 +52,7 @@
+ 
+ MOZ_XUL_APP=1
+ MOZ_ENABLE_LIBXUL=1
+-MOZ_SERVICES_SYNC=1
++MOZ_SERVICES_SYNC=
+ MOZ_NO_XPCOM_OBSOLETE=1
+ if test "$LIBXUL_SDK"; then
+ MOZ_XULRUNNER=1
--- pmo158715_enable-plugins.diff
+++ pmo158715_enable-plugins.diff
+diff --git a/app/mobile.js b/app/mobile.js
+--- a/app/mobile.js
++++ b/app/mobile.js
+@@ -376,9 +376,9 @@
+ pref("browser.ui.touch.weight.visited", 120); // percentage
+ 
+ // plugins
+-pref("plugin.disable", true);
+-pref("plugin.default_plugin_disabled", true);
+-pref("dom.ipc.plugins.enabled", false);
++pref("plugin.disable", false);
++pref("plugin.default_plugin_disabled", false);
++pref("dom.ipc.plugins.enabled", true);
+ 
+ // product URLs
+ // The breakpad report server to link to in about:crashes
--- pmo161147_tapandhold_to_flash.diff
+++ pmo161147_tapandhold_to_flash.diff
+diff --git a/chrome/content/content.js b/chrome/content/content.js
+--- a/chrome/content/content.js
++++ b/chrome/content/content.js
+@@ -781,6 +781,20 @@
+ 
+     let popupNode = aEvent.originalTarget;
+ 
++    // Check if the element is an embed element (e.g. flash):
++    if (popupNode.tagName == "EMBED") {
++        // Generate a right click mouse event to make possible to show
++        // context menu for plugins:
++        var event = document.createEvent("MouseEvents");
++        event.initMouseEvent("mousedown",  true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 2, null);
++        popupNode.dispatchEvent(event);
++        event = document.createEvent("MouseEvents");
++        event.initMouseEvent("mouseup",  true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 2, null);
++        popupNode.dispatchEvent(event);
++        // Let the plugin handle the context menu:
++        return;
++    }
++
+     // Do checks for nodes that never have children.
+     if (popupNode.nodeType == Ci.nsIDOMNode.ELEMENT_NODE) {
+       // See if the user clicked on an image.
--- pmo169118_disable_warn_mailto.diff
+++ pmo169118_disable_warn_mailto.diff
+diff --git a/app/mobile.js b/app/mobile.js
+--- a/app/mobile.js
++++ b/app/mobile.js
+@@ -475,3 +475,7 @@
+ pref("services.sync.client.type", "mobile");
+ pref("services.sync.registerEngines", "Tab,Bookmarks,Form,History,Password");
+ pref("services.sync.autoconnectDelay", 5);
++#ifdef MOZ_PLATFORM_MAEMO
++pref("network.protocol-handler.warn-external.mailto", false);
++#endif
++
--- pmo170282_dynamic_smart_tap_region.diff
+++ pmo170282_dynamic_smart_tap_region.diff
+diff --git a/app/mobile.js b/app/mobile.js
+--- a/app/mobile.js
++++ b/app/mobile.js
+@@ -375,6 +375,13 @@
+ pref("browser.ui.touch.bottom", 4);
+ pref("browser.ui.touch.weight.visited", 120); // percentage
+ 
++// Touch radius for dynamic smart tap rectangle:
++pref("browser.ui.touch.dyn.left", 8);
++pref("browser.ui.touch.dyn.right", 8);
++pref("browser.ui.touch.dyn.top", 12);
++pref("browser.ui.touch.dyn.bottom", 4);
++pref("browser.ui.touch.dyn.size", 400); //percentage
++
+ // plugins
+ pref("plugin.disable", false);
+ pref("plugin.default_plugin_disabled", false);
--- pmo170528_tab_moving_rtl_V2.diff
+++ pmo170528_tab_moving_rtl_V2.diff
+diff --git a/themes/core/browser.css b/themes/core/browser.css
+--- a/themes/core/browser.css
++++ b/themes/core/browser.css
+@@ -953,14 +953,23 @@
+ }
+ 
+ /* Left sidebar (tabs)  ---------------------------------------------------- */
+-#tabs-container {
++#tabs-container:-moz-locale-dir(ltr) {
+   -moz-padding-start: 4px; /* allow the thumbnails to get close to the edge */
+   -moz-padding-end: 8px; /* core spacing */
+   padding-bottom: 8px; /* core spacing */
+   -moz-border-end: 3px solid #262629;
+ }
+ 
+-#tabs {
++#tabs-container:-moz-locale-dir(rtl) {
++  -moz-padding-start: 4px; /* allow the thumbnails to get close to the edge */
++  -moz-padding-end: 8px; /* core spacing */
++  -moz-box-align: end;
++  padding-bottom: 8px; /* core spacing */
++  border-right: 3px solid #36373b;
++  max-width: -moz-max-content;
++}
++
++#tabs:-moz-locale-dir(ltr) {
+   display: block;
+   -moz-column-width: 128px;
+   -moz-column-gap: 0;
+@@ -970,9 +979,28 @@
+   background-color: transparent;
+ }
+ 
+-#tabs-controls {
++#tabs:-moz-locale-dir(rtl) {
++  display: block;
++  max-width: 128px;
++  -moz-column-width: 128px;
++  -moz-column-gap: 0;
++  -moz-user-focus: ignore;
++  margin: 0;
++  padding: 0;
++  background-color: transparent;
++}
++
++#tabs-controls:-moz-locale-dir(ltr) {
+   margin-top: 8px; /* core spacing */
++  -moz-box-pack: end;
++}
++
++#tabs-controls:-moz-locale-dir(rtl) {
++  display: block;
++  max-width: 128px;
++  -moz-column-width: 128px;
+   -moz-box-pack: start;
++  margin-top: 8px; /* core spacing */
+ }
+ 
+ box[type="documenttab"] {
--- pmo170814_pageFitGranularity.diff
+++ pmo170814_pageFitGranularity.diff
+diff --git a/app/mobile.js b/app/mobile.js
+--- a/app/mobile.js
++++ b/app/mobile.js
+@@ -359,7 +359,7 @@
+ pref("browser.ui.kinetic.swipeLength", 160);
+ 
+ // zooming
+-pref("browser.ui.zoom.pageFitGranularity", 10); // don't zoom to fit by less than 1/10.
++pref("browser.ui.zoom.pageFitGranularity", 9); // don't zoom to fit by less than 1/10.
+ pref("browser.ui.zoom.animationFps", 60);
+ pref("browser.ui.zoom.animationDuration", 350); // ms duration of double-tap zoom animation
+ 
--- pmo170950-set_default_action.diff
+++ pmo170950-set_default_action.diff
+diff --git a/components/HelperAppDialog.js b/components/HelperAppDialog.js
+--- a/components/HelperAppDialog.js
++++ b/components/HelperAppDialog.js
+@@ -95,6 +95,8 @@
+         aLauncher.saveToDisk(null, false);
+       }
+       else if (choice == 1) {
++        aLauncher.MIMEInfo.preferredAction =
++          Components.interfaces.nsIMIMEInfo.useSystemDefault;
+         aLauncher.launchWithApplication(null, false);
+       }
+       else {
--- pmo172885_web_page_panning_under_opened_CSM.diff
+++ pmo172885_web_page_panning_under_opened_CSM.diff
+diff --git a/chrome/content/InputHandler.js b/chrome/content/InputHandler.js
+--- a/chrome/content/InputHandler.js
++++ b/chrome/content/InputHandler.js
+@@ -350,6 +350,14 @@
+     if (aEvent.button !== 0 && aEvent.type != "contextmenu")
+       return;
+ 
++    if (ContextHelper.popupNode) {
++      if (this._clicker)
++        this._clicker.panBegin();
++      if (this._dragger)
++        this._dragger.dragStop(0, 0, this._targetScrollInterface);
++      this.cancelPending();
++    }
++
+     switch (aEvent.type) {
+       case "mousedown":
+         this._onMouseDown(aEvent);
--- pmo173372_snapping_rtl.diff
+++ pmo173372_snapping_rtl.diff
+diff --git a/chrome/content/browser.js b/chrome/content/browser.js
+--- a/chrome/content/browser.js
++++ b/chrome/content/browser.js
+@@ -1008,8 +1008,20 @@
+     if (!dx) dx = 0;
+     if (!dy) dy = 0;
+ 
+-    let leftbarCBR = document.getElementById('tabs-container').getBoundingClientRect();
+-    let ritebarCBR = document.getElementById('browser-controls').getBoundingClientRect();
++    let leftbarCBR;
++    let ritebarCBR;
++
++    // Workaround...
++    // in case of rtl the containers are swapped...so we swap them here, too!
++    if( (document.getElementById('tabs-container').getBoundingClientRect().left) > (document.getElementById('browser-controls').getBoundingClientRect().left) ) {
++      // RTL
++      ritebarCBR  = document.getElementById('tabs-container').getBoundingClientRect();
++      leftbarCBR = document.getElementById('browser-controls').getBoundingClientRect();
++    } else {
++      // LTR
++      leftbarCBR = document.getElementById('tabs-container').getBoundingClientRect();
++      ritebarCBR = document.getElementById('browser-controls').getBoundingClientRect();
++    }
+ 
+     if (leftbarCBR.left > ritebarCBR.left)
+       [ritebarCBR, leftbarCBR] = [leftbarCBR, ritebarCBR]; // switch in RTL case
--- pmo174480_consistent_focus_behaviour.diff
+++ pmo174480_consistent_focus_behaviour.diff
+diff --git a/chrome/content/bindings.xml b/chrome/content/bindings.xml
+--- a/chrome/content/bindings.xml
++++ b/chrome/content/bindings.xml
+@@ -37,6 +37,12 @@
+           setTimeout(function() { BrowserUI.activePanel = null }, 0);
+         ]]>
+       </handler>
++      <handler event="blur" phase="capturing">
++        <![CDATA[
++          // suppress disconnect of autocomplete controller
++          this._dontBlur = true;
++        ]]>
++      </handler>
+       <handler event="text" phase="bubbling"
+                action="if (this.mController.input == this) this.mController.handleText();"/>
+     </handlers>
--- pmo174512_rtl_tabs_style.diff
+++ pmo174512_rtl_tabs_style.diff
+diff --git a/chrome/content/tabs.xml b/chrome/content/tabs.xml
+--- a/chrome/content/tabs.xml
++++ b/chrome/content/tabs.xml
+@@ -126,13 +126,23 @@
+       <method name="_updateWidth">
+         <body>
+           <![CDATA[
+-            let firstBox = this.firstChild.getBoundingClientRect();
+-            let lastBox = this.lastChild.getBoundingClientRect();
+-            let columnsCount = Math.ceil(this.childNodes.length / Math.floor(this.style.height / firstBox.height));
+-            if (this._columnsCount != columnsCount) {
+-              let width = Math.max(lastBox.right - firstBox.left, firstBox.right - lastBox.left);
+-              this.style.width = width + "px";
+-              this._columnsCount = columnsCount;
++          if ((document.getElementById('tabs-container').getBoundingClientRect().left) > (document.getElementById('browser-controls').getBoundingClientRect().left)) {
++              let controlsWidth = document.getElementById('browser-controls').getBoundingClientRect().width;
++              let completeWidth = controlsWidth + this.lastChild.boxObject.x + 8;
++
++              let boundingBox = this.firstChild.getBoundingClientRect();
++              let columnsCount = Math.ceil(this.childNodes.length / Math.floor(this.style.height / boundingBox.height));
++              if (this._columnsCount != columnsCount) {
++                this.style.width = ( (this.firstChild.boxObject.x - completeWidth) + (2 * boundingBox.width) ) + "px";
++                this._columnsCount = columnsCount;
++              }
++            } else {
++              let boundingBox = this.firstChild.getBoundingClientRect();
++              let columnsCount = Math.ceil(this.childNodes.length / Math.floor(this.style.height / boundingBox.height));
++              if (this._columnsCount != columnsCount) {
++                this.style.width = (this.lastChild.boxObject.x + boundingBox.width) + "px";
++                this._columnsCount = columnsCount;
++              }
+             }
+           ]]>
+         </body>
+diff --git a/themes/core/browser.css b/themes/core/browser.css
+--- a/themes/core/browser.css
++++ b/themes/core/browser.css
+@@ -961,12 +961,15 @@
+ }
+ 
+ #tabs-container:-moz-locale-dir(rtl) {
++  display: moz-box;
++  -moz-column-width: 128px;
++  -moz-box-align: end;
++  -moz-box-pack: end;
+   -moz-padding-start: 4px; /* allow the thumbnails to get close to the edge */
+   -moz-padding-end: 8px; /* core spacing */
+-  -moz-box-align: end;
++  max-width: -moz-max-content;
+   padding-bottom: 8px; /* core spacing */
+-  border-right: 3px solid #36373b;
+-  max-width: -moz-max-content;
++  border-right: 3px solid #262629;
+ }
+ 
+ #tabs:-moz-locale-dir(ltr) {
+@@ -981,28 +984,20 @@
+ 
+ #tabs:-moz-locale-dir(rtl) {
+   display: block;
+-  max-width: 128px;
+   -moz-column-width: 128px;
+   -moz-column-gap: 0;
+   -moz-user-focus: ignore;
++  max-width: -moz-max-content;
+   margin: 0;
+   padding: 0;
+   background-color: transparent;
+ }
+ 
+-#tabs-controls:-moz-locale-dir(ltr) {
++#tabs-controls:{
+   margin-top: 8px; /* core spacing */
+   -moz-box-pack: end;
+ }
+ 
+-#tabs-controls:-moz-locale-dir(rtl) {
+-  display: block;
+-  max-width: 128px;
+-  -moz-column-width: 128px;
+-  -moz-box-pack: start;
+-  margin-top: 8px; /* core spacing */
+-}
+-
+ box[type="documenttab"] {
+   /* display:block allow us to change the line-height, it won't work otherwise */
+   display: block;
--- pmo177889_copy_paste_fennec.diff
+++ pmo177889_copy_paste_fennec.diff
+diff --git a/chrome/content/browser-ui.js b/chrome/content/browser-ui.js
+--- a/chrome/content/browser-ui.js
++++ b/chrome/content/browser-ui.js
+@@ -2224,11 +2224,35 @@
+     Browser.addTab(ContextHelper.popupState.linkURL, false, Browser.selectedTab);
+   },
+ 
++  copyLinkLocation: function cc_copyLinkLocation(aEvent) {
++    messageManager.sendAsyncMessage("Browser:ContextMenuCommandTriggered", {command: "cmd_copyLink", cmd_argument: ContextHelper.popupState.linkURL});
++  },
++
+   saveImage: function cc_saveImage() {
+     let browser = ContextHelper.popupState.target;
+     saveImageURL(ContextHelper.popupState.mediaURL, null, "SaveImageTitle", false, false, browser.documentURI);
+   },
+ 
++  copyImageLocation: function cc_copyImageLocation() {
++    messageManager.sendAsyncMessage("Browser:ContextMenuCommandTriggered", {command: "cmd_copyImageLocation", cmd_argument: ContextHelper.popupState.mediaURL});
++  },
++
++  copyImageContents: function cc_copyImageContents() {
++    messageManager.sendAsyncMessage("Browser:ContextMenuCommandTriggered", {command: "cmd_copyImageContents"});
++  },
++
++  copy: function cc_copy() {
++    messageManager.sendAsyncMessage("Browser:ContextMenuCommandTriggered", {command: "cmd_copy"});
++  },
++
++  cut: function cc_cut() {
++     messageManager.sendAsyncMessage("Browser:ContextMenuCommandTriggered", {command: "cmd_cut"});
++  },
++
++  paste: function cc_paste() {
++    messageManager.sendAsyncMessage("Browser:ContextMenuCommandTriggered", {command: "cmd_paste"});
++  },
++
+   shareLink: function cc_shareLink() {
+     let state = ContextHelper.popupState;
+     SharingUI.show(state.linkURL, state.linkTitle);
+diff --git a/chrome/content/browser.xul b/chrome/content/browser.xul
+--- a/chrome/content/browser.xul
++++ b/chrome/content/browser.xul
+@@ -554,9 +554,27 @@
+           <richlistitem class="context-command" id="context-openinnewtab" type="link-saveable" onclick="ContextCommands.openInNewTab();">
+             <label value="&contextOpenInNewTab.label;"/>
+           </richlistitem>
++          <richlistitem class="context-command" id="context-copylinklocation" type="link-saveable" onclick="ContextCommands.copyLinkLocation();">
++            <label value="&copylink.label;"/>
++          </richlistitem>
+           <richlistitem class="context-command" id="context-saveimage" type="image-loaded" onclick="ContextCommands.saveImage();">
+             <label value="&contextSaveImage.label;"/>
+           </richlistitem>
++          <richlistitem class="context-command" id="context-copyimagelocation" type="image-loaded" onclick="ContextCommands.copyImageLocation();">
++            <label value="&contextCopyImageLocation.label;"/>
++          </richlistitem>
++          <richlistitem class="context-command" id="context-copyimagecontents" type="image-loaded" onclick="ContextCommands.copyImageContents();">
++            <label value="&contextCopyImage.label;"/>
++          </richlistitem>
++          <richlistitem class="context-command" id="context-copy" type="content-copyable" onclick="ContextCommands.copy();">
++            <label value="&copy.label;"/>
++          </richlistitem>
++          <richlistitem class="context-command" id="context-cut" type="content-cuttable" onclick="ContextCommands.cut();">
++            <label value="&cut.label;"/>
++          </richlistitem>
++          <richlistitem class="context-command" id="context-paste" type="content-pasteable" onclick="ContextCommands.paste();">
++            <label value="&paste.label;"/>
++          </richlistitem>
+           <richlistitem class="context-command" id="context-share-link" type="link-shareable" onclick="ContextCommands.shareLink();">
+             <label value="&contextShareLink.label;"/>
+           </richlistitem>
+diff --git a/chrome/content/content.js b/chrome/content/content.js
+--- a/chrome/content/content.js
++++ b/chrome/content/content.js
+@@ -805,6 +805,14 @@
+       }
+     }
+ 
++    let clipboardCommands = docShell.getInterface(Ci.nsIClipboardCommands);
++    if(clipboardCommands.canCopySelection())
++      state.types.push("content-copyable");
++    if(clipboardCommands.canCutSelection() && popupNode.isContentEditable)
++      state.types.push("content-cuttable");
++    if(clipboardCommands.canPaste() && popupNode.isContentEditable)
++      state.types.push("content-pasteable");
++
+     let elem = popupNode;
+     while (elem) {
+       if (elem.nodeType == Ci.nsIDOMNode.ELEMENT_NODE) {
+@@ -830,6 +838,7 @@
+       if (this._types[i].handler(state, popupNode))
+         state.types.push(this._types[i].name);
+     
++    addMessageListener("Browser:ContextMenuCommandTriggered", this);
+     sendAsyncMessage("Browser:ContextMenu", state);
+   },
+ 
+@@ -843,6 +852,39 @@
+    */
+   registerType: function registerType(aName, aHandler) {
+     this._types.push({name: aName, handler: aHandler});
++  },
++
++  receiveMessage: function ch_receiveMessage(aMessage) {
++    if(aMessage.name == "Browser:ContextMenuCommandTriggered") {
++      removeMessageListener("Browser:ContextMenuCommandTriggered", this);
++      var json = aMessage.json;
++
++      let clipboardCommands = docShell.getInterface(Ci.nsIClipboardCommands);
++      switch(json.command) {
++        case "cmd_copy":
++          clipboardCommands.copySelection();
++          break;
++        case "cmd_cut":
++          clipboardCommands.cutSelection();
++          break;
++        case "cmd_paste":
++          clipboardCommands.paste();
++          break;
++        case "cmd_copyLink":
++        case "cmd_copyImageLocation":
++          // Work around, as clipboardCommands.copyLinkLocation() & clipboardCommands.copyImageLocation() fail with debug messages:
++          // WARNING: NS_ENSURE_TRUE(node) failed: file build-tree/mozilla/layout/base/nsDocumentViewer.cpp, line 2552
++          // WARNING: NS_ENSURE_TRUE(node) failed: file build-tree/mozilla/layout/base/nsDocumentViewer.cpp, line 2571
++          const gClipboardHelper = Cc["@mozilla.org/widget/clipboardhelper;1"].getService(Ci.nsIClipboardHelper);
++          gClipboardHelper.copyString(json.cmd_argument);
++          break;
++        case "cmd_copyImageContents":
++          clipboardCommands.copyImageContents();
++          break;
++        default:
++          break;
++      }
++    }
+   }
+ };
+ 
+diff --git a/locales/en-US/chrome/browser.dtd b/locales/en-US/chrome/browser.dtd
+--- a/locales/en-US/chrome/browser.dtd
++++ b/locales/en-US/chrome/browser.dtd
+@@ -88,6 +88,8 @@
+ 
+ <!ENTITY contextOpenInNewTab.label    "Open Link in New Tab">
+ <!ENTITY contextSaveImage.label       "Save Image">
++<!ENTITY contextCopyImageLocation.label "Copy Image Location">
++<!ENTITY contextCopyImage.label       "Copy Image">
+ <!ENTITY contextShareLink.label       "Share Link">
+ <!ENTITY contextShareImage.label      "Share Image">
+ <!ENTITY contextEditBookmark.label    "Edit">
--- pmo179255_panning.diff
+++ pmo179255_panning.diff
+diff --git a/chrome/content/InputHandler.js b/chrome/content/InputHandler.js
+--- a/chrome/content/InputHandler.js
++++ b/chrome/content/InputHandler.js
+@@ -120,6 +120,9 @@
+ 
+   /* when set to true, next click won't be dispatched */
+   this._suppressNextClick = false;
++  
++  /* content kinetic scrolling state */
++  this._kineticRunning = false;
+ 
+   /* these handle dragging of both chrome elements and content */
+   window.addEventListener("mousedown", this, true);
+@@ -422,6 +425,13 @@
+    * We grab() in here.
+    */
+   _onMouseDown: function _onMouseDown(aEvent) {
++    // stop kinetic panning if screen is tapped
++    if (this._kinetic.isActive()) {
++      this._kinetic.end();
++      this._owner._kineticRunning = true;
++    }
++    else this._owner._kineticRunning = false;
++
+     this._owner.allowClicks();
+ 
+     let dragData = this._dragData;
+@@ -449,7 +459,7 @@
+                                             : null;
+     this._clicker = (targetClicker) ? targetClicker.customClicker : null;
+ 
+-    if (this._clicker)
++    if (this._clicker && !this._owner._kineticRunning)
+       this._clicker.mouseDown(aEvent.clientX, aEvent.clientY);
+ 
+     if (targetScrollInterface && this._dragger.isDraggable(targetScrollbox, targetScrollInterface))
+@@ -516,7 +526,7 @@
+     }
+ 
+     let clicker = this._clicker;
+-    if (clicker) {
++    if (clicker && !this._owner._kineticRunning) {
+       // Let clicker know when mousemove begins a pan
+       if (!oldIsPan && dragData.isPan())
+         clicker.panBegin();
+diff --git a/chrome/content/browser.js b/chrome/content/browser.js
+--- a/chrome/content/browser.js
++++ b/chrome/content/browser.js
+@@ -1632,7 +1632,7 @@
+     TapHighlightHelper.hide();
+ 
+     // Cancel the mouse click if we are showing a context menu
+-    if (!ContextHelper.popupState)
++    if (!ContextHelper.popupState && !ih._kineticRunning)
+       this._dispatchMouseEvent("Browser:MouseUp", aX, aY, aModifiers);
+     this._dispatchMouseEvent("Browser:MouseCancel");
+   },
--- popup_position_meego_theme.patch
+++ popup_position_meego_theme.patch
-# HG changeset patch
-# User roger.wang at intel.com
-# Date 1277824800 -28800
-# Branch meego
-# Node ID 510033d11a19100c2542adbf1d9c674d794ec709
-# Parent 70123ef8defa452561fe956fa838e6391f9904b3
-fix popup top position for meego theme
-
-diff --git a/chrome/content/browser-ui.js b/chrome/content/browser-ui.js
---- a/chrome/content/browser-ui.js
-+++ b/chrome/content/browser-ui.js
-@@ -311,7 +311,7 @@
-   get toolbarH() {
-     if (!this._toolbarH) {
-       let toolbar = document.getElementById("toolbar-main");
--      this._toolbarH = toolbar.boxObject.height;
-+      this._toolbarH =  Math.round(toolbar.getBoundingClientRect().height);
-     }
-     return this._toolbarH;
-   },
-@@ -330,6 +330,7 @@
-   },
- 
-   sizeControls: function(windowW, windowH) {
-+    this._toolbarH = null;
-     // tabs
-     document.getElementById("tabs").resize();
- 
--- series
+++ series
@@ -1,11 +1,23 @@
-enable_plugin_force_windowless_flash.patch
-mailto_tel_proto.patch
-autoconnect.patch
-copy_NSDISTMODE.patch
-fullscreen_default.patch
-correct_plugin_options_ipc.patch
-eng_home_screen_button.patch
-popup_position_meego_theme.patch
-download_dlg_open.patch
-turnoff_e10s_sync.diff
-add_VKB_support.diff
+pmo158715_enable-plugins.diff
+pmo161147_tapandhold_to_flash.diff
+pmo169118_disable_warn_mailto.diff
+pmo170282_dynamic_smart_tap_region.diff
+pmo170814_pageFitGranularity.diff
+pmo173372_snapping_rtl.diff
+pmo172885_web_page_panning_under_opened_CSM.diff
+pmo170528_tab_moving_rtl_V2.diff
+pmo170950-set_default_action.diff
+pmo174480_consistent_focus_behaviour.diff
+pmo174512_rtl_tabs_style.diff
+pmo177889_copy_paste_fennec.diff
+pmo179255_panning.diff
+meego/mailto_tel_proto.diff
+meego/autoconnect.diff
+meego/copy_NSDISTMODE.diff
+meego/fullscreen_default.diff
+meego/eng_home_screen_button.diff
+meego/popup_position_meego_theme.diff
+meego/download_dlg_open.diff
+meego/turnoff_e10s_sync.diff
+meego/force_flash_opaque.diff
+meego/add_VKB_support.diff
--- turnoff_e10s_sync.diff
+++ turnoff_e10s_sync.diff
-# HG changeset patch
-# Parent c8b6ebbb7f4b42498f1c18312f8f799b1dcc7b7e
-
-diff --git a/app/mobile.js b/app/mobile.js
---- a/app/mobile.js
-+++ b/app/mobile.js
-@@ -42,7 +42,7 @@
- 
- pref("browser.tabs.warnOnClose", true);
- #ifdef MOZ_IPC
--pref("browser.tabs.remote", true);
-+pref("browser.tabs.remote", false);
- #else
- pref("browser.tabs.remote", false);
- #endif
-diff --git a/chrome/content/browser-ui.js b/chrome/content/browser-ui.js
---- a/chrome/content/browser-ui.js
-+++ b/chrome/content/browser-ui.js
-@@ -396,7 +396,7 @@
-       ConsoleView.init();
- 
-       // Init the sync system
--      WeaveGlue.init();
-+      //WeaveGlue.init();
-     });
- 
-     FormHelperUI.init();
-diff --git a/confvars.sh b/confvars.sh
---- a/confvars.sh
-+++ b/confvars.sh
-@@ -52,7 +52,7 @@
- 
- MOZ_XUL_APP=1
- MOZ_ENABLE_LIBXUL=1
--MOZ_SERVICES_SYNC=1
-+MOZ_SERVICES_SYNC=
- MOZ_NO_XPCOM_OBSOLETE=1
- if test "$LIBXUL_SDK"; then
- MOZ_XULRUNNER=1

++++++ platform-patches.tar.gz
26101 lines of diff (skipped)

++++++ deleted files:
--- fennec-tip-91da083f3478-af67cbcea09d.tar.bz2




More information about the MeeGo-commits mailing list