Merge mozilla-central and inbound

This commit is contained in:
Ed Morley 2013-10-25 17:55:18 +01:00
commit 4f7dd51a89
180 changed files with 551 additions and 286 deletions

View File

@ -18,4 +18,4 @@
# Modifying this file will now automatically clobber the buildbot machines \o/
#
Bug 922160 needs a clobber due to WebIDL binding dependency issues (bug 928195).
Bug 914270 needs a clobber since moving variables to moz.build always requires a clobber (bug 852814)

View File

@ -11,7 +11,7 @@ interface nsIAccessible;
/**
* This interface gives access to an accessible's set of relations.
*/
[scriptable, uuid(9f85fc0d-2969-48e6-b822-68140f7e5770)]
[scriptable, uuid(55b308c4-2ae4-46bc-b4cd-4d4370e0a660)]
interface nsIAccessibleRelation : nsISupports
{
/**
@ -109,6 +109,21 @@ interface nsIAccessibleRelation : nsISupports
*/
const unsigned long RELATION_DEFAULT_BUTTON = 0x10;
/**
* The target object is the containing document object.
*/
const unsigned long RELATION_CONTAINING_DOCUMENT = 0x11;
/**
* The target object is the topmost containing document object in the tab pane.
*/
const unsigned long RELATION_CONTAINING_TAB_PANE = 0x12;
/**
* The target object is the containing application object.
*/
const unsigned long RELATION_CONTAINING_APPLICATION = 0x14;
/**
* Returns the type of the relation.
*/

View File

@ -109,7 +109,27 @@ MOZ_BEGIN_ENUM_CLASS(RelationType)
*/
DEFAULT_BUTTON = 0x10,
LAST = DEFAULT_BUTTON
/**
* The target object is the containing document object.
*/
CONTAINING_DOCUMENT = 0x11,
/**
* The target object is the topmost containing document object in the tab pane.
*/
CONTAINING_TAB_PANE = 0x12,
/**
* The target object is the containing window object.
*/
CONTAINING_WINDOW = 0x13,
/**
* The target object is the containing application object.
*/
CONTAINING_APPLICATION = 0x14,
LAST = CONTAINING_APPLICATION
MOZ_END_ENUM_CLASS(RelationType)

View File

@ -110,3 +110,21 @@ RELATIONTYPE(DEFAULT_BUTTON,
ATK_RELATION_NULL,
NAVRELATION_DEFAULT_BUTTON,
IA2_RELATION_NULL)
RELATIONTYPE(CONTAINING_DOCUMENT,
"containing document",
ATK_RELATION_NULL,
NAVRELATION_CONTAINING_DOCUMENT,
IA2_RELATION_CONTAINING_DOCUMENT)
RELATIONTYPE(CONTAINING_TAB_PANE,
"containing tab pane",
ATK_RELATION_NULL,
NAVRELATION_CONTAINING_TAB_PANE,
IA2_RELATION_CONTAINING_TAB_PANE)
RELATIONTYPE(CONTAINING_APPLICATION,
"containing application",
ATK_RELATION_NULL,
NAVRELATION_CONTAINING_APPLICATION,
IA2_RELATION_CONTAINING_APPLICATION)

View File

@ -13,6 +13,8 @@
#include "nsAccUtils.h"
#include "nsAccessibleRelation.h"
#include "nsAccessibilityService.h"
#include "ApplicationAccessible.h"
#include "nsCoreUtils.h"
#include "nsIAccessibleRelation.h"
#include "nsIAccessibleRole.h"
#include "nsEventShell.h"
@ -2180,6 +2182,33 @@ Accessible::RelationByType(RelationType aType)
return Relation();
}
case RelationType::CONTAINING_DOCUMENT:
return Relation(mDoc);
case RelationType::CONTAINING_TAB_PANE: {
nsCOMPtr<nsIDocShell> docShell =
nsCoreUtils::GetDocShellFor(GetNode());
if (docShell) {
// Walk up the parent chain without crossing the boundary at which item
// types change, preventing us from walking up out of tab content.
nsCOMPtr<nsIDocShellTreeItem> root;
docShell->GetSameTypeRootTreeItem(getter_AddRefs(root));
if (root) {
// If the item type is typeContent, we assume we are in browser tab
// content. Note, this includes content such as about:addons,
// for consistency.
int32_t itemType = 0;
root->GetItemType(&itemType);
if (itemType == nsIDocShellTreeItem::typeContent)
return Relation(nsAccUtils::GetDocAccessibleFor(root));
}
}
return Relation();
}
case RelationType::CONTAINING_APPLICATION:
return Relation(ApplicationAcc());
default:
return Relation();
}
@ -2214,7 +2243,10 @@ Accessible::GetRelations(nsIArray **aRelations)
nsIAccessibleRelation::RELATION_EMBEDDED_BY,
nsIAccessibleRelation::RELATION_POPUP_FOR,
nsIAccessibleRelation::RELATION_PARENT_WINDOW_OF,
nsIAccessibleRelation::RELATION_DEFAULT_BUTTON
nsIAccessibleRelation::RELATION_DEFAULT_BUTTON,
nsIAccessibleRelation::RELATION_CONTAINING_DOCUMENT,
nsIAccessibleRelation::RELATION_CONTAINING_TAB_PANE,
nsIAccessibleRelation::RELATION_CONTAINING_APPLICATION
};
for (uint32_t idx = 0; idx < ArrayLength(relationTypes); idx++) {

View File

@ -202,7 +202,10 @@ protected:
NAVRELATION_DEFAULT_BUTTON = 0x100d,
NAVRELATION_DESCRIBED_BY = 0x100e,
NAVRELATION_DESCRIPTION_FOR = 0x100f,
NAVRELATION_NODE_PARENT_OF = 0x1010
NAVRELATION_NODE_PARENT_OF = 0x1010,
NAVRELATION_CONTAINING_DOCUMENT = 0x1011,
NAVRELATION_CONTAINING_TAB_PANE = 0x1012,
NAVRELATION_CONTAINING_APPLICATION = 0x1014
};
};

View File

@ -11,6 +11,7 @@
#include "DocAccessible.h"
#include "nsAccUtils.h"
#include "nsCoreUtils.h"
#include "Relation.h"
#include "uiaRawElmProvider.h"
#include "mozilla/Preferences.h"
@ -60,33 +61,12 @@ ServiceProvider::QueryService(REFGUID aGuidService, REFIID aIID,
if (aIID != IID_IAccessible)
return E_NOINTERFACE;
nsCOMPtr<nsIDocShell> docShell =
nsCoreUtils::GetDocShellFor(mAccessible->GetNode());
if (!docShell)
return E_UNEXPECTED;
// Walk up the parent chain without crossing the boundary at which item
// types change, preventing us from walking up out of tab content.
nsCOMPtr<nsIDocShellTreeItem> root;
docShell->GetSameTypeRootTreeItem(getter_AddRefs(root));
if (!root)
return E_UNEXPECTED;
// If the item type is typeContent, we assume we are in browser tab content.
// Note this includes content such as about:addons, for consistency.
int32_t itemType;
root->GetItemType(&itemType);
if (itemType != nsIDocShellTreeItem::typeContent)
Relation rel = mAccessible->RelationByType(RelationType::CONTAINING_TAB_PANE);
AccessibleWrap* tabDoc = static_cast<AccessibleWrap*>(rel.Next());
if (!tabDoc)
return E_NOINTERFACE;
// Make sure this is a document.
DocAccessible* docAcc = nsAccUtils::GetDocAccessibleFor(root);
if (!docAcc)
return E_UNEXPECTED;
*aInstancePtr = static_cast<IAccessible*>(docAcc);
*aInstancePtr = static_cast<IAccessible*>(tabDoc);
(reinterpret_cast<IUnknown*>(*aInstancePtr))->AddRef();
return S_OK;
}

View File

@ -18,6 +18,9 @@ const RELATION_NODE_PARENT_OF = nsIAccessibleRelation.RELATION_NODE_PARENT_OF;
const RELATION_PARENT_WINDOW_OF = nsIAccessibleRelation.RELATION_PARENT_WINDOW_OF;
const RELATION_POPUP_FOR = nsIAccessibleRelation.RELATION_POPUP_FOR;
const RELATION_SUBWINDOW_OF = nsIAccessibleRelation.RELATION_SUBWINDOW_OF;
const RELATION_CONTAINING_DOCUMENT = nsIAccessibleRelation.RELATION_CONTAINING_DOCUMENT;
const RELATION_CONTAINING_TAB_PANE = nsIAccessibleRelation.RELATION_CONTAINING_TAB_PANE;
const RELATION_CONTAINING_APPLICATION = nsIAccessibleRelation.RELATION_CONTAINING_APPLICATION;
////////////////////////////////////////////////////////////////////////////////
// General

View File

@ -167,6 +167,11 @@
testRelation("legend", RELATION_LABEL_FOR, "fieldset");
testRelation("fieldset", RELATION_LABELLED_BY, "legend");
// containing relations
testRelation("control1_1", RELATION_CONTAINING_DOCUMENT, document);
testRelation("control1_1", RELATION_CONTAINING_TAB_PANE, getTabDocAccessible("control1_1"));
testRelation("control1_1", RELATION_CONTAINING_APPLICATION, getApplicationAccessible());
// finish test
SimpleTest.finish();
}

View File

@ -2,7 +2,6 @@
# 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/.
FORCE_STATIC_LIB = 1
USE_STATIC_LIBS = 1
LOCAL_INCLUDES = -I$(srcdir)/../build

View File

@ -16,3 +16,4 @@ SOURCES += [
LIBRARY_NAME = 'browserabout_s'
FORCE_STATIC_LIB = True

View File

@ -2,7 +2,6 @@
# 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/.
FORCE_STATIC_LIB = 1
USE_STATIC_LIBS = 1
LOCAL_INCLUDES = -I$(srcdir)/../build

View File

@ -19,3 +19,5 @@ LIBRARY_NAME = 'browserdir_s'
XPCSHELL_TESTS_MANIFESTS += [
'tests/unit/xpcshell.ini',
]
FORCE_STATIC_LIB = True

View File

@ -2,7 +2,6 @@
# 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/.
FORCE_STATIC_LIB = 1
USE_STATIC_LIBS = 1
DEFINES += \

View File

@ -22,3 +22,4 @@ EXTRA_PP_COMPONENTS += [
LIBRARY_NAME = 'browser_feeds_s'
FORCE_STATIC_LIB = True

View File

@ -2,7 +2,6 @@
# 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/.
FORCE_STATIC_LIB = 1
USE_STATIC_LIBS = 1

View File

@ -42,3 +42,4 @@ EXTRA_PP_JS_MODULES += [
'MigrationUtils.jsm',
]
FORCE_STATIC_LIB = True

View File

@ -3,7 +3,6 @@
# 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/.
FORCE_STATIC_LIB = 1
USE_STATIC_LIBS = 1

View File

@ -26,3 +26,5 @@ EXTRA_COMPONENTS += [
'nsSetDefaultBrowser.js',
'nsSetDefaultBrowser.manifest',
]
FORCE_STATIC_LIB = True

View File

@ -3,7 +3,6 @@
# You can obtain one at http://mozilla.org/MPL/2.0/.
MODULES = stlport
FORCE_STATIC_LIB = 1
STL_FLAGS =
# Force to build a static library, instead of a fake library, without

View File

@ -6,3 +6,4 @@
LIBRARY_NAME = 'stlport_static'
FORCE_STATIC_LIB = True

View File

@ -2,7 +2,6 @@
# 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/.
FORCE_STATIC_LIB= 1
STL_FLAGS =
NO_EXPAND_LIBS = 1
NO_PROFILE_GUIDED_OPTIMIZE = 1

View File

@ -16,3 +16,4 @@ if CONFIG['MOZ_LIBSTDCXX_HOST_VERSION']:
'stdc++compat.cpp',
]
FORCE_STATIC_LIB = True

View File

@ -41,6 +41,7 @@ _MOZBUILD_EXTERNAL_VARIABLES := \
DIRS \
EXTRA_PP_COMPONENTS \
EXTRA_PP_JS_MODULES \
FORCE_STATIC_LIB \
GTEST_CMMSRCS \
GTEST_CPPSRCS \
GTEST_CSRCS \

View File

@ -9145,7 +9145,10 @@ MOZ_ARG_WITH_STRING(intl-api,
])
if test -z "$WITH_INTL"; then
if test "$MOZ_BUILD_APP" = "browser"; then
WITH_INTL="--with-intl-api"
# Don't build the Intl API til we can update ICU (bug 924839). Don't take
# the smaller step of building but not exposing it, either, as we also
# don't want dead code in shipping builds.
WITH_INTL="--without-intl-api"
else
# Internationalization isn't built or exposed by default in non-desktop
# builds. Bugs to enable:

View File

@ -986,7 +986,6 @@ CSPSourceList.fromString = function(aStr, aCSPRep, self, enforceSelfChecks) {
// if a source is a *, then we can permit all sources
if (src.permitAll) {
slObj._permitAllSources = true;
return slObj;
} else {
slObj._sources.push(src);
}

View File

@ -0,0 +1,20 @@
<!doctype html>
<html>
<head>
<!-- file_CSP.sjs mocks a resource load -->
<link rel='stylesheet' type='text/css'
href='file_CSP.sjs?testid=noneExternalStylesBlocked&type=text/css' />
</head>
<body>
<p id="inline-style">This should be green</p>
<p id="inline-script">This should be black</p>
<style>
p#inline-style { color:rgb(0, 128, 0); }
</style>
<script>
// Use inline script to set a style attribute
document.getElementById("inline-script").style.color = "rgb(0, 128, 0)";
</script>
<img src="file_CSP.sjs?testid=noneExternalImgLoaded&type=img/png" />
</body>
</html>

View File

@ -0,0 +1 @@
Content-Security-Policy: default-src * ; style-src 'none' 'unsafe-inline';

View File

@ -0,0 +1,19 @@
<!doctype html>
<html>
<head>
<link rel='stylesheet' type='text/css'
href='file_CSP.sjs?testid=starExternalStylesLoaded&type=text/css' />
</head>
<body>
<p id="inline-style">This should be green</p>
<p id="inline-script">This should be black</p>
<style>
p#inline-style { color:rgb(0, 128, 0); }
</style>
<script>
// Use inline script to set a style attribute
document.getElementById("inline-script").style.color = "rgb(0, 128, 0)";
</script>
<img src="file_CSP.sjs?testid=starExternalImgLoaded&type=img/png" />
</body>
</html>

View File

@ -0,0 +1 @@
Content-Security-Policy: default-src *; style-src * 'unsafe-inline';

View File

@ -78,6 +78,10 @@ support-files =
file_CSP_bug910139.sjs
file_CSP_bug910139.xml
file_CSP_bug910139.xsl
file_CSP_bug909029_star.html
file_CSP_bug909029_star.html^headers^
file_CSP_bug909029_none.html
file_CSP_bug909029_none.html^headers^
[test_CSP.html]
[test_CSP_bug663567.html]
@ -94,3 +98,4 @@ support-files =
[test_bug836922_npolicies.html]
[test_csp_redirects.html]
[test_CSP_bug910139.html]
[test_CSP_bug909029.html]

View File

@ -0,0 +1,140 @@
<!doctype html>
<html>
<head>
<title>Bug 909029 - CSP source-lists ignore some source expressions like 'unsafe-inline' when * or 'none' are used (e.g., style-src, script-src)</title>
<script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" />
</head>
<body>
<div id=content style="visibility:hidden">
<iframe id=testframe1></iframe>
<iframe id=testframe2></iframe>
</div>
<script class="testbody" type="text/javascript">
SimpleTest.waitForExplicitFinish();
window.tests = {
starExternalStylesLoaded: -1,
starExternalImgLoaded: -1,
noneExternalStylesBlocked: -1,
noneExternalImgLoaded: -1,
starInlineStyleAllowed: -1,
starInlineScriptBlocked: -1,
noneInlineStyleAllowed: -1,
noneInlineScriptBlocked: -1
}
function examiner() {
SpecialPowers.addObserver(this, "csp-on-violate-policy", false);
SpecialPowers.addObserver(this, "http-on-modify-request", false);
}
examiner.prototype = {
observe: function(subject, topic, data) {
// subject should be an nsURI, and should be either allowed or blocked.
if (!SpecialPowers.can_QI(subject))
return;
var testpat = new RegExp("testid=([a-zA-Z]+)");
if (topic === "http-on-modify-request") {
//these things were allowed by CSP
var asciiSpec = SpecialPowers.getPrivilegedProps(SpecialPowers.do_QueryInterface(subject, "nsIHttpChannel"), "URI.asciiSpec");
if (!testpat.test(asciiSpec))
return;
var testid = testpat.exec(asciiSpec)[1];
window.testResult(testid,
/Loaded/.test(testid),
"resource loaded");
}
if(topic === "csp-on-violate-policy") {
// these were blocked... record that they were blocked
// try because the subject could be an nsIURI or an nsISupportsCString
try {
var asciiSpec = SpecialPowers.getPrivilegedProps(SpecialPowers.do_QueryInterface(subject, "nsIURI"), "asciiSpec");
if (!testpat.test(asciiSpec)) return;
var testid = testpat.exec(asciiSpec)[1];
window.testResult(testid,
/Blocked/.test(testid),
"resource blocked by CSP");
} catch(e) {
// if that fails, the subject is probably a string. Strings are only
// reported for inline and eval violations. Since we are testing those
// via the observed effects of script on CSSOM, we can simply ignore
// these subjects.
}
}
},
// must eventually call this to remove the listener,
// or mochitests might get borked.
remove: function() {
SpecialPowers.removeObserver(this, "csp-on-violate-policy");
SpecialPowers.removeObserver(this, "http-on-modify-request");
}
}
window.examiner = new examiner();
window.testResult = function(testname, result, msg) {
//dump("in testResult: testname = " + testname + "\n");
//test already complete.... forget it... remember the first result.
if (window.tests[testname] != -1)
return;
window.tests[testname] = result;
is(result, true, testname + ' test: ' + msg);
// if any test is incomplete, keep waiting
for (var v in window.tests)
if(tests[v] == -1)
return;
// ... otherwise, finish
window.examiner.remove();
SimpleTest.finish();
}
// Helpers for inline script/style checks
var black = 'rgb(0, 0, 0)';
var green = 'rgb(0, 128, 0)';
function getElementColorById(doc, id) {
return window.getComputedStyle(doc.contentDocument.getElementById(id)).color;
}
function checkInlineWithStar() {
var testframe = document.getElementById('testframe1');
window.testResult("starInlineStyleAllowed",
getElementColorById(testframe, 'inline-style') === green,
"Inline styles should be allowed (style-src 'unsafe-inline' with star)");
window.testResult("starInlineScriptBlocked",
getElementColorById(testframe, 'inline-script') === black,
"Inline scripts should be blocked (style-src 'unsafe-inline' with star)");
}
function checkInlineWithNone() {
// If a directive has 'none' in addition to other sources, 'none' is ignored
// and the other sources are used. 'none' is only a valid source if it is
// used by itself.
var testframe = document.getElementById('testframe2');
window.testResult("noneInlineStyleAllowed",
getElementColorById(testframe, 'inline-style') === green,
"Inline styles should be allowed (style-src 'unsafe-inline' with none)");
window.testResult("noneInlineScriptBlocked",
getElementColorById(testframe, 'inline-script') === black,
"Inline scripts should be blocked (style-src 'unsafe-inline' with none)");
}
SpecialPowers.pushPrefEnv(
{'set':[["security.csp.speccompliant", true]]},
function () {
document.getElementById('testframe1').src = 'file_CSP_bug909029_star.html';
document.getElementById('testframe1').addEventListener('load', checkInlineWithStar, false);
document.getElementById('testframe2').src = 'file_CSP_bug909029_none.html';
document.getElementById('testframe2').addEventListener('load', checkInlineWithNone, false);
}
);
</script>
</body>
</html>

View File

@ -2,8 +2,6 @@
# 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/.
FORCE_STATIC_LIB = 1
include $(topsrcdir)/config/rules.mk
INCLUDES += \

View File

@ -18,3 +18,4 @@ LIBRARY_NAME = 'mediaresourcemanager'
include('/ipc/chromium/chromium-config.mozbuild')
FORCE_STATIC_LIB = True

View File

@ -4,9 +4,7 @@
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
SHORT_LIBNAME = mozsqlt3
ifdef MOZ_FOLD_LIBS
FORCE_STATIC_LIB = 1
else
ifndef MOZ_FOLD_LIBS
FORCE_SHARED_LIB = 1
endif
VISIBILITY_FLAGS =

View File

@ -16,3 +16,5 @@ SOURCES += [
'sqlite3.c',
]
if CONFIG['MOZ_FOLD_LIBS']:
FORCE_STATIC_LIB = True

View File

@ -717,6 +717,7 @@ _cairo_win32_printing_surface_paint_image_pattern (cairo_win32_surface_t *surf
assert (status == CAIRO_STATUS_SUCCESS);
cairo_matrix_multiply (&m, &m, &surface->gdi_ctm);
cairo_matrix_multiply(&m, &m, &surface->ctm);
SaveDC (surface->dc);
_cairo_matrix_to_win32_xform (&m, &xform);

View File

@ -17,7 +17,6 @@ include $(srcdir)/files.mk
# on Windows, we're going to link graphite with gkmedias instead of libxul
ifeq (WINNT,$(OS_TARGET))
VISIBILITY_FLAGS =
FORCE_STATIC_LIB = 1
endif
ifeq (WINNT,$(OS_TARGET))

View File

@ -6,11 +6,10 @@
MODULE = 'graphite2'
if CONFIG['OS_TARGET'] != 'WINNT':
LIBXUL_LIBRARY = True
if CONFIG['OS_TARGET'] == 'WINNT':
FORCE_STATIC_LIB = True
else:
# FORCE_STATIC_LIB = True
pass
LIBXUL_LIBRARY = True
# This should contain all of the _PUBLIC_HEADERS from files.mk
EXPORTS.graphite2 += [

View File

@ -24,11 +24,6 @@
# Mozilla author(s): Jonathan Kew
#
ifeq ($(OS_ARCH),WINNT)
FORCE_STATIC_LIB = 1
endif
LOCAL_INCLUDES += -I$(srcdir)

View File

@ -6,11 +6,10 @@
MODULE = 'harfbuzz'
if CONFIG['OS_ARCH'] != 'WINNT':
LIBXUL_LIBRARY = True
if CONFIG['OS_ARCH'] == 'WINNT':
FORCE_STATIC_LIB = True
else:
# FORCE_STATIC_LIB = True
pass
LIBXUL_LIBRARY = True
EXPORTS.harfbuzz += [
'hb-blob.h',

View File

@ -27,7 +27,6 @@
ifeq (WINNT,$(OS_TARGET))
VISIBILITY_FLAGS =
FORCE_STATIC_LIB = 1
endif
CSRCS = \

View File

@ -6,11 +6,10 @@
MODULE = 'ots'
if CONFIG['OS_TARGET'] != 'WINNT':
LIBXUL_LIBRARY = True
if CONFIG['OS_TARGET'] == 'WINNT':
FORCE_STATIC_LIB = True
else:
# FORCE_STATIC_LIB = True
pass
LIBXUL_LIBRARY = True
EXPORTS += [
'../include/opentype-sanitiser.h',

View File

@ -125,7 +125,7 @@ gfxWindowsSurface::CreateSimilarSurface(gfxContentType aContent,
}
cairo_surface_t *surface;
if (GetContentType() == GFX_CONTENT_COLOR_ALPHA) {
if (!mForPrinting && GetContentType() == GFX_CONTENT_COLOR_ALPHA) {
// When creating a similar surface to a transparent surface, ensure
// the new surface uses a DIB. cairo_surface_create_similar won't
// use a DIB for a GFX_CONTENT_COLOR surface if this surface doesn't

View File

@ -10,7 +10,6 @@
DIST_INSTALL = 1
SDK_LIBRARY = $(LIBRARY)
FORCE_STATIC_LIB = 1
USE_STATIC_LIBS = 1
LOCAL_INCLUDES += -I$(srcdir)/../src

View File

@ -13,6 +13,4 @@ MOZILLA_INTERNAL_API = 1
LOCAL_INCLUDES += -I$(srcdir)/.. \
-I$(srcdir)/../../src
FORCE_STATIC_LIB = 1
include $(topsrcdir)/config/rules.mk

View File

@ -14,3 +14,4 @@ LIBRARY_NAME = 'unicharutil_s'
EXPORT_LIBRARY = True
FORCE_STATIC_LIB = True

View File

@ -21,3 +21,5 @@ include('objs.mozbuild')
SOURCES += intl_unicharutil_util_cppsrcs
LIBRARY_NAME = 'unicharutil_external_s'
FORCE_STATIC_LIB = True

View File

@ -31,7 +31,6 @@ LIBS = $(NSPR_LIBS)
ifdef JS_SHARED_LIBRARY
FORCE_SHARED_LIB = 1
endif
FORCE_STATIC_LIB = 1
DIST_INSTALL = 1
###############################################

View File

@ -41,6 +41,7 @@ _MOZBUILD_EXTERNAL_VARIABLES := \
DIRS \
EXTRA_PP_COMPONENTS \
EXTRA_PP_JS_MODULES \
FORCE_STATIC_LIB \
GTEST_CMMSRCS \
GTEST_CPPSRCS \
GTEST_CSRCS \

View File

@ -4,7 +4,5 @@
# 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/.
FORCE_STATIC_LIB = 1
DEFINES += -DANSI_ARROWS -DHAVE_TCGETATTR -DHIDE -DUSE_DIRENT -DSYS_UNIX \
-DHAVE_STDLIB -DUNIQUE_HISTORY

View File

@ -11,3 +11,4 @@ SOURCES += [
'sysunix.c',
]
FORCE_STATIC_LIB = True

View File

@ -2358,8 +2358,13 @@ CodeGenerator::visitCallDirectEval(LCallDirectEval *lir)
static const uint32_t EntryTempMask = Registers::TempMask & ~(1 << OsrFrameReg.code());
bool
CodeGenerator::generateArgumentsChecks()
CodeGenerator::generateArgumentsChecks(bool bailout)
{
// This function can be used the normal way to check the argument types,
// before entering the function and bailout when arguments don't match.
// For debug purpose, this is can also be used to force/check that the
// arguments are correct. Upon fail it will hit a breakpoint.
MIRGraph &mir = gen->graph();
MResumePoint *rp = mir.entryResumePoint();
@ -2389,8 +2394,18 @@ CodeGenerator::generateArgumentsChecks()
masm.guardTypeSet(Address(StackPointer, offset), types, temp, &miss);
}
if (miss.used() && !bailoutFrom(&miss, graph.entrySnapshot()))
return false;
if (miss.used()) {
if (bailout) {
if (!bailoutFrom(&miss, graph.entrySnapshot()))
return false;
} else {
Label success;
masm.jump(&success);
masm.bind(&miss);
masm.breakpoint();
masm.bind(&success);
}
}
masm.freeStack(frameSize());
@ -5679,6 +5694,12 @@ CodeGenerator::generate()
masm.bind(&skip);
#endif
#ifdef DEBUG
// Assert that the argument types are correct.
if (!generateArgumentsChecks(/* bailout = */ false))
return false;
#endif
if (!generatePrologue())
return false;
if (!generateBody())

View File

@ -43,7 +43,7 @@ class OutOfLineCallPostWriteBarrier;
class CodeGenerator : public CodeGeneratorSpecific
{
bool generateArgumentsChecks();
bool generateArgumentsChecks(bool bailout = true);
bool generateBody();
public:

View File

@ -160,6 +160,14 @@ MacroAssembler::guardObjectType(Register obj, const TypeSet *types,
}
if (hasTypeObjects) {
// We are possibly going to overwrite the obj register. So already
// emit the branch, since branch depends on previous value of obj
// register and there is definitely a branch following. So no need
// to invert the condition.
if (lastBranch.isInitialized())
lastBranch.emit(*this);
lastBranch = BranchGCPtr();
// Note: Some platforms give the same register for obj and scratch.
// Make sure when writing to scratch, the obj register isn't used anymore!
loadPtr(Address(obj, JSObject::offsetOfType()), scratch);

View File

@ -354,3 +354,5 @@ HOST_SOURCES += [
'jskwgen.cpp',
'jsoplengen.cpp',
]
FORCE_STATIC_LIB = True

View File

@ -1,4 +1,10 @@
function f(stdlib, foreign, buffer) {
function f1() { "use asm"; function g() {} return g }
if (this.jsFuns) {
ok(jsFuns.isAsmJSModule(f1), "f1 is an asm.js module");
ok(jsFuns.isAsmJSFunction(f1()), "f1.g is an asm.js function");
}
function f2(stdlib, foreign, buffer) {
"use asm";
var i32 = new stdlib.Int32Array(buffer);
function main(n) {
@ -10,17 +16,56 @@ function f(stdlib, foreign, buffer) {
}
return main;
}
var i32 = new Int32Array(4096/4);
for (var i = 0; i < 100; i++)
if (this.jsFuns)
ok(jsFuns.isAsmJSModule(f2), "f2 is an asm.js module");
var i32 = new Int32Array(1024);
for (var i = 0; i < i32.length; i++)
i32[i] = i;
var f2Main = f2(this, null, i32.buffer);
if (this.jsFuns)
ok(jsFuns.isAsmJSFunction(f2Main), "f2.main is an asm.js function");
if (f2Main(4) !== 6)
throw "f2Main(4)";
if (f2Main(100) !== 4950)
throw "f2.main(100)";
var sum = (((i32.length - 1) * i32.length) / 2);
if (f2Main(i32.length) !== sum)
throw "f2.main(" + i32.length + ")";
if (f2Main(i32.length + 100) !== sum)
throw "f2.main(" + i32.length + ")";
var fMain = f(this, null, i32.buffer);
if (fMain(4) !== 6)
throw "f.main(4)";
if (fMain(100) !== 4950)
throw "f.main(100)";
if (fMain(5000) !== 4950)
throw "f.main(5000)";
function f3(stdlib, foreign, buffer) {
"use asm";
var done = foreign.done;
var i32 = new stdlib.Int32Array(buffer);
function main() {
var i = 0, sum = 0;
while (1) {
for (i = 0; (i|0) < 1000; i=(i+1)|0)
sum = (sum + i)|0;
if (done(sum|0)|0)
break;
}
return sum|0;
}
return main;
}
var begin;
var lastSum;
function done(sum) {
if (sum !== ((lastSum + 499500)|0))
throw "bad sum: " + sum + ", " + lastSum + ", " + ((lastSum + 499500)|0);
lastSum = sum;
return (Date.now() - begin) > 3000;
}
var f3Main = f3(this, {done:done}, i32.buffer);
if (this.jsFuns)
ok(jsFuns.isAsmJSFunction(f3Main), "f3.main is an asm.js function");
postMessage("ok");
begin = Date.now();
lastSum = 0;
if (f3Main() !== lastSum)
throw "f3.main()";
if (!this.jsFuns)
postMessage("ok");

View File

@ -10,70 +10,27 @@ https://bugzilla.mozilla.org/show_bug.cgi?id=854209
<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" />
</head>
<body>
<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=854209">asm.js browser tests</a>
<p id="display"></p>
<div id="content" style="display: none">
</div>
<pre id="test">
<script class="testbody" type="text/javascript">
<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=854209">asm.js browser tests</a>
<p id="display"></p>
<div id="content" style="display: none"></div>
<pre id="test"></pre>
var jsFuns = SpecialPowers.Cu.getJSTestingFunctions();
<script>
var jsFuns = SpecialPowers.Cu.getJSTestingFunctions();
ok(jsFuns.isAsmJSCompilationAvailable());
</script>
ok(jsFuns.isAsmJSCompilationAvailable());
<script src="http://mochi.test:8888/tests/js/xpconnect/tests/mochitest/file_asmjs.js"></script>
function f1() { "use asm"; function g() {} return g }
ok(jsFuns.isAsmJSModule(f1), "f1 is an asm.js module");
ok(jsFuns.isAsmJSFunction(f1()), "f1.g is an asm.js function");
<script>
var w = new Worker('http://mochi.test:8888/tests/js/xpconnect/tests/mochitest/file_asmjs.js');
w.onmessage = function(e) {
ok(e.data === "ok", "Worker asm.js tests");
SimpleTest.finish();
}
function f2(stdlib, foreign, buffer) {
"use asm";
var i32 = new stdlib.Int32Array(buffer);
function main(n) {
n = n|0;
var i = 0, sum = 0;
for (; (i|0) < (n|0); i=(i+1)|0)
sum = (sum + (i32[(i<<2)>>2]|0))|0;
return sum|0;
}
return main;
}
ok(jsFuns.isAsmJSModule(f2), "f2 is an asm.js module");
var i32 = new Int32Array(4096/4);
for (var i = 0; i < 100; i++)
i32[i] = i;
var f2Main = f2(this, null, i32.buffer);
ok(jsFuns.isAsmJSFunction(f2Main), "f2.main is an asm.js function");
ok(f2Main(4) == 6, "f2.main(4)");
ok(f2Main(100) == 4950, "f2.main(100)");
ok(f2Main(5000) == 4950, "f2.main(5000)");
SimpleTest.waitForExplicitFinish();
</script>
function f3(stdlib, foreign, buffer) {
"use asm";
var i32 = new stdlib.Int32Array(buffer);
function main(n,o) {
n = n|0;
o = o|0;
var i = 0, j = 0, sum = 0;
for (i = 0; (i|0) < (n|0); i=(i+1)|0)
for (j = 0; (j|0) < (o|0); j=(j+1)|0)
sum = (sum + (i32[(j<<2)>>2]|0))|0;
return sum|0;
}
return main;
}
var f3Main = f3(this, null, i32.buffer);
ok(jsFuns.isAsmJSFunction(f3Main), "f3.main is an asm.js function");
ok(f3Main(200000, 1000) == ((4950*200000)|0), "f3.main(200000, 1000)");
var w = new Worker('http://mochi.test:8888/tests/js/xpconnect/tests/mochitest/file_asmjs.js');
w.onmessage = function(e) {
ok(e.data === "ok", "Worker asm.js tests");
SimpleTest.finish();
}
SimpleTest.waitForExplicitFinish();
</script>
</pre>
</body>
</html>

View File

@ -2,7 +2,6 @@
# 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/.
FORCE_STATIC_LIB= 1
ifeq ($(OS_TARGET),WINNT)
VISIBILITY_FLAGS =
endif

View File

@ -51,3 +51,4 @@ LIBRARY_NAME = 'cubeb'
MSVC_ENABLE_PGO = True
FORCE_STATIC_LIB = True

View File

@ -16,9 +16,6 @@ ifeq ($(AS),yasm)
AS_DASH_C_FLAG=
endif
# need static lib for some of the libimg componentry to link properly
FORCE_STATIC_LIB = 1
include $(topsrcdir)/config/rules.mk
jpeg_nbits_table.h: $(srcdir)/genTables.py

View File

@ -150,3 +150,5 @@ LIBRARY_NAME = 'mozjpeg'
MSVC_ENABLE_PGO = True
# need static lib for some of the libimg componentry to link properly
FORCE_STATIC_LIB = True

View File

@ -2,7 +2,6 @@
# 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/.
FORCE_STATIC_LIB= 1
ifeq (WINNT,$(OS_TARGET))
VISIBILITY_FLAGS =
endif

View File

@ -15,3 +15,4 @@ LIBRARY_NAME = 'nestegg'
MSVC_ENABLE_PGO = True
FORCE_STATIC_LIB = True

View File

@ -2,7 +2,6 @@
# 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/.
FORCE_STATIC_LIB= 1
ifeq (WINNT,$(OS_TARGET))
VISIBILITY_FLAGS =
endif

View File

@ -15,3 +15,4 @@ LIBRARY_NAME = 'ogg'
MSVC_ENABLE_PGO = True
FORCE_STATIC_LIB = True

View File

@ -2,8 +2,6 @@
# 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/.
FORCE_STATIC_LIB= 1
DEFINES += \
-DOPUS_BUILD \
-DOPUS_VERSION='"v1.1-beta-23-gf2446c2-mozilla"' \

View File

@ -17,3 +17,4 @@ LIBRARY_NAME = 'opus'
MSVC_ENABLE_PGO = True
FORCE_STATIC_LIB = True

View File

@ -3,7 +3,6 @@
# 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/.
FORCE_STATIC_LIB= 1
ifeq ($(OS_ARCH),WINNT)
VISIBILITY_FLAGS=
endif

View File

@ -49,3 +49,4 @@ LIBRARY_NAME = 'mozpng'
MSVC_ENABLE_PGO = True
FORCE_STATIC_LIB = True

View File

@ -2,8 +2,6 @@
# 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/.
FORCE_STATIC_LIB = 1
# We don't compile the full speex codec, only the resampler.
DEFINES += -DOUTSIDE_SPEEX
# Speex wants a random prefix when building in another program, to avoid name

View File

@ -24,3 +24,4 @@ SOURCES += [
MSVC_ENABLE_PGO = True
FORCE_STATIC_LIB = True

View File

@ -2,7 +2,6 @@
# 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/.
FORCE_STATIC_LIB = 1
ifeq (WINNT,$(OS_TARGET))
VISIBILITY_FLAGS =
endif

View File

@ -26,3 +26,4 @@ SOURCES += [
MSVC_ENABLE_PGO = True
FORCE_STATIC_LIB = True

View File

@ -2,7 +2,6 @@
# 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/.
FORCE_STATIC_LIB= 1
LOCAL_INCLUDES += -I$(topsrcdir)/media/libtremor/include/tremor
ifeq ($(OS_ARCH),AIX)

View File

@ -23,3 +23,4 @@ SOURCES += [
'tremor_window.c',
]
FORCE_STATIC_LIB = True

View File

@ -2,7 +2,6 @@
# 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/.
FORCE_STATIC_LIB= 1
ifeq (WINNT,$(OS_TARGET))
VISIBILITY_FLAGS =
endif

View File

@ -33,3 +33,4 @@ SOURCES += [
MSVC_ENABLE_PGO = True
FORCE_STATIC_LIB = True

View File

@ -5,7 +5,6 @@
DEFINES += -DHAVE_CONFIG_H=vpx_config.h
FORCE_STATIC_LIB= 1
ifeq (WINNT,$(OS_TARGET))
VISIBILITY_FLAGS =
endif

View File

@ -92,3 +92,4 @@ SOURCES += [
MSVC_ENABLE_PGO = True
FORCE_STATIC_LIB = True

View File

@ -3,7 +3,6 @@
# 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/.
FORCE_STATIC_LIB= 1
ifeq (WINNT,$(OS_TARGET))
VISIBILITY_FLAGS =
endif

View File

@ -49,3 +49,5 @@ elif CONFIG['OS_TARGET'] == 'WINNT':
LOCAL_INCLUDES += [
'/media/mtransport/third_party/nrappkit/src/port/win32/include',
]
FORCE_STATIC_LIB = True

View File

@ -2,7 +2,6 @@
# 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/.
FORCE_STATIC_LIB = 1
STLFLAGS =
ifdef MOZ_GLUE_PROGRAM_LDFLAGS
SDK_LIBRARY = $(REAL_LIBRARY)

View File

@ -33,3 +33,4 @@ if CONFIG['MOZ_REPLACE_MALLOC']:
LIBRARY_NAME = 'memory'
FORCE_STATIC_LIB = True

View File

@ -4,8 +4,6 @@
VPATH = $(srcdir) $(srcdir)/src/src
FORCE_STATIC_LIB = 1
ifdef MOZ_GLUE_PROGRAM_LDFLAGS
SDK_LIBRARY = $(REAL_LIBRARY)
DIST_INSTALL = 1

View File

@ -40,3 +40,4 @@ if CONFIG['OS_TARGET'] == 'Darwin' and not CONFIG['MOZ_REPLACE_MALLOC']:
LIBRARY_NAME = 'jemalloc'
FORCE_STATIC_LIB = True

View File

@ -11,9 +11,7 @@ endif
DIST_INSTALL = 1
ifeq (gonk,$(MOZ_WIDGET_TOOLKIT))
FORCE_STATIC_LIB= 1
else
ifneq (gonk,$(MOZ_WIDGET_TOOLKIT))
FORCE_SHARED_LIB= 1
endif

View File

@ -43,3 +43,5 @@ SOURCES += [
LIBRARY_NAME = 'mozalloc'
if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'gonk':
FORCE_STATIC_LIB = True

View File

@ -4,8 +4,6 @@
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
ifndef MOZ_JEMALLOC3
FORCE_STATIC_LIB= 1
ifeq ($(OS_ARCH),SunOS)
ifndef GNU_CC
MODULE_OPTIMIZE_FLAGS = -xO5

View File

@ -15,4 +15,4 @@ if not CONFIG['MOZ_JEMALLOC3']:
'jemalloc.c',
]
LIBRARY_NAME = 'jemalloc'
FORCE_STATIC_LIB = True

View File

@ -2,7 +2,6 @@
# 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/.
FORCE_STATIC_LIB = 1
STL_FLAGS =
# exported_headers.mk defines the headers exported by mfbt. It is included by

View File

@ -10,3 +10,4 @@ MODULE = 'mozglue'
LIBRARY_NAME = 'mfbt'
FORCE_STATIC_LIB = True

View File

@ -4,7 +4,6 @@
# 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/.
FORCE_STATIC_LIB= 1
ifeq ($(OS_ARCH),WINNT)
USE_STATIC_LIBS = 1
endif

View File

@ -36,3 +36,4 @@ SOURCES += [
'randtable.c',
]
FORCE_STATIC_LIB = True

View File

@ -2,7 +2,6 @@
# 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/.
FORCE_STATIC_LIB = 1
ifeq ($(OS_ARCH),WINNT)
USE_STATIC_LIBS = 1
endif

View File

@ -13,3 +13,4 @@ SOURCES += [
'nss_secutil.c',
]
FORCE_STATIC_LIB = True

View File

@ -4,7 +4,6 @@
# 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/.
FORCE_STATIC_LIB = 1
ifeq ($(OS_ARCH),WINNT)
USE_STATIC_LIBS = 1
endif

View File

@ -26,3 +26,4 @@ SOURCES += [
'mar_read.c',
]
FORCE_STATIC_LIB = True

View File

@ -2,7 +2,6 @@
# 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/.
FORCE_STATIC_LIB = 1
ifeq ($(OS_ARCH),WINNT)
USE_STATIC_LIBS = 1
endif

View File

@ -13,3 +13,4 @@ SOURCES += [
'mar_verify.c',
]
FORCE_STATIC_LIB = True

Some files were not shown because too many files have changed in this diff Show More