merge mozilla-inbound to mozilla-central a=merge

This commit is contained in:
Carsten "Tomcat" Book 2015-04-02 14:09:15 +02:00
commit 1810191426
52 changed files with 247 additions and 307 deletions

View File

@ -332,6 +332,7 @@ skip-if = e10s # Bug 863514 - no gesture support.
[browser_homeDrop.js]
skip-if = buildapp == 'mulet'
[browser_identity_UI.js]
skip-if = e10s && debug # Seeing lots of timeouts (bug 1095517)
[browser_keywordBookmarklets.js]
skip-if = e10s # Bug 1102025 - different principals for the bookmarklet only in e10s mode (unclear if test or 'real' issue)
[browser_keywordSearch.js]
@ -421,7 +422,7 @@ skip-if = e10s || os == 'linux' # Bug 1093373, bug 1104755
[browser_tab_drag_drop_perwindow.js]
skip-if = buildapp == 'mulet'
[browser_tab_dragdrop.js]
skip-if = buildapp == 'mulet'
skip-if = buildapp == 'mulet' || (e10s && debug) # Bug 1150036: In e10s, content process crashes, main process leaks!
[browser_tab_dragdrop2.js]
skip-if = buildapp == 'mulet'
[browser_tabbar_big_widgets.js]

View File

@ -29,7 +29,9 @@ support-files =
[browser_aboutHome_activation.js]
skip-if = e10s # Bug 1053965 "cw.ensureSnippetsMapThen is not a function", also see general/browser.ini about:home comments
[browser_addons.js]
skip-if = e10s && debug # Leaking docshells (bug 1150147)
[browser_blocklist.js]
skip-if = e10s && debug # Leaking docshells (bug 1150147)
[browser_share.js]
skip-if = true # bug 1115131
[browser_social_activation.js]
@ -45,6 +47,7 @@ skip-if = e10s # Bug 1072669 context menu relies on target element
skip-if = e10s # when we backed out bug 1047603, this test broke.
[browser_social_isVisible.js]
[browser_social_marks.js]
skip-if = e10s && debug # Leaking docshells (bug 1150147)
[browser_social_multiprovider.js]
skip-if = e10s # Bug 1069162 - lots of orange
[browser_social_multiworker.js]

View File

@ -1,9 +1,11 @@
<?xml version="1.0"?>
# -*- Mode: HTML -*-
# 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/.
<!--
-*- Mode: HTML -*-
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/.
-->
<!DOCTYPE bindings [
<!ENTITY % notificationDTD SYSTEM "chrome://global/locale/notification.dtd">
@ -49,6 +51,9 @@
</content>
<implementation implements="nsIObserver, nsIDOMEventListener">
<field name="AppConstants" readonly="true">
(Components.utils.import("resource://gre/modules/AppConstants.jsm", {})).AppConstants;
</field>
<constructor><![CDATA[
this._prefs = Components.classes["@mozilla.org/preferences-service;1"]
.getService(Components.interfaces.nsIPrefService)
@ -403,11 +408,9 @@
// and only if we get a keyboard event, to match user expectations.
if (/^\s*[^.:\/\s]+(?:\/.*|\s*)$/i.test(url) &&
(aTriggeringEvent instanceof KeyEvent)) {
#ifdef XP_MACOSX
let accel = aTriggeringEvent.metaKey;
#else
let accel = aTriggeringEvent.ctrlKey;
#endif
let accel = this.AppConstants.platform == "macosx" ?
aTriggeringEvent.metaKey :
aTriggeringEvent.ctrlKey;
let shift = aTriggeringEvent.shiftKey;
let suffix = "";
@ -937,6 +940,10 @@
<!-- Note: this binding is applied to the autocomplete popup used in the Search bar and in web page content -->
<binding id="browser-autocomplete-result-popup" extends="chrome://global/content/bindings/autocomplete.xml#autocomplete-result-popup">
<implementation>
<field name="AppConstants" readonly="true">
(Components.utils.import("resource://gre/modules/AppConstants.jsm", {})).AppConstants;
</field>
<method name="openAutocompletePopup">
<parameter name="aInput"/>
<parameter name="aElement"/>
@ -989,13 +996,11 @@
var where = whereToOpenLink(aEvent, false, true);
// But open ctrl/cmd clicks on autocomplete items in a new background tab.
let modifier = this.AppConstants.platform == "macosx" ?
aEvent.metaKey :
aEvent.ctrlKey;
if (where == "tab" && (aEvent instanceof MouseEvent) &&
(aEvent.button == 1 ||
#ifdef XP_MACOSX
aEvent.metaKey))
#else
aEvent.ctrlKey))
#endif
(aEvent.button == 1 || modifier))
where = "tab-background";
searchBar.doSearch(search, where);

View File

@ -144,7 +144,7 @@ browser.jar:
content/browser/searchSuggestionUI.css (content/searchSuggestionUI.css)
content/browser/tabbrowser.css (content/tabbrowser.css)
content/browser/tabbrowser.xml (content/tabbrowser.xml)
* content/browser/urlbarBindings.xml (content/urlbarBindings.xml)
content/browser/urlbarBindings.xml (content/urlbarBindings.xml)
* content/browser/utilityOverlay.js (content/utilityOverlay.js)
content/browser/web-panels.js (content/web-panels.js)
* content/browser/web-panels.xul (content/web-panels.xul)

View File

@ -36,6 +36,7 @@ function crashBrowser(browser) {
Cu.import("resource://gre/modules/ctypes.jsm");
let dies = function() {
privateNoteIntentionalCrash();
let zero = new ctypes.intptr_t(8);
let badptr = ctypes.cast(zero, ctypes.PointerType(ctypes.int32_t));
badptr.contents

View File

@ -406,7 +406,7 @@ AnimationPlayer::CanThrottle() const
// finishing, we need an unthrottled sample so we can apply the correct
// end-of-animation behavior on the main thread (either removing the
// animation style or applying the fill mode).
return mIsPreviousStateFinished;
return mFinishedAtLastComposeStyle;
}
void
@ -462,7 +462,9 @@ AnimationPlayer::ComposeStyle(nsRefPtr<css::AnimValuesStyleRule>& aStyleRule,
AutoRestore<Nullable<TimeDuration>> restoreHoldTime(mHoldTime);
bool updatedHoldTime = false;
if (PlayState() == AnimationPlayState::Pending &&
AnimationPlayState playState = PlayState();
if (playState == AnimationPlayState::Pending &&
mHoldTime.IsNull() &&
!mStartTime.IsNull()) {
Nullable<TimeDuration> timeToUse = mPendingReadyTime;
@ -485,6 +487,8 @@ AnimationPlayer::ComposeStyle(nsRefPtr<css::AnimValuesStyleRule>& aStyleRule,
if (updatedHoldTime) {
UpdateTiming();
}
mFinishedAtLastComposeStyle = (playState == AnimationPlayState::Finished);
}
}

View File

@ -57,6 +57,7 @@ public:
, mPendingState(PendingState::NotPending)
, mIsRunningOnCompositor(false)
, mIsPreviousStateFinished(false)
, mFinishedAtLastComposeStyle(false)
, mIsRelevant(false)
{
}
@ -233,8 +234,11 @@ public:
*/
bool IsPlaying() const
{
return HasInPlaySource() && // Check we are in the active interval
PlayState() == AnimationPlayState::Running; // And not paused
// We need to have a source animation in its active interval, and
// be either running or waiting to run.
return HasInPlaySource() &&
(PlayState() == AnimationPlayState::Running ||
mPendingState == PendingState::PlayPending);
}
bool IsRelevant() const { return mIsRelevant; }
@ -332,6 +336,7 @@ protected:
// Indicates whether we were in the finished state during our
// most recent unthrottled sample (our last ComposeStyle call).
bool mIsPreviousStateFinished; // Spec calls this "previous finished state"
bool mFinishedAtLastComposeStyle;
// Indicates that the animation should be exposed in an element's
// getAnimations() list.
bool mIsRelevant;

View File

@ -315,9 +315,9 @@ function assert_records(expected, desc) {
assert_records([{ added: [firstAnimation], changed: [], removed: [] }],
"records after transition start");
// Wait for the Animation to get going, then seek well into
// Wait for the Animation to be playing, then seek well into
// the transition.
yield await_frame();
yield firstAnimation.ready;
firstAnimation.currentTime = 50000;
// Reverse the transition by setting the background-color back to its
@ -364,30 +364,18 @@ function assert_records(expected, desc) {
var animations = e.getAnimations();
is(animations.length, 3, "getAnimations().length after transition starts");
info("animation states: " + animations.map(p => p.playState));
info("animation times: " + animations.map(p => p.currentTime));
// Wait for the single MutationRecord for the Animation additions to
// be delivered.
yield await_frame();
assert_records([{ added: animations, changed: [], removed: [] }],
"records after transition starts");
info("animation states: " + animations.map(p => p.playState));
info("animation times: " + animations.map(p => p.currentTime));
// Wait for the Animations to get going, then seek well into
// the transitions.
yield await_frame();
info("animation states: " + animations.map(p => p.playState));
info("animation times: " + animations.map(p => p.currentTime));
yield animations[0].ready;
animations.forEach(p => p.currentTime = 50000);
info("animation states: " + animations.map(p => p.playState));
info("animation times: " + animations.map(p => p.currentTime));
is(animations.filter(p => p.playState == "running").length, 3, "number of running Animations");
// Cancel one of the transitions by setting transition-property.

View File

@ -263,9 +263,6 @@ FileOutputStreamWrapper::FileOutputStreamWrapper(nsISupports* aFileStream,
uint64_t aLimit,
uint32_t aFlags)
: FileStreamWrapper(aFileStream, aFileHelper, aOffset, aLimit, aFlags)
#ifdef DEBUG
, mWriteThread(nullptr)
#endif
{
mOutputStream = do_QueryInterface(mFileStream);
NS_ASSERTION(mOutputStream, "This should always succeed!");
@ -282,12 +279,6 @@ FileOutputStreamWrapper::Close()
nsresult rv = NS_OK;
if (!mFirstTime) {
NS_ASSERTION(PR_GetCurrentThread() == mWriteThread,
"Unsetting thread locals on wrong thread!");
mFileHelper->mMutableFile->UnsetThreadLocals();
}
if (mFlags & NOTIFY_CLOSE) {
nsCOMPtr<nsIRunnable> runnable = new CloseRunnable(mFileHelper);
@ -313,11 +304,6 @@ FileOutputStreamWrapper::Write(const char* aBuf, uint32_t aCount,
if (mFirstTime) {
mFirstTime = false;
#ifdef DEBUG
mWriteThread = PR_GetCurrentThread();
#endif
mFileHelper->mMutableFile->SetThreadLocals();
nsCOMPtr<nsISeekableStream> seekable = do_QueryInterface(mOutputStream);
if (seekable) {
if (mOffset == UINT64_MAX) {

View File

@ -94,9 +94,6 @@ protected:
private:
nsCOMPtr<nsIOutputStream> mOutputStream;
#ifdef DEBUG
void* mWriteThread;
#endif
};
} // namespace dom

View File

@ -20,8 +20,7 @@ class FileService;
/**
* This class provides a base for MutableFile implementations.
* The subclasses can override implementation of IsInvalid, CreateStream,
* SetThreadLocals and UnsetThreadLocals.
* The subclasses can override implementation of IsInvalid and CreateStream.
* (for example IDBMutableFile provides IndexedDB specific implementation).
*/
class MutableFileBase
@ -49,15 +48,6 @@ public:
virtual already_AddRefed<nsISupports>
CreateStream(bool aReadOnly);
virtual void
SetThreadLocals()
{
}
virtual void
UnsetThreadLocals()
{
}
protected:
MutableFileBase();

View File

@ -275,23 +275,6 @@ IDBMutableFile::CreateStream(bool aReadOnly)
return result.forget();
}
void
IDBMutableFile::SetThreadLocals()
{
MOZ_ASSERT(IndexedDatabaseManager::IsMainProcess());
MOZ_ASSERT(mDatabase->GetOwner(), "Should have owner!");
QuotaManager::SetCurrentWindow(mDatabase->GetOwner());
}
void
IDBMutableFile::UnsetThreadLocals()
{
MOZ_ASSERT(IndexedDatabaseManager::IsMainProcess());
QuotaManager::SetCurrentWindow(nullptr);
}
JSObject*
IDBMutableFile::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aGivenProto)
{

View File

@ -102,12 +102,6 @@ public:
virtual already_AddRefed<nsISupports>
CreateStream(bool aReadOnly) override;
virtual void
SetThreadLocals() override;
virtual void
UnsetThreadLocals() override;
// nsWrapperCache
virtual JSObject*
WrapObject(JSContext* aCx, JS::Handle<JSObject*> aGivenProto) override;

View File

@ -48,6 +48,7 @@ GST_FUNC(LIBGSTREAMER, gst_element_set_state)
GST_FUNC(LIBGSTREAMER, gst_flow_get_name)
GST_FUNC(LIBGSTREAMER, gst_init)
GST_FUNC(LIBGSTREAMER, gst_init_check)
GST_FUNC(LIBGSTREAMER, gst_iterator_free)
GST_FUNC(LIBGSTREAMER, gst_iterator_next)
GST_FUNC(LIBGSTREAMER, gst_message_parse_error)
GST_FUNC(LIBGSTREAMER, gst_message_type_get_name)

View File

@ -596,7 +596,6 @@ nsresult GStreamerReader::CheckSupportedFormats()
}
case GST_ITERATOR_RESYNC:
unsupported = false;
done = false;
break;
case GST_ITERATOR_ERROR:
done = true;
@ -607,6 +606,8 @@ nsresult GStreamerReader::CheckSupportedFormats()
}
}
gst_iterator_free(it);
return unsupported ? NS_ERROR_FAILURE : NS_OK;
}

View File

@ -196,7 +196,7 @@ private:
// no such resource exists, returns GetSize() and aOffset is
// untouched.
uint32_t GetAtOffset(uint64_t aOffset, uint32_t *aResourceOffset) {
MOZ_ASSERT(aOffset >= mOffset);
MOZ_RELEASE_ASSERT(aOffset >= mOffset);
uint64_t offset = mOffset;
for (uint32_t i = 0; i < uint32_t(GetSize()); ++i) {
ResourceItem* item = ResourceAt(i);

View File

@ -69,6 +69,11 @@ SourceBufferResource::ReadInternal(char* aBuffer, uint32_t aCount, uint32_t* aBy
readOffset + aCount > static_cast<uint64_t>(GetLength())) {
SBR_DEBUGV("waiting for data");
mMonitor.Wait();
// The callers of this function should have checked this, but it's
// possible that we had an eviction while waiting on the monitor.
if (readOffset < mInputBuffer.GetOffset()) {
return NS_ERROR_FAILURE;
}
}
uint32_t available = GetLength() - readOffset;
@ -179,7 +184,13 @@ SourceBufferResource::EvictData(uint64_t aPlaybackOffset, uint32_t aThreshold)
SBR_DEBUG("EvictData(aPlaybackOffset=%llu,"
"aThreshold=%u)", aPlaybackOffset, aThreshold);
ReentrantMonitorAutoEnter mon(mMonitor);
return mInputBuffer.Evict(aPlaybackOffset, aThreshold);
uint32_t result = mInputBuffer.Evict(aPlaybackOffset, aThreshold);
if (result > 0) {
// Wake up any waiting threads in case a ReadInternal call
// is now invalid.
mon.NotifyAll();
}
return result;
}
void
@ -191,6 +202,9 @@ SourceBufferResource::EvictBefore(uint64_t aOffset)
if (aOffset < mOffset) {
mInputBuffer.EvictBefore(aOffset);
}
// Wake up any waiting threads in case a ReadInternal call
// is now invalid.
mon.NotifyAll();
}
uint32_t

View File

@ -58,8 +58,6 @@
#include "UsageInfo.h"
#include "Utilities.h"
#define BAD_TLS_INDEX ((uint32_t) -1)
// The amount of time, in milliseconds, that our IO thread will stay alive
// after the last event it processes.
#define DEFAULT_THREAD_TIMEOUT_MS 30000
@ -1260,8 +1258,7 @@ GetTemporaryStorageLimit(nsIFile* aDirectory, uint64_t aCurrentUsage,
} // anonymous namespace
QuotaManager::QuotaManager()
: mCurrentWindowIndex(BAD_TLS_INDEX),
mQuotaMutex("QuotaManager.mQuotaMutex"),
: mQuotaMutex("QuotaManager.mQuotaMutex"),
mTemporaryStorageLimit(0),
mTemporaryStorageUsage(0),
mTemporaryStorageInitialized(false),
@ -1338,15 +1335,6 @@ QuotaManager::IsShuttingDown()
nsresult
QuotaManager::Init()
{
// We need a thread-local to hold the current window.
NS_ASSERTION(mCurrentWindowIndex == BAD_TLS_INDEX, "Huh?");
if (PR_NewThreadPrivateIndex(&mCurrentWindowIndex, nullptr) != PR_SUCCESS) {
NS_ERROR("PR_NewThreadPrivateIndex failed, QuotaManager disabled");
mCurrentWindowIndex = BAD_TLS_INDEX;
return NS_ERROR_FAILURE;
}
nsresult rv;
if (IsMainProcess()) {
nsCOMPtr<nsIFile> baseDir;
@ -3003,24 +2991,6 @@ QuotaManager::Observe(nsISupports* aSubject,
return NS_ERROR_UNEXPECTED;
}
void
QuotaManager::SetCurrentWindowInternal(nsPIDOMWindow* aWindow)
{
NS_ASSERTION(mCurrentWindowIndex != BAD_TLS_INDEX,
"Should have a valid TLS storage index!");
if (aWindow) {
NS_ASSERTION(!PR_GetThreadPrivate(mCurrentWindowIndex),
"Somebody forgot to clear the current window!");
PR_SetThreadPrivate(mCurrentWindowIndex, aWindow);
}
else {
// We cannot assert PR_GetThreadPrivate(mCurrentWindowIndex) here because
// there are some cases where we did not already have a window.
PR_SetThreadPrivate(mCurrentWindowIndex, nullptr);
}
}
uint64_t
QuotaManager::LockedCollectOriginsForEviction(
uint64_t aMinSizeToBeFreed,

View File

@ -155,17 +155,6 @@ public:
const nsACString& aOrigin,
const nsAString& aPath);
// Set the Window that the current thread is doing operations for.
// The caller is responsible for ensuring that aWindow is held alive.
static void
SetCurrentWindow(nsPIDOMWindow* aWindow)
{
QuotaManager* quotaManager = Get();
NS_ASSERTION(quotaManager, "Must have a manager here!");
quotaManager->SetCurrentWindowInternal(aWindow);
}
// Called when a storage is created.
bool
RegisterStorage(nsIOfflineStorage* aStorage);
@ -333,9 +322,6 @@ private:
nsresult
Init();
void
SetCurrentWindowInternal(nsPIDOMWindow* aWindow);
uint64_t
LockedCollectOriginsForEviction(uint64_t aMinSizeToBeFreed,
nsTArray<OriginInfo*>& aOriginInfos);
@ -446,9 +432,6 @@ private:
GroupInfoPair* aValue,
void* aUserArg);
// TLS storage index for the current thread's window.
unsigned int mCurrentWindowIndex;
mozilla::Mutex mQuotaMutex;
nsClassHashtable<nsCStringHashKey, GroupInfoPair> mGroupInfoPairs;
@ -488,20 +471,6 @@ private:
bool mStorageAreaInitialized;
};
class AutoEnterWindow
{
public:
explicit AutoEnterWindow(nsPIDOMWindow* aWindow)
{
QuotaManager::SetCurrentWindow(aWindow);
}
~AutoEnterWindow()
{
QuotaManager::SetCurrentWindow(nullptr);
}
};
END_QUOTA_NAMESPACE
#endif /* mozilla_dom_quota_quotamanager_h__ */

View File

@ -145,7 +145,7 @@ size_t FormatStringIntoVector(const char *fmt, va_list vararg, std::vector<char>
std::string FormatString(const char *fmt, va_list vararg);
std::string FormatString(const char *fmt, ...);
#if defined(_MSC_VER)
#if defined(_MSC_VER) && _MSC_VER < 1900
#define snprintf _snprintf
#endif

View File

@ -860,22 +860,22 @@ gfxGDIFontList::GetDefaultFont(const gfxFontStyle* aStyle)
gfxFontFamily *ff = nullptr;
// this really shouldn't fail to find a font....
HGDIOBJ hGDI = ::GetStockObject(DEFAULT_GUI_FONT);
LOGFONTW logFont;
if (hGDI && ::GetObjectW(hGDI, sizeof(logFont), &logFont)) {
ff = FindFamily(nsDependentString(logFont.lfFaceName));
if (ff) {
return ff;
}
}
// ...but just in case, try another approach as well
NONCLIENTMETRICSW ncm;
ncm.cbSize = sizeof(ncm);
BOOL status = ::SystemParametersInfoW(SPI_GETNONCLIENTMETRICS,
sizeof(ncm), &ncm, 0);
if (status) {
ff = FindFamily(nsDependentString(ncm.lfMessageFont.lfFaceName));
if (ff) {
return ff;
}
}
// ...but just in case, try another (long-deprecated) approach as well
HGDIOBJ hGDI = ::GetStockObject(DEFAULT_GUI_FONT);
LOGFONTW logFont;
if (hGDI && ::GetObjectW(hGDI, sizeof(logFont), &logFont)) {
ff = FindFamily(nsDependentString(logFont.lfFaceName));
}
return ff;

View File

@ -1872,7 +1872,17 @@ gfxWindowsPlatform::InitD3D11Devices()
mD3D11DeviceInitialized = true;
MOZ_ASSERT(!mD3D11Device);
MOZ_ASSERT(!mD3D11Device);
bool safeMode = false;
nsCOMPtr<nsIXULRuntime> xr = do_GetService("@mozilla.org/xre/runtime;1");
if (xr) {
xr->GetInSafeMode(&safeMode);
}
if (safeMode) {
return;
}
bool useWARP = false;

View File

@ -807,15 +807,7 @@ MessageChannel::Send(Message* aMsg, Message* aReply)
}
if (mRecvd) {
MOZ_ASSERT(mRecvd->is_reply(), "expected reply");
MOZ_ASSERT(!mRecvd->is_reply_error());
MOZ_ASSERT(mRecvd->type() == replyType, "wrong reply type");
MOZ_ASSERT(mRecvd->seqno() == seqno);
MOZ_ASSERT(mRecvd->is_sync());
*aReply = Move(*mRecvd);
mRecvd = nullptr;
return true;
break;
}
MOZ_ASSERT(!mTimedOutMessageSeqno);
@ -831,11 +823,32 @@ MessageChannel::Send(Message* aMsg, Message* aReply)
// if neither side has any other message Sends on the stack).
bool canTimeOut = transaction == seqno;
if (maybeTimedOut && canTimeOut && !ShouldContinueFromTimeout()) {
// We might have received a reply during WaitForSyncNotify or inside
// ShouldContinueFromTimeout (which drops the lock). We need to make
// sure not to set mTimedOutMessageSeqno if that happens, since then
// there would be no way to unset it.
if (mRecvdErrors) {
mRecvdErrors--;
return false;
}
if (mRecvd) {
break;
}
mTimedOutMessageSeqno = seqno;
return false;
}
}
MOZ_ASSERT(mRecvd);
MOZ_ASSERT(mRecvd->is_reply(), "expected reply");
MOZ_ASSERT(!mRecvd->is_reply_error());
MOZ_ASSERT(mRecvd->type() == replyType, "wrong reply type");
MOZ_ASSERT(mRecvd->seqno() == seqno);
MOZ_ASSERT(mRecvd->is_sync());
*aReply = Move(*mRecvd);
mRecvd = nullptr;
return true;
}

View File

@ -16,4 +16,5 @@ parallel/alloc-many-objs.js
parallel/alloc-too-many-objs.js
self-test/assertDeepEq.js
v8-v5/check-earley-boyer.js
v8-v5/check-raytrace.js
v8-v5/check-splay.js

View File

@ -7367,6 +7367,12 @@ Parser<ParseHandler>::comprehensionFor(GeneratorKind comprehensionKind)
report(ParseError, false, null(), JSMSG_LET_COMP_BINDING);
return null();
}
Node assignLhs = newName(name);
if (!assignLhs)
return null();
Node lhs = newName(name);
if (!lhs)
return null();
bool matched;
if (!tokenStream.matchContextualKeyword(&matched, context->names().of))
return null();
@ -7389,9 +7395,6 @@ Parser<ParseHandler>::comprehensionFor(GeneratorKind comprehensionKind)
if (!blockObj)
return null();
data.initLexical(DontHoistVars, blockObj, JSMSG_TOO_MANY_LOCALS);
Node lhs = newName(name);
if (!lhs)
return null();
Node decls = handler.newList(PNK_LET, lhs);
if (!decls)
return null();
@ -7403,9 +7406,6 @@ Parser<ParseHandler>::comprehensionFor(GeneratorKind comprehensionKind)
return null();
handler.setLexicalScopeBody(letScope, decls);
Node assignLhs = newName(name);
if (!assignLhs)
return null();
if (!noteNameUse(name, assignLhs))
return null();
handler.setOp(assignLhs, JSOP_SETNAME);

View File

@ -3498,6 +3498,10 @@ ASTSerializer::functionArgs(ParseNode* pn, ParseNode* pnargs, ParseNode* pndestr
ParseNode* arg = pnargs ? pnargs->pn_head : nullptr;
ParseNode* destruct = pndestruct ? pndestruct->pn_head : nullptr;
RootedValue node(cx);
bool defaultsNull = true;
MOZ_ASSERT(defaults.empty(),
"must be initially empty for it to be proper to clear this "
"when there are no defaults");
/*
* Arguments are found in potentially two different places: 1) the
@ -3509,8 +3513,11 @@ ASTSerializer::functionArgs(ParseNode* pn, ParseNode* pnargs, ParseNode* pndestr
*/
while ((arg && arg != pnbody) || destruct) {
if (destruct && destruct->pn_right->frameSlot() == i) {
if (!pattern(destruct->pn_left, &node) || !args.append(node))
if (!pattern(destruct->pn_left, &node) ||
!args.append(node) || !defaults.append(NullValue()))
{
return false;
}
destruct = destruct->pn_next;
} else if (arg && arg != pnbody) {
/*
@ -3533,10 +3540,14 @@ ASTSerializer::functionArgs(ParseNode* pn, ParseNode* pnargs, ParseNode* pndestr
else if (!args.append(node))
return false;
if (arg->pn_dflags & PND_DEFAULT) {
defaultsNull = false;
ParseNode* expr = arg->expr();
RootedValue def(cx);
if (!expression(expr, &def) || !defaults.append(def))
return false;
} else {
if (!defaults.append(NullValue()))
return false;
}
arg = arg->pn_next;
} else {
@ -3546,6 +3557,9 @@ ASTSerializer::functionArgs(ParseNode* pn, ParseNode* pnargs, ParseNode* pndestr
}
MOZ_ASSERT(!rest.isUndefined());
if (defaultsNull)
defaults.clear();
return true;
}

View File

@ -252,9 +252,9 @@ assertDecl("function foo(...rest) { }",
funDecl(ident("foo"), [], blockStmt([]), [], ident("rest")));
assertDecl("function foo(a=4) { }", funDecl(ident("foo"), [ident("a")], blockStmt([]), [lit(4)]));
assertDecl("function foo(a, b=4) { }", funDecl(ident("foo"), [ident("a"), ident("b")], blockStmt([]), [lit(4)]));
assertDecl("function foo(a, b=4) { }", funDecl(ident("foo"), [ident("a"), ident("b")], blockStmt([]), [null, lit(4)]));
assertDecl("function foo(a, b=4, ...rest) { }",
funDecl(ident("foo"), [ident("a"), ident("b")], blockStmt([]), [lit(4)], ident("rest")));
funDecl(ident("foo"), [ident("a"), ident("b")], blockStmt([]), [null, lit(4), null], ident("rest")));
assertDecl("function foo(a=(function () {})) { function a() {} }",
funDecl(ident("foo"), [ident("a")], blockStmt([funDecl(ident("a"), [], blockStmt([]))]),
[funExpr(null, [], blockStmt([]))]));
@ -1462,6 +1462,8 @@ var fourAC = nested.body[0].expression.left.right.arguments[0].right;
Pattern({ source: "quad.js", start: { line: 1, column: 20 }, end: { line: 1, column: 29 } }).match(fourAC.loc);
var generator = Reflect.parse("[ for \n(x of a) x+1 ]");
Pattern({ start: { line: 2, column: 1 }, end: { line: 2, column: 2 } }).match(generator.body[0].expression.blocks[0].left.loc);
// No source location

View File

@ -6645,8 +6645,19 @@ nsBlockFrame::Init(nsIContent* aContent,
nsBlockFrameSuper::Init(aContent, aParent, aPrevInFlow);
if (!aPrevInFlow ||
aPrevInFlow->GetStateBits() & NS_BLOCK_NEEDS_BIDI_RESOLUTION)
aPrevInFlow->GetStateBits() & NS_BLOCK_NEEDS_BIDI_RESOLUTION) {
AddStateBits(NS_BLOCK_NEEDS_BIDI_RESOLUTION);
}
// If a box has a different block flow direction than its containing block:
// ...
// If the box is a block container, then it establishes a new block
// formatting context.
// (http://dev.w3.org/csswg/css-writing-modes/#block-flow)
if (GetParent() && StyleVisibility()->mWritingMode !=
GetParent()->StyleVisibility()->mWritingMode) {
AddStateBits(NS_BLOCK_FLOAT_MGR | NS_BLOCK_MARGIN_ROOT);
}
if ((GetStateBits() &
(NS_FRAME_FONT_INFLATION_CONTAINER | NS_BLOCK_FLOAT_MGR)) ==

View File

@ -39,7 +39,10 @@ PSArenaFreeCB(size_t aSize, void* aPtr, void* aClosure)
nsFloatManager::nsFloatManager(nsIPresShell* aPresShell,
mozilla::WritingMode aWM)
: mWritingMode(aWM),
:
#ifdef DEBUG
mWritingMode(aWM),
#endif
mLineLeft(0), mBlockStart(0),
mFloatDamage(PSArenaAllocCB, PSArenaFreeCB, aPresShell),
mPushedLeftFloatPastBreak(false),
@ -111,12 +114,17 @@ void nsFloatManager::Shutdown()
sCachedFloatManagerCount = -1;
}
#define CHECK_BLOCK_DIR(aWM) \
NS_ASSERTION(aWM.GetBlockDir() == mWritingMode.value.GetBlockDir(), \
"incompatible writing modes")
nsFlowAreaRect
nsFloatManager::GetFlowArea(WritingMode aWM, nscoord aBOffset,
BandInfoType aInfoType, nscoord aBSize,
LogicalRect aContentArea, SavedState* aState,
nscoord aContainerWidth) const
{
CHECK_BLOCK_DIR(aWM);
NS_ASSERTION(aBSize >= 0, "unexpected max block size");
NS_ASSERTION(aContentArea.ISize(aWM) >= 0,
"unexpected content area inline size");
@ -246,6 +254,7 @@ nsresult
nsFloatManager::AddFloat(nsIFrame* aFloatFrame, const LogicalRect& aMarginRect,
WritingMode aWM, nscoord aContainerWidth)
{
CHECK_BLOCK_DIR(aWM);
NS_ASSERTION(aMarginRect.ISize(aWM) >= 0, "negative inline size!");
NS_ASSERTION(aMarginRect.BSize(aWM) >= 0, "negative block size!");
@ -405,7 +414,6 @@ nsFloatManager::PushState(SavedState* aState)
// reflow. In the typical case A and C will be the same, but not always.
// Allowing mFloatDamage to accumulate the damage incurred during both
// reflows ensures that nothing gets missed.
aState->mWritingMode = mWritingMode;
aState->mLineLeft = mLineLeft;
aState->mBlockStart = mBlockStart;
aState->mPushedLeftFloatPastBreak = mPushedLeftFloatPastBreak;
@ -420,7 +428,6 @@ nsFloatManager::PopState(SavedState* aState)
{
NS_PRECONDITION(aState, "No state to restore?");
mWritingMode = aState->mWritingMode;
mLineLeft = aState->mLineLeft;
mBlockStart = aState->mBlockStart;
mPushedLeftFloatPastBreak = aState->mPushedLeftFloatPastBreak;

View File

@ -88,7 +88,6 @@ public:
explicit SavedState() {}
private:
uint32_t mFloatInfoCount;
mozilla::WritingMode mWritingMode;
nscoord mLineLeft, mBlockStart;
bool mPushedLeftFloatPastBreak;
bool mPushedRightFloatPastBreak;
@ -287,8 +286,7 @@ public:
void AssertStateMatches(SavedState *aState) const
{
NS_ASSERTION(aState->mWritingMode == mWritingMode &&
aState->mLineLeft == mLineLeft &&
NS_ASSERTION(aState->mLineLeft == mLineLeft &&
aState->mBlockStart == mBlockStart &&
aState->mPushedLeftFloatPastBreak ==
mPushedLeftFloatPastBreak &&
@ -343,7 +341,7 @@ private:
nsRect mRect;
};
mozilla::WritingMode mWritingMode;
mozilla::DebugOnly<mozilla::WritingMode> mWritingMode;
// Translation from local to global coordinate space.
nscoord mLineLeft, mBlockStart;

View File

@ -557,9 +557,9 @@ skip-if(B2G||Mulet) == 363858-1.html 363858-1-ref.html # Initial mulet triage: p
skip-if(B2G||Mulet) == 363858-2.html 363858-2-ref.html # Initial mulet triage: parity with B2G/B2G Desktop
skip-if(B2G||Mulet) == 363858-3.html 363858-3-ref.html # Initial mulet triage: parity with B2G/B2G Desktop
skip-if(B2G||Mulet) == 363858-4.html 363858-4-ref.html # Initial mulet triage: parity with B2G/B2G Desktop
fuzzy-if(OSX>=1008,45,2) == 363858-5a.html 363858-5-ref.html
fuzzy-if(OSX>=1008,45,2) fuzzy-if(winWidget,37,1) == 363858-5a.html 363858-5-ref.html
== 363858-5b.html 363858-5-ref.html
fuzzy-if(OSX>=1008,45,2) == 363858-6a.html 363858-6-ref.html
fuzzy-if(OSX>=1008,45,2) fuzzy-if(winWidget,37,1) == 363858-6a.html 363858-6-ref.html
== 363858-6b.html 363858-6-ref.html
== 363874.html 363874-ref.html
== 363874-max-width.html 363874-max-width-ref.html

View File

@ -16,7 +16,7 @@
== placeholder-3.html placeholder-overridden-ref.html
== placeholder-4.html placeholder-overridden-ref.html
== placeholder-5.html placeholder-visible-ref.html
fuzzy-if(winWidget,160,6) == placeholder-6.html placeholder-overflow-ref.html
fuzzy-if(winWidget,160,7) == placeholder-6.html placeholder-overflow-ref.html
skip-if(B2G||Mulet) == placeholder-6-textarea.html placeholder-overflow-textarea-ref.html # Initial mulet triage: parity with B2G/B2G Desktop
# needs-focus == placeholder-7.html placeholder-focus-ref.html
# needs-focus == placeholder-8.html placeholder-focus-ref.html

View File

@ -108,9 +108,9 @@ HTTP(..) == 1127488-align-right-vertical-lr-ltr.html 1127488-align-bottom-left-r
== 1134744-radio-checkbox-baseline-1.html 1134744-radio-checkbox-baseline-1-ref.html
== 1134849-orthogonal-inline.html 1134849-orthogonal-inline-ref.html
fails-if(B2G||Mulet) == 1135361-ruby-justify-1.html 1135361-ruby-justify-1-ref.html # bug 1136067 # Initial mulet triage: parity with B2G/B2G Desktop
skip-if(Mulet) == 1136557-1-nested-spans.html 1136557-1-nested-spans-ref.html # TC: Bug 1144079 - Re-enable Mulet mochitests and reftests taskcluster-specific disables.
skip-if(Mulet) fuzzy-if(winWidget,255,69) == 1136557-2-nested-spans.html 1136557-2-nested-spans-ref.html # TC: Bug 1144079 - Re-enable Mulet mochitests and reftests taskcluster-specific disables.
skip-if(Mulet) == 1136557-3-nested-spans.html 1136557-3-nested-spans-ref.html # TC: Bug 1144079 - Re-enable Mulet mochitests and reftests taskcluster-specific disables.
skip-if(Mulet) fuzzy-if(winWidget,255,163) == 1136557-1-nested-spans.html 1136557-1-nested-spans-ref.html # Bug 1150250 for Windows fuzz # TC: Bug 1144079 - Re-enable Mulet mochitests and reftests taskcluster-specific disables.
skip-if(Mulet) fuzzy-if(winWidget,255,199) == 1136557-2-nested-spans.html 1136557-2-nested-spans-ref.html # Bug 1150250 for Windows fuzz # TC: Bug 1144079 - Re-enable Mulet mochitests and reftests taskcluster-specific disables.
skip-if(Mulet) fuzzy-if(winWidget,255,58) == 1136557-3-nested-spans.html 1136557-3-nested-spans-ref.html # Bug 1150250 for Windows fuzz # TC: Bug 1144079 - Re-enable Mulet mochitests and reftests taskcluster-specific disables.
== 1138356-1-button-contents-alignment.html 1138356-1-button-contents-alignment-ref.html
!= 1138356-2-button-contents-alignment.html 1138356-2-button-contents-alignment-notref.html

View File

@ -201,6 +201,7 @@ window.done_div = function() {
};
SimpleTest.waitForExplicitFinish();
SimpleTest.requestLongerTimeout(2);
runOMTATest(function() {
var onAbort = function() {
if (gDiv) {

View File

@ -813,7 +813,10 @@ class ReftestOptions(OptionParser):
if options.debugger is not None:
self.error("cannot specify a debugger with parallel tests")
options.leakThresholds = {"default": options.defaultLeakThreshold}
options.leakThresholds = {
"default": options.defaultLeakThreshold,
"tab": 25000, # See dependencies of bug 1051230.
}
return options

View File

@ -1155,6 +1155,9 @@ void close_wasapi_stream(cubeb_stream * stm)
SafeRelease(stm->render_client);
stm->render_client = NULL;
SafeRelease(stm->audio_stream_volume);
stm->audio_stream_volume = NULL;
if (stm->resampler) {
cubeb_resampler_destroy(stm->resampler);
stm->resampler = NULL;

View File

@ -4652,12 +4652,7 @@ pref("media.gmp.insecure.allow", false);
#if defined(XP_MACOSX) || defined(XP_WIN)
pref("gfx.vsync.hw-vsync.enabled", true);
pref("gfx.vsync.compositor", true);
#endif
#if defined(XP_MACOSX)
pref("gfx.vsync.refreshdriver", true);
#else
pref("gfx.vsync.refreshdriver", false);
#endif
#if defined(XP_LINUX)

View File

@ -13,6 +13,7 @@ MOCHITEST_MANIFESTS += ['mochitests/mochitest.ini']
XPCSHELL_TESTS_MANIFESTS += [
'unit/xpcshell.ini',
'unit/xpcshell_b2g.ini',
'unit_ipc/xpcshell.ini',
]

View File

@ -1,7 +1,7 @@
[DEFAULT]
head = head_channels.js head_cache.js head_cache2.js
tail =
skip-if = toolkit == 'gonk'
skip-if = buildapp == 'b2g'
support-files =
data/image.png
data/system_root.lnk
@ -220,7 +220,6 @@ skip-if = bits != 32
skip-if = os == "win"
[test_nojsredir.js]
[test_offline_status.js]
[test_pac_generator.js]
[test_parse_content_type.js]
[test_permmgr.js]
[test_plaintext_sniff.js]

View File

@ -0,0 +1,8 @@
[DEFAULT]
head = head_channels.js head_cache.js head_cache2.js
tail =
skip-if = buildapp != 'b2g'
# For bug 1148503. This is to accommodate non-mozilla-central that didn't
# include required files for this test.
[test_pac_generator.js]

View File

@ -10,7 +10,6 @@
#include "certdb.h"
#include "base64.h"
#include "hasht.h"
#include "pkix/stdkeywords.h"
#include "pkix/pkixtypes.h"
#include "pk11pub.h"
#include "secerr.h"

View File

@ -13,7 +13,6 @@
#include "nsSiteSecurityService.h"
#include "nsString.h"
#include "nsTArray.h"
#include "pkix/stdkeywords.h"
#include "pkix/pkixtypes.h"
#include "prlog.h"
#include "RootCertificateTelemetryUtils.h"

View File

@ -106,6 +106,9 @@ run-sequentially = hardcoded ports
[test_add_preexisting_cert.js]
[test_keysize.js]
[test_keysize_ev.js]
# OCSP requests in this test time out on slow B2G Emulator debug builds.
# See Bug 1147726.
skip-if = toolkit == 'gonk' && debug
run-sequentially = hardcoded ports
[test_cert_chains.js]
run-sequentially = hardcoded ports

View File

@ -27,7 +27,6 @@
#include <cstring>
#include "pkix/stdkeywords.h"
#include "pkix/Result.h"
#include "stdint.h"

View File

@ -25,8 +25,6 @@
#ifndef mozilla_pkix_ScopedPtr_h
#define mozilla_pkix_ScopedPtr_h
#include "pkix/stdkeywords.h"
namespace mozilla { namespace pkix {
// Similar to boost::scoped_ptr and std::unique_ptr. Does not support copying

View File

@ -30,7 +30,6 @@
#include <stdint.h>
#include "pkix/Result.h"
#include "pkix/stdkeywords.h"
namespace mozilla { namespace pkix {

View File

@ -1,38 +0,0 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* This code is made available to you under your choice of the following sets
* of licensing terms:
*/
/* 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/.
*/
/* Copyright 2013 Mozilla Contributors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#ifndef mozilla_pkix_stdkeywords_h
#define mozilla_pkix_stdkeywords_h
#if defined(__GNUC__) && !defined(__clang__)
// GCC does not understand final/override until 4.7
#if __GNUC__ * 100 + __GNUC_MINOR__ < 407
#define final
#define override
#endif
#endif // defined(__GNUC__) && !defined(__clang__)
#endif // mozilla_pkix_stdkeywords_h

View File

@ -830,9 +830,9 @@ GeckoDriver.prototype.createExecuteSandbox = function(win, mn, sp) {
sb.testUtils = utils;
mn.exports.forEach(function(fn) {
try {
if (typeof mn[fn] === 'function') {
sb[fn] = mn[fn].bind(mn);
} catch(e) {
} else {
sb[fn] = mn[fn];
}
});

View File

@ -16,6 +16,7 @@ support-files =
[browser_workerAPI.js]
[browser_SocialProvider.js]
skip-if = e10s && debug # Leaking docshells (bug 1150147)
[browser_notifications.js]
# These tests are currently unreliable on ASAN builds with remote frameworkers.

View File

@ -353,7 +353,7 @@
"description": "Use of SpiderMonkey's deprecated language extensions in web content: ForEach=0, DestructuringForIn=1, LegacyGenerator=2, ExpressionClosure=3, LetBlock=4, LetExpression=5, NoSuchMethod=6, FlagsArgument=7"
},
"TELEMETRY_PING": {
"expires_in_version": "default",
"expires_in_version": "never",
"kind": "exponential",
"high": "3000",
"n_buckets": 10,
@ -361,7 +361,7 @@
"description": "Time taken to submit telemetry info (ms)"
},
"TELEMETRY_SUCCESS": {
"expires_in_version": "default",
"expires_in_version": "never",
"kind": "boolean",
"description": "Successful telemetry submission"
},
@ -4531,7 +4531,7 @@
},
"RANGE_CHECKSUM_ERRORS": {
"alert_emails": ["perf-telemetry-alerts@mozilla.com"],
"expires_in_version": "40",
"expires_in_version": "never",
"kind": "exponential",
"high": "3000",
"n_buckets": 10,
@ -4540,7 +4540,7 @@
},
"BUCKET_ORDER_ERRORS": {
"alert_emails": ["perf-telemetry-alerts@mozilla.com"],
"expires_in_version": "40",
"expires_in_version": "never",
"kind": "exponential",
"high": "3000",
"n_buckets": 10,
@ -4549,7 +4549,7 @@
},
"TOTAL_COUNT_HIGH_ERRORS": {
"alert_emails": ["perf-telemetry-alerts@mozilla.com"],
"expires_in_version": "40",
"expires_in_version": "never",
"kind": "exponential",
"high": "3000",
"n_buckets": 10,
@ -4558,7 +4558,7 @@
},
"TOTAL_COUNT_LOW_ERRORS": {
"alert_emails": ["perf-telemetry-alerts@mozilla.com"],
"expires_in_version": "40",
"expires_in_version": "never",
"kind": "exponential",
"high": "3000",
"n_buckets": 10,
@ -4572,55 +4572,55 @@
"description": "Count of discarded content payloads."
},
"TELEMETRY_FILES_EVICTED": {
"alert_emails": ["rvitillo@mozilla.com"],
"expires_in_version": "36",
"alert_emails": ["perf-telemetry-alerts@mozilla.com", "rvitillo@mozilla.com"],
"expires_in_version": "never",
"kind": "enumerated",
"n_values": 30,
"description": "Number of telemetry pings evicted at startup"
},
"TELEMETRY_TEST_FLAG": {
"expires_in_version": "default",
"expires_in_version": "never",
"kind": "flag",
"description": "a testing histogram; not meant to be touched"
},
"TELEMETRY_TEST_COUNT": {
"expires_in_version": "default",
"expires_in_version": "never",
"kind": "count",
"description": "a testing histogram; not meant to be touched"
},
"TELEMETRY_TEST_KEYED_FLAG": {
"expires_in_version": "default",
"expires_in_version": "never",
"kind": "flag",
"keyed": true,
"description": "a testing histogram; not meant to be touched"
},
"TELEMETRY_TEST_KEYED_COUNT": {
"expires_in_version": "default",
"expires_in_version": "never",
"kind": "count",
"keyed": true,
"description": "a testing histogram; not meant to be touched"
},
"TELEMETRY_TEST_RELEASE_OPTOUT": {
"expires_in_version": "default",
"expires_in_version": "never",
"kind": "flag",
"releaseChannelCollection": "opt-out",
"description": "a testing histogram; not meant to be touched"
},
"TELEMETRY_TEST_RELEASE_OPTIN": {
"expires_in_version": "default",
"expires_in_version": "never",
"kind": "flag",
"releaseChannelCollection": "opt-in",
"description": "a testing histogram; not meant to be touched"
},
"TELEMETRY_TEST_KEYED_RELEASE_OPTIN": {
"expires_in_version": "default",
"expires_in_version": "never",
"kind": "flag",
"keyed": true,
"releaseChannelCollection": "opt-in",
"description": "a testing histogram; not meant to be touched"
},
"TELEMETRY_TEST_KEYED_RELEASE_OPTOUT": {
"expires_in_version": "default",
"expires_in_version": "never",
"kind": "flag",
"keyed": true,
"releaseChannelCollection": "opt-out",
@ -4946,7 +4946,7 @@
},
"READ_SAVED_PING_SUCCESS": {
"alert_emails": ["perf-telemetry-alerts@mozilla.com"],
"expires_in_version": "40",
"expires_in_version": "never",
"kind": "boolean",
"description": "Successfully reading a saved ping file"
},

View File

@ -1820,11 +1820,23 @@ mFailedLockCount(0)
{
// A whitelist to prevent Telemetry reporting on Addon & Thunderbird DBs
const char *trackedDBs[] = {
"addons.sqlite", "content-prefs.sqlite", "cookies.sqlite",
"downloads.sqlite", "extensions.sqlite", "formhistory.sqlite",
"index.sqlite", "healthreport.sqlite", "netpredictions.sqlite",
"permissions.sqlite", "places.sqlite", "search.sqlite", "signons.sqlite",
"urlclassifier3.sqlite", "webappsstore.sqlite"
"818200132aebmoouht.sqlite", // IndexedDB for about:home, see aboutHome.js
"addons.sqlite",
"content-prefs.sqlite",
"cookies.sqlite",
"downloads.sqlite",
"extensions.sqlite",
"formhistory.sqlite",
"healthreport.sqlite",
"index.sqlite",
"netpredictions.sqlite",
"permissions.sqlite",
"places.sqlite",
"reading-list.sqlite",
"search.sqlite",
"signons.sqlite",
"urlclassifier3.sqlite",
"webappsstore.sqlite"
};
for (size_t i = 0; i < ArrayLength(trackedDBs); i++)

View File

@ -535,10 +535,10 @@ GetSysFontInfo(HDC aHDC, LookAndFeel::FontID anID,
LOGFONTW* ptrLogFont = nullptr;
LOGFONTW logFont;
NONCLIENTMETRICSW ncm;
HGDIOBJ hGDI;
char16_t name[LF_FACESIZE];
bool useShellDlg = false;
// Depending on which stock font we want, there are three different
// Depending on which stock font we want, there are a couple of
// places we might have to look it up.
switch (anID) {
case LookAndFeel::eFont_Icon:
@ -549,11 +549,7 @@ GetSysFontInfo(HDC aHDC, LookAndFeel::FontID anID,
ptrLogFont = &logFont;
break;
case LookAndFeel::eFont_Menu:
case LookAndFeel::eFont_MessageBox:
case LookAndFeel::eFont_SmallCaption:
case LookAndFeel::eFont_StatusBar:
case LookAndFeel::eFont_Tooltips:
default:
ncm.cbSize = sizeof(NONCLIENTMETRICSW);
if (!::SystemParametersInfoW(SPI_GETNONCLIENTMETRICS,
sizeof(ncm), (PVOID)&ncm, 0))
@ -561,10 +557,11 @@ GetSysFontInfo(HDC aHDC, LookAndFeel::FontID anID,
switch (anID) {
case LookAndFeel::eFont_Menu:
case LookAndFeel::eFont_PullDownMenu:
ptrLogFont = &ncm.lfMenuFont;
break;
case LookAndFeel::eFont_MessageBox:
ptrLogFont = &ncm.lfMessageFont;
case LookAndFeel::eFont_Caption:
ptrLogFont = &ncm.lfCaptionFont;
break;
case LookAndFeel::eFont_SmallCaption:
ptrLogFont = &ncm.lfSmCaptionFont;
@ -573,32 +570,22 @@ GetSysFontInfo(HDC aHDC, LookAndFeel::FontID anID,
case LookAndFeel::eFont_Tooltips:
ptrLogFont = &ncm.lfStatusFont;
break;
case LookAndFeel::eFont_Widget:
case LookAndFeel::eFont_Dialog:
case LookAndFeel::eFont_Button:
// XXX It's not clear to me whether this is exactly the right
// set of LookAndFeel values to map to the dialog font; we may
// want to add or remove cases here after reviewing the visual
// results under various Windows versions.
useShellDlg = true;
// Fall through so that we can get size from lfMessageFont;
// but later we'll use the (virtual) "MS Shell Dlg 2" font name
// instead of the LOGFONT's.
default:
MOZ_CRASH();
ptrLogFont = &ncm.lfMessageFont;
break;
}
break;
case LookAndFeel::eFont_Widget:
case LookAndFeel::eFont_Window: // css3
case LookAndFeel::eFont_Document:
case LookAndFeel::eFont_Workspace:
case LookAndFeel::eFont_Desktop:
case LookAndFeel::eFont_Info:
case LookAndFeel::eFont_Dialog:
case LookAndFeel::eFont_Button:
case LookAndFeel::eFont_PullDownMenu:
case LookAndFeel::eFont_List:
case LookAndFeel::eFont_Field:
case LookAndFeel::eFont_Caption:
hGDI = ::GetStockObject(DEFAULT_GUI_FONT);
if (!hGDI)
return false;
if (::GetObjectW(hGDI, sizeof(logFont), &logFont) <= 0)
return false;
ptrLogFont = &logFont;
break;
}
// Get scaling factor from physical to logical pixels
@ -651,9 +638,12 @@ GetSysFontInfo(HDC aHDC, LookAndFeel::FontID anID,
aFontStyle.systemFont = true;
name[0] = 0;
memcpy(name, ptrLogFont->lfFaceName, LF_FACESIZE*sizeof(char16_t));
aFontName = name;
if (useShellDlg) {
aFontName = NS_LITERAL_STRING("MS Shell Dlg 2");
} else {
memcpy(name, ptrLogFont->lfFaceName, LF_FACESIZE*sizeof(char16_t));
aFontName = name;
}
return true;
}