This commit is contained in:
Ryan VanderMeulen 2014-02-11 08:43:09 -05:00
Родитель 19c3d922ba 8dddcefadb
Коммит 832d95d373
1059 изменённых файлов: 3303 добавлений и 33382 удалений

Просмотреть файл

@ -22,4 +22,4 @@
# changes to stick? As of bug 928195, this shouldn't be necessary! Please
# don't change CLOBBER for WebIDL changes any more.
Bug 964200 - Touching webidl files in this bug doesn't work without a clobber. Tried landing already and had to back out.
Bug 969164 changes the directory layout under js/src during gecko builds, and that causes a build failure on incremental builds because of the js shell trying to replace a directory with the same name.

Просмотреть файл

@ -23,14 +23,6 @@ endif
include $(topsrcdir)/config/config.mk
ifndef LIBXUL_SDK
ifdef COMPILE_ENVIRONMENT
ifndef BUILDING_JS
BUILD_JS = 1
endif
endif
endif
GARBAGE_DIRS += dist _javagen _profile staticlib
DIST_GARBAGE = config.cache config.log config.status* config-defs.h \
config/autoconf.mk \
@ -38,7 +30,7 @@ DIST_GARBAGE = config.cache config.log config.status* config-defs.h \
netwerk/necko-config.h xpcom/xpcom-config.h xpcom/xpcom-private.h \
.mozconfig.mk
ifdef BUILDING_JS
ifdef JS_STANDALONE
configure_dir = $(topsrcdir)/js/src
else
configure_dir = $(topsrcdir)
@ -48,12 +40,12 @@ ifndef MOZ_PROFILE_USE
# We need to explicitly put backend.RecursiveMakeBackend here
# otherwise the rule in rules.mk doesn't run early enough.
libs binaries export tools:: CLOBBER $(configure_dir)/configure config.status backend.RecursiveMakeBackend
ifdef BUILD_JS
libs binaries export tools:: js-config-status
ifndef JS_STANDALONE
libs binaries export tools:: $(topsrcdir)/js/src/configure js/src/config.status
endif
endif
ifdef BUILDING_JS
ifdef JS_STANDALONE
.PHONY: CLOBBER
CLOBBER:
else
@ -64,17 +56,21 @@ CLOBBER: $(topsrcdir)/CLOBBER
@exit 1
endif
$(configure_dir)/configure: $(configure_dir)/configure.in
@echo 'STOP! configure.in has changed, and your configure is out of date.'
$(topsrcdir)/configure: $(topsrcdir)/configure.in
$(topsrcdir)/js/src/configure: $(topsrcdir)/js/src/configure.in
$(topsrcdir)/configure $(topsrcdir)/js/src/configure:
@echo 'STOP! $^ has changed, and your configure is out of date.'
@echo 'Please rerun autoconf and re-configure your build directory.'
@echo 'To ignore this message, touch "configure" in the source directory,'
@echo 'To ignore this message, touch "$@",'
@echo 'but your build might not succeed.'
@exit 1
config.status: $(configure_dir)/configure
@echo 'STOP! configure has changed and needs to be run in this build directory.'
@echo 'Please rerun configure.'
@echo 'To ignore this message, touch "config.status" in the build directory,'
js/src/config.status: $(topsrcdir)/js/src/configure
config.status js/src/config.status:
@echo 'STOP! $^ has changed and needs to be run again.'
@echo 'Please rerun it.'
@echo 'To ignore this message, touch "$(CURDIR)/$@",'
@echo 'but your build might not succeed.'
@exit 1
@ -96,12 +92,6 @@ include backend.RecursiveMakeBackend.pp
default:: backend.RecursiveMakeBackend
ifdef BUILD_JS
.PHONY: js-config-status
js-config-status:
$(call SUBMAKE,backend.RecursiveMakeBackend,js/src,1)
endif
install_manifests := bin idl include public private sdk
install_manifest_depends = \
CLOBBER \
@ -110,8 +100,11 @@ install_manifest_depends = \
backend.RecursiveMakeBackend \
$(NULL)
ifdef BUILD_JS
install_manifest_depends += js-config-status
ifndef JS_STANDALONE
install_manifest_depends += \
$(topsrcdir)/js/src/configure \
js/src/config.status \
$(NULL)
endif
.PHONY: install-manifests
@ -119,24 +112,21 @@ install-manifests: $(addprefix install-dist-,$(install_manifests))
# process_install_manifest needs to be invoked with --no-remove when building
# js as standalone because automated builds are building nspr separately and
# that would remove the resulting files. It is also necessary when building
# js as part of gecko because that would remove the files exported from gecko.
# that would remove the resulting files.
# Eventually, a standalone js build would just be able to build nspr itself,
# removing the need for the former. But that won't likely happen before
# finishing to merge gecko and js build systems, removing the need for the
# latter.
ifdef BUILDING_JS
# removing the need for the former.
ifdef JS_STANDALONE
NO_REMOVE=1
endif
.PHONY: $(addprefix install-dist-,$(install_manifests))
$(addprefix install-dist-,$(install_manifests)): install-dist-%: $(install_manifest_depends)
$(call py_action,process_install_manifest,$(if $(NO_REMOVE),--no-remove )$(DIST)/$* _build_manifests/install/dist_$* $(if $(BUILD_JS),js/src/_build_manifests/install/dist_$*))
$(call py_action,process_install_manifest,$(if $(NO_REMOVE),--no-remove )$(DIST)/$* _build_manifests/install/dist_$*)
.PHONY: install-tests
install-manifests: install-tests
install-tests: $(install_manifest_depends)
$(call py_action,process_install_manifest,$(if $(NO_REMOVE),--no-remove )_tests _build_manifests/install/tests $(if $(BUILD_JS),js/src/_build_manifests/install/tests))
$(call py_action,process_install_manifest,$(if $(NO_REMOVE),--no-remove )_tests _build_manifests/install/tests)
# _tests should be purged during cleaning. However, we don't want it purged
@ -166,7 +156,7 @@ endif
# with no regard for PGO passes. This decision could probably be revisited.
export:: install-dist-sdk
ifndef BUILDING_JS
ifndef JS_STANDALONE
ifdef ENABLE_TESTS
# Additional makefile targets to call automated test suites
include $(topsrcdir)/testing/testsuite-targets.mk
@ -210,7 +200,7 @@ endif
SYM_STORE_SOURCE_DIRS := $(topsrcdir)
ifndef BUILDING_JS
ifndef JS_STANDALONE
include $(topsrcdir)/toolkit/mozapps/installer/package-name.mk
ifdef MOZ_SYMBOLS_EXTRA_BUILDID
@ -281,7 +271,7 @@ check::
@relcount=`find $(DIST)/bin -name '*.so' | xargs objdump -R | grep R_386_PC32 | wc -l` && if test $$relcount -gt 0; then echo 'FAILED: R_386_PC32 relocations detected in a shared library. Did you use a system header without adding it to config/system-headers?'; exit 1; else echo 'PASSED'; fi
endif
ifdef BUILDING_JS
ifdef JS_STANDALONE
# Delegate js-specific rules to js
check-%:
$(MAKE) -C js/src $@
@ -294,10 +284,7 @@ source-package install:
.PHONY: config/export
config/export:
else
ifdef BUILD_JS
js/src/Makefile: subsrcdir := js/src
endif
ifdef MOZ_PSEUDO_DERECURSE
# Interdependencies for parallel export.
@ -308,5 +295,3 @@ ifdef ENABLE_CLANG_PLUGIN
js/src/export config/export: build/clang-plugin/export
endif
endif
endif
endif

Просмотреть файл

@ -689,6 +689,9 @@ getRoleCB(AtkObject *aAtkObj)
#undef ROLE
if (aAtkObj->role == ATK_ROLE_LIST_BOX && !IsAtkVersionAtLeast(2, 1))
aAtkObj->role = ATK_ROLE_LIST;
return aAtkObj->role;
}

Просмотреть файл

@ -22,6 +22,8 @@
using namespace mozilla;
using namespace mozilla::a11y;
int atkMajorVersion = 1, atkMinorVersion = 12;
extern "C" {
typedef GType (* AtkGetTypeType) (void);
typedef void (*GnomeAccessibilityInit) (void);
@ -144,6 +146,18 @@ a11y::PlatformInit()
AtkSocketAccessible::g_atk_socket_embed;
}
const char* (*atkGetVersion)() =
(const char* (*)()) PR_FindFunctionSymbol(sATKLib, "atk_get_version");
if (atkGetVersion) {
const char* version = atkGetVersion();
if (version) {
char* endPtr = nullptr;
atkMajorVersion = strtol(version, &endPtr, 10);
if (*endPtr == '.')
atkMinorVersion = strtol(endPtr + 1, &endPtr, 10);
}
}
// Load and initialize gail library.
nsresult rv = LoadGtkModule(sGail);
if (NS_SUCCEEDED(rv))
@ -336,4 +350,3 @@ static const char sGconfAccessibilityKey[] =
return sShouldEnable;
}

Просмотреть файл

@ -30,4 +30,16 @@ GType mai_atk_object_get_type(void);
GType mai_util_get_type();
mozilla::a11y::AccessibleWrap* GetAccessibleWrap(AtkObject* aAtkObj);
extern int atkMajorVersion, atkMinorVersion;
/**
* Return true if the loaded version of libatk-1.0.so is at least
* aMajor.aMinor.0.
*/
static inline bool
IsAtkVersionAtLeast(int aMajor, int aMinor)
{
return aMajor < atkMajorVersion && aMinor < atkMinorVersion;
}
#endif /* __NS_MAI_H__ */

Просмотреть файл

@ -7,9 +7,11 @@
#include "Accessible-inl.h"
#include "AccIterator.h"
#include "DocAccessible-inl.h"
#include "HTMLImageMapAccessible.h"
#include "nsAccessibilityService.h"
#include "nsAccUtils.h"
#include "nsEventShell.h"
#include "nsImageFrame.h"
#include "Role.h"
#include "nsEventStateManager.h"
@ -37,7 +39,7 @@ FocusManager::FocusedAccessible() const
if (focusedNode) {
DocAccessible* doc =
GetAccService()->GetDocAccessible(focusedNode->OwnerDoc());
return doc ? doc->GetAccessibleOrContainer(focusedNode) : nullptr;
return doc ? GetFocusableAccessibleFor(focusedNode, doc) : nullptr;
}
return nullptr;
@ -61,7 +63,7 @@ FocusManager::IsFocused(const Accessible* aAccessible) const
DocAccessible* doc =
GetAccService()->GetDocAccessible(focusedNode->OwnerDoc());
return aAccessible ==
(doc ? doc->GetAccessibleOrContainer(focusedNode) : nullptr);
(doc ? GetFocusableAccessibleFor(focusedNode, doc) : nullptr);
}
}
return false;
@ -241,12 +243,15 @@ FocusManager::ProcessDOMFocus(nsINode* aTarget)
DocAccessible* document =
GetAccService()->GetDocAccessible(aTarget->OwnerDoc());
Accessible* target = document->GetAccessibleOrContainer(aTarget);
Accessible* target = GetFocusableAccessibleFor(aTarget, document);
if (target && document) {
// Check if still focused. Otherwise we can end up with storing the active
// item for control that isn't focused anymore.
Accessible* DOMFocus =
document->GetAccessibleOrContainer(FocusedDOMNode());
nsINode* focusedNode = FocusedDOMNode();
if (!focusedNode)
return;
Accessible* DOMFocus = GetFocusableAccessibleFor(focusedNode, document);
if (target != DOMFocus)
return;
@ -274,8 +279,11 @@ FocusManager::ProcessFocusEvent(AccEvent* aEvent)
// Check if still focused. Otherwise we can end up with storing the active
// item for control that isn't focused anymore.
DocAccessible* document = aEvent->GetDocAccessible();
Accessible* DOMFocus = document->GetAccessibleOrContainer(FocusedDOMNode());
nsINode* focusedNode = FocusedDOMNode();
if (!focusedNode)
return;
Accessible* DOMFocus = GetFocusableAccessibleFor(focusedNode, document);
if (target != DOMFocus)
return;
@ -289,6 +297,7 @@ FocusManager::ProcessFocusEvent(AccEvent* aEvent)
// Fire menu start/end events for ARIA menus.
if (target->IsARIARole(nsGkAtoms::menuitem)) {
// The focus was moved into menu.
bool tryOwnsParent = true;
Accessible* ARIAMenubar = nullptr;
Accessible* child = target;
Accessible* parent = child->Parent();
@ -304,14 +313,19 @@ FocusManager::ProcessFocusEvent(AccEvent* aEvent)
if (roleMap->Is(nsGkAtoms::menuitem) || roleMap->Is(nsGkAtoms::menu)) {
child = parent;
parent = child->Parent();
tryOwnsParent = true;
continue;
}
}
// If no required context role then check aria-owns relation.
if (!tryOwnsParent)
break;
RelatedAccIterator iter(child->Document(), child->GetContent(),
nsGkAtoms::aria_owns);
parent = iter.Next();
tryOwnsParent = false;
}
if (ARIAMenubar != mActiveARIAMenubar) {
@ -394,3 +408,28 @@ FocusManager::FocusedDOMDocument() const
nsINode* focusedNode = FocusedDOMNode();
return focusedNode ? focusedNode->OwnerDoc() : nullptr;
}
Accessible*
FocusManager::GetFocusableAccessibleFor(nsINode* aNode,
DocAccessible* aDoc) const
{
if (!aNode->IsContent() || !aNode->AsContent()->IsHTML(nsGkAtoms::area))
return aDoc->GetAccessibleOrContainer(aNode);
// XXX Bug 135040, incorrect when multiple images use the same map.
nsIFrame* frame = aNode->AsContent()->GetPrimaryFrame();
nsImageFrame* imageFrame = do_QueryFrame(frame);
if (imageFrame) {
Accessible* parent = aDoc->GetAccessible(imageFrame->GetContent());
if (parent) {
Accessible* area =
parent->AsImageMap()->GetChildAccessibleFor(aNode);
if (area)
return area;
return nullptr;
}
}
return aDoc->GetAccessibleOrContainer(aNode);
}

Просмотреть файл

@ -123,6 +123,12 @@ private:
*/
nsIDocument* FocusedDOMDocument() const;
/**
* Return accessible for a focusable node.
*/
Accessible* GetFocusableAccessibleFor(nsINode* aNode,
DocAccessible* aDoc) const;
private:
nsRefPtr<Accessible> mActiveItem;
nsRefPtr<Accessible> mActiveARIAMenubar;

Просмотреть файл

@ -970,7 +970,7 @@ ROLE(RICH_OPTION,
ROLE(LISTBOX,
"listbox",
ATK_ROLE_LIST,
ATK_ROLE_LIST_BOX,
NSAccessibilityListRole,
ROLE_SYSTEM_LIST,
ROLE_SYSTEM_LIST,

Просмотреть файл

@ -133,6 +133,19 @@ HTMLImageMapAccessible::UpdateChildAreas(bool aDoFireEvents)
mDoc->FireDelayedEvent(reorderEvent);
}
Accessible*
HTMLImageMapAccessible::GetChildAccessibleFor(const nsINode* aNode) const
{
uint32_t length = mChildren.Length();
for (uint32_t i = 0; i < length; i++) {
Accessible* area = mChildren[i];
if (area->GetContent() == aNode)
return area;
}
return nullptr;
}
////////////////////////////////////////////////////////////////////////////////
// HTMLImageMapAccessible: Accessible protected

Просмотреть файл

@ -38,6 +38,11 @@ public:
*/
void UpdateChildAreas(bool aDoFireEvents = true);
/**
* Return accessible of child node.
*/
Accessible* GetChildAccessibleFor(const nsINode* aNode) const;
protected:
// Accessible

Просмотреть файл

@ -170,6 +170,8 @@
gQueue.push(new focusMenu("menubar4", "mb4-item1"));
gQueue.push(new focusMenu("menubar5", "mb5-mi"));
gQueue.push(new synthFocus("mi6"));
gQueue.invoke(); // Will call SimpleTest.finish();
}
@ -210,6 +212,11 @@
title="menustart/end events may be missed when top level menuitem is focused">
Bug 934460
</a>
<a target="_blank"
href="https://bugzilla.mozilla.org/show_bug.cgi?id=970005"
title="infinite long loop in a11y:FocusManager::ProcessFocusEvent">
Bug 970005
</a>
<p id="display"></p>
<div id="content" style="display: none"></div>
@ -265,6 +272,10 @@
</div>
</div>
<!-- other aria-owns relations -->
<div id="mi6" tabindex="0" role="menuitem">aria-owned item</div>
<div aria-owns="mi6">Obla</div>
<div id="eventdump"></div>
</body>

Просмотреть файл

@ -44,6 +44,16 @@
}
}
function imageMapChecker(aID)
{
var node = getNode(aID);
this.type = EVENT_FOCUS;
this.match = function imageMapChecker_match(aEvent)
{
return aEvent.DOMNode == node;
}
}
function topMenuChecker()
{
this.type = EVENT_FOCUS;
@ -115,6 +125,9 @@
gQueue.push(new synthShiftTab("link", new focusChecker("link")));
} // ! SEAMONKEY
gQueue.push(new synthFocus("a", new imageMapChecker("a")));
gQueue.push(new synthFocus("b", new imageMapChecker("b")));
gQueue.invoke(); // Will call SimpleTest.finish();
}
@ -139,6 +152,11 @@
title="Rework accessible focus handling">
Mozilla Bug 673958
</a>
<a target="_blank"
href="https://bugzilla.mozilla.org/show_bug.cgi?id=961696"
title="Accessible object:state-changed:focused events for imagemap links are broken">
Mozilla Bug 961696
</a>
<p id="display"></p>
<div id="content" style="display: none"></div>
<pre id="test">
@ -150,6 +168,12 @@
<a id="link" href="">link</a>
<iframe id="editabledoc" src="about:blank"></iframe>
<map name="atoz_map">
<area id="a" coords="0,0,13,14" shape="rect">
<area id="b" coords="17,0,30,14" shape="rect">
</map>
<img width="447" height="15" usemap="#atoz_map" src="../letters.gif">
<div id="eventdump"></div>
</body>
</html>

1
aclocal.m4 поставляемый
Просмотреть файл

@ -31,6 +31,7 @@ builtin(include, build/autoconf/linux.m4)dnl
builtin(include, build/autoconf/python-virtualenv.m4)dnl
builtin(include, build/autoconf/winsdk.m4)dnl
builtin(include, build/autoconf/icu.m4)dnl
builtin(include, build/autoconf/ffi.m4)dnl
MOZ_PROG_CHECKMSYS()

Просмотреть файл

@ -27,14 +27,8 @@ LIBS += \
$(NULL)
endif
OS_LDFLAGS += -Wl,--export-dynamic
LOCAL_INCLUDES += -I$(topsrcdir)/widget/gonk/libdisplay
endif
LOCAL_INCLUDES += -I$(topsrcdir)/toolkit/xre
LOCAL_INCLUDES += -I$(topsrcdir)/xpcom/base
LOCAL_INCLUDES += -I$(topsrcdir)/xpcom/build
LOCAL_INCLUDES += -I$(DEPTH)/build
STL_FLAGS=
LIBS += $(JEMALLOC_LIBS)

Просмотреть файл

@ -20,3 +20,18 @@ DEFINES['XPCOM_GLUE'] = True
for var in ('MOZ_APP_NAME', 'MOZ_APP_VERSION', 'MOZ_UPDATER'):
DEFINES[var] = CONFIG[var]
GENERATED_INCLUDES += [
'/build',
]
LOCAL_INCLUDES += [
'/toolkit/xre',
'/xpcom/base',
'/xpcom/build',
]
if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'gonk':
LOCAL_INCLUDES += [
'/widget/gonk/libdisplay',
]

Просмотреть файл

@ -72,7 +72,7 @@ static bool IsArg(const char* arg, const char* s)
return !strcasecmp(arg, s);
}
#if defined(XP_WIN) || defined(XP_OS2)
#if defined(XP_WIN)
if (*arg == '/')
return !strcasecmp(++arg, s);
#endif

Просмотреть файл

@ -104,13 +104,9 @@
#endif
@BINPATH@/application.ini
@BINPATH@/platform.ini
#ifndef XP_OS2
#ifndef MOZ_FOLD_LIBS
@BINPATH@/@DLL_PREFIX@mozsqlite3@DLL_SUFFIX@
#endif
#else
@BINPATH@/mozsqlt3@DLL_SUFFIX@
#endif
@BINPATH@/blocklist.xml
@BINPATH@/ua-update.json
#ifdef XP_UNIX
@ -453,11 +449,7 @@
@BINPATH@/components/nsSessionStore.js
@BINPATH@/components/nsURLFormatter.manifest
@BINPATH@/components/nsURLFormatter.js
#ifndef XP_OS2
@BINPATH@/components/@DLL_PREFIX@browsercomps@DLL_SUFFIX@
#else
@BINPATH@/components/brwsrcmp@DLL_SUFFIX@
#endif
@BINPATH@/components/txEXSLTRegExFunctions.manifest
@BINPATH@/components/txEXSLTRegExFunctions.js
@BINPATH@/components/toolkitplaces.manifest
@ -749,11 +741,6 @@ bin/libfreebl_32int64_3.so
bin/components/@DLL_PREFIX@nkgnomevfs@DLL_SUFFIX@
#endif
; [OS/2]
#ifdef XP_OS2
@BINPATH@/MozSounds.cmd
#endif
[b2g]
#ifndef MOZ_WIDGET_GONK
#ifdef XP_WIN32

Просмотреть файл

@ -26,13 +26,6 @@ endif #} LIBXUL_SDK
# Build a binary bootstrapping with XRE_main
LOCAL_INCLUDES += \
-I$(topsrcdir)/toolkit/xre \
-I$(topsrcdir)/xpcom/base \
-I$(topsrcdir)/xpcom/build \
-I$(DEPTH)/build \
$(NULL)
STL_FLAGS=
LIBS += \
@ -81,11 +74,6 @@ RCFLAGS += -DMOZ_PHOENIX --include-dir $(srcdir)
endif
endif
ifeq ($(OS_ARCH),OS2)
RCFLAGS += -DMOZ_PHOENIX
RCFLAGS += -DFIREFOX_ICO='"$(DIST)/branding/firefox-os2.ico"' -DDOCUMENT_ICO='"$(DIST)/branding/document-os2.ico"'
endif
PROGRAMS_DEST = $(DIST)/bin
include $(topsrcdir)/config/rules.mk
@ -106,7 +94,7 @@ LDFLAGS += /HEAP:0x40000
endif #}
endif #}
ifneq (,$(filter-out OS2 WINNT,$(OS_ARCH)))
ifneq (,$(filter-out WINNT,$(OS_ARCH)))
ifdef COMPILE_ENVIRONMENT
libs::

Просмотреть файл

@ -218,5 +218,7 @@
<true/>
<key>NSPrincipalClass</key>
<string>GeckoNSApplication</string>
<key>NSDisablePersistence</key>
<true/>
</dict>
</plist>

Просмотреть файл

@ -22,3 +22,13 @@ for var in ('MOZILLA_OFFICIAL', 'LIBXUL_SDK'):
DEFINES[var] = True
DEFINES['XPCOM_GLUE'] = True
GENERATED_INCLUDES += [
'/build',
]
LOCAL_INCLUDES += [
'/toolkit/xre',
'/xpcom/base',
'/xpcom/build',
]

Просмотреть файл

@ -110,7 +110,7 @@ static bool IsArg(const char* arg, const char* s)
return !strcasecmp(arg, s);
}
#if defined(XP_WIN) || defined(XP_OS2)
#if defined(XP_WIN)
if (*arg == '/')
return !strcasecmp(++arg, s);
#endif

Просмотреть файл

@ -1,24 +0,0 @@
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
#include <os2.h>
// Splash screen dialog ID.
#define IDD_SPLASH 100
// Splash screen bitmap ID.
#define IDB_SPLASH 101
ICON 1 FIREFOX_ICO
DLGTEMPLATE IDD_SPLASH DISCARDABLE
BEGIN
DIALOG "", IDD_SPLASH, 0, 0, 390, 261, , FCF_BORDER
BEGIN
END
END
//BITMAP IDB_SPLASH "splash.bmp"

Просмотреть файл

@ -153,11 +153,6 @@ var FeedHandler = {
},
addFeed: function(link, browserForLink) {
if (!browserForLink) {
// ignore feeds loaded in subframes (see bug 305472)
return;
}
if (!browserForLink.feeds)
browserForLink.feeds = [];

Просмотреть файл

@ -1910,9 +1910,12 @@
// the fast path.
if (closeWindow &&
aCloseWindowFastpath &&
this._removingTabs.length == 0 &&
(this._windowIsClosing = window.closeWindow(true, window.warnAboutClosingWindow)))
this._removingTabs.length == 0) {
// This call actually closes the window, unless the user
// cancels the operation. We are finished here in both cases.
this._windowIsClosing = window.closeWindow(true, window.warnAboutClosingWindow);
return null;
}
newTab = true;
}

Просмотреть файл

@ -38,7 +38,9 @@ function test() {
name: "provider 1",
origin: "https://example.com",
sidebarURL: "https://example.com/browser/browser/base/content/test/social/social_sidebar.html",
statusURL: "https://example.com/browser/browser/base/content/test/social/social_panel.html",
workerURL: "https://example.com/browser/browser/base/content/test/social/social_worker.js",
markURL: "https://example.com/browser/browser/base/content/test/social/social_mark.html?url=%{url}",
iconURL: "https://example.com/browser/browser/base/content/test/general/moz.png"
};
runSocialTestWithProvider(manifest, function (finishcb) {
@ -68,10 +70,26 @@ var tests = {
info("checking private window ui");
ok(!pbwin.SocialUI.enabled, "social is disabled in a PB window");
checkSocialUI(pbwin);
// but they should all remain enabled in the initial window
info("checking main window ui");
ok(window.SocialUI.enabled, "social is still enabled in normal window");
checkSocialUI(window);
// Check that the status button is disabled on the private
// browsing window and not on the normal window.
let id = SocialStatus._toolbarHelper.idFromOrigin("https://example.com");
let widget = CustomizableUI.getWidget(id);
ok(widget.forWindow(pbwin).node.disabled, "status button disabled on private window");
ok(!widget.forWindow(window).node.disabled, "status button enabled on normal window");
// Check that the mark button is disabled on the private
// browsing window and not on the normal window.
id = SocialMarks._toolbarHelper.idFromOrigin("https://example.com");
widget = CustomizableUI.getWidget(id);
ok(widget.forWindow(pbwin).node.disabled, "mark button disabled on private window");
ok(!widget.forWindow(window).node.disabled, "mark button enabled on normal window");
// that's all folks...
pbwin.close();
next();

Просмотреть файл

@ -47,13 +47,6 @@ BRANDING_FILES := \
$(NULL)
endif
ifeq ($(OS_ARCH),OS2)
BRANDING_FILES := \
firefox-os2.ico \
document-os2.ico \
$(NULL)
endif
BRANDING_DEST := $(DIST)/branding
BRANDING_TARGET := export
INSTALL_TARGETS += BRANDING

Двоичные данные
browser/branding/aurora/document-os2.ico

Двоичный файл не отображается.

Двоичные данные
browser/branding/aurora/firefox-os2.ico

Двоичный файл не отображается.

Просмотреть файл

@ -47,13 +47,6 @@ BRANDING_FILES := \
$(NULL)
endif
ifeq ($(OS_ARCH),OS2)
BRANDING_FILES := \
firefox-os2.ico \
document-os2.ico \
$(NULL)
endif
BRANDING_DEST := $(DIST)/branding
BRANDING_TARGET := export
INSTALL_TARGETS += BRANDING

Двоичные данные
browser/branding/nightly/document-os2.ico

Двоичный файл не отображается.

Двоичные данные
browser/branding/nightly/firefox-os2.ico

Двоичный файл не отображается.

Просмотреть файл

@ -47,13 +47,6 @@ BRANDING_FILES := \
$(NULL)
endif
ifeq ($(OS_ARCH),OS2)
BRANDING_FILES := \
firefox-os2.ico \
document-os2.ico \
$(NULL)
endif
BRANDING_DEST := $(DIST)/branding
BRANDING_TARGET := export
INSTALL_TARGETS += BRANDING

Двоичные данные
browser/branding/official/document-os2.ico

Двоичный файл не отображается.

Двоичные данные
browser/branding/official/firefox-os2.ico

Двоичный файл не отображается.

Просмотреть файл

@ -47,13 +47,6 @@ BRANDING_FILES := \
$(NULL)
endif
ifeq ($(OS_ARCH),OS2)
BRANDING_FILES := \
firefox-os2.ico \
document-os2.ico \
$(NULL)
endif
BRANDING_DEST := $(DIST)/branding
BRANDING_TARGET := export
INSTALL_TARGETS += BRANDING

Двоичные данные
browser/branding/unofficial/document-os2.ico

Двоичный файл не отображается.

Двоичные данные
browser/branding/unofficial/firefox-os2.ico

Двоичный файл не отображается.

Просмотреть файл

@ -1,5 +0,0 @@
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
LOCAL_INCLUDES = -I$(srcdir)/../build

Просмотреть файл

@ -13,3 +13,7 @@ SOURCES += [
]
FINAL_LIBRARY = 'browsercomps'
LOCAL_INCLUDES += [
'../build',
]

Просмотреть файл

@ -6,13 +6,6 @@ ifeq ($(OS_ARCH),WINNT)
OS_LIBS += $(call EXPAND_LIBNAME,ole32 shell32 shlwapi)
endif
LOCAL_INCLUDES = \
-I$(srcdir)/../shell/src \
-I$(srcdir)/../feeds/src \
-I$(srcdir)/../about \
-I$(srcdir)/../dirprovider \
$(NULL)
ifeq ($(OS_ARCH),WINNT)
OS_LIBS += $(call EXPAND_LIBNAME,version)
endif
@ -22,8 +15,6 @@ EXTRA_DSO_LDOPTS += \
$(MOZ_COMPONENT_LIBS) \
$(NULL)
LOCAL_INCLUDES += -I$(srcdir)/../migration/src
# Mac: Need to link with CoreFoundation for Mac Migrators (PList reading code)
# GTK2: Need to link with glib for GNOME shell service
ifneq (,$(filter cocoa gtk2 gtk3,$(MOZ_WIDGET_TOOLKIT)))

Просмотреть файл

@ -17,3 +17,11 @@ LIBRARY_NAME = 'browsercomps'
IS_COMPONENT = True
FORCE_SHARED_LIB = True
LOCAL_INCLUDES += [
'../about',
'../dirprovider',
'../feeds/src',
'../migration/src',
'../shell/src',
]

Просмотреть файл

@ -2055,6 +2055,7 @@ let CustomizableUIInternal = {
// Reset placements to make restoring default placements possible.
gPlacements = new Map();
gDirtyAreaCache = new Set();
gSeenWidgets = new Set();
// Clear the saved state to ensure that defaults will be used.
gSavedState = null;
// Restore the state for each area to its defaults

Просмотреть файл

@ -330,7 +330,7 @@ const CustomizableWidgets = [{
tooltiptext: "preferences-button.tooltiptext.withshortcut",
shortcutId: "key_preferencesCmdMac",
#else
tooltiptext: "preferences-button.tooltiptext",
tooltiptext: "preferences-button.tooltiptext2",
#endif
#endif
onCommand: function(aEvent) {

Просмотреть файл

@ -63,5 +63,6 @@ skip-if = os == "linux"
[browser_948985_non_removable_defaultArea.js]
[browser_952963_areaType_getter_no_area.js]
[browser_956602_remove_special_widget.js]
[browser_969427_recreate_destroyed_widget_after_reset.js]
[browser_969661_character_encoding_navbar_disabled.js]
[browser_panel_toggle.js]

Просмотреть файл

@ -0,0 +1,34 @@
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
"use strict";
function getPlacementArea(id) {
let placement = CustomizableUI.getPlacementOfWidget(id);
return placement && placement.area;
}
// Check that a destroyed widget recreated after a reset call goes to
// the navigation bar.
add_task(function() {
const kWidgetId = "test-recreate-after-reset";
let spec = {id: kWidgetId, label: "Test re-create after reset.",
removable: true, defaultArea: CustomizableUI.AREA_NAVBAR};
CustomizableUI.createWidget(spec);
is(getPlacementArea(kWidgetId), CustomizableUI.AREA_NAVBAR,
"widget is in the navigation bar");
CustomizableUI.destroyWidget(kWidgetId);
isnot(getPlacementArea(kWidgetId), CustomizableUI.AREA_NAVBAR,
"widget removed from the navigation bar");
CustomizableUI.reset();
CustomizableUI.createWidget(spec);
is(getPlacementArea(kWidgetId), CustomizableUI.AREA_NAVBAR,
"widget recreated and added back to the nav bar");
CustomizableUI.destroyWidget(kWidgetId);
});

Просмотреть файл

@ -1,5 +0,0 @@
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
LOCAL_INCLUDES = -I$(srcdir)/../build

Просмотреть файл

@ -17,3 +17,7 @@ XPCSHELL_TESTS_MANIFESTS += [
]
FINAL_LIBRARY = 'browsercomps'
LOCAL_INCLUDES += [
'../build'
]

Просмотреть файл

@ -50,9 +50,6 @@
#ifdef XP_WIN
#define USE_WIN_TITLE_STYLE
#endif
#ifdef XP_OS2
#define USE_WIN_TITLE_STYLE
#endif
<page xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
xmlns:html="http://www.w3.org/1999/xhtml"

Просмотреть файл

@ -27,9 +27,6 @@
#ifdef XP_WIN
#define USE_WIN_TITLE_STYLE
#endif
#ifdef XP_OS2
#define USE_WIN_TITLE_STYLE
#endif
#ifdef XP_MACOSX
<?xul-overlay href="chrome://browser/content/macBrowserOverlay.xul"?>

Просмотреть файл

@ -166,14 +166,6 @@ function onListKeyDown(aEvent) {
if (aEvent.ctrlKey && !treeView.isContainer(ix))
restoreSingleTab(ix, aEvent.shiftKey);
break;
case KeyEvent.DOM_VK_UP:
case KeyEvent.DOM_VK_DOWN:
case KeyEvent.DOM_VK_PAGE_UP:
case KeyEvent.DOM_VK_PAGE_DOWN:
case KeyEvent.DOM_VK_HOME:
case KeyEvent.DOM_VK_END:
aEvent.preventDefault(); // else the page scrolls unwantedly
break;
}
}

Просмотреть файл

@ -157,6 +157,11 @@ Telemetry.prototype = {
histogram: "DEVTOOLS_DEVELOPERTOOLBAR_OPENED_BOOLEAN",
userHistogram: "DEVTOOLS_DEVELOPERTOOLBAR_OPENED_PER_USER_FLAG",
timerHistogram: "DEVTOOLS_DEVELOPERTOOLBAR_TIME_ACTIVE_SECONDS"
},
custom: {
histogram: "DEVTOOLS_CUSTOM_OPENED_BOOLEAN",
userHistogram: "DEVTOOLS_CUSTOM_OPENED_PER_USER_FLAG",
timerHistogram: "DEVTOOLS_CUSTOM_TIME_ACTIVE_SECONDS"
}
},
@ -168,14 +173,7 @@ Telemetry.prototype = {
* histogram.
*/
toolOpened: function(id) {
let charts = this._histograms[id];
if (!charts) {
dump('Warning: An attempt was made to open a tool with an id of "' + id +
'", which is not listed in Telemetry._histograms. ' +
"Location: telemetry.js/toolOpened()\n");
return;
}
let charts = this._histograms[id] || this._histograms.custom;
if (charts.histogram) {
this.log(charts.histogram, true);

Просмотреть файл

@ -758,6 +758,25 @@ Editor.prototype = {
{ line: end.line + 1, ch: end.ch });
},
/**
* Returns current font size for the editor area, in pixels.
*/
getFontSize: function () {
let cm = editors.get(this);
let el = cm.getWrapperElement();
let win = el.ownerDocument.defaultView;
return parseInt(win.getComputedStyle(el).getPropertyValue("font-size"), 10);
},
/**
* Sets font size for the editor area.
*/
setFontSize: function (size) {
let cm = editors.get(this);
cm.getWrapperElement().style.fontSize = parseInt(size, 10) + "px";
},
/**
* Extends an instance of the Editor object with additional
* functions. Each function will be called with context as

Просмотреть файл

@ -51,6 +51,12 @@ function test() {
ed.removeLineClass(0, "test");
ok(!ed.hasLineClass(0, "test"), "test line class is gone");
// Font size
let size = ed.getFontSize();
is("number", typeof size, "we have the default font size");
ed.setFontSize(ed.getFontSize() + 1);
is(ed.getFontSize(), size + 1, "new font size was set");
teardown(ed, win);
});
}
}

Просмотреть файл

@ -141,15 +141,11 @@
@BINPATH@/update-settings.ini
#endif
@BINPATH@/platform.ini
#ifndef XP_OS2
#ifndef MOZ_NATIVE_SQLITE
#ifndef MOZ_FOLD_LIBS
@BINPATH@/@DLL_PREFIX@mozsqlite3@DLL_SUFFIX@
#endif
#endif
#else
@BINPATH@/mozsqlt3@DLL_SUFFIX@
#endif
@BINPATH@/browser/blocklist.xml
#ifdef XP_UNIX
#ifndef XP_MACOSX
@ -430,11 +426,7 @@
@BINPATH@/browser/components/nsSessionStore.js
@BINPATH@/components/nsURLFormatter.manifest
@BINPATH@/components/nsURLFormatter.js
#ifndef XP_OS2
@BINPATH@/browser/components/@DLL_PREFIX@browsercomps@DLL_SUFFIX@
#else
@BINPATH@/browser/components/brwsrcmp@DLL_SUFFIX@
#endif
@BINPATH@/components/txEXSLTRegExFunctions.manifest
@BINPATH@/components/txEXSLTRegExFunctions.js
@BINPATH@/components/toolkitplaces.manifest
@ -792,13 +784,6 @@ bin/libfreebl_32int64_3.so
#endif
#endif
; [OS/2]
#ifdef XP_OS2
@BINPATH@/MozSounds.cmd
@BINPATH@/*.xqs
@BINPATH@/components/*.xqs
#endif
#ifdef MOZ_WEBAPP_RUNTIME
[WebappRuntime]
#ifdef XP_WIN

Просмотреть файл

@ -21,8 +21,8 @@
<box id="instruction-topsites-box" insertafter="start-topsites" class="firstrun">
<box id="instruction-topsites">
<vbox class="instruction-content-container">
<image class="instruction-arrow arrow-left-straight" />
<image class="instruction-arrow arrow-left" />
<image class="instruction-arrow arrow-back-straight" />
<image class="instruction-arrow arrow-back" />
<label class="instruction-label">&firstRunTopSites.label;</label>
</vbox>
</box>
@ -37,7 +37,7 @@
<box insertafter="start-bookmarks" class="firstrun">
<box id="instruction-bookmarks">
<vbox class="instruction-content-container" align="center">
<image class="instruction-arrow arrow-right" />
<image class="instruction-arrow arrow-forward" />
<label class="instruction-label">&firstRunBookmarks.label;</label>
</vbox>
</box>
@ -46,7 +46,7 @@
<box id="instruction-history-container" insertafter="start-history" class="firstrun">
<box id="instruction-history">
<vbox class="instruction-content-container" align="center">
<image class="instruction-arrow arrow-right" />
<image class="instruction-arrow arrow-forward" />
<label class="instruction-label">&firstRunHistory.label;</label>
</vbox>
</box>

Просмотреть файл

@ -27,7 +27,8 @@
<!-- we're using html here so we get anonymous scrollbars on the browser element -->
<html:html id="startui-page"
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
xmlns:html="http://www.w3.org/1999/xhtml">
xmlns:html="http://www.w3.org/1999/xhtml"
dir="&locale.dir;">
<html:body id="startui-body" class="meta"
onload="StartUI.init();" onunload="StartUI.uninit();">

Просмотреть файл

@ -39,6 +39,9 @@ pref("metro.private_browsing.enabled", false);
// Enable tab-modal prompts
pref("prompts.tab_modal.enabled", true);
// NewTabUtils pref related to top site thumbnail updating.
pref("browser.newtabpage.enabled", true);
// Enable off main thread compositing
pref("layers.offmainthreadcomposition.enabled", true);
pref("layers.async-pan-zoom.enabled", true);

Просмотреть файл

@ -96,23 +96,34 @@ below instruction */
.instruction-arrow.arrow-down {
transform: rotate(180deg);
}
.instruction-arrow.arrow-down:-moz-locale-dir(rtl) {
transform: scaleY(-1);
}
.instruction-arrow.arrow-left,
.instruction-arrow.arrow-right,
.instruction-arrow.arrow-left-straight,
.instruction-arrow.arrow-right-straight {
.instruction-arrow.arrow-back,
.instruction-arrow.arrow-forward,
.instruction-arrow.arrow-back-straight,
.instruction-arrow.arrow-forward-straight {
background-image: url("chrome://browser/skin/images/arrow-left.png");
}
.instruction-arrow.arrow-right {
.instruction-arrow.arrow-back,
.instruction-arrow.arrow-forward:-moz-locale-dir(rtl) {
transform: rotate(0) scaleY(1);
}
.instruction-arrow.arrow-forward,
.instruction-arrow.arrow-back:-moz-locale-dir(rtl) {
transform: rotate(180deg) scaleY(-1);
}
.instruction-arrow.arrow-left-straight {
.instruction-arrow.arrow-back-straight,
.instruction-arrow.arrow-forward-straight:-moz-locale-dir(rtl) {
transform: rotate(220deg) scaleX(-1);
}
.instruction-arrow.arrow-right-straight {
.instruction-arrow.arrow-forward-straight,
.instruction-arrow.arrow-back-straight:-moz-locale-dir(rtl) {
transform: rotate(-220deg);
}
@ -121,10 +132,18 @@ below instruction */
top: 10px;
transform: translateX(calc(630px - 50%));
}
#instruction-tabs:-moz-locale-dir(rtl) {
right: 0;
left: auto;
transform: translateX(calc(50% - 630px));
}
#start-container[viewstate="portrait"] #instruction-tabs {
transform: translateX(calc(50vw - 50%));
}
#start-container[viewstate="portrait"] #instruction-tabs:-moz-locale-dir(rtl) {
transform: translateX(calc(-50vw + 50%));
}
#start-container[viewstate="landscape"] #instruction-topsites {
position: absolute;
@ -143,19 +162,19 @@ below instruction */
-moz-box-align: center;
}
#start-container[viewstate="portrait"] #instruction-topsites .arrow-left-straight {
#start-container[viewstate="portrait"] #instruction-topsites .arrow-back-straight {
display: none;
}
#start-container[viewstate="portrait"] #instruction-topsites .arrow-left {
#start-container[viewstate="portrait"] #instruction-topsites .arrow-back {
display: block;
}
#start-container[viewstate="landscape"] #instruction-topsites .arrow-left-straight {
#start-container[viewstate="landscape"] #instruction-topsites .arrow-back-straight {
display: block;
}
#start-container[viewstate="landscape"] #instruction-topsites .arrow-left {
#start-container[viewstate="landscape"] #instruction-topsites .arrow-back {
display: none;
}
@ -165,24 +184,41 @@ below instruction */
top: 310px;
transform: translateX(calc(-300px - 50%));
}
#start-container[viewstate="landscape"] #instruction-history:-moz-locale-dir(rtl),
#start-container[viewstate="landscape"] #instruction-bookmarks:-moz-locale-dir(rtl) {
transform: translateX(calc(300px + 50%));
}
#start-container[viewstate="portrait"] #instruction-history,
#start-container[viewstate="portrait"] #instruction-bookmarks,
#start-container[viewstate="portrait"] #instruction-topsites {
transform: translateX(-55px);
}
#start-container[viewstate="portrait"] #instruction-history:-moz-locale-dir(rtl),
#start-container[viewstate="portrait"] #instruction-bookmarks:-moz-locale-dir(rtl),
#start-container[viewstate="portrait"] #instruction-topsites:-moz-locale-dir(rtl) {
transform: translateX(55px);
}
#start-container[viewstate="landscape"] #instruction-menu {
position: fixed;
bottom: 16px;
right: 37px;
}
#start-container[viewstate="landscape"] #instruction-menu:-moz-locale-dir(rtl) {
left: 37px;
right: auto;
}
#start-container[viewstate="portrait"] #instruction-menu {
position: absolute;
right: 37px;
transform: translateY(40px);
}
#start-container[viewstate="portrait"] #instruction-menu:-moz-locale-dir(rtl) {
left: 37px;
right: auto;
}
#start-container #instruction-menu .instruction-label {
max-width: 300px;
@ -201,8 +237,8 @@ below instruction */
background-image: url("chrome://browser/skin/images/arrow-top@1.4x.png");
}
.instruction-arrow.arrow-left,
.instruction-arrow.arrow-right {
.instruction-arrow.arrow-back,
.instruction-arrow.arrow-forward {
background-image: url("chrome://browser/skin/images/arrow-left@1.4x.png");
}
@ -218,8 +254,8 @@ below instruction */
background-image: url("chrome://browser/skin/images/arrow-top@1.8x.png");
}
.instruction-arrow.arrow-left,
.instruction-arrow.arrow-right {
.instruction-arrow.arrow-back,
.instruction-arrow.arrow-forward {
background-image: url("chrome://browser/skin/images/arrow-left@1.8x.png");
}

Двоичные данные
browser/metro/theme/images/tile-selected-check-rtl-hdpi.png Normal file

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 910 B

Просмотреть файл

@ -140,6 +140,7 @@ chrome.jar:
skin/images/appbar-icons.png (images/appbar-icons.png)
skin/images/pinned-hdpi.png (images/pinned-hdpi.png)
skin/images/tile-selected-check-hdpi.png (images/tile-selected-check-hdpi.png)
skin/images/tile-selected-check-rtl-hdpi.png (images/tile-selected-check-rtl-hdpi.png)
skin/images/plus-34.png (images/plus-34.png)
skin/images/plus-24.png (images/plus-24.png)
skin/images/progresscircle.png (images/progresscircle.png)

Просмотреть файл

@ -682,14 +682,10 @@ tabmodalprompt:not([promptType="promptUserAndPass"]) .infoContainer {
margin-bottom: calc(40px - @tile_side_margin@);
}
.meta-section:not([expanded]) > .meta-section-title.narrow-title:-moz-locale-dir(ltr):after {
.meta-section:not([expanded]) > .meta-section-title.narrow-title:after {
content: ">";
}
.meta-section:not([expanded]) > .meta-section-title.narrow-title:-moz-locale-dir(rtl):before {
content: "<";
}
.meta-section-container:not([viewstate="snapped"]) .meta-section-title.narrow-title,
.meta-section-container[viewstate="snapped"] .meta-section-title.wide-title {
display: none;

Просмотреть файл

@ -91,6 +91,10 @@ richgriditem {
padding: 8px;
background-color: #fff;
}
richgriditem:-moz-locale-dir(rtl) .tile-start-container {
right: 10px;
left: 0;
}
richgriditem[search] .tile-start-container {
background-color: transparent;
@ -137,20 +141,34 @@ richgriditem[search] .tile-icon-box {
padding: 0;
border: 0;
left: 50%;
margin-left: -13px;
-moz-margin-start: -13px;
margin-top: -8px;
}
richgriditem[search]:-moz-locale-dir(rtl) .tile-icon-box {
right: 50%;
left: auto;
}
richgriditem[search][iconsize="large"] .tile-icon-box {
left: 0;
top: 0;
margin: 0;
}
richgriditem[search][iconsize="large"]:-moz-locale-dir(rtl) .tile-icon-box {
right: 0;
left: auto;
}
richgriditem[search][iconsize="large"] .tile-start-container {
left: 0;
padding: 0;
}
richgriditem[search][iconsize="large"]:-moz-locale-dir(rtl) .tile-start-container {
left: auto;
right: 0;
}
richgriditem[search][iconsize="large"] .tile-icon-box > image {
width: 74px;
@ -169,9 +187,12 @@ richgriditem[search] .tile-content {
display: block;
position: absolute;
top: 6px;
left: 52px; /* label goes to the right of the favicon */
left: 52px; /* label goes to the end (right) of the favicon */
right: 0;
padding: 1em 6px 6px 12px;
padding-top: 1em;
-moz-padding-end: 6px;
padding-bottom: 6px;
-moz-padding-start: 12px;
background: white;
color: #333;
margin: 0;
@ -183,6 +204,10 @@ richgriditem[search] .tile-content {
text-overflow: ellipsis;
transition: @metro_animation_duration@ background-color @metro_animation_easing@;
}
richgriditem:-moz-locale-dir(rtl) .tile-desc {
right: 52px; /* label goes to the end (left) of the favicon */
left: 0;
}
richgriditem:not([tiletype="thumbnail"]) .tile-desc {
background-color: transparent!important;
@ -219,7 +244,11 @@ richgriditem[tiletype="thumbnail"] .tile-desc {
top: auto;
bottom: 0;
left: 0;
padding: 4px 8px 4px 56px;
right: 0;
padding-top: 4px;
-moz-padding-end: 8px;
padding-bottom: 4px;
-moz-padding-start: 56px;
}
richgriditem[tiletype="thumbnail"] > .tile-content > .tile-desc {
@ -263,6 +292,10 @@ richgriditem[tiletype="thumbnail"] .tile-icon-box {
z-index: 1;
box-shadow: 0px 0px 2px 2px rgba(0, 0, 0, 0.05), 0px 2px 0px rgba(0, 0, 0, 0.1);
}
richgriditem[tiletype="thumbnail"]:-moz-locale-dir(rtl) .tile-icon-box {
left: auto;
right: 10px;
}
/* selected tile indicator */
richgriditem[selected] > .tile-content::after {
@ -277,12 +310,16 @@ richgriditem[selected] > .tile-content::after {
z-index: 1;
background-image: url(chrome://browser/skin/images/tile-selected-check-hdpi.png);
background-origin: border-box;
background-position: right 0 top 0;
background-repeat: no-repeat;
background-position: right 0 top 0;
/* scale the image whatever the dppx */
background-size: 35px 35px;
border: @metro_border_xthick@ solid @selected_color@;
}
richgriditem[selected]:-moz-locale-dir(rtl) > .tile-content::after {
background-position: left 0 top 0;
background-image: url(chrome://browser/skin/images/tile-selected-check-rtl-hdpi.png);
}
richgriditem[crosssliding] {
z-index: 10;
@ -312,6 +349,12 @@ richgriditem[pinned] > .tile-content::before {
/* scale the image whatever the dppx */
background-size: 70px 70px;
}
richgriditem[pinned]:-moz-locale-dir(rtl) > .tile-content::before {
left: 0;
right: auto;
-moz-transform: scaleX(-1);
}
/* Selected _and_ pinned tiles*/
richgriditem[selected][pinned] > .tile-content::before {
@ -319,10 +362,8 @@ richgriditem[selected][pinned] > .tile-content::before {
width: 70px;
height: 70px;
}
richgriditem[pinned]:-moz-locale-dir(rtl) > .tile-content::before {
left: 0;
right: auto;
richgriditem[selected][pinned]:-moz-locale-dir(rtl) > .tile-content::before {
background-position: left -@metro_border_xthick@ top -@metro_border_xthick@;
}
richgriditem[customColor] {
@ -373,7 +414,10 @@ richgriditem[tiletype="thumbnail"]:not([value]) > .tile-content {
}
.tile-desc {
padding: 0.5em 4px 4px 4px;
padding-top: 0.5em;
-moz-padding-end: 4px;
padding-bottom: 4px;
-moz-padding-start: 4px;
}
richgriditem:not([search]) > .tile-content {

Просмотреть файл

@ -31,6 +31,11 @@ this.ContentLinkHandler = {
if (!link || !link.ownerDocument || !rel || !link.href)
return;
// Ignore sub-frames (bugs 305472, 479408).
let window = link.ownerDocument.defaultView;
if (window != window.top)
return;
var feedAdded = false;
var iconAdded = false;
var searchAdded = false;

Просмотреть файл

@ -25,6 +25,8 @@ XPCOMUtils.defineLazyModuleGetter(this, "SocialService",
"resource://gre/modules/SocialService.jsm");
XPCOMUtils.defineLazyModuleGetter(this, "PlacesUtils",
"resource://gre/modules/PlacesUtils.jsm");
XPCOMUtils.defineLazyModuleGetter(this, "PrivateBrowsingUtils",
"resource://gre/modules/PrivateBrowsingUtils.jsm");
XPCOMUtils.defineLazyModuleGetter(this, "Promise",
"resource://gre/modules/Promise.jsm");
@ -398,6 +400,9 @@ function CreateSocialStatusWidget(aId, aProvider) {
node.setAttribute("tooltiptext", aProvider.name);
node.setAttribute("oncommand", "SocialStatus.showPopup(this);");
if (PrivateBrowsingUtils.isWindowPrivate(aDocument.defaultView))
node.setAttribute("disabled", "true");
return node;
}
});

Просмотреть файл

@ -191,7 +191,6 @@ case "$target" in
ANDROID_PLATFORM="${android_platform}"
AC_DEFINE(ANDROID)
CROSS_COMPILE=1
AC_SUBST(ANDROID_NDK)
AC_SUBST(ANDROID_TOOLCHAIN)
AC_SUBST(ANDROID_PLATFORM)

Просмотреть файл

@ -55,7 +55,7 @@ ifelse($#, 2, _MOZ_AC_DEFINE_UNQUOTED($1, $2), $#, 3, _MOZ_AC_DEFINE_UNQUOTED($1
])
dnl Replace AC_OUTPUT to create and call a python config.status
define([_MOZ_AC_OUTPUT],
define([MOZ_CREATE_CONFIG_STATUS],
[dnl Top source directory in Windows format (as opposed to msys format).
WIN_TOP_SRC=
encoding=utf-8
@ -99,7 +99,8 @@ dnl form suitable for make.
topsrcdir = '''${WIN_TOP_SRC:-$srcdir}'''
if not os.path.isabs(topsrcdir):
rel = os.path.join(os.path.dirname(<<<__file__>>>), topsrcdir)
topsrcdir = os.path.normpath(os.path.abspath(rel))
topsrcdir = os.path.abspath(rel)
topsrcdir = os.path.normpath(topsrcdir)
topobjdir = os.path.abspath(os.path.dirname(<<<__file__>>>))
@ -149,14 +150,26 @@ cat >> $CONFIG_STATUS <<EOF
]
__all__ = ['topobjdir', 'topsrcdir', 'defines', 'non_global_defines', 'substs']
EOF
# We don't want js/src/config.status to do anything in gecko builds.
if test -z "$BUILDING_JS" -o -n "$JS_STANDALONE"; then
cat >> $CONFIG_STATUS <<EOF
dnl Do the actual work
if __name__ == '__main__':
args = dict([(name, globals()[name]) for name in __all__])
from mozbuild.config_status import config_status
config_status(**args)
EOF
fi
changequote([, ])
])
define([MOZ_RUN_CONFIG_STATUS],
[
chmod +x $CONFIG_STATUS
rm -fr confdefs* $ac_clean_files
dnl Execute config.status, unless --no-create was passed to configure.
@ -172,7 +185,8 @@ errprint([$1
m4exit(1)
])
define([AC_OUTPUT], [ifelse($#_$1, 1_, [_MOZ_AC_OUTPUT()],
define([AC_OUTPUT], [ifelse($#_$1, 1_, [MOZ_CREATE_CONFIG_STATUS()
MOZ_RUN_CONFIG_STATUS()],
[m4_fatal([Use CONFIGURE_SUBST_FILES in moz.build files to create substituted files.])]
)])

92
build/autoconf/ffi.m4 Normal file
Просмотреть файл

@ -0,0 +1,92 @@
dnl This Source Code Form is subject to the terms of the Mozilla Public
dnl License, v. 2.0. If a copy of the MPL was not distributed with this
dnl file, You can obtain one at http://mozilla.org/MPL/2.0/.
AC_DEFUN([MOZ_CONFIG_FFI], [
MOZ_ARG_ENABLE_BOOL(system-ffi,
[ --enable-system-ffi Use system libffi (located with pkgconfig)],
MOZ_NATIVE_FFI=1 )
if test -n "$MOZ_NATIVE_FFI"; then
# Vanilla libffi 3.0.9 needs a few patches from upcoming version 3.0.10
# for non-GCC compilers.
if test -z "$GNU_CC"; then
PKG_CHECK_MODULES(MOZ_FFI, libffi > 3.0.9)
else
PKG_CHECK_MODULES(MOZ_FFI, libffi >= 3.0.9)
fi
fi
AC_SUBST(MOZ_NATIVE_FFI)
])
AC_DEFUN([MOZ_SUBCONFIGURE_FFI], [
if test -z "$BUILDING_JS" -o -n "$JS_STANDALONE"; then
if test "$BUILD_CTYPES" -a -z "$MOZ_NATIVE_FFI"; then
# Run the libffi 'configure' script.
ac_configure_args="--disable-shared --enable-static --disable-raw-api"
if test "$MOZ_DEBUG"; then
ac_configure_args="$ac_configure_args --enable-debug"
fi
if test "$DSO_PIC_CFLAGS"; then
ac_configure_args="$ac_configure_args --with-pic"
fi
for var in AS CC CXX CPP LD AR RANLIB STRIP; do
ac_configure_args="$ac_configure_args $var='`eval echo \\${${var}}`'"
done
if test "$CROSS_COMPILE"; then
export CPPFLAGS CFLAGS LDFLAGS
fi
ac_configure_args="$ac_configure_args --build=$build --host=$target"
if test "$_MSC_VER"; then
# Use a wrapper script for cl and ml that looks more like gcc.
# autotools can't quite handle an MSVC build environment yet.
LDFLAGS=
CFLAGS=
ac_configure_args="$ac_configure_args LD=link CPP=\"cl -nologo -EP\" SHELL=sh.exe"
case "${target_cpu}" in
x86_64)
# Need target since MSYS tools into mozilla-build may be 32bit
ac_configure_args="$ac_configure_args CC=\"$_topsrcdir/js/src/ctypes/libffi/msvcc.sh -m64\""
;;
*)
ac_configure_args="$ac_configure_args CC=$_topsrcdir/js/src/ctypes/libffi/msvcc.sh"
;;
esac
fi
if test "$SOLARIS_SUNPRO_CC"; then
# Always use gcc for libffi on Solaris
if test ! "$HAVE_64BIT_OS"; then
ac_configure_args="$ac_configure_args CC=gcc CFLAGS=-m32 LD= LDFLAGS="
else
ac_configure_args="$ac_configure_args CC=gcc CFLAGS=-m64 LD= LDFLAGS="
fi
fi
if test "$AIX_IBM_XLC"; then
# Always use gcc for libffi on IBM AIX5/AIX6
if test ! "$HAVE_64BIT_OS"; then
ac_configure_args="$ac_configure_args CC=gcc CFLAGS=-maix32"
else
ac_configure_args="$ac_configure_args CC=gcc CFLAGS=-maix64"
fi
fi
# Use a separate cache file for libffi, since it does things differently
# from our configure.
mkdir -p $_objdir/js/src/ctypes/libffi
old_cache_file=$cache_file
cache_file=$_objdir/js/src/ctypes/libffi/config.cache
old_config_files=$CONFIG_FILES
unset CONFIG_FILES
AC_OUTPUT_SUBDIRS(js/src/ctypes/libffi)
cache_file=$old_cache_file
ac_configure_args="$_SUBDIR_CONFIG_ARGS"
CONFIG_FILES=$old_config_files
fi
fi
])

Просмотреть файл

@ -32,6 +32,8 @@ esac
if test -d "$1"; then
(cd "$1"; $PYTHON $_topsrcdir/build/subconfigure.py dump "$_CONFIG_SHELL")
else
mkdir -p "$1"
fi
$2
(cd "$1"; $PYTHON $_topsrcdir/build/subconfigure.py adjust $ac_sub_configure)

Просмотреть файл

@ -8,6 +8,57 @@ dnl linking against a shared library of ICU, either one that we build from
dnl our copy of ICU or the system provided library.
AC_DEFUN([MOZ_CONFIG_ICU], [
ICU_LIB_NAMES=
MOZ_NATIVE_ICU=
MOZ_ARG_WITH_BOOL(system-icu,
[ --with-system-icu
Use system ICU (located with pkgconfig)],
MOZ_NATIVE_ICU=1)
if test -n "$MOZ_NATIVE_ICU"; then
PKG_CHECK_MODULES(MOZ_ICU, icu-i18n >= 50.1)
MOZ_SHARED_ICU=1
else
MOZ_ICU_CFLAGS='-I$(topsrcdir)/intl/icu/source/common -I$(topsrcdir)/intl/icu/source/i18n'
AC_SUBST(MOZ_ICU_CFLAGS)
fi
AC_SUBST(MOZ_NATIVE_ICU)
MOZ_ARG_WITH_STRING(intl-api,
[ --with-intl-api, --with-intl-api=build, --without-intl-api
Determine the status of the ECMAScript Internationalization API. The first
(or lack of any of these) builds and exposes the API. The second builds it
but doesn't use ICU or expose the API to script. The third doesn't build
ICU at all.],
_INTL_API=$withval)
ENABLE_INTL_API=
EXPOSE_INTL_API=
case "$_INTL_API" in
no)
;;
build)
ENABLE_INTL_API=1
;;
yes)
ENABLE_INTL_API=1
EXPOSE_INTL_API=1
;;
*)
AC_MSG_ERROR([Invalid value passed to --with-intl-api: $_INTL_API])
;;
esac
if test -n "$EXPOSE_INTL_API"; then
AC_DEFINE(EXPOSE_INTL_API)
fi
dnl Settings for the implementation of the ECMAScript Internationalization API
if test -n "$ENABLE_INTL_API"; then
AC_DEFINE(ENABLE_INTL_API)
icudir="$_topsrcdir/intl/icu/source"
if test ! -d "$icudir"; then
icudir="$_topsrcdir/../../intl/icu/source"
@ -28,4 +79,249 @@ AC_DEFUN([MOZ_CONFIG_ICU], [
AC_SUBST(MOZ_ICU_VERSION)
AC_SUBST(MOZ_SHARED_ICU)
if test -z "$MOZ_NATIVE_ICU"; then
case "$OS_TARGET" in
WINNT)
ICU_LIB_NAMES="icuin icuuc icudt"
if test -n "$MOZ_SHARED_ICU"; then
DBG_SUFFIX=
if test -n "$MOZ_DEBUG"; then
DBG_SUFFIX=d
fi
MOZ_ICU_LIBS='$(foreach lib,$(ICU_LIB_NAMES),$(DEPTH)/intl/icu/target/lib/$(LIB_PREFIX)$(lib)$(DBG_SUFFIX).$(LIB_SUFFIX))'
fi
;;
Darwin)
ICU_LIB_NAMES="icui18n icuuc icudata"
if test -n "$MOZ_SHARED_ICU"; then
MOZ_ICU_LIBS='$(foreach lib,$(ICU_LIB_NAMES),$(DEPTH)/intl/icu/target/lib/$(DLL_PREFIX)$(lib).$(MOZ_ICU_VERSION)$(DLL_SUFFIX))'
fi
;;
Linux|DragonFly|FreeBSD|NetBSD|OpenBSD)
ICU_LIB_NAMES="icui18n icuuc icudata"
if test -n "$MOZ_SHARED_ICU"; then
MOZ_ICU_LIBS='$(foreach lib,$(ICU_LIB_NAMES),$(DEPTH)/intl/icu/target/lib/$(DLL_PREFIX)$(lib)$(DLL_SUFFIX).$(MOZ_ICU_VERSION))'
fi
;;
*)
AC_MSG_ERROR([ECMAScript Internationalization API is not yet supported on this platform])
esac
if test -z "$MOZ_SHARED_ICU"; then
MOZ_ICU_LIBS='$(call EXPAND_LIBNAME_PATH,$(ICU_LIB_NAMES),$(DEPTH)/intl/icu/target/lib)'
fi
fi
fi
AC_SUBST(DBG_SUFFIX)
AC_SUBST(ENABLE_INTL_API)
AC_SUBST(ICU_LIB_NAMES)
AC_SUBST(MOZ_ICU_LIBS)
if test -n "$ENABLE_INTL_API" -a -z "$MOZ_NATIVE_ICU"; then
dnl We build ICU as a static library for non-shared js builds and as a shared library for shared js builds.
if test -z "$MOZ_SHARED_ICU"; then
AC_DEFINE(U_STATIC_IMPLEMENTATION)
else
AC_DEFINE(U_COMBINED_IMPLEMENTATION)
fi
dnl Source files that use ICU should have control over which parts of the ICU
dnl namespace they want to use.
AC_DEFINE(U_USING_ICU_NAMESPACE,0)
fi
])
AC_DEFUN([MOZ_SUBCONFIGURE_ICU], [
if test -z "$BUILDING_JS" -o -n "$JS_STANDALONE"; then
if test -n "$ENABLE_INTL_API" -a -z "$MOZ_NATIVE_ICU"; then
# Set ICU compile options
ICU_CPPFLAGS=""
# don't use icu namespace automatically in client code
ICU_CPPFLAGS="$ICU_CPPFLAGS -DU_USING_ICU_NAMESPACE=0"
# don't include obsolete header files
ICU_CPPFLAGS="$ICU_CPPFLAGS -DU_NO_DEFAULT_INCLUDE_UTF_HEADERS=1"
# remove chunks of the library that we don't need (yet)
ICU_CPPFLAGS="$ICU_CPPFLAGS -DUCONFIG_NO_LEGACY_CONVERSION"
ICU_CPPFLAGS="$ICU_CPPFLAGS -DUCONFIG_NO_TRANSLITERATION"
ICU_CPPFLAGS="$ICU_CPPFLAGS -DUCONFIG_NO_REGULAR_EXPRESSIONS"
ICU_CPPFLAGS="$ICU_CPPFLAGS -DUCONFIG_NO_BREAK_ITERATION"
ICU_CROSS_BUILD_OPT=""
ICU_SRCDIR=""
if test "$HOST_OS_ARCH" = "WINNT"; then
ICU_SRCDIR="--srcdir=$(cd $srcdir/intl/icu/source; pwd -W)"
fi
if test "$CROSS_COMPILE"; then
# Building host tools. It is necessary to build target binary.
case "$HOST_OS_ARCH" in
Darwin)
ICU_TARGET=MacOSX
;;
Linux)
ICU_TARGET=Linux
;;
WINNT)
ICU_TARGET=MSYS/MSVC
;;
*bsd*|dragonfly*)
ICU_TARGET=BSD
;;
esac
# Remove _DEPEND_CFLAGS from HOST_FLAGS to avoid configure error
HOST_ICU_CFLAGS="$HOST_CFLAGS"
HOST_ICU_CXXFLAGS="$HOST_CXXFLAGS"
HOST_ICU_CFLAGS=`echo $HOST_ICU_CFLAGS | sed "s|$_DEPEND_CFLAGS||g"`
HOST_ICU_CXXFLAGS=`echo $HOST_ICU_CFXXLAGS | sed "s|$_DEPEND_CFLAGS||g"`
# ICU requires RTTI
if test "$GNU_CC"; then
HOST_ICU_CXXFLAGS=`echo $HOST_ICU_CXXFLAGS | sed 's|-fno-rtti|-frtti|g'`
elif test "$_MSC_VER"; then
HOST_ICU_CXXFLAGS=`echo $HOST_ICU_CXXFLAGS | sed 's|-GR-|-GR|g'`
fi
HOST_ICU_BUILD_OPTS=""
if test -n "$MOZ_DEBUG"; then
HOST_ICU_BUILD_OPTS="$HOST_ICU_BUILD_OPTS --enable-debug"
fi
abs_srcdir=`(cd $srcdir; pwd)`
mkdir -p $_objdir/intl/icu/host
(cd $_objdir/intl/icu/host
MOZ_SUBCONFIGURE_WRAP([.],[
AR="$HOST_AR" RANLIB="$HOST_RANLIB" \
CC="$HOST_CC" CXX="$HOST_CXX" LD="$HOST_LD" \
CFLAGS="$HOST_ICU_CFLAGS $HOST_OPTIMIZE_FLAGS" \
CPPFLAGS="$ICU_CPPFLAGS" \
CXXFLAGS="$HOST_ICU_CXXFLAGS $HOST_OPTIMIZE_FLAGS" \
LDFLAGS="$HOST_LDFLAGS" \
$SHELL $abs_srcdir/intl/icu/source/runConfigureICU \
$HOST_ICU_BUILD_OPTS \
$ICU_TARGET \
dnl Shell quoting is fun.
${ICU_SRCDIR+"$ICU_SRCDIR"} \
--enable-static --disable-shared \
--enable-extras=no --enable-icuio=no --enable-layout=no \
--enable-tests=no --enable-samples=no || exit 1
])
) || exit 1
# generate config/icucross.mk
$GMAKE -C $_objdir/intl/icu/host/ config/icucross.mk
# --with-cross-build requires absolute path
ICU_HOST_PATH=`cd $_objdir/intl/icu/host && pwd`
ICU_CROSS_BUILD_OPT="--with-cross-build=$ICU_HOST_PATH"
ICU_TARGET_OPT="--build=$build --host=$target"
else
# CROSS_COMPILE isn't set build and target are i386 and x86-64.
# So we must set target for --build and --host.
ICU_TARGET_OPT="--build=$target --host=$target"
fi
if test -z "$MOZ_SHARED_ICU"; then
# To reduce library size, use static linking
ICU_LINK_OPTS="--enable-static --disable-shared"
else
ICU_LINK_OPTS="--disable-static --enable-shared"
fi
# Force the ICU static libraries to be position independent code
ICU_CFLAGS="$DSO_PIC_CFLAGS $CFLAGS"
ICU_CXXFLAGS="$DSO_PIC_CFLAGS $CXXFLAGS"
ICU_BUILD_OPTS=""
if test -n "$MOZ_DEBUG" -o "MOZ_DEBUG_SYMBOLS"; then
ICU_CFLAGS="$ICU_CFLAGS $MOZ_DEBUG_FLAGS"
ICU_CXXFLAGS="$ICU_CXXFLAGS $MOZ_DEBUG_FLAGS"
if test -n "$CROSS_COMPILE" -a "$OS_TARGET" = "Darwin" \
-a "$HOST_OS_ARCH" != "Darwin"
then
# Bug 951758: Cross-OSX builds with non-Darwin hosts have issues
# with -g and friends (like -gdwarf and -gfull) because they try
# to run dsymutil
changequote(,)
ICU_CFLAGS=`echo $ICU_CFLAGS | sed 's|-g[^ \t]*||g'`
ICU_CXXFLAGS=`echo $ICU_CXXFLAGS | sed 's|-g[^ \t]*||g'`
changequote([,])
fi
ICU_LDFLAGS="$MOZ_DEBUG_LDFLAGS"
if test -z "$MOZ_DEBUG"; then
# To generate debug symbols, it requires MOZ_DEBUG_FLAGS.
# But, not debug build.
ICU_CFLAGS="$ICU_CFLAGS -UDEBUG -DNDEBUG"
ICU_CXXFLAGS="$ICU_CXXFLAGS -UDEBUG -DNDEBUG"
else
ICU_BUILD_OPTS="$ICU_BUILD_OPTS --enable-debug"
fi
fi
if test -z "$MOZ_OPTIMIZE"; then
ICU_BUILD_OPTS="$ICU_BUILD_OPTS --disable-release"
else
ICU_CFLAGS="$ICU_CFLAGS $MOZ_OPTIMIZE_FLAGS"
ICU_CXXFLAGS="$ICU_CXXFLAGS $MOZ_OPTIMIZE_FLAGS"
fi
if test "$am_cv_langinfo_codeset" = "no"; then
# ex. Android
ICU_CPPFLAGS="$ICU_CPPFLAGS -DU_HAVE_NL_LANGINFO_CODESET=0"
fi
# ICU requires RTTI
if test "$GNU_CC"; then
ICU_CXXFLAGS=`echo $ICU_CXXFLAGS | sed 's|-fno-rtti|-frtti|g'`
else
if test "$_MSC_VER"; then
ICU_CXXFLAGS=`echo $ICU_CXXFLAGS | sed 's|-GR-|-GR|g'`
fi
# Add RTL flags for MSVCRT.DLL
if test -n "$MOZ_DEBUG"; then
ICU_CFLAGS="$ICU_CFLAGS -MDd"
ICU_CXXFLAGS="$ICU_CXXFLAGS -MDd"
else
ICU_CFLAGS="$ICU_CFLAGS -MD"
ICU_CXXFLAGS="$ICU_CXXFLAGS -MD"
fi
# add disable optimize flag for workaround for bug 899948
if test -z "$MOZ_OPTIMIZE"; then
ICU_CFLAGS="$ICU_CFLAGS -Od"
ICU_CXXFLAGS="$ICU_CXXFLAGS -Od"
fi
fi
# We cannot use AC_OUTPUT_SUBDIRS since ICU tree is out of spidermonkey.
# When using AC_OUTPUT_SUBDIRS, objdir of ICU is out of objdir
# due to relative path.
# If building ICU moves into root of mozilla tree, we can use
# AC_OUTPUT_SUBDIR instead.
mkdir -p $_objdir/intl/icu/target
(cd $_objdir/intl/icu/target
MOZ_SUBCONFIGURE_WRAP([.],[
AR="$AR" CC="$CC" CXX="$CXX" LD="$LD" \
ARFLAGS="$ARFLAGS" \
CPPFLAGS="$ICU_CPPFLAGS $CPPFLAGS" \
CFLAGS="$ICU_CFLAGS" \
CXXFLAGS="$ICU_CXXFLAGS" \
LDFLAGS="$ICU_LDFLAGS $LDFLAGS" \
$SHELL $_topsrcdir/intl/icu/source/configure \
$ICU_BUILD_OPTS \
$ICU_CROSS_BUILD_OPT \
$ICU_LINK_OPTS \
${ICU_SRCDIR+"$ICU_SRCDIR"} \
$ICU_TARGET_OPT \
--disable-extras --disable-icuio --disable-layout \
--disable-tests --disable-samples || exit 1
])
) || exit 1
fi
fi
])

Просмотреть файл

@ -134,6 +134,7 @@ AC_CHECK_PROGS(LD, "${target_alias}-ld" "${target}-ld", :)
AC_CHECK_PROGS(STRIP, "${target_alias}-strip" "${target}-strip", :)
AC_CHECK_PROGS(WINDRES, "${target_alias}-windres" "${target}-windres", :)
AC_DEFINE(CROSS_COMPILE)
CROSS_COMPILE=1
dnl If we cross compile for ppc on Mac OS X x86, cross_compiling will
dnl dnl have erroneously been set to "no", because the x86 build host is

Просмотреть файл

@ -4,7 +4,7 @@
# finds the location of the browser and puts it in the variable $(browser_path)
ifneq (,$(filter OS2 WINNT,$(OS_ARCH)))
ifneq (,$(filter WINNT,$(OS_ARCH)))
program = $(MOZ_APP_NAME)$(BIN_SUFFIX)
else
program = $(MOZ_APP_NAME)-bin$(BIN_SUFFIX)

Просмотреть файл

@ -43,11 +43,6 @@ if test "$MOZ_BUILD_APP" = "i386" -o "$MOZ_BUILD_APP" = "x86_64"; then
LD=ld
STRIP="strip"
# Let configure know that we mean business.
if test "$NATIVE_CPU" != "$TARGET_CPU" ; then
CROSS_COMPILE=1
fi
# Each per-CPU build should be entirely oblivious to the fact that a
# universal binary will be produced. The exception is packager.mk, which
# needs to know to look for universal bits when building the .dmg.

Просмотреть файл

@ -7,10 +7,10 @@
# This cannot be named "build" because of bug 922191.
SPHINX_TREES['buildsystem'] = 'docs'
if CONFIG['OS_ARCH'] not in ('WINNT', 'OS2'):
DIRS += ['unix']
elif CONFIG['OS_ARCH'] == 'WINNT':
if CONFIG['OS_ARCH'] == 'WINNT':
DIRS += ['win32']
else:
DIRS += ['unix']
if CONFIG['OS_TARGET'] == 'Android' and not CONFIG['MOZ_ANDROID_LIBSTDCXX']:
DIRS += ['stlport']

Просмотреть файл

@ -1,21 +0,0 @@
REM This Source Code Form is subject to the terms of the Mozilla Public
REM License, v. 2.0. If a copy of the MPL was not distributed with this
REM file, You can obtain one at http://mozilla.org/MPL/2.0/.
/* Invoke unit tests on OS/2 */
PARSE ARG dist prog parm
dist=forwardtoback(dist);
prog=forwardtoback(prog);
'set BEGINLIBPATH='dist'\bin;%BEGINLIBPATH%'
'set LIBPATHSTRICT=T'
prog parm
exit
forwardtoback: procedure
arg pathname
parse var pathname pathname'/'rest
do while (rest <> "")
pathname = pathname'\'rest
parse var pathname pathname'/'rest
end
return pathname

Просмотреть файл

@ -5,6 +5,7 @@ if test `uname -m` = "x86_64"; then
CC="$CC -m32 -march=pentiumpro"
CXX="$CXX -m32 -march=pentiumpro"
ac_add_options --target=i686-pc-linux
ac_add_options --host=i686-pc-linux
ac_add_options --x-libraries=/usr/lib
export PKG_CONFIG_LIBDIR=/usr/lib/pkgconfig:/usr/share/pkgconfig
fi

Просмотреть файл

@ -5,16 +5,6 @@
include $(topsrcdir)/config/rules.mk
LOCAL_INCLUDES += \
-I$(topsrcdir)/netwerk/protocol/res \
-I$(topsrcdir)/netwerk/base/src \
$(NULL)
ifdef MOZ_ENABLE_GTK
CXXFLAGS += $(TK_CFLAGS)
endif
LOCAL_INCLUDES += \
-I$(topsrcdir)/xpcom/components \
-I$(DEPTH)/xpcom \
$(NULL)

Просмотреть файл

@ -20,3 +20,13 @@ MSVC_ENABLE_PGO = True
include('/ipc/chromium/chromium-config.mozbuild')
FINAL_LIBRARY = 'xpcom_core'
GENERATED_INCLUDES += [
'/xpcom',
]
LOCAL_INCLUDES += [
'/netwerk/base/src',
'/netwerk/protocol/res',
'/xpcom/components'
]

Просмотреть файл

@ -282,7 +282,7 @@ nsChromeRegistry::ConvertChromeURL(nsIURI* aChromeURI, nsIURI* *aResult)
return rv;
if (flags & PLATFORM_PACKAGE) {
#if defined(XP_WIN) || defined(XP_OS2)
#if defined(XP_WIN)
path.Insert("win/", 0);
#elif defined(XP_MACOSX)
path.Insert("mac/", 0);

Просмотреть файл

@ -34,7 +34,7 @@ INSTALL_TARGETS += NSINSTALL
endif
endif
ifndef BUILDING_JS
ifndef JS_STANDALONE
HEADERS_FILES = \
$(DEPTH)/mozilla-config.h \
$(NULL)
@ -49,7 +49,7 @@ include $(topsrcdir)/config/rules.mk
HOST_CFLAGS += -DUNICODE -D_UNICODE
ifndef BUILDING_JS
ifndef JS_STANDALONE
# Generate a new buildid every time we "export" in config... that's only
# supposed to be once per-build!
export::
@ -112,7 +112,7 @@ GARBAGE += \
FORCE:
ifndef BUILDING_JS
ifndef JS_STANDALONE
check-preqs += check-jar-mn
endif
check-preqs += check-makefiles
@ -123,7 +123,7 @@ check-jar-mn::
$(MAKE) -C tests/src-simple check-jar
$(MAKE) -C tests/src-simple check-flat
$(MAKE) -C tests/src-simple check-flat USE_EXTENSION_MANIFEST=1
ifneq (,$(filter-out WINNT OS2,$(OS_ARCH)))
ifneq (,$(filter-out WINNT,$(OS_ARCH)))
$(MAKE) -C tests/src-simple check-symlink
endif

6
config/autoconf-js.mk.in Normal file
Просмотреть файл

@ -0,0 +1,6 @@
ifndef INCLUDED_AUTOCONF_MK
INCLUDED_AUTOCONF_MK = 1
include $(DEPTH)/config/emptyvars-js.mk
@ALLSUBSTS@
include $(topsrcdir)/config/baseconfig.mk
endif

Просмотреть файл

@ -447,10 +447,6 @@ endif
TAR_CREATE_FLAGS = -chf
ifeq ($(OS_ARCH),OS2)
TAR_CREATE_FLAGS = -cf
endif
#
# Personal makefile customizations go in these optional make include files.
#
@ -646,9 +642,6 @@ endif
# Set link flags according to whether we want a console.
ifdef MOZ_WINCONSOLE
ifeq ($(MOZ_WINCONSOLE),1)
ifeq ($(OS_ARCH),OS2)
BIN_FLAGS += -Zlinker -PM:VIO
endif
ifeq ($(OS_ARCH),WINNT)
ifdef GNU_CC
WIN32_EXE_LDFLAGS += -mconsole
@ -657,9 +650,6 @@ WIN32_EXE_LDFLAGS += -SUBSYSTEM:CONSOLE
endif
endif
else # MOZ_WINCONSOLE
ifeq ($(OS_ARCH),OS2)
BIN_FLAGS += -Zlinker -PM:PM
endif
ifeq ($(OS_ARCH),WINNT)
ifdef GNU_CC
WIN32_EXE_LDFLAGS += -mwindows
@ -714,19 +704,15 @@ NSINSTALL_NATIVECMD := %nsinstall nsinstall
ifdef NSINSTALL_BIN
NSINSTALL = $(NSINSTALL_BIN)
else
ifeq (OS2,$(CROSS_COMPILE)$(OS_ARCH))
NSINSTALL = $(MOZ_TOOLS_DIR)/nsinstall
else
ifeq ($(HOST_OS_ARCH),WINNT)
NSINSTALL = $(NSINSTALL_PY)
else
NSINSTALL = $(DIST)/bin/nsinstall$(HOST_BIN_SUFFIX)
endif # WINNT
endif # OS2
endif # NSINSTALL_BIN
ifeq (,$(CROSS_COMPILE)$(filter-out WINNT OS2, $(OS_ARCH)))
ifeq (,$(CROSS_COMPILE)$(filter-out WINNT, $(OS_ARCH)))
INSTALL = $(NSINSTALL) -t
ifdef .PYMAKE
install_cmd = $(NSINSTALL_NATIVECMD) -t $(1)
@ -738,7 +724,7 @@ else
# target-specific.
INSTALL = $(if $(filter copy, $(NSDISTMODE)), $(NSINSTALL) -t, $(if $(filter absolute_symlink, $(NSDISTMODE)), $(NSINSTALL) -L $(PWD), $(NSINSTALL) -R))
endif # WINNT/OS2
endif # WINNT
# The default for install_cmd is simply INSTALL
install_cmd ?= $(INSTALL) $(1)
@ -795,13 +781,9 @@ MERGE_FILE = $(LOCALE_SRCDIR)/$(1)
endif
MERGE_FILES = $(foreach f,$(1),$(call MERGE_FILE,$(f)))
ifeq (OS2,$(OS_ARCH))
RUN_TEST_PROGRAM = $(topsrcdir)/build/os2/test_os2.cmd '$(LIBXUL_DIST)'
else
ifneq (WINNT,$(OS_ARCH))
RUN_TEST_PROGRAM = $(LIBXUL_DIST)/bin/run-mozilla.sh
endif # ! WINNT
endif # ! OS2
#
# Java macros
@ -844,7 +826,7 @@ HOST_EXTRA_LIBS += $(call EXPAND_LIBNAME_PATH,host_stdc++compat,$(DEPTH)/build/u
endif
endif
ifeq (,$(filter $(OS_TARGET),WINNT Darwin OS2))
ifeq (,$(filter $(OS_TARGET),WINNT Darwin))
CHECK_TEXTREL = @$(TOOLCHAIN_PREFIX)readelf -d $(1) | grep TEXTREL > /dev/null && echo 'TEST-UNEXPECTED-FAIL | check_textrel | We do not want text relocations in libraries and programs' || true
endif

Просмотреть файл

@ -0,0 +1 @@
@ALLEMPTYSUBSTS@

Просмотреть файл

@ -1,7 +0,0 @@
# vim: set filetype=python:
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
add_tier_dir('js', 'js/src', external=True)

Просмотреть файл

@ -67,7 +67,7 @@ SHARED_LIBRARY_DEST ?= $(FINAL_TARGET)
SHARED_LIBRARY_TARGET = binaries libs
INSTALL_TARGETS += SHARED_LIBRARY
ifneq (,$(filter OS2 WINNT,$(OS_ARCH)))
ifneq (,$(filter WINNT,$(OS_ARCH)))
ifndef NO_INSTALL_IMPORT_LIBRARY
IMPORT_LIB_FILES = $(IMPORT_LIBRARY)
endif # NO_INSTALL_IMPORT_LIBRARY

Просмотреть файл

@ -36,7 +36,7 @@ libs::
$(MAKE) -C $(DEPTH)/nsprpub install prefix=$(ABS_DIST)/sdk exec_prefix=$(ABS_DIST)/sdk bindir=$(ABS_DIST)/sdk/dummy includedir=$(ABS_DIST)/include/nspr libdir=$(ABS_DIST)/sdk/lib datadir=$(ABS_DIST)/sdk/dummy DESTDIR= $(EXTRA_MAKE_FLAGS)
$(INSTALL) $(DEPTH)/nsprpub/config/nspr-config $(DIST)/sdk/bin
$(RM) -rf $(DIST)/sdk/dummy
ifneq (,$(filter OS2 WINNT,$(OS_ARCH))) # {
ifneq (,$(filter WINNT,$(OS_ARCH))) # {
$(RM) -f $(DIST)/sdk/lib/$(DLL_PREFIX)nspr4$(DLL_SUFFIX) $(DIST)/sdk/lib/$(DLL_PREFIX)plc4$(DLL_SUFFIX) $(DIST)/sdk/lib/$(DLL_PREFIX)plds4$(DLL_SUFFIX)
$(RM) -f $(DIST)/sdk/lib/$(LIB_PREFIX)nspr4_s.$(LIB_SUFFIX) $(DIST)/sdk/lib/$(LIB_PREFIX)plc4_s.$(LIB_SUFFIX) $(DIST)/sdk/lib/$(LIB_PREFIX)plds4_s.$(LIB_SUFFIX)
else # } {

Просмотреть файл

@ -200,7 +200,6 @@ endif # ifeq (1_.,$(MOZ_PSEUDO_DERECURSE)_$(DEPTH))
ifdef MOZ_PSEUDO_DERECURSE
ifeq (.,$(DEPTH))
# top-level directories
ifdef BUILDING_JS
ifndef JS_STANDALONE
# Only define recurse_targets for js, when it is built as part of gecko.
recurse_targets := $(addsuffix /binaries,$(call TIER_DIRS,binaries))
@ -208,7 +207,6 @@ recurse_targets := $(addsuffix /binaries,$(call TIER_DIRS,binaries))
want_abspaths = 1
endif
endif
endif
ifdef COMPILE_ENVIRONMENT

Просмотреть файл

@ -56,11 +56,7 @@ else
REPORT_BUILD = $(info $(notdir $@))
endif
ifeq ($(OS_ARCH),OS2)
EXEC =
else
EXEC = exec
endif
# Don't copy xulrunner files at install time, when using system xulrunner
ifdef SYSTEM_LIBXUL
@ -124,6 +120,9 @@ libs:: $(CPP_UNIT_TEST_BINS) $(call mkdir_deps,$(DIST)/cppunittests)
$(NSINSTALL) $(CPP_UNIT_TEST_BINS) $(DIST)/cppunittests
endif
run-cppunittests::
@$(PYTHON) $(topsrcdir)/testing/runcppunittests.py --xre-path=$(DIST)/bin --symbols-path=$(DIST)/crashreporter-symbols $(subst .cpp,$(BIN_SUFFIX),$(CPP_UNIT_TESTS))
cppunittests-remote: DM_TRANS?=adb
cppunittests-remote:
@if [ '${TEST_DEVICE}' != '' -o '$(DM_TRANS)' = 'adb' ]; then \
@ -191,7 +190,7 @@ ifdef LIB_IS_C_ONLY
MKSHLIB = $(MKCSHLIB)
endif
ifneq (,$(filter OS2 WINNT,$(OS_ARCH)))
ifneq (,$(filter WINNT,$(OS_ARCH)))
IMPORT_LIBRARY := $(LIB_PREFIX)$(SHARED_LIBRARY_NAME).$(IMPORT_LIB_SUFFIX)
endif
@ -201,10 +200,6 @@ else
SHARED_LIBRARY := $(DLL_PREFIX)$(SHARED_LIBRARY_NAME)$(DLL_SUFFIX)
endif
ifeq ($(OS_ARCH),OS2)
DEF_FILE := $(SHARED_LIBRARY:.dll=.def)
endif
EMBED_MANIFEST_AT=2
endif # MKSHLIB
@ -364,10 +359,6 @@ ifdef MOZ_UPDATE_XTERM
UPDATE_TITLE = printf '\033]0;%s in %s\007' $(1) $(relativesrcdir)/$(2) ;
endif
ifdef BUILDING_JS
NO_BUILDSTATUS_MESSAGES=1
endif
ifdef MACH
ifndef NO_BUILDSTATUS_MESSAGES
define BUILDSTATUS
@ -729,9 +720,6 @@ distclean::
$(wildcard *.$(OBJ_SUFFIX)) $(wildcard *.ho) $(wildcard host_*.o*) \
$(wildcard *.$(LIB_SUFFIX)) $(wildcard *$(DLL_SUFFIX)) \
$(wildcard *.$(IMPORT_LIB_SUFFIX))
ifeq ($(OS_ARCH),OS2)
-$(RM) $(PROGRAM:.exe=.map)
endif
alltags:
$(RM) TAGS
@ -872,23 +860,6 @@ ifeq ($(OS_ARCH),WINNT)
$(IMPORT_LIBRARY): $(SHARED_LIBRARY) ;
endif
ifeq ($(OS_ARCH),OS2)
$(DEF_FILE): $(OBJS) $(SHARED_LIBRARY_LIBS)
$(RM) $@
echo LIBRARY $(SHARED_LIBRARY_NAME) INITINSTANCE TERMINSTANCE > $@
echo PROTMODE >> $@
echo CODE LOADONCALL MOVEABLE DISCARDABLE >> $@
echo DATA PRELOAD MOVEABLE MULTIPLE NONSHARED >> $@
echo EXPORTS >> $@
$(ADD_TO_DEF_FILE)
$(IMPORT_LIBRARY): $(SHARED_LIBRARY)
$(REPORT_BUILD)
$(RM) $@
$(IMPLIB) $@ $^
endif # OS/2
$(HOST_LIBRARY): $(HOST_OBJS) Makefile
$(REPORT_BUILD)
$(RM) $@
@ -1076,22 +1047,18 @@ $(filter %.i,$(CMMSRCS:%.mm=%.i)): %.i: %.mm $(call mkdir_deps,$(MDDEPDIR))
$(RESFILE): %.res: %.rc
$(REPORT_BUILD)
@echo Creating Resource file: $@
ifeq ($(OS_ARCH),OS2)
$(RC) $(RCFLAGS:-D%=-d %) -i $(subst /,\,$(srcdir)) -r $< $@
else
ifdef GNU_CC
$(RC) $(RCFLAGS) $(filter-out -U%,$(DEFINES)) $(INCLUDES:-I%=--include-dir %) $(OUTOPTION)$@ $(_VPATH_SRCS)
else
$(RC) $(RCFLAGS) -r $(DEFINES) $(INCLUDES) $(OUTOPTION)$@ $(_VPATH_SRCS)
endif
endif
# Cancel GNU make built-in implicit rules
ifndef .PYMAKE
MAKEFLAGS += -r
endif
ifneq (,$(filter OS2 WINNT,$(OS_ARCH)))
ifneq (,$(filter WINNT,$(OS_ARCH)))
SEP := ;
else
SEP := :

Просмотреть файл

@ -7,7 +7,7 @@
DEHYDRA_SCRIPT = $(topsrcdir)/config/static-checking.js
ifndef BUILDING_JS
ifndef JS_STANDALONE
DEHYDRA_MODULES = \
$(topsrcdir)/xpcom/analysis/final.js \
$(topsrcdir)/xpcom/analysis/must-override.js \
@ -43,11 +43,7 @@ OS_CXXFLAGS += $(DEHYDRA_FLAGS)
endif
ifdef ENABLE_CLANG_PLUGIN
ifndef BUILDING_JS
CLANG_PLUGIN := $(DEPTH)/build/clang-plugin/$(DLL_PREFIX)clang-plugin$(DLL_SUFFIX)
else
CLANG_PLUGIN := $(DEPTH)/../../build/clang-plugin/$(DLL_PREFIX)clang-plugin$(DLL_SUFFIX)
endif
OS_CXXFLAGS += -Xclang -load -Xclang $(CLANG_PLUGIN) -Xclang -add-plugin -Xclang moz-check
OS_CFLAGS += -Xclang -load -Xclang $(CLANG_PLUGIN) -Xclang -add-plugin -Xclang moz-check
endif

Просмотреть файл

@ -221,7 +221,6 @@ cairo-atsui.h
cairo-beos.h
cairo-ft.h
cairo-glitz.h
cairo-os2.h
cairo-pdf.h
cairo-ps.h
cairo-tee.h
@ -690,7 +689,6 @@ oleidl.h
OpenGL/OpenGL.h
OpenTptInternet.h
OpenTransport.h
os2.h
OS.h
osreldate.h
ostream

Просмотреть файл

@ -92,7 +92,6 @@ _topsrcdir=`cd \`dirname $0\`; pwd`
_objdir=`pwd`
dnl TODO Don't exempt L10N builds once bug 842760 is resolved.
if test "$_topsrcdir" = "$_objdir" -a "${with_l10n_base+set}" != set; then
echo " ***"
@ -287,7 +286,6 @@ if test -n "$gonkdir" ; then
AC_SUBST(ANDROID_VERSION)
AC_DEFINE(HAVE_SYS_UIO_H)
AC_DEFINE(HAVE_PTHREADS)
CROSS_COMPILE=1
MOZ_CHROME_FILE_FORMAT=omni
direct_nspr_config=1
else
@ -314,16 +312,13 @@ AC_SUBST(OBJCOPY)
dnl ========================================================
dnl Checks for compilers.
dnl ========================================================
dnl Set CROSS_COMPILE in the environment when running configure
dnl to use the cross-compile setup for now
dnl ========================================================
dnl AR_FLAGS set here so HOST_AR_FLAGS can be set correctly (see bug 538269)
AR_FLAGS='crs $@'
if test "$COMPILE_ENVIRONMENT"; then
if test -n "$CROSS_COMPILE" -a "$target" != "$host"; then
if test "$target" != "$host"; then
MOZ_CROSS_COMPILER
else
AC_PROG_CC
@ -1046,9 +1041,6 @@ solaris*)
AC_SUBST(SOLARIS_SUNPRO_CC)
AC_SUBST(SOLARIS_SUNPRO_CXX)
;;
OS_2)
HOST_OS_ARCH=OS2
;;
esac
case "$OS_ARCH" in
@ -1087,11 +1079,6 @@ AIX)
OS_RELEASE=`uname -v`.`uname -r`
OS_TEST=${target_cpu}
;;
OS_2)
OS_ARCH=OS2
OS_TARGET=OS2
OS_RELEASE=`uname -v`
;;
Darwin)
case "${target_cpu}" in
powerpc*)
@ -1542,16 +1529,6 @@ AC_SUBST(HAVE_64BIT_OS)
AC_LANG_RESTORE
fi # COMPILE_ENVIRONMENT
dnl ========================================================
dnl Enable high-memory support on OS/2 by default.
dnl ========================================================
MOZ_OS2_HIGH_MEMORY=1
MOZ_ARG_DISABLE_BOOL(os2-high-mem,
[ --disable-os2-high-mem Disable high-memory support on OS/2],
MOZ_OS2_HIGH_MEMORY=,
MOZ_OS2_HIGH_MEMORY=1 )
AC_SUBST(MOZ_OS2_HIGH_MEMORY)
dnl ========================================================
dnl = Use profiling compile flags
dnl ========================================================
@ -1742,14 +1719,6 @@ case "$host" in
HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O3}"
;;
*os2*)
HOST_CFLAGS="$HOST_CFLAGS -DXP_OS2 -DNO_X11 -Zomf"
HOST_NSPR_MDCPUCFG='\"md/_os2.cfg\"'
HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O2}"
HOST_BIN_SUFFIX=.exe
MOZ_FIX_LINK_PATHS=
;;
*)
HOST_CFLAGS="$HOST_CFLAGS -DXP_UNIX"
HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O2}"
@ -2257,71 +2226,6 @@ ia64*-hpux*)
fi
;;
*-os2*)
MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
AC_DEFINE(OS2)
AC_DEFINE(XP_OS2)
AC_DEFINE(OS2EMX_PLAIN_CHAR)
AC_DEFINE(TCPV40HDRS)
DLL_PREFIX=
LIB_PREFIX=
LIB_SUFFIX=lib
BIN_SUFFIX=".exe"
DLL_SUFFIX=".dll"
IMPORT_LIB_SUFFIX=lib
DSO_PIC_CFLAGS=
AR=emxomfar
AR_FLAGS='r $@'
CFLAGS="$CFLAGS -Zomf"
CXXFLAGS="$CXXFLAGS -Zomf"
DSO_LDOPTS='-Zdll'
BIN_FLAGS='-Zlinker /ST:0x100000'
IMPLIB='emximp -o'
FILTER='true'
LDFLAGS='-Zmap'
WARNINGS_AS_ERRORS='-Werror'
MOZ_DEBUG_FLAGS="-g -fno-inline"
MOZ_OPTIMIZE_FLAGS="-O2"
MOZ_OPTIMIZE_LDFLAGS="-s -Zlinker /EXEPACK:2 -Zlinker /PACKCODE -Zlinker /PACKDATA"
LIBXUL_LIBS='-L$(LIBXUL_DIST)/lib $(LIBXUL_DIST)/lib/xul.lib $(LIBXUL_DIST)/lib/mozalloc.lib'
TARGET_MD_ARCH=os2
_PLATFORM_DEFAULT_TOOLKIT="cairo-os2"
RC=rc.exe
MC=mc.exe
RCFLAGS='-n'
MOZ_USER_DIR="Mozilla"
ZIP="$ZIP -X"
STRIP=lxlite
STRIP_FLAGS="/yua /ydd /yxd /ynl /anp /b- /cs+ /d /i- /ml1 /mr2 /mf2 /r+ /u+ /x- /zs:0 /zx /zd"
if test "$MOZTOOLS"; then
MOZ_TOOLS_DIR=`echo $MOZTOOLS | sed -e 's|\\\\|/|g'`
else
AC_MSG_ERROR([MOZTOOLS is not set])
fi
if test -n "$MOZ_OS2_HIGH_MEMORY"; then
DSO_LDOPTS="$DSO_LDOPTS -Zhigh-mem"
LDFLAGS="$LDFLAGS -Zhigh-mem"
MOZ_OPTIMIZE_LDFLAGS="$MOZ_OPTIMIZE_LDFLAGS -Zhigh-mem"
AC_DEFINE(MOZ_OS2_HIGH_MEMORY)
fi
# GCC for OS/2 currently predefines these, but we don't want them
_DEFINES_CFLAGS="$_DEFINES_CFLAGS -Uunix -U__unix -U__unix__"
_DEFINES_CXXFLAGS="$_DEFINES_CXXFLAGS -Uunix -U__unix -U__unix__"
AC_CACHE_CHECK(for __declspec(dllexport),
ac_os2_declspec,
[AC_TRY_COMPILE([__declspec(dllexport) void ac_os2_declspec(void) {}],
[return 0;],
ac_os2_declspec="yes",
ac_os2_declspec="no")])
if test "$ac_os2_declspec" != "yes"; then
AC_MSG_ERROR([Compiler does not support __declspec(dllexport), install GCC-4.3.2 or newer])
fi
;;
*-solaris*)
AC_DEFINE(SOLARIS)
TARGET_NSPR_MDCPUCFG='\"md/_solaris.cfg\"'
@ -2417,10 +2321,6 @@ ia64*-hpux*)
esac
;;
*-os2*)
HOST_NSPR_MDCPUCFG='\"md/_os2.cfg\"'
;;
esac
case "$target" in
@ -2453,9 +2353,6 @@ if test -z "$MKSHLIB_FORCE_ALL" -o -z "$MKSHLIB_UNFORCE_ALL"; then
NO_LD_ARCHIVE_FLAGS=1
fi
case "$target" in
*-os2*)
NO_LD_ARCHIVE_FLAGS=
;;
*-aix4.3*|*-aix5*)
NO_LD_ARCHIVE_FLAGS=
;;
@ -2811,8 +2708,6 @@ dnl against libSystem causes issues when debugging (see bug 299601).
case $target in
*-darwin*)
;;
*-os2*)
;;
*)
AC_SEARCH_LIBS(dlopen, dl,
MOZ_CHECK_HEADER(dlfcn.h,
@ -2837,13 +2732,7 @@ if test ! "$GNU_CXX"; then
esac
fi
dnl OS/2 has socket in libc.
case $target in
*-os2*)
;;
*)
AC_CHECK_LIB(socket, socket)
esac
AC_CHECK_LIB(socket, socket)
XLDFLAGS="$X_LIBS"
XLIBS="$X_EXTRA_LIBS"
@ -3122,7 +3011,7 @@ fi
AC_LANG_CPLUSPLUS
case $target_os in
darwin*|mingw*|os2*)
darwin*|mingw*)
;;
*)
@ -3563,7 +3452,7 @@ MOZ_ARG_WITH_BOOL(system-nspr,
_USE_SYSTEM_NSPR=1 )
if test -n "$_USE_SYSTEM_NSPR"; then
AM_PATH_NSPR(4.10.2, [MOZ_NATIVE_NSPR=1], [AC_MSG_ERROR([your don't have NSPR installed or your version is too old])])
AM_PATH_NSPR(4.10.3, [MOZ_NATIVE_NSPR=1], [AC_MSG_ERROR([your don't have NSPR installed or your version is too old])])
fi
if test -n "$MOZ_NATIVE_NSPR"; then
@ -3697,7 +3586,7 @@ if test -n "$MOZ_NATIVE_NSS"; then
else
NSS_CFLAGS='-I$(LIBXUL_DIST)/include/nss'
if test -z "$GNU_CC" -a "$OS_ARCH" = "WINNT" -o "$OS_ARCH" = "OS2"; then
if test -z "$GNU_CC" -a "$OS_ARCH" = "WINNT"; then
NSS_LIBS="\
\$(LIBXUL_DIST)/lib/\$(LIB_PREFIX)crmf.\$(LIB_SUFFIX) \
\$(LIBXUL_DIST)/lib/\$(LIB_PREFIX)smime$NSS_VERSION.\$(LIB_SUFFIX) \
@ -3907,18 +3796,9 @@ AC_SUBST(MOZ_NATIVE_HUNSPELL)
dnl ========================================================
dnl system libffi Support
dnl ========================================================
MOZ_ARG_ENABLE_BOOL(system-ffi,
[ --enable-system-ffi Use system libffi (located with pkgconfig)],
MOZ_NATIVE_FFI=1 )
MOZ_CONFIG_FFI()
if test -n "$MOZ_NATIVE_FFI"; then
# Vanilla libffi 3.0.9 needs a few patches from upcoming version 3.0.10
# for non-GCC compilers.
if test -z "$GNU_CC"; then
PKG_CHECK_MODULES(MOZ_FFI, libffi > 3.0.9)
else
PKG_CHECK_MODULES(MOZ_FFI, libffi >= 3.0.9)
fi
MOZ_JS_STATIC_LIBS="$MOZ_JS_STATIC_LIBS $MOZ_FFI_LIBS"
fi
@ -3933,26 +3813,6 @@ MOZ_ARG_ENABLE_BOOL(shared-js,
JS_SHARED_LIBRARY=1,
JS_SHARED_LIBRARY=)
dnl ========================================================
dnl System ICU Support
dnl ========================================================
MOZ_NATIVE_ICU=
MOZ_ARG_WITH_BOOL(system-icu,
[ --with-system-icu
Use system ICU (located with pkgconfig)],
MOZ_NATIVE_ICU=1)
if test -n "$MOZ_NATIVE_ICU"; then
PKG_CHECK_MODULES(MOZ_ICU, icu-i18n >= 50.1)
MOZ_JS_STATIC_LIBS="$MOZ_JS_STATIC_LIBS $MOZ_ICU_LIBS"
MOZ_SHARED_ICU=1
else
MOZ_ICU_CFLAGS='-I$(topsrcdir)/intl/icu/source/common -I$(topsrcdir)/intl/icu/source/i18n'
AC_SUBST(MOZ_ICU_CFLAGS)
fi
AC_SUBST(MOZ_NATIVE_ICU)
dnl ========================================================
dnl Java SDK support
dnl ========================================================
@ -4199,10 +4059,6 @@ if test -n "$WITH_APP_NAME" ; then
MOZ_APP_NAME="$WITH_APP_NAME"
fi
if test -z "$MOZ_APP_NAME"; then
MOZ_APP_NAME=`echo $MOZ_APP_BASENAME | tr A-Z a-z`
fi
MOZ_ARG_WITH_STRING(app-basename,
[--with-app-basename=BASENAME sets MOZ_APP_BASENAME to BASENAME],
WITH_APP_BASENAME=$withval,
@ -4282,7 +4138,6 @@ MOZ_ARG_HEADER(Toolkit Options)
Select default toolkit
Platform specific defaults:
Mac OS X - cairo-cocoa
OS/2 - cairo-os2
Win32 - cairo-windows
* - cairo-gtk2
* - cairo-gtk3
@ -4295,7 +4150,6 @@ MOZ_ARG_HEADER(Toolkit Options)
-o "$_DEFAULT_TOOLKIT" = "cairo-gtk2-x11" \
-o "$_DEFAULT_TOOLKIT" = "cairo-gtk3" \
-o "$_DEFAULT_TOOLKIT" = "cairo-qt" \
-o "$_DEFAULT_TOOLKIT" = "cairo-os2" \
-o "$_DEFAULT_TOOLKIT" = "cairo-cocoa" \
-o "$_DEFAULT_TOOLKIT" = "cairo-uikit" \
-o "$_DEFAULT_TOOLKIT" = "cairo-android" \
@ -4391,14 +4245,6 @@ cairo-qt)
AC_DEFINE(QT_NO_KEYWORDS)
;;
cairo-os2)
MOZ_WIDGET_TOOLKIT=os2
USE_FC_FREETYPE=1
TK_CFLAGS='$(MOZ_CAIRO_CFLAGS) $(MOZ_PIXMAN_CFLAGS)'
TK_LIBS='$(MOZ_CAIRO_LIBS) $(MOZ_PIXMAN_LIBS)'
MOZ_PDF_PRINTING=1
;;
cairo-cocoa)
MOZ_WIDGET_TOOLKIT=cocoa
AC_DEFINE(MOZ_WIDGET_COCOA)
@ -6850,8 +6696,8 @@ fi
if test "${OS_TARGET}" = "Android"; then
dnl On Android, we use WRAP_LDFLAGS to link everything to mozglue
:
elif test "${OS_TARGET}" = "WINNT" -o "${OS_TARGET}" = "Darwin" -o "${OS_TARGET}" = "OS2"; then
dnl On Windows, OSX and OS2, we want to link all our binaries against mozglue
elif test "${OS_TARGET}" = "WINNT" -o "${OS_TARGET}" = "Darwin"; then
dnl On Windows and OSX, we want to link all our binaries against mozglue
if test -z "$GNU_CC"; then
MOZ_GLUE_LDFLAGS='$(call EXPAND_LIBNAME_PATH,mozglue,$(LIBXUL_DIST)/lib)'
else
@ -7563,7 +7409,7 @@ if test "$MOZ_CHROME_FILE_FORMAT" = "omni"; then
AC_DEFINE(MOZ_OMNIJAR)
fi
MOZ_PACKAGER_FORMAT="$MOZ_CHROME_FILE_FORMAT"
if test "$OS_ARCH" = "WINNT" -o "$OS_ARCH" = "OS2" -o "$MOZ_WIDGET_TOOLKIT" = "android"; then
if test "$OS_ARCH" = "WINNT" -o "$MOZ_WIDGET_TOOLKIT" = "android"; then
MOZ_CHROME_FILE_FORMAT=flat
else
MOZ_CHROME_FILE_FORMAT=symlink
@ -8043,13 +7889,6 @@ if test "$MOZ_TREE_CAIRO"; then
MOZ_CHECK_HEADER(d3d10.h, MOZ_ENABLE_D3D10_LAYER=1)
fi
;;
os2)
OS2_SURFACE_FEATURE="#define CAIRO_HAS_OS2_SURFACE 1"
FT_FONT_FEATURE="#define CAIRO_HAS_FT_FONT 1"
MOZ_ENABLE_CAIRO_FT=1
CAIRO_FT_CFLAGS="-I${MZFTCFGFT2}/include"
CAIRO_FT_OSLIBS="-L${MZFTCFGFT2}/lib -lmozft -lmzfntcfg"
;;
esac
if test "$USE_FC_FREETYPE"; then
FC_FONT_FEATURE="#define CAIRO_HAS_FC_FONT 1"
@ -8425,7 +8264,6 @@ AC_SUBST(XPCOM_STANDALONE_STATICRUNTIME_GLUE_LDOPTS)
AC_SUBST(USE_DEPENDENT_LIBS)
AC_SUBST(MOZ_BUILD_ROOT)
AC_SUBST(MOZ_OS2_TOOLS)
AC_SUBST(MOZ_POST_DSO_LIB_COMMAND)
AC_SUBST(MOZ_POST_PROGRAM_COMMAND)
@ -8506,6 +8344,10 @@ AC_SUBST(MOZ_CHILD_PROCESS_BUNDLE)
# - MOZ_PROFILE_MIGRATOR: When set, enables profile migrator.
# - MOZ_EXTENSION_MANAGER: When set, enabled extension manager.
if test -z "$MOZ_APP_NAME"; then
MOZ_APP_NAME=`echo $MOZ_APP_BASENAME | tr A-Z a-z`
fi
# For extensions and langpacks, we require a max version that is compatible
# across security releases. MOZ_APP_MAXVERSION is our method for doing that.
# 24.0a1 and 24.0a2 aren't affected
@ -8797,7 +8639,7 @@ dnl ========================================================
if test "$OS_ARCH" = "Darwin"; then
AC_DEFINE(XP_UNIX)
elif test "$OS_ARCH" != "WINNT" -a "$OS_ARCH" != "OS2"; then
elif test "$OS_ARCH" != "WINNT"; then
AC_DEFINE(XP_UNIX)
fi
@ -8849,84 +8691,34 @@ HAVE_SYS_MOUNT_H
AC_SUBST(STLPORT_LIBS)
MOZ_ARG_WITH_STRING(intl-api,
[ --with-intl-api, --with-intl-api=build, --without-intl-api
Determine the status of the ECMAScript Internationalization API. The first
(or lack of any of these) builds and exposes the API. The second builds it
but doesn't use ICU or expose the API to script. The third doesn't build
ICU at all.],
_INTL_API=$withval,
_INTL_API=yes)
dnl ========================================================
dnl ICU Support
dnl ========================================================
WITH_INTL="--with-intl-api=$_INTL_API"
ENABLE_INTL_API=
case "$_INTL_API" in
no)
;;
build)
ENABLE_INTL_API=1
;;
yes)
ENABLE_INTL_API=1
;;
*)
AC_MSG_ERROR([Invalid value passed to --with-intl-api: $_INTL_API])
;;
esac
if test -n "$ENABLE_INTL_API"; then
if test "$MOZ_BUILD_APP" = "browser"; then
WITH_INTL="--with-intl-api"
_INTL_API=yes
else
# Internationalization isn't built or exposed by default in non-desktop
# builds. Bugs to enable:
#
# Android: bug 864843
# B2G: bug 866301
WITH_INTL="--without-intl-api"
ENABLE_INTL_API=
fi
_INTL_API=no
fi
dnl Settings for the implementation of the ECMAScript Internationalization API
if test -n "$ENABLE_INTL_API"; then
AC_DEFINE(ENABLE_INTL_API)
MOZ_CONFIG_ICU()
MOZ_CONFIG_ICU()
dnl Build ICU as a shared library for shared js builds.
if test -z "$MOZ_NATIVE_ICU" -a -n "$JS_SHARED_LIBRARY"; then
case "$OS_TARGET" in
WINNT)
ICU_LIB_NAMES="icuin icuuc icudt"
DBG_SUFFIX=
if test -n "$MOZ_DEBUG"; then
DBG_SUFFIX=d
fi
MOZ_ICU_LIBS='$(foreach lib,$(ICU_LIB_NAMES),$(DEPTH)/js/src/intl/icu/target/lib/$(LIB_PREFIX)$(lib)$(DBG_SUFFIX).$(LIB_SUFFIX))'
;;
Darwin)
ICU_LIB_NAMES="icui18n icuuc icudata"
MOZ_ICU_LIBS='$(foreach lib,$(ICU_LIB_NAMES),$(DEPTH)/js/src/intl/icu/target/lib/$(DLL_PREFIX)$(lib).$(MOZ_ICU_VERSION)$(DLL_SUFFIX))'
;;
Linux|DragonFly|FreeBSD|NetBSD|OpenBSD)
ICU_LIB_NAMES="icui18n icuuc icudata"
MOZ_ICU_LIBS='$(foreach lib,$(ICU_LIB_NAMES),$(DEPTH)/js/src/intl/icu/target/lib/$(DLL_PREFIX)$(lib)$(DLL_SUFFIX).$(MOZ_ICU_VERSION))'
;;
*)
AC_MSG_ERROR([ECMAScript Internationalization API is not yet supported on this platform])
esac
fi
if test -n "$MOZ_NATIVE_ICU"; then
MOZ_JS_STATIC_LIBS="$MOZ_JS_STATIC_LIBS $MOZ_ICU_LIBS"
fi
AC_SUBST(DBG_SUFFIX)
AC_SUBST(ENABLE_INTL_API)
AC_SUBST(ICU_LIB_NAMES)
AC_SUBST(MOZ_ICU_LIBS)
MOZ_CREATE_CONFIG_STATUS()
export WRITE_MOZINFO=1
AC_OUTPUT()
unset WRITE_MOZINFO
# No need to run subconfigures when building with LIBXUL_SDK_DIR
if test "$COMPILE_ENVIRONMENT" -a -z "$LIBXUL_SDK_DIR"; then
MOZ_SUBCONFIGURE_ICU()
MOZ_SUBCONFIGURE_FFI()
fi
# Hack around an Apple bug that affects the egrep that comes with OS X 10.7.
# "env ARCHPREFERENCE=i386,x86_64 arch egrep" first tries to use the 32-bit
@ -9106,9 +8898,6 @@ if test -z "$MOZ_NATIVE_NSPR"; then
AC_OUTPUT_SUBDIRS(nsprpub)
# .. and restore them
unset CFLAGS
unset CPPFLAGS
unset LDFLAGS
CFLAGS="$_SAVE_CFLAGS"
CPPFLAGS="$_SAVE_CPPFLAGS"
LDFLAGS="$_SAVE_LDFLAGS"
@ -9142,7 +8931,9 @@ dist=$MOZ_BUILD_ROOT/dist
ac_configure_args="$_SUBDIR_CONFIG_ARGS"
ac_configure_args="$ac_configure_args --enable-threadsafe"
ac_configure_args="$ac_configure_args $WITH_INTL"
if test "$_INTL_API" = no; then
ac_configure_args="$ac_configure_args --without-intl-api"
fi
if test "$BUILD_CTYPES"; then
# Build js-ctypes on the platforms we can.
@ -9161,7 +8952,6 @@ if test -z "$MOZ_NATIVE_NSPR"; then
ac_configure_args="$ac_configure_args --with-nspr-cflags='$NSPR_CFLAGS'"
ac_configure_args="$ac_configure_args --with-nspr-libs='$NSPR_LIBS'"
fi
ac_configure_args="$ac_configure_args --with-dist-dir=../../dist"
ac_configure_args="$ac_configure_args --prefix=$dist"
if test "$MOZ_MEMORY"; then
ac_configure_args="$ac_configure_args --enable-jemalloc"
@ -9197,3 +8987,12 @@ AC_OUTPUT_SUBDIRS(js/src)
ac_configure_args="$_SUBDIR_CONFIG_ARGS"
fi # COMPILE_ENVIRONMENT && !LIBXUL_SDK_DIR
export WRITE_MOZINFO=1
dnl we need to run config.status after js/src subconfigure because we're
dnl traversing its moz.build and we need its config.status for that.
dnl However, writing our own config.status needs to happen before
dnl subconfigures because the setup surrounding subconfigures alters
dnl many AC_SUBSTed variables.
MOZ_RUN_CONFIG_STATUS()
unset WRITE_MOZINFO

Просмотреть файл

@ -9,7 +9,7 @@
#ifndef nsContentUtils_h___
#define nsContentUtils_h___
#if defined(XP_WIN) || defined(XP_OS2)
#if defined(XP_WIN)
#include <float.h>
#endif

Просмотреть файл

@ -38,3 +38,4 @@ DEPRECATED_OPERATION(UseOfReleaseEvents)
DEPRECATED_OPERATION(UseOfDOM3LoadMethod)
DEPRECATED_OPERATION(ShowModalDialog)
DEPRECATED_OPERATION(Window_Content)
DEPRECATED_OPERATION(SyncXMLHttpRequest)

Просмотреть файл

@ -29,6 +29,7 @@
#include "nsIDOMClassInfo.h"
#include "nsIDOMFile.h"
#include "xpcpublic.h"
#include "mozilla/Debug.h"
#include "mozilla/Preferences.h"
#include "mozilla/dom/StructuredCloneUtils.h"
#include "JavaScriptChild.h"
@ -37,9 +38,6 @@
#include "nsPrintfCString.h"
#include <algorithm>
#ifdef ANDROID
#include <android/log.h>
#endif
#ifdef XP_WIN
#include <windows.h>
# if defined(SendMessage)
@ -723,16 +721,7 @@ nsFrameMessageManager::GetChildAt(uint32_t aIndex,
NS_IMETHODIMP
nsFrameMessageManager::Dump(const nsAString& aStr)
{
#ifdef ANDROID
__android_log_print(ANDROID_LOG_INFO, "Gecko", "%s", NS_ConvertUTF16toUTF8(aStr).get());
#endif
#ifdef XP_WIN
if (IsDebuggerPresent()) {
OutputDebugStringW(PromiseFlatString(aStr).get());
}
#endif
fputs(NS_ConvertUTF16toUTF8(aStr).get(), stdout);
fflush(stdout);
PrintToDebugger(aStr, stdout);
return NS_OK;
}

Просмотреть файл

@ -273,6 +273,9 @@ nsXMLHttpRequestUpload::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope)
//
/////////////////////////////////////////////
bool
nsXMLHttpRequest::sDontWarnAboutSyncXHR = false;
nsXMLHttpRequest::nsXMLHttpRequest()
: mResponseBodyDecodedPos(0),
mResponseType(XML_HTTP_RESPONSE_TYPE_DEFAULT),
@ -1541,6 +1544,11 @@ nsXMLHttpRequest::Open(const nsACString& method, const nsACString& url,
{
NS_ENSURE_ARG(!method.IsEmpty());
if (!async && !DontWarnAboutSyncXHR() && GetOwner() &&
GetOwner()->GetExtantDoc()) {
GetOwner()->GetExtantDoc()->WarnOnceAbout(nsIDocument::eSyncXMLHttpRequest);
}
Telemetry::Accumulate(Telemetry::XMLHTTPREQUEST_ASYNC_OR_SYNC,
async ? 0 : 1);

Просмотреть файл

@ -533,6 +533,14 @@ public:
virtual void DisconnectFromOwner() MOZ_OVERRIDE;
static void SetDontWarnAboutSyncXHR(bool aVal)
{
sDontWarnAboutSyncXHR = aVal;
}
static bool DontWarnAboutSyncXHR()
{
return sDontWarnAboutSyncXHR;
}
protected:
nsresult DetectCharset();
nsresult AppendToResponseText(const char * aBuffer, uint32_t aBufferLen);
@ -736,6 +744,25 @@ protected:
// Helper object to manage our XPCOM scriptability bits
nsXMLHttpRequestXPCOMifier* mXPCOMifier;
static bool sDontWarnAboutSyncXHR;
};
class MOZ_STACK_CLASS AutoDontWarnAboutSyncXHR
{
public:
AutoDontWarnAboutSyncXHR() : mOldVal(nsXMLHttpRequest::DontWarnAboutSyncXHR())
{
nsXMLHttpRequest::SetDontWarnAboutSyncXHR(true);
}
~AutoDontWarnAboutSyncXHR()
{
nsXMLHttpRequest::SetDontWarnAboutSyncXHR(mOldVal);
}
private:
bool mOldVal;
};
// A shim class designed to expose the non-DOM interfaces of

Просмотреть файл

@ -513,7 +513,7 @@ public:
, mInput(aInput)
, mTopDir(aTopDir)
, mFileListLength(0)
, mCanceled(0)
, mCanceled(false)
{}
NS_IMETHOD Run() {
@ -578,7 +578,7 @@ public:
// Clear mInput to make sure that it can't lose its last strong ref off the
// main thread (which may happen if our dtor runs off the main thread)!
mInput = nullptr;
mCanceled = 1; // true
mCanceled = true;
}
uint32_t GetFileListLength() const
@ -606,8 +606,7 @@ private:
// this atomic member to make the access thread safe:
mozilla::Atomic<uint32_t> mFileListLength;
// We'd prefer this member to be bool, but we don't support Atomic<bool>.
mozilla::Atomic<uint32_t> mCanceled;
mozilla::Atomic<bool> mCanceled;
};

Просмотреть файл

@ -1277,10 +1277,10 @@ MediaStreamGraphImpl::RunThread()
// Enter shutdown mode. The stable-state handler will detect this
// and complete shutdown. Destroy any streams immediately.
STREAM_LOG(PR_LOG_DEBUG, ("MediaStreamGraph %p waiting for main thread cleanup", this));
// Commit to shutting down this graph object.
// We'll shut down this graph object if it does not get restarted.
mLifecycleState = LIFECYCLE_WAITING_FOR_MAIN_THREAD_CLEANUP;
// No need to Destroy streams here. The main-thread owner of each
// stream is responsible for calling Destroy them.
// stream is responsible for calling Destroy on them.
return;
}
@ -1421,11 +1421,15 @@ public:
// mGraph's thread is not running so it's OK to do whatever here
if (mGraph->IsEmpty()) {
// mGraph is no longer needed, so delete it. If the graph is not empty
// then we must be in a forced shutdown and some later AppendMessage will
// detect that the manager has been emptied, and delete it.
// mGraph is no longer needed, so delete it.
delete mGraph;
} else {
// The graph is not empty. We must be in a forced shutdown, or a
// non-realtime graph that has finished processing. Some later
// AppendMessage will detect that the manager has been emptied, and
// delete it.
NS_ASSERTION(mGraph->mForceShutDown || !mGraph->mRealtime,
"Not in forced shutdown?");
for (uint32_t i = 0; i < mGraph->mStreams.Length(); ++i) {
DOMMediaStream* s = mGraph->mStreams[i]->GetWrapper();
if (s) {
@ -1433,7 +1437,6 @@ public:
}
}
NS_ASSERTION(mGraph->mForceShutDown, "Not in forced shutdown?");
mGraph->mLifecycleState =
MediaStreamGraphImpl::LIFECYCLE_WAITING_FOR_STREAM_DESTRUCTION;
}
@ -1565,7 +1568,7 @@ MediaStreamGraphImpl::RunInStableState()
}
}
if (mForceShutDown &&
if ((mForceShutDown || !mRealtime) &&
mLifecycleState == LIFECYCLE_WAITING_FOR_MAIN_THREAD_CLEANUP) {
// Defer calls to RunDuringShutdown() to happen while mMonitor is not held.
for (uint32_t i = 0; i < mMessageQueue.Length(); ++i) {
@ -1640,7 +1643,8 @@ MediaStreamGraphImpl::AppendMessage(ControlMessage* aMessage)
// happened. From now on we can't append messages to mCurrentTaskMessageQueue,
// because that will never be processed again, so just RunDuringShutdown
// this message.
// This should only happen during forced shutdown.
// This should only happen during forced shutdown, or after a non-realtime
// graph has finished processing.
aMessage->RunDuringShutdown();
delete aMessage;
if (IsEmpty() &&

Просмотреть файл

@ -468,12 +468,13 @@ public:
* creation after this point will create a new graph. An async event is
* dispatched to Shutdown() the graph's threads and then delete the graph
* object.
* 2) Forced shutdown at application shutdown. A flag is set, RunThread()
* detects the flag and exits, the next RunInStableState() detects the flag,
* and dispatches the async event to Shutdown() the graph's threads. However
* the graph object is not deleted. New messages for the graph are processed
* synchronously on the main thread if necessary. When the last stream is
* destroyed, the graph object is deleted.
* 2) Forced shutdown at application shutdown, or completion of a
* non-realtime graph. A flag is set, RunThread() detects the flag and
* exits, the next RunInStableState() detects the flag, and dispatches the
* async event to Shutdown() the graph's threads. However the graph object
* is not deleted. New messages for the graph are processed synchronously on
* the main thread if necessary. When the last stream is destroyed, the
* graph object is deleted.
*/
enum LifecycleState {
// The graph thread hasn't started yet.
@ -491,8 +492,9 @@ public:
// to shut down the graph thread(s).
LIFECYCLE_WAITING_FOR_THREAD_SHUTDOWN,
// Graph threads have shut down but we're waiting for remaining streams
// to be destroyed. Only happens during application shutdown since normally
// we'd only shut down a graph when it has no streams.
// to be destroyed. Only happens during application shutdown and on
// completed non-realtime graphs, since normally we'd only shut down a
// realtime graph when it has no streams.
LIFECYCLE_WAITING_FOR_STREAM_DESTRUCTION
};
LifecycleState mLifecycleState;

Просмотреть файл

@ -153,14 +153,13 @@ public:
// Borrow a full buffer of size WEBAUDIO_BLOCK_SIZE from the source buffer
// at offset aSourceOffset. This avoids copying memory.
void BorrowFromInputBuffer(AudioChunk* aOutput,
uint32_t aChannels,
uintptr_t aSourceOffset)
uint32_t aChannels)
{
aOutput->mDuration = WEBAUDIO_BLOCK_SIZE;
aOutput->mBuffer = mBuffer;
aOutput->mChannelData.SetLength(aChannels);
for (uint32_t i = 0; i < aChannels; ++i) {
aOutput->mChannelData[i] = mBuffer->GetData(i) + aSourceOffset;
aOutput->mChannelData[i] = mBuffer->GetData(i) + mBufferPosition;
}
aOutput->mVolume = 1.0f;
aOutput->mBufferFormat = AUDIO_FORMAT_FLOAT32;
@ -170,13 +169,12 @@ public:
// and put it at offset aBufferOffset in the destination buffer.
void CopyFromInputBuffer(AudioChunk* aOutput,
uint32_t aChannels,
uintptr_t aSourceOffset,
uintptr_t aBufferOffset,
uintptr_t aOffsetWithinBlock,
uint32_t aNumberOfFrames) {
for (uint32_t i = 0; i < aChannels; ++i) {
float* baseChannelData = static_cast<float*>(const_cast<void*>(aOutput->mChannelData[i]));
memcpy(baseChannelData + aBufferOffset,
mBuffer->GetData(i) + aSourceOffset,
memcpy(baseChannelData + aOffsetWithinBlock,
mBuffer->GetData(i) + mBufferPosition,
aNumberOfFrames * sizeof(float));
}
}
@ -191,15 +189,14 @@ public:
uint32_t aChannels,
uint32_t aOffsetWithinBlock,
uint32_t& aFramesWritten,
uint32_t aBufferOffset,
uint32_t aBufferMax) {
int32_t aBufferMax) {
// TODO: adjust for mStop (see bug 913854 comment 9).
uint32_t availableInOutputBuffer = WEBAUDIO_BLOCK_SIZE - aOffsetWithinBlock;
SpeexResamplerState* resampler = Resampler(aStream, aChannels);
MOZ_ASSERT(aChannels > 0);
if (aBufferOffset < aBufferMax) {
uint32_t availableInInputBuffer = aBufferMax - aBufferOffset;
if (mBufferPosition < aBufferMax) {
uint32_t availableInInputBuffer = aBufferMax - mBufferPosition;
// Limit the number of input samples copied and possibly
// format-converted for resampling by estimating how many will be used.
// This may be a little small when filling the resampler with initial
@ -210,7 +207,7 @@ public:
availableInOutputBuffer * num / den + 10);
for (uint32_t i = 0; true; ) {
uint32_t inSamples = inputLimit;
const float* inputData = mBuffer->GetData(i) + aBufferOffset;
const float* inputData = mBuffer->GetData(i) + mBufferPosition;
uint32_t outSamples = availableInOutputBuffer;
float* outputData =
@ -308,17 +305,16 @@ public:
uint32_t aChannels,
uint32_t* aOffsetWithinBlock,
TrackTicks* aCurrentPosition,
uint32_t aBufferOffset,
uint32_t aBufferMax)
int32_t aBufferMax)
{
MOZ_ASSERT(*aCurrentPosition < mStop);
uint32_t numFrames =
std::min<TrackTicks>(std::min(WEBAUDIO_BLOCK_SIZE - *aOffsetWithinBlock,
aBufferMax - aBufferOffset),
mStop - *aCurrentPosition);
std::min(std::min<TrackTicks>(WEBAUDIO_BLOCK_SIZE - *aOffsetWithinBlock,
aBufferMax - mBufferPosition),
mStop - *aCurrentPosition);
if (numFrames == WEBAUDIO_BLOCK_SIZE && !ShouldResample(aStream->SampleRate())) {
MOZ_ASSERT(aBufferOffset < aBufferMax);
BorrowFromInputBuffer(aOutput, aChannels, aBufferOffset);
MOZ_ASSERT(mBufferPosition < aBufferMax);
BorrowFromInputBuffer(aOutput, aChannels);
*aOffsetWithinBlock += numFrames;
*aCurrentPosition += numFrames;
mBufferPosition += numFrames;
@ -327,14 +323,14 @@ public:
AllocateAudioBlock(aChannels, aOutput);
}
if (!ShouldResample(aStream->SampleRate())) {
MOZ_ASSERT(aBufferOffset < aBufferMax);
CopyFromInputBuffer(aOutput, aChannels, aBufferOffset, *aOffsetWithinBlock, numFrames);
MOZ_ASSERT(mBufferPosition < aBufferMax);
CopyFromInputBuffer(aOutput, aChannels, *aOffsetWithinBlock, numFrames);
*aOffsetWithinBlock += numFrames;
*aCurrentPosition += numFrames;
mBufferPosition += numFrames;
} else {
uint32_t framesWritten;
CopyFromInputBufferWithResampling(aStream, aOutput, aChannels, *aOffsetWithinBlock, framesWritten, aBufferOffset, aBufferMax);
CopyFromInputBufferWithResampling(aStream, aOutput, aChannels, *aOffsetWithinBlock, framesWritten, aBufferMax);
*aOffsetWithinBlock += framesWritten;
*aCurrentPosition += framesWritten;
}
@ -424,15 +420,16 @@ public:
continue;
}
if (mLoop) {
if (mBufferPosition < mLoopEnd) {
CopyFromBuffer(aStream, aOutput, channels, &written, &streamPosition, mBufferPosition, mLoopEnd);
} else {
uint32_t offsetInLoop = (mBufferPosition - mLoopEnd) % (mLoopEnd - mLoopStart);
CopyFromBuffer(aStream, aOutput, channels, &written, &streamPosition, mLoopStart + offsetInLoop, mLoopEnd);
// mLoopEnd can become less than mBufferPosition when a LOOPEND engine
// parameter is received after "loopend" is changed on the node or a
// new buffer with lower samplerate is set.
if (mBufferPosition >= mLoopEnd) {
mBufferPosition = mLoopStart;
}
CopyFromBuffer(aStream, aOutput, channels, &written, &streamPosition, mLoopEnd);
} else {
if (mBufferPosition < mBufferEnd || mRemainingResamplerTail) {
CopyFromBuffer(aStream, aOutput, channels, &written, &streamPosition, mBufferPosition, mBufferEnd);
CopyFromBuffer(aStream, aOutput, channels, &written, &streamPosition, mBufferEnd);
} else {
FillWithZeroes(aOutput, channels, &written, &streamPosition, TRACK_TICKS_MAX);
}

Просмотреть файл

@ -30,6 +30,17 @@ https://bugzilla.mozilla.org/show_bug.cgi?id=650295
info("Successfully start() from end() callback");
}
function expectExceptionHandler(evt, sr) {
try {
sr.start();
} catch (err) {
is(err.name, "InvalidStateError");
return;
}
ok(false, "Calling start() didn't raise InvalidStateError");
}
performTest({
eventsToRequest: [
'EVENT_START',
@ -37,11 +48,11 @@ https://bugzilla.mozilla.org/show_bug.cgi?id=650295
'EVENT_RECOGNITIONSERVICE_FINAL_RESULT'
],
expectedEvents: {
'start': null,
'audiostart': null,
'speechstart': null,
'speechend': null,
'audioend': null,
'start': expectExceptionHandler,
'audiostart': expectExceptionHandler,
'speechstart': expectExceptionHandler,
'speechend': expectExceptionHandler,
'audioend': expectExceptionHandler,
'result': buildResultCallback("Mock final result"),
'end': endHandler,
},

Некоторые файлы не были показаны из-за слишком большого количества измененных файлов Показать больше