1
0

Accepting request 307294 from mozilla:Factory

- add mozilla-add-glibcxx_use_cxx11_abi.patch grabbed from
  https://bugzilla.mozilla.org/show_bug.cgi?id=1153109

- update to Firefox 38.0.1
  stability and regression fixes
  * Systems with first generation NVidia Optimus graphics cards
    may crash on start-up
  * Users who import cookies from Google Chrome can end up with
    broken websites
  * Large animated images may fail to play and may stop other
    images from loading

- update to Firefox 38.0 (bnc#930622)
  * New tab-based preferences
  * Ruby annotation support
  * more info: https://www.mozilla.org/en-US/firefox/38.0/releasenotes/
  security fixes:
  * MFSA 2015-46/CVE-2015-2708/CVE-2015-2709
    Miscellaneous memory safety hazards
  * MFSA 2015-47/VE-2015-0797 (bmo#1080995)
    Buffer overflow parsing H.264 video with Linux Gstreamer
  * MFSA 2015-48/CVE-2015-2710 (bmo#1149542)
    Buffer overflow with SVG content and CSS
  * MFSA 2015-49/CVE-2015-2711 (bmo#1113431)
    Referrer policy ignored when links opened by middle-click and
    context menu
  * MFSA 2015-50/CVE-2015-2712 (bmo#1152280)
    Out-of-bounds read and write in asm.js validation
  * MFSA 2015-51/CVE-2015-2713 (bmo#1153478)
    Use-after-free during text processing with vertical text enabled

OBS-URL: https://build.opensuse.org/request/show/307294
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/MozillaFirefox?expand=0&rev=212
This commit is contained in:
Dominique Leuenberger 2015-05-20 21:50:41 +00:00 committed by Git OBS Bridge
commit 257cbcd9f5
15 changed files with 240 additions and 455 deletions

View File

@ -1,3 +1,60 @@
-------------------------------------------------------------------
Fri May 15 10:40:19 UTC 2015 - normand@linux.vnet.ibm.com
- add mozilla-add-glibcxx_use_cxx11_abi.patch grabbed from
https://bugzilla.mozilla.org/show_bug.cgi?id=1153109
-------------------------------------------------------------------
Fri May 15 07:37:46 UTC 2015 - wr@rosenauer.org
- update to Firefox 38.0.1
stability and regression fixes
* Systems with first generation NVidia Optimus graphics cards
may crash on start-up
* Users who import cookies from Google Chrome can end up with
broken websites
* Large animated images may fail to play and may stop other
images from loading
-------------------------------------------------------------------
Sun May 10 07:07:49 UTC 2015 - wr@rosenauer.org
- update to Firefox 38.0 (bnc#930622)
* New tab-based preferences
* Ruby annotation support
* more info: https://www.mozilla.org/en-US/firefox/38.0/releasenotes/
security fixes:
* MFSA 2015-46/CVE-2015-2708/CVE-2015-2709
Miscellaneous memory safety hazards
* MFSA 2015-47/VE-2015-0797 (bmo#1080995)
Buffer overflow parsing H.264 video with Linux Gstreamer
* MFSA 2015-48/CVE-2015-2710 (bmo#1149542)
Buffer overflow with SVG content and CSS
* MFSA 2015-49/CVE-2015-2711 (bmo#1113431)
Referrer policy ignored when links opened by middle-click and
context menu
* MFSA 2015-50/CVE-2015-2712 (bmo#1152280)
Out-of-bounds read and write in asm.js validation
* MFSA 2015-51/CVE-2015-2713 (bmo#1153478)
Use-after-free during text processing with vertical text enabled
* MFSA 2015-53/CVE-2015-2715 (bmo#988698)
Use-after-free due to Media Decoder Thread creation during shutdown
* MFSA 2015-54/CVE-2015-2716 (bmo#1140537)
Buffer overflow when parsing compressed XML
* MFSA 2015-55/CVE-2015-2717 (bmo#1154683)
Buffer overflow and out-of-bounds read while parsing MP4 video
metadata
* MFSA 2015-56/CVE-2015-2718 (bmo#1146724)
Untrusted site hosting trusted page can intercept webchannel
responses
* MFSA 2015-57/CVE-2011-3079 (bmo#1087565)
Privilege escalation through IPC channel messages
- requires NSS 3.18.1
- removed obsolete patches:
* mozilla-skia-bmo1136958.patch
- remove gnomevfs build options as it is removed from sources
- rebased patches
-------------------------------------------------------------------
Fri Apr 17 16:39:20 UTC 2015 - wr@rosenauer.org

View File

@ -18,10 +18,10 @@
# changed with every update
%define major 37
%define mainver %major.0.2
%define major 38
%define mainver %major.0.1
%define update_channel release
%define releasedate 2015041600
%define releasedate 2015051400
# general build definitions
%if "%{update_channel}" != "aurora"
@ -77,7 +77,7 @@ BuildRequires: libnotify-devel
BuildRequires: libproxy-devel
BuildRequires: makeinfo
BuildRequires: mozilla-nspr-devel >= 4.10.8
BuildRequires: mozilla-nss-devel >= 3.17.4
BuildRequires: mozilla-nss-devel >= 3.18.1
BuildRequires: nss-shared-helper-devel
BuildRequires: python-devel
BuildRequires: startup-notification-devel
@ -144,9 +144,9 @@ Patch9: mozilla-repo.patch
Patch10: mozilla-icu-strncat.patch
Patch11: mozilla-arm-disable-edsp.patch
Patch12: mozilla-openaes-decl.patch
Patch13: mozilla-skia-bmo1136958.patch
Patch14: mozilla-skia-be-le.patch
Patch15: mozilla-bmo1005535.patch
Patch16: mozilla-add-glibcxx_use_cxx11_abi.patch
# Firefox/browser
Patch101: firefox-kde.patch
Patch102: firefox-no-default-ualocale.patch
@ -259,9 +259,9 @@ cd $RPM_BUILD_DIR/mozilla
%patch10 -p1
%patch11 -p1
%patch12 -p1
%patch13 -p1
%patch14 -p1
%patch15 -p1
%patch16 -p1
# Firefox
%patch101 -p1
%patch102 -p1
@ -342,8 +342,6 @@ ac_add_options --enable-update-channel=%{update_channel}
%if 0%{?gstreamer} == 1
ac_add_options --enable-gstreamer=1.0
%endif
ac_add_options --disable-gnomevfs
ac_add_options --enable-gio
%if %branding
ac_add_options --enable-official-branding
%endif

View File

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:e80e01c8274e063e65a8898fff408a66145313f83de3d4a0a1ee7990f3a7ba07
size 28448
oid sha256:554dc858bdf51da453d404a4db1f63ae13b66bc293794e5b5d9f1ae705430c5c
size 28424

View File

@ -2,8 +2,8 @@
CHANNEL="release"
BRANCH="releases/mozilla-$CHANNEL"
RELEASE_TAG="FIREFOX_37_0_2_RELEASE"
VERSION="37.0.2"
RELEASE_TAG="FIREFOX_38_0_1_RELEASE"
VERSION="38.0.1"
# mozilla
if [ -d mozilla ]; then

View File

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:fa7ecada7c3f79d855d3062d361228f21f0f620ca8e8bf5d14f41173b3912a05
size 153267948

View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:35ce3a749708d48f503ed98e279ca84cebf8d14cd34a168d41974d0c559799ce
size 154301356

View File

@ -1,11 +1,11 @@
# HG changeset patch
# Parent 409c60c5454efb61ebecf0edc8822a0e92f563f3
# Parent a21f91aa3ed60b4e95b47f45715dfda379dab7c8
diff --git a/browser/base/content/browser-kde.xul b/browser/base/content/browser-kde.xul
new file mode 100644
--- /dev/null
+++ b/browser/base/content/browser-kde.xul
@@ -0,0 +1,1288 @@
@@ -0,0 +1,1302 @@
+#filter substitution
+<?xml version="1.0"?>
+# -*- Mode: HTML -*-
@ -154,8 +154,13 @@ new file mode 100644
+ <!-- for url bar autocomplete -->
+ <panel type="autocomplete-richlistbox" id="PopupAutoCompleteRichResult" noautofocus="true" hidden="true"/>
+
+ <!-- for select dropdowns -->
+ <menupopup id="ContentSelectDropdown" rolluponmousewheel="true" hidden="true"/>
+ <!-- for select dropdowns. The menupopup is what shows the list of options,
+ and the popuponly menulist makes things like the menuactive attributes
+ work correctly on the menupopup. ContentSelectDropdown expects the
+ popuponly menulist to be its immediate parent. -->
+ <menulist popuponly="true" id="ContentSelectDropdown" hidden="true">
+ <menupopup rolluponmousewheel="true"/>
+ </menulist>
+
+ <!-- for invalid form error message -->
+ <panel id="invalid-form-popup" type="arrow" orient="vertical" noautofocus="true" hidden="true" level="parent">
@ -248,41 +253,6 @@ new file mode 100644
+ mousethrough="always">
+ <box id="UITourHighlight"></box>
+ </panel>
+ <!-- Used to highlight the new search experience -->
+ <panel id="SearchHighlight1"
+ class="SearchHighlight"
+ type="arrow"
+ hidden="true"
+ noautofocus="true"
+ noautohide="true"
+ orient="vertical"
+ align="stretch">
+ <label class="SearchHighlightTitle">&SearchHighlight1.title;</label>
+ <description class="SearchHighlightText" flex="1">&SearchHighlight1.text;</description>
+ <hbox class="SearchHighlightFooter" align="center">
+ <spacer class="dot filled"/>
+ <spacer class="dot"/>
+ <spacer flex="1"/>
+ <button label="&SearchHighlightNext;"/>
+ </hbox>
+ </panel>
+ <panel id="SearchHighlight2"
+ class="SearchHighlight"
+ type="arrow"
+ hidden="true"
+ noautofocus="true"
+ noautohide="true"
+ orient="vertical"
+ align="stretch">
+ <label class="SearchHighlightTitle">&SearchHighlight2.title;</label>
+ <description class="SearchHighlightText" flex="1">&SearchHighlight2.text;</description>
+ <hbox class="SearchHighlightFooter" align="center">
+ <spacer class="dot"/>
+ <spacer class="dot filled"/>
+ <spacer flex="1"/>
+ <button label="&SearchHighlightClose;"/>
+ </hbox>
+ </panel>
+
+ <panel id="abouthome-search-panel" orient="vertical" type="arrow" hidden="true"
+ onclick="this.hidePopup()">
@ -342,6 +312,26 @@ new file mode 100644
+ orient="horizontal"
+ hidden="true"/>
+
+ <menupopup id="processHangOptions"
+ onpopupshowing="ProcessHangMonitor.refreshMenu(window);">
+ <menuitem id="processHangTerminateScript"
+ oncommand="ProcessHangMonitor.terminateScript(window)"
+ accesskey="&processHang.terminateScript.accessKey;"
+ label="&processHang.terminateScript.label;"/>
+ <menuitem id="processHangDebugScript"
+ oncommand="ProcessHangMonitor.debugScript(window)"
+ accesskey="&processHang.debugScript.accessKey;"
+ label="&processHang.debugScript.label;"/>
+ <menuitem id="processHangTerminatePlugin"
+ oncommand="ProcessHangMonitor.terminatePlugin(window)"
+ accesskey="&processHang.terminatePlugin.accessKey;"
+ label="&processHang.terminatePlugin.label;"/>
+ <menuitem id="processHangTerminateProcess"
+ oncommand="ProcessHangMonitor.terminateProcess(window)"
+ accesskey="&processHang.terminateProcess.accessKey;"
+ label="&processHang.terminateProcess.label;"/>
+ </menupopup>
+
+ <menupopup id="toolbar-context-menu"
+ onpopupshowing="onViewToolbarsPopupShowing(event, document.getElementById('viewToolbarsMenuSeparator'));">
+ <menuitem oncommand="gCustomizeMode.addToPanel(document.popupNode)"
@ -588,12 +578,12 @@ new file mode 100644
+
+ <menupopup id="emeNotificationsPopup">
+ <menuitem id="emeNotificationsNotNow"
+ label="Not now"
+ acceskey="N"
+ label="&emeNotificationsNotNow.label;"
+ acceskey="&emeNotificationsNotNow.accesskey;"
+ oncommand="gEMEHandler.onNotNow(this);"/>
+ <menuitem id="emeNotificationsDontAskAgain"
+ label="Don't ask me again"
+ acceskey="D"
+ label="&emeNotificationsDontAskAgain.label;"
+ acceskey="&emeNotificationsDontAskAgain.accesskey;"
+ oncommand="gEMEHandler.onDontAskAgain(this);"/>
+ </menupopup>
+ </popupset>
@ -845,6 +835,14 @@ new file mode 100644
+ hidden="true"
+ tooltiptext="&pageReportIcon.tooltip;"
+ onclick="gPopupBlockerObserver.onReportButtonClick(event);"/>
+ <image id="readinglist-addremove-button"
+ class="urlbar-icon"
+ hidden="true"
+ onclick="ReadingListUI.togglePageByBrowser(gBrowser.selectedBrowser);"/>
+ <image id="reader-mode-button"
+ class="urlbar-icon"
+ hidden="true"
+ onclick="ReaderParent.buttonClick(event);"/>
+ </hbox>
+ <toolbarbutton id="urlbar-go-button"
+ class="chromeclass-toolbar-additional"
@ -898,7 +896,7 @@ new file mode 100644
+ class="subviewbutton"
+ label="&viewBookmarksSidebar2.label;"
+ type="checkbox"
+ oncommand="toggleSidebar('viewBookmarksSidebar');">
+ oncommand="SidebarUI.toggle('viewBookmarksSidebar');">
+ <observes element="viewBookmarksSidebar" attribute="checked"/>
+ </menuitem>
+ <!-- NB: temporary solution for bug 985024, this should go away soon. -->
@ -963,6 +961,22 @@ new file mode 100644
+ new PlacesMenu(event, 'place:folder=UNFILED_BOOKMARKS',
+ PlacesUIUtils.getViewForNode(this.parentNode.parentNode).options);"/>
+ </menu>
+ <menuseparator>
+ <observes element="readingListSidebar" attribute="hidden"/>
+ </menuseparator>
+ <menu id="BMB_readingList"
+ class="menu-iconic bookmark-item subviewbutton"
+ label="&readingList.label;"
+ container="true">
+ <observes element="readingListSidebar" attribute="hidden"/>
+ <menupopup id="BMB_readingListPopup"
+ placespopup="true"
+ onpopupshowing="ReadingListUI.onReadingListPopupShowing(this);">
+ <menuitem id="BMB_viewReadingListSidebar" class="subviewbutton"
+ oncommand="SidebarUI.show('readingListSidebar');"
+ label="&readingList.showSidebar.label;"/>
+ </menupopup>
+ </menu>
+ <menuseparator/>
+ <!-- Bookmarks menu items will go here -->
+ <menuitem id="BMB_bookmarksShowAll"
@ -1151,10 +1165,10 @@ new file mode 100644
+ <sidebarheader id="sidebar-header" align="center">
+ <label id="sidebar-title" persist="value" flex="1" crop="end" control="sidebar"/>
+ <image id="sidebar-throbber"/>
+ <toolbarbutton class="close-icon tabbable" tooltiptext="&sidebarCloseButton.tooltip;" oncommand="toggleSidebar();"/>
+ <toolbarbutton class="close-icon tabbable" tooltiptext="&sidebarCloseButton.tooltip;" oncommand="SidebarUI.hide();"/>
+ </sidebarheader>
+ <browser id="sidebar" flex="1" autoscroll="false" disablehistory="true"
+ style="min-width: 14em; width: 18em; max-width: 36em;"/>
+ style="min-width: 14em; width: 18em; max-width: 36em;" tooltip="aHTMLTooltip"/>
+ </vbox>
+
+ <splitter id="sidebar-splitter" class="chromeclass-extrachrome sidebar-splitter" hidden="true"/>
@ -1165,7 +1179,7 @@ new file mode 100644
+ tabcontainer="tabbrowser-tabs"
+ contentcontextmenu="contentAreaContextMenu"
+ autocompletepopup="PopupAutoComplete"
+ selectpopup="ContentSelectDropdown"/>
+ selectmenulist="ContentSelectDropdown"/>
+ <chatbar id="pinnedchats" layer="true" mousethrough="always" hidden="true"/>
+ </vbox>
+ <splitter id="social-sidebar-splitter"
@ -1297,7 +1311,7 @@ new file mode 100644
diff --git a/browser/base/content/browser.xul b/browser/base/content/browser.xul
--- a/browser/base/content/browser.xul
+++ b/browser/base/content/browser.xul
@@ -174,17 +174,17 @@
@@ -179,17 +179,17 @@
class="editBookmarkPanelHeaderButton"
oncommand="StarUI.removeBookmarkButtonCommand();"
accesskey="&editBookmark.removeBookmark.accessKey;"/>
@ -1316,7 +1330,7 @@ diff --git a/browser/base/content/browser.xul b/browser/base/content/browser.xul
<button id="editBookmarkPanelDeleteButton"
class="editBookmarkPanelBottomButton"
label="&editBookmark.cancel.label;"
@@ -1214,17 +1214,17 @@
@@ -1228,17 +1228,17 @@
<hbox id="full-screen-warning-container" hidden="true" fadeout="true">
<hbox style="width: 100%;" pack="center"> <!-- Inner hbox needed due to bug 579776. -->
@ -1338,10 +1352,10 @@ diff --git a/browser/base/content/browser.xul b/browser/base/content/browser.xul
diff --git a/browser/base/jar.mn b/browser/base/jar.mn
--- a/browser/base/jar.mn
+++ b/browser/base/jar.mn
@@ -69,16 +69,18 @@ browser.jar:
content/browser/aboutRobots-widget-left.png (content/aboutRobots-widget-left.png)
@@ -70,16 +70,18 @@ browser.jar:
content/browser/aboutSocialError.xhtml (content/aboutSocialError.xhtml)
content/browser/aboutProviderDirectory.xhtml (content/aboutProviderDirectory.xhtml)
content/browser/aboutTabCrashed.css (content/aboutTabCrashed.css)
content/browser/aboutTabCrashed.js (content/aboutTabCrashed.js)
content/browser/aboutTabCrashed.xhtml (content/aboutTabCrashed.xhtml)
* content/browser/browser.css (content/browser.css)
@ -1349,7 +1363,6 @@ diff --git a/browser/base/jar.mn b/browser/base/jar.mn
* content/browser/browser.xul (content/browser.xul)
+* content/browser/browser-kde.xul (content/browser-kde.xul)
+% override chrome://browser/content/browser.xul chrome://browser/content/browser-kde.xul desktop=kde
* content/browser/browser-eme.properties (content/browser-eme.properties)
* content/browser/browser-tabPreviews.xml (content/browser-tabPreviews.xml)
* content/browser/chatWindow.xul (content/chatWindow.xul)
content/browser/content.js (content/content.js)
@ -1357,6 +1370,7 @@ diff --git a/browser/base/jar.mn b/browser/base/jar.mn
content/browser/defaultthemes/1.header.jpg (content/defaultthemes/1.header.jpg)
content/browser/defaultthemes/1.icon.jpg (content/defaultthemes/1.icon.jpg)
content/browser/defaultthemes/1.preview.jpg (content/defaultthemes/1.preview.jpg)
content/browser/defaultthemes/2.footer.jpg (content/defaultthemes/2.footer.jpg)
diff --git a/browser/components/build/nsModule.cpp b/browser/components/build/nsModule.cpp
--- a/browser/components/build/nsModule.cpp
+++ b/browser/components/build/nsModule.cpp
@ -1784,7 +1798,7 @@ new file mode 100644
+#include "nsStringAPI.h"
+#include "mozilla/Attributes.h"
+
+class nsKDEShellService MOZ_FINAL : public nsIShellService
+class nsKDEShellService final : public nsIShellService
+{
+public:
+ nsKDEShellService() : mCheckedThisSession(false) { }
@ -1911,7 +1925,7 @@ new file mode 100644
diff --git a/browser/installer/package-manifest.in b/browser/installer/package-manifest.in
--- a/browser/installer/package-manifest.in
+++ b/browser/installer/package-manifest.in
@@ -688,19 +688,21 @@
@@ -698,19 +698,21 @@
@RESPATH@/defaults/autoconfig/prefcalls.js
@RESPATH@/browser/defaults/profile/prefs.js

View File

@ -1,13 +1,14 @@
# HG changeset patch
# User Wolfgang Rosenauer <wr@rosenauer.org>
# Parent 099312626f5f7c9cb5573a61d0230574ee12a660
# Parent 9e46107bf33966236739600abba9dc8d97fd9d7f
Do not overwrite the locale dynamic pref from xulrunner's all.js with a wrong default value
diff --git a/browser/app/profile/firefox.js b/browser/app/profile/firefox.js
--- a/browser/app/profile/firefox.js
+++ b/browser/app/profile/firefox.js
@@ -261,17 +261,17 @@ pref("browser.uitour.pinnedTabUrl", "htt
pref("browser.uitour.url", "https://www.mozilla.org/%LOCALE%/firefox/%VERSION%/tour/");
@@ -251,17 +251,17 @@ pref("browser.uitour.url", "https://www.
pref("browser.uitour.readerViewTrigger", "^https:\/\/www\.mozilla\.org\/[^\/]+\/firefox\/reading\/start");
pref("browser.customizemode.tip0.shown", false);
pref("browser.customizemode.tip0.learnMoreUrl", "https://support.mozilla.org/1/firefox/%VERSION%/%OS%/%LOCALE%/customize");

View File

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:453e8259b8ca7e61d254563495399b13040d551ad2679a69cb2070ae27fdde3a
size 41695084

3
l10n-38.0.1.tar.xz Normal file
View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:07054adb03febcc11451f523916c94dbb35f0d3a1e819869bf639e3f38f87664
size 42023448

View File

@ -0,0 +1,35 @@
From 32b9943e0d2c7c28d9d113c0e83d121c356fe5d5 Mon Sep 17 00:00:00 2001
From: Mike Hommey <mh+mozilla@glandium.org>
Date: Fri, 10 Apr 2015 16:53:05 +0900
Subject: [PATCH] Bug 1153109 - Add -D_GLIBCXX_USE_CXX11_ABI=0 to CXXFLAGS when
building with --enable-stdcxx-compat
patch grab from https://bugzilla.mozilla.org/show_bug.cgi?id=1153109
---
configure.in | 2 ++
1 file changed, 2 insertions(+)
diff --git a/configure.in b/configure.in
index 95d2a70..6c858b3 100644
--- a/configure.in
+++ b/configure.in
@@ -7375,16 +7375,18 @@ STDCXX_COMPAT=
MOZ_ARG_ENABLE_BOOL(stdcxx-compat,
[ --enable-stdcxx-compat Enable compatibility with older libstdc++],
STDCXX_COMPAT=1)
if test -n "$STDCXX_COMPAT"; then
eval $(CXX="$CXX" HOST_CXX="$HOST_CXX" $PYTHON -m mozbuild.configure.libstdcxx)
AC_SUBST(MOZ_LIBSTDCXX_TARGET_VERSION)
AC_SUBST(MOZ_LIBSTDCXX_HOST_VERSION)
+ CXXFLAGS="$CXXFLAGS -D_GLIBCXX_USE_CXX11_ABI=0"
+ HOST_CXXFLAGS="$HOST_CXXFLAGS -D_GLIBCXX_USE_CXX11_ABI=0"
fi
dnl ========================================================
dnl =
dnl = Profiling and Instrumenting
dnl =
dnl ========================================================
MOZ_ARG_HEADER(Profiling and Instrumenting)

View File

@ -1,5 +1,5 @@
# HG changeset patch
# Parent 2b183c17f6e4693372442af1a8ee0be364f8cba0
# Parent 214f99f3ce4f1f8ae9b3d18da44e5d66b3105663
Description: Add KDE integration to Firefox (toolkit parts)
Author: Wolfgang Rosenauer <wolfgang@rosenauer.org>
Author: Lubos Lunak <lunak@suse.com>
@ -1836,8 +1836,8 @@ new file mode 100644
+ secMan.isSystemPrincipal(window.opener.document.nodePrincipal)) {
+ var psvc = Components.classes["@mozilla.org/preferences-service;1"]
+ .getService(Components.interfaces.nsIPrefBranch);
+ var instantApply = psvc.getBoolPref("browser.preferences.instantApply");
+ if (instantApply) {
+ var pdocEl = window.opener.document.documentElement;
+ if (pdocEl.instantApply) {
+ var panes = this.preferencePanes;
+ for (var i = 0; i < panes.length; ++i)
+ panes[i].writePreferences(true);
@ -2136,7 +2136,7 @@ diff --git a/toolkit/system/unixproxy/nsUnixSystemProxySettings.cpp b/toolkit/sy
+#include "nsVoidArray.h"
+#include "nsKDEUtils.h"
class nsUnixSystemProxySettings MOZ_FINAL : public nsISystemProxySettings {
class nsUnixSystemProxySettings final : public nsISystemProxySettings {
public:
NS_DECL_ISUPPORTS
NS_DECL_NSISYSTEMPROXYSETTINGS
@ -2219,7 +2219,7 @@ diff --git a/toolkit/system/unixproxy/nsUnixSystemProxySettings.cpp b/toolkit/sy
diff --git a/toolkit/xre/moz.build b/toolkit/xre/moz.build
--- a/toolkit/xre/moz.build
+++ b/toolkit/xre/moz.build
@@ -43,17 +43,19 @@ elif CONFIG['MOZ_WIDGET_TOOLKIT'] == 'qt
@@ -45,17 +45,19 @@ elif CONFIG['MOZ_WIDGET_TOOLKIT'] == 'qt
GENERATED_SOURCES += [
'moc_nsNativeAppSupportQt.cpp',
]
@ -2666,9 +2666,9 @@ diff --git a/uriloader/exthandler/moz.build b/uriloader/exthandler/moz.build
LOCAL_INCLUDES += [
'/dom/base',
'/dom/ipc',
'/netwerk/base/src',
'/netwerk/base',
'/netwerk/protocol/http',
+ '/toolkit/xre'
+ '/toolkit/xre',
]
if CONFIG['MOZ_ENABLE_DBUS']:
@ -2904,7 +2904,7 @@ new file mode 100644
diff --git a/uriloader/exthandler/unix/nsMIMEInfoUnix.cpp b/uriloader/exthandler/unix/nsMIMEInfoUnix.cpp
--- a/uriloader/exthandler/unix/nsMIMEInfoUnix.cpp
+++ b/uriloader/exthandler/unix/nsMIMEInfoUnix.cpp
@@ -7,33 +7,36 @@
@@ -7,32 +7,35 @@
#ifdef MOZ_WIDGET_QT
#if (MOZ_ENABLE_CONTENTACTION)
#include <contentaction/contentaction.h>
@ -2918,7 +2918,6 @@ diff --git a/uriloader/exthandler/unix/nsMIMEInfoUnix.cpp b/uriloader/exthandler
#include "nsIGIOService.h"
#include "nsNetCID.h"
#include "nsIIOService.h"
#include "nsIGnomeVFSService.h"
#include "nsAutoPtr.h"
#ifdef MOZ_ENABLE_DBUS
#include "nsDBusHandlerApp.h"
@ -2943,7 +2942,7 @@ diff --git a/uriloader/exthandler/unix/nsMIMEInfoUnix.cpp b/uriloader/exthandler
#endif
return rv;
@@ -46,24 +49,24 @@ nsMIMEInfoUnix::GetHasDefaultHandler(boo
@@ -45,24 +48,24 @@ nsMIMEInfoUnix::GetHasDefaultHandler(boo
// either /etc/mailcap or ${HOME}/.mailcap, in which case we don't want to
// give the GNOME answer.
if (mDefaultApplication)
@ -2951,7 +2950,7 @@ diff --git a/uriloader/exthandler/unix/nsMIMEInfoUnix.cpp b/uriloader/exthandler
*_retval = false;
if (mClass == eProtocolInfo) {
if (mClass == eProtocolInfo) {
- *_retval = nsGNOMERegistry::HandlerExists(mSchemeOrType.get());
+ *_retval = nsCommonRegistry::HandlerExists(mSchemeOrType.get());
} else {
@ -2971,7 +2970,7 @@ diff --git a/uriloader/exthandler/unix/nsMIMEInfoUnix.cpp b/uriloader/exthandler
if (*_retval)
return NS_OK;
@@ -98,16 +101,33 @@ nsMIMEInfoUnix::LaunchDefaultWithFile(ns
@@ -97,16 +100,33 @@ nsMIMEInfoUnix::LaunchDefaultWithFile(ns
ContentAction::Action::defaultActionForFile(uri, QString(mSchemeOrType.get()));
if (action.isValid()) {
action.trigger();
@ -2998,32 +2997,13 @@ diff --git a/uriloader/exthandler/unix/nsMIMEInfoUnix.cpp b/uriloader/exthandler
+ }
+
nsCOMPtr<nsIGIOService> giovfs = do_GetService(NS_GIOSERVICE_CONTRACTID);
nsAutoCString uriSpec;
if (giovfs) {
// nsGIOMimeApp->Launch wants a URI string instead of local file
nsresult rv;
nsCOMPtr<nsIIOService> ioservice = do_GetService(NS_IOSERVICE_CONTRACTID, &rv);
NS_ENSURE_SUCCESS(rv, rv);
nsCOMPtr<nsIURI> uri;
@@ -125,17 +145,17 @@ nsMIMEInfoUnix::LaunchDefaultWithFile(ns
/* Fallback to GnomeVFS */
nsCOMPtr<nsIGnomeVFSMimeApp> app;
if (NS_SUCCEEDED(gnomevfs->GetAppForMimeType(mSchemeOrType, getter_AddRefs(app))) && app)
return app->Launch(nativePath);
if (!giovfs) {
return NS_ERROR_FAILURE;
}
// If we haven't got an app we try to get a valid one by searching for the
// extension mapped type
- nsRefPtr<nsMIMEInfoBase> mimeInfo = nsGNOMERegistry::GetFromExtension(nativePath);
+ nsRefPtr<nsMIMEInfoBase> mimeInfo = nsCommonRegistry::GetFromExtension(nativePath);
if (mimeInfo) {
nsAutoCString type;
mimeInfo->GetType(type);
if (giovfs) {
nsCOMPtr<nsIGIOMimeApp> app;
if (NS_SUCCEEDED(giovfs->GetAppForMimeType(type, getter_AddRefs(app))) && app)
return app->Launch(uriSpec);
} else if (gnomevfs) {
// nsGIOMimeApp->Launch wants a URI string instead of local file
nsresult rv;
nsCOMPtr<nsIIOService> ioservice = do_GetService(NS_IOSERVICE_CONTRACTID, &rv);
diff --git a/uriloader/exthandler/unix/nsOSHelperAppService.cpp b/uriloader/exthandler/unix/nsOSHelperAppService.cpp
--- a/uriloader/exthandler/unix/nsOSHelperAppService.cpp
+++ b/uriloader/exthandler/unix/nsOSHelperAppService.cpp
@ -3054,7 +3034,7 @@ diff --git a/uriloader/exthandler/unix/nsOSHelperAppService.cpp b/uriloader/exth
#endif
#ifdef MOZ_WIDGET_GTK
// Check the GConf registry for a protocol handler
// Check the GNOME registry for a protocol handler
- *aHandlerExists = nsGNOMERegistry::HandlerExists(aProtocolScheme);
+ *aHandlerExists = nsCommonRegistry::HandlerExists(aProtocolScheme);
#endif
@ -3094,25 +3074,25 @@ diff --git a/uriloader/exthandler/unix/nsOSHelperAppService.cpp b/uriloader/exth
rv = LookUpTypeAndDescription(NS_ConvertUTF8toUTF16(aFileExt),
majorType,
@@ -1372,17 +1372,17 @@ nsOSHelperAppService::GetFromType(const
@@ -1373,17 +1373,17 @@ nsOSHelperAppService::GetFromType(const
nsAutoString extensions, mime_types_description;
LookUpExtensionsAndDescription(majorType,
minorType,
extensions,
mime_types_description);
#ifdef MOZ_WIDGET_GTK
nsRefPtr<nsMIMEInfoBase> gnomeInfo;
if (handler.IsEmpty()) {
// No useful data yet. Check the GNOME registry. Unfortunately, newer
// GNOME versions no longer have type-to-extension mappings, so we might
// get back a MIMEInfo without any extensions set. In that case we'll have
// to look in our mime.types files for the extensions.
LOG(("Looking in GNOME registry\n"));
- gnomeInfo = nsGNOMERegistry::GetFromType(aMIMEType);
+ gnomeInfo = nsCommonRegistry::GetFromType(aMIMEType);
if (gnomeInfo && gnomeInfo->HasExtensions()) {
LOG(("Got MIMEInfo from GNOME registry, and it has extensions set\n"));
- nsRefPtr<nsMIMEInfoBase> gnomeInfo = nsGNOMERegistry::GetFromType(aMIMEType);
+ nsRefPtr<nsMIMEInfoBase> gnomeInfo = nsCommonRegistry::GetFromType(aMIMEType);
if (gnomeInfo) {
LOG(("Got MIMEInfo from GNOME registry without extensions; setting them "
"to %s\n", NS_LossyConvertUTF16toASCII(extensions).get()));
NS_ASSERTION(!gnomeInfo->HasExtensions(), "How'd that happen?");
gnomeInfo->SetFileExtensions(NS_ConvertUTF16toUTF8(extensions));
return gnomeInfo.forget();
}
}
#endif
// Now look up our extensions
diff --git a/widget/gtk/moz.build b/widget/gtk/moz.build
--- a/widget/gtk/moz.build
+++ b/widget/gtk/moz.build
@ -3465,7 +3445,7 @@ diff --git a/widget/gtk/nsFilePicker.cpp b/widget/gtk/nsFilePicker.cpp
diff --git a/widget/gtk/nsFilePicker.h b/widget/gtk/nsFilePicker.h
--- a/widget/gtk/nsFilePicker.h
+++ b/widget/gtk/nsFilePicker.h
@@ -66,11 +66,17 @@ protected:
@@ -68,11 +68,17 @@ protected:
nsString mDefault;
nsString mDefaultExtension;
@ -3504,9 +3484,9 @@ diff --git a/xpcom/components/ManifestParser.cpp b/xpcom/components/ManifestPars
#define XPTONLY_MANIFEST nullptr
#define XPTONLY_XPT nullptr
#endif
@@ -488,16 +489,17 @@ ParseManifest(NSLocationType aType, File
NS_NAMED_LITERAL_STRING(kPlatform, "platform");
NS_NAMED_LITERAL_STRING(kContentAccessible, "contentaccessible");
@@ -489,16 +490,17 @@ ParseManifest(NSLocationType aType, File
NS_NAMED_LITERAL_STRING(kRemoteEnabled, "remoteenabled");
NS_NAMED_LITERAL_STRING(kRemoteRequired, "remoterequired");
NS_NAMED_LITERAL_STRING(kApplication, "application");
NS_NAMED_LITERAL_STRING(kAppVersion, "appversion");
NS_NAMED_LITERAL_STRING(kGeckoVersion, "platformversion");
@ -3522,7 +3502,7 @@ diff --git a/xpcom/components/ManifestParser.cpp b/xpcom/components/ManifestPars
NS_NAMED_LITERAL_STRING(kMain, "main");
NS_NAMED_LITERAL_STRING(kContent, "content");
@@ -548,44 +550,49 @@ ParseManifest(NSLocationType aType, File
@@ -549,44 +551,49 @@ ParseManifest(NSLocationType aType, File
CopyUTF8toUTF16(s, abi);
abi.Insert(char16_t('_'), 0);
abi.Insert(osTarget, 0);
@ -3573,14 +3553,14 @@ diff --git a/xpcom/components/ManifestParser.cpp b/xpcom/components/ManifestPars
}
@@ -681,25 +688,27 @@ ParseManifest(NSLocationType aType, File
TriState stOsVersion = eUnspecified;
TriState stOs = eUnspecified;
TriState stABI = eUnspecified;
TriState stProcess = eUnspecified;
#if defined(MOZ_WIDGET_ANDROID)
TriState stTablet = eUnspecified;
#endif
bool platform = false;
bool contentAccessible = false;
int flags = 0;
+ TriState stDesktop = eUnspecified;
while ((token = nsCRT::strtok(whitespace, kWhitespace, &whitespace)) &&
@ -3600,7 +3580,7 @@ diff --git a/xpcom/components/ManifestParser.cpp b/xpcom/components/ManifestPars
}
#if defined(MOZ_WIDGET_ANDROID)
@@ -731,16 +740,17 @@ ParseManifest(NSLocationType aType, File
@@ -749,16 +758,17 @@ ParseManifest(NSLocationType aType, File
}
if (!ok ||
@ -3638,7 +3618,8 @@ diff --git a/xpcom/components/moz.build b/xpcom/components/moz.build
diff --git a/xpcom/io/nsLocalFileUnix.cpp b/xpcom/io/nsLocalFileUnix.cpp
--- a/xpcom/io/nsLocalFileUnix.cpp
+++ b/xpcom/io/nsLocalFileUnix.cpp
@@ -45,16 +45,17 @@
@@ -44,16 +44,17 @@
#include "prproces.h"
#include "nsIDirectoryEnumerator.h"
#include "nsISimpleEnumerator.h"
#include "private/pprio.h"
@ -3646,7 +3627,6 @@ diff --git a/xpcom/io/nsLocalFileUnix.cpp b/xpcom/io/nsLocalFileUnix.cpp
#ifdef MOZ_WIDGET_GTK
#include "nsIGIOService.h"
#include "nsIGnomeVFSService.h"
+#include "nsKDEUtils.h"
#endif
@ -3656,7 +3636,7 @@ diff --git a/xpcom/io/nsLocalFileUnix.cpp b/xpcom/io/nsLocalFileUnix.cpp
#include "prmem.h"
#include "plbase64.h"
@@ -1965,55 +1966,57 @@ nsLocalFile::SetPersistentDescriptor(con
@@ -1964,42 +1965,52 @@ nsLocalFile::SetPersistentDescriptor(con
return InitWithNativePath(aPersistentDescriptor);
#endif
}
@ -3666,14 +3646,11 @@ diff --git a/xpcom/io/nsLocalFileUnix.cpp b/xpcom/io/nsLocalFileUnix.cpp
{
#ifdef MOZ_WIDGET_GTK
- nsCOMPtr<nsIGIOService> giovfs = do_GetService(NS_GIOSERVICE_CONTRACTID);
- nsCOMPtr<nsIGnomeVFSService> gnomevfs =
- do_GetService(NS_GNOMEVFSSERVICE_CONTRACTID);
- if (!giovfs && !gnomevfs) {
- if (!giovfs) {
- return NS_ERROR_FAILURE;
- }
-
+
+ nsAutoCString url;
bool isDirectory;
if (NS_FAILED(IsDirectory(&isDirectory))) {
return NS_ERROR_FAILURE;
@ -3681,16 +3658,9 @@ diff --git a/xpcom/io/nsLocalFileUnix.cpp b/xpcom/io/nsLocalFileUnix.cpp
+ nsCOMPtr<nsIGIOService> giovfs = do_GetService(NS_GIOSERVICE_CONTRACTID);
if (isDirectory) {
- if (giovfs) {
- return giovfs->ShowURIForInput(mPath);
- } else
- /* Fallback to GnomeVFS */
- {
- return gnomevfs->ShowURIForInput(mPath);
- }
- return giovfs->ShowURIForInput(mPath);
+ url = mPath;
} else if (giovfs &&
NS_SUCCEEDED(giovfs->OrgFreedesktopFileManager1ShowItems(mPath))) {
} else if (NS_SUCCEEDED(giovfs->OrgFreedesktopFileManager1ShowItems(mPath))) {
return NS_OK;
} else {
nsCOMPtr<nsIFile> parentDir;
@ -3702,11 +3672,7 @@ diff --git a/xpcom/io/nsLocalFileUnix.cpp b/xpcom/io/nsLocalFileUnix.cpp
return NS_ERROR_FAILURE;
}
- if (giovfs) {
- return giovfs->ShowURIForInput(dirPath);
- } else {
- return gnomevfs->ShowURIForInput(dirPath);
- }
- return giovfs->ShowURIForInput(dirPath);
+ url = dirPath;
}
+
@ -3717,14 +3683,10 @@ diff --git a/xpcom/io/nsLocalFileUnix.cpp b/xpcom/io/nsLocalFileUnix.cpp
+ return nsKDEUtils::command( command ) ? NS_OK : NS_ERROR_FAILURE;
+ }
+
+ nsCOMPtr<nsIGnomeVFSService> gnomevfs = do_GetService(NS_GNOMEVFSSERVICE_CONTRACTID);
+ if (!giovfs && !gnomevfs)
+ if (!giovfs)
+ return NS_ERROR_FAILURE;
+
+ if (giovfs)
+ return giovfs->ShowURIForInput(url);
+ else
+ return gnomevfs->ShowURIForInput(url);
+ return giovfs->ShowURIForInput(url);
#elif defined(MOZ_WIDGET_COCOA)
CFURLRef url;
if (NS_SUCCEEDED(GetCFURL(&url))) {
@ -3733,7 +3695,7 @@ diff --git a/xpcom/io/nsLocalFileUnix.cpp b/xpcom/io/nsLocalFileUnix.cpp
return rv;
}
return NS_ERROR_FAILURE;
@@ -2021,16 +2024,22 @@ nsLocalFile::Reveal()
@@ -2007,16 +2018,22 @@ nsLocalFile::Reveal()
return NS_ERROR_FAILURE;
#endif
}
@ -3749,10 +3711,10 @@ diff --git a/xpcom/io/nsLocalFileUnix.cpp b/xpcom/io/nsLocalFileUnix.cpp
+ return nsKDEUtils::command( command ) ? NS_OK : NS_ERROR_FAILURE;
+ }
nsCOMPtr<nsIGIOService> giovfs = do_GetService(NS_GIOSERVICE_CONTRACTID);
nsCOMPtr<nsIGnomeVFSService> gnomevfs =
do_GetService(NS_GNOMEVFSSERVICE_CONTRACTID);
if (giovfs) {
return giovfs->ShowURIForInput(mPath);
} else if (gnomevfs) {
/* GnomeVFS fallback */
return gnomevfs->ShowURIForInput(mPath);
if (!giovfs) {
return NS_ERROR_FAILURE;
}
return giovfs->ShowURIForInput(mPath);
#elif defined(MOZ_ENABLE_CONTENTACTION)
QUrl uri = QUrl::fromLocalFile(QString::fromUtf8(mPath.get()));

View File

@ -1,6 +1,6 @@
# HG changeset patch
# Parent 80b6464bd883864fce57e8748010869af1be69e9
# Parent d160c6876c5f05d902b391551bf4f684254b3c7d
# Parent 7f246bc54e416716e50efe50c0edf154b26be658
diff --git a/toolkit/mozapps/installer/package-name.mk b/toolkit/mozapps/installer/package-name.mk
--- a/toolkit/mozapps/installer/package-name.mk
@ -21,7 +21,7 @@ diff --git a/toolkit/mozapps/installer/package-name.mk b/toolkit/mozapps/install
# bug: 746277 - preserve existing functionality.
# MOZILLA_DIR="": cd $(SPACE); hg # succeeds if ~/.hg exists
###########################################################################
ifdef MOZILLA_OFFICIAL
ifdef MOZ_INCLUDE_SOURCE_INFO
-MOZ_SOURCE_REPO = $(call getSourceRepo,$(MOZILLA_DIR)$(NULL) $(NULL))
+#MOZ_SOURCE_REPO = $(call getSourceRepo,$(MOZILLA_DIR)$(NULL) $(NULL))
endif

View File

@ -1,282 +0,0 @@
From a8ab3ec3542469c1d4e0741121eb1be17cc0acb0 Mon Sep 17 00:00:00 2001
From: Mike Hommey <mh@glandium.org>
Date: Mon, 9 Mar 2015 08:42:19 +0900
Subject: [PATCH] Bug 1136958 - Reintroduce pixman code path removed in bug
1097776 for --disable-skia builds
---
gfx/layers/basic/BasicCompositor.cpp | 94 +++++++++++++++++++++++++++++++---
gfx/layers/basic/BasicLayerManager.cpp | 88 +++++++++++++++++++++++++++++--
2 files changed, 171 insertions(+), 11 deletions(-)
diff --git a/gfx/layers/basic/BasicCompositor.cpp b/gfx/layers/basic/BasicCompositor.cpp
index 0bef076..000b591 100644
--- a/gfx/layers/basic/BasicCompositor.cpp
+++ b/gfx/layers/basic/BasicCompositor.cpp
@@ -17,8 +17,13 @@
#include <algorithm>
#include "ImageContainer.h"
#include "gfxPrefs.h"
+#ifdef MOZ_ENABLE_SKIA
#include "skia/SkCanvas.h" // for SkCanvas
#include "skia/SkBitmapDevice.h" // for SkBitmapDevice
+#else
+#define PIXMAN_DONT_DEFINE_STDINT
+#include "pixman.h" // for pixman_f_transform, etc
+#endif
namespace mozilla {
using namespace mozilla::gfx;
@@ -168,6 +173,7 @@ DrawSurfaceWithTextureCoords(DrawTarget *aDest,
mode, aMask, aMaskTransform, &matrix);
}
+#ifdef MOZ_ENABLE_SKIA
static SkMatrix
Matrix3DToSkia(const gfx3DMatrix& aMatrix)
{
@@ -186,10 +192,10 @@ Matrix3DToSkia(const gfx3DMatrix& aMatrix)
}
static void
-SkiaTransform(DataSourceSurface* aDest,
- DataSourceSurface* aSource,
- const gfx3DMatrix& aTransform,
- const Point& aDestOffset)
+Transform(DataSourceSurface* aDest,
+ DataSourceSurface* aSource,
+ const gfx3DMatrix& aTransform,
+ const Point& aDestOffset)
{
if (aTransform.IsSingular()) {
return;
@@ -225,6 +231,78 @@ SkiaTransform(DataSourceSurface* aDest,
SkRect destRect = SkRect::MakeXYWH(0, 0, srcSize.width, srcSize.height);
destCanvas.drawBitmapRectToRect(src, nullptr, destRect, &paint);
}
+#else
+static pixman_transform
+Matrix3DToPixman(const gfx3DMatrix& aMatrix)
+{
+ pixman_f_transform transform;
+
+ transform.m[0][0] = aMatrix._11;
+ transform.m[0][1] = aMatrix._21;
+ transform.m[0][2] = aMatrix._41;
+ transform.m[1][0] = aMatrix._12;
+ transform.m[1][1] = aMatrix._22;
+ transform.m[1][2] = aMatrix._42;
+ transform.m[2][0] = aMatrix._14;
+ transform.m[2][1] = aMatrix._24;
+ transform.m[2][2] = aMatrix._44;
+
+ pixman_transform result;
+ pixman_transform_from_pixman_f_transform(&result, &transform);
+
+ return result;
+}
+
+static void
+Transform(DataSourceSurface* aDest,
+ DataSourceSurface* aSource,
+ const gfx3DMatrix& aTransform,
+ const Point& aDestOffset)
+{
+ IntSize destSize = aDest->GetSize();
+ pixman_image_t* dest = pixman_image_create_bits(PIXMAN_a8r8g8b8,
+ destSize.width,
+ destSize.height,
+ (uint32_t*)aDest->GetData(),
+ aDest->Stride());
+
+ IntSize srcSize = aSource->GetSize();
+ pixman_image_t* src = pixman_image_create_bits(PIXMAN_a8r8g8b8,
+ srcSize.width,
+ srcSize.height,
+ (uint32_t*)aSource->GetData(),
+ aSource->Stride());
+
+ NS_ABORT_IF_FALSE(src && dest, "Failed to create pixman images?");
+
+ pixman_transform pixTransform = Matrix3DToPixman(aTransform);
+ pixman_transform pixTransformInverted;
+
+ // If the transform is singular then nothing would be drawn anyway, return here
+ if (!pixman_transform_invert(&pixTransformInverted, &pixTransform)) {
+ pixman_image_unref(dest);
+ pixman_image_unref(src);
+ return;
+ }
+ pixman_image_set_transform(src, &pixTransformInverted);
+
+ pixman_image_composite32(PIXMAN_OP_SRC,
+ src,
+ nullptr,
+ dest,
+ aDestOffset.x,
+ aDestOffset.y,
+ 0,
+ 0,
+ 0,
+ 0,
+ destSize.width,
+ destSize.height);
+
+ pixman_image_unref(dest);
+ pixman_image_unref(src);
+}
+#endif
static inline IntRect
RoundOut(Rect r)
@@ -364,12 +442,16 @@ BasicCompositor::DrawQuad(const gfx::Rect& aRect,
RefPtr<SourceSurface> snapshot = dest->Snapshot();
RefPtr<DataSourceSurface> source = snapshot->GetDataSurface();
RefPtr<DataSourceSurface> temp =
- Factory::CreateDataSourceSurface(RoundOut(transformBounds).Size(), SurfaceFormat::B8G8R8A8, true);
+ Factory::CreateDataSourceSurface(RoundOut(transformBounds).Size(), SurfaceFormat::B8G8R8A8
+#ifdef MOZ_ENABLE_SKIA
+ , true
+#endif
+ );
if (NS_WARN_IF(!temp)) {
return;
}
- SkiaTransform(temp, source, new3DTransform, transformBounds.TopLeft());
+ Transform(temp, source, new3DTransform, transformBounds.TopLeft());
transformBounds.MoveTo(0, 0);
buffer->DrawSurface(temp, transformBounds, transformBounds);
diff --git a/gfx/layers/basic/BasicLayerManager.cpp b/gfx/layers/basic/BasicLayerManager.cpp
index f4ec9e4..c849c27 100644
--- a/gfx/layers/basic/BasicLayerManager.cpp
+++ b/gfx/layers/basic/BasicLayerManager.cpp
@@ -46,8 +46,13 @@
#include "nsRect.h" // for nsIntRect
#include "nsRegion.h" // for nsIntRegion, etc
#include "nsTArray.h" // for nsAutoTArray
+#ifdef MOZ_ENABLE_SKIA
#include "skia/SkCanvas.h" // for SkCanvas
#include "skia/SkBitmapDevice.h" // for SkBitmapDevice
+#else
+#define PIXMAN_DONT_DEFINE_STDINT
+#include "pixman.h" // for pixman_f_transform, etc
+#endif
class nsIWidget;
namespace mozilla {
@@ -601,6 +606,7 @@ BasicLayerManager::SetRoot(Layer* aLayer)
mRoot = aLayer;
}
+#ifdef MOZ_ENABLE_SKIA
static SkMatrix
BasicLayerManager_Matrix3DToSkia(const gfx3DMatrix& aMatrix)
{
@@ -619,10 +625,10 @@ BasicLayerManager_Matrix3DToSkia(const gfx3DMatrix& aMatrix)
}
static void
-SkiaTransform(const gfxImageSurface* aDest,
- RefPtr<DataSourceSurface> aSrc,
- const gfx3DMatrix& aTransform,
- gfxPoint aDestOffset)
+Transform(const gfxImageSurface* aDest,
+ RefPtr<DataSourceSurface> aSrc,
+ const gfx3DMatrix& aTransform,
+ gfxPoint aDestOffset)
{
if (aTransform.IsSingular()) {
return;
@@ -658,6 +664,78 @@ SkiaTransform(const gfxImageSurface* aDest,
SkRect destRect = SkRect::MakeXYWH(0, 0, srcSize.width, srcSize.height);
destCanvas.drawBitmapRectToRect(src, nullptr, destRect, &paint);
}
+#else
+static pixman_transform
+BasicLayerManager_Matrix3DToPixman(const gfx3DMatrix& aMatrix)
+{
+ pixman_f_transform transform;
+
+ transform.m[0][0] = aMatrix._11;
+ transform.m[0][1] = aMatrix._21;
+ transform.m[0][2] = aMatrix._41;
+ transform.m[1][0] = aMatrix._12;
+ transform.m[1][1] = aMatrix._22;
+ transform.m[1][2] = aMatrix._42;
+ transform.m[2][0] = aMatrix._14;
+ transform.m[2][1] = aMatrix._24;
+ transform.m[2][2] = aMatrix._44;
+
+ pixman_transform result;
+ pixman_transform_from_pixman_f_transform(&result, &transform);
+
+ return result;
+}
+
+static void
+Transform(const gfxImageSurface* aDest,
+ RefPtr<DataSourceSurface> aSrc,
+ const gfx3DMatrix& aTransform,
+ gfxPoint aDestOffset)
+{
+ IntSize destSize = ToIntSize(aDest->GetSize());
+ pixman_image_t* dest = pixman_image_create_bits(aDest->Format() == gfxImageFormat::ARGB32 ? PIXMAN_a8r8g8b8 : PIXMAN_x8r8g8b8,
+ destSize.width,
+ destSize.height,
+ (uint32_t*)aDest->Data(),
+ aDest->Stride());
+
+ IntSize srcSize = aSrc->GetSize();
+ pixman_image_t* src = pixman_image_create_bits(aSrc->GetFormat() == SurfaceFormat::B8G8R8A8 ? PIXMAN_a8r8g8b8 : PIXMAN_x8r8g8b8,
+ srcSize.width,
+ srcSize.height,
+ (uint32_t*)aSrc->GetData(),
+ aSrc->Stride());
+
+ NS_ABORT_IF_FALSE(src && dest, "Failed to create pixman images?");
+
+ pixman_transform pixTransform = BasicLayerManager_Matrix3DToPixman(aTransform);
+ pixman_transform pixTransformInverted;
+
+ // If the transform is singular then nothing would be drawn anyway, return here
+ if (!pixman_transform_invert(&pixTransformInverted, &pixTransform)) {
+ pixman_image_unref(dest);
+ pixman_image_unref(src);
+ return;
+ }
+ pixman_image_set_transform(src, &pixTransformInverted);
+
+ pixman_image_composite32(PIXMAN_OP_SRC,
+ src,
+ nullptr,
+ dest,
+ aDestOffset.x,
+ aDestOffset.y,
+ 0,
+ 0,
+ 0,
+ 0,
+ destSize.width,
+ destSize.height);
+
+ pixman_image_unref(dest);
+ pixman_image_unref(src);
+}
+#endif
/**
* Transform a surface using a gfx3DMatrix and blit to the destination if
@@ -699,7 +777,7 @@ Transform3D(RefPtr<SourceSurface> aSource,
gfx3DMatrix translation = gfx3DMatrix::Translation(aBounds.x, aBounds.y, 0);
// Transform the content and offset it such that the content begins at the origin.
- SkiaTransform(destImage, aSource->GetDataSurface(), translation * aTransform, offset);
+ Transform(destImage, aSource->GetDataSurface(), translation * aTransform, offset);
// If we haven't actually drawn to aDest then return our temporary image so
// that the caller can do this.
--
2.3.0.4.g34b1174

View File

@ -1,2 +1,2 @@
REV=a7ee2c1f2cba
REV=62bee8cdd19f
REPO=http://hg.mozilla.org/releases/mozilla-release