mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-11 04:15:43 +00:00
merge mozilla-inbound to mozilla-central a=merge
This commit is contained in:
commit
1810191426
@ -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]
|
||||
|
@ -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]
|
||||
|
@ -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);
|
||||
|
@ -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)
|
||||
|
@ -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
|
||||
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -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;
|
||||
|
@ -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.
|
||||
|
@ -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) {
|
||||
|
@ -94,9 +94,6 @@ protected:
|
||||
|
||||
private:
|
||||
nsCOMPtr<nsIOutputStream> mOutputStream;
|
||||
#ifdef DEBUG
|
||||
void* mWriteThread;
|
||||
#endif
|
||||
};
|
||||
|
||||
} // namespace dom
|
||||
|
@ -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();
|
||||
|
@ -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)
|
||||
{
|
||||
|
@ -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;
|
||||
|
@ -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)
|
||||
|
@ -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;
|
||||
}
|
||||
|
||||
|
@ -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);
|
||||
|
@ -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
|
||||
|
@ -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,
|
||||
|
@ -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__ */
|
||||
|
@ -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
|
||||
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
||||
|
@ -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;
|
||||
}
|
||||
|
||||
|
@ -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
|
||||
|
@ -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);
|
||||
|
@ -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;
|
||||
}
|
||||
|
||||
|
@ -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
|
||||
|
||||
|
@ -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)) ==
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
||||
|
@ -201,6 +201,7 @@ window.done_div = function() {
|
||||
};
|
||||
|
||||
SimpleTest.waitForExplicitFinish();
|
||||
SimpleTest.requestLongerTimeout(2);
|
||||
runOMTATest(function() {
|
||||
var onAbort = function() {
|
||||
if (gDiv) {
|
||||
|
@ -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
|
||||
|
||||
|
@ -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;
|
||||
|
@ -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)
|
||||
|
@ -13,6 +13,7 @@ MOCHITEST_MANIFESTS += ['mochitests/mochitest.ini']
|
||||
|
||||
XPCSHELL_TESTS_MANIFESTS += [
|
||||
'unit/xpcshell.ini',
|
||||
'unit/xpcshell_b2g.ini',
|
||||
'unit_ipc/xpcshell.ini',
|
||||
]
|
||||
|
||||
|
@ -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]
|
||||
|
8
netwerk/test/unit/xpcshell_b2g.ini
Normal file
8
netwerk/test/unit/xpcshell_b2g.ini
Normal 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]
|
@ -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"
|
||||
|
@ -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"
|
||||
|
@ -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
|
||||
|
@ -27,7 +27,6 @@
|
||||
|
||||
#include <cstring>
|
||||
|
||||
#include "pkix/stdkeywords.h"
|
||||
#include "pkix/Result.h"
|
||||
#include "stdint.h"
|
||||
|
||||
|
@ -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
|
||||
|
@ -30,7 +30,6 @@
|
||||
#include <stdint.h>
|
||||
|
||||
#include "pkix/Result.h"
|
||||
#include "pkix/stdkeywords.h"
|
||||
|
||||
namespace mozilla { namespace pkix {
|
||||
|
||||
|
@ -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
|
@ -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];
|
||||
}
|
||||
});
|
||||
|
@ -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.
|
||||
|
@ -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"
|
||||
},
|
||||
|
@ -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++)
|
||||
|
@ -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;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user