mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-09 11:25:00 +00:00
merge mozilla-inbound to mozilla-central. r=merge a=merge
MozReview-Commit-ID: 1h3kZyrtqSt
This commit is contained in:
commit
32f7c8fec3
@ -468,9 +468,10 @@ nsAccessibilityService::CreatePluginAccessible(nsPluginFrame* aFrame,
|
||||
if (!sPendingPlugins->Contains(aContent) &&
|
||||
(Preferences::GetBool("accessibility.delay_plugins") ||
|
||||
Compatibility::IsJAWS() || Compatibility::IsWE())) {
|
||||
nsCOMPtr<nsITimer> timer = do_CreateInstance(NS_TIMER_CONTRACTID);
|
||||
RefPtr<PluginTimerCallBack> cb = new PluginTimerCallBack(aContent);
|
||||
timer->InitWithCallback(cb, Preferences::GetUint("accessibility.delay_plugin_time"),
|
||||
nsCOMPtr<nsITimer> timer;
|
||||
NS_NewTimerWithCallback(getter_AddRefs(timer),
|
||||
cb, Preferences::GetUint("accessibility.delay_plugin_time"),
|
||||
nsITimer::TYPE_ONE_SHOT);
|
||||
sPluginTimers->AppendElement(timer);
|
||||
sPendingPlugins->AppendElement(aContent);
|
||||
|
@ -650,15 +650,14 @@ DocAccessible::ScrollPositionDidChange(nscoord aX, nscoord aY)
|
||||
mScrollWatchTimer->SetDelay(kScrollPosCheckWait); // Create new timer, to avoid leaks
|
||||
}
|
||||
else {
|
||||
mScrollWatchTimer = do_CreateInstance("@mozilla.org/timer;1");
|
||||
NS_NewTimerWithFuncCallback(getter_AddRefs(mScrollWatchTimer),
|
||||
ScrollTimerCallback,
|
||||
this,
|
||||
kScrollPosCheckWait,
|
||||
nsITimer::TYPE_REPEATING_SLACK,
|
||||
"a11y::DocAccessible::ScrollPositionDidChange");
|
||||
if (mScrollWatchTimer) {
|
||||
NS_ADDREF_THIS(); // Kung fu death grip
|
||||
mScrollWatchTimer->InitWithNamedFuncCallback(
|
||||
ScrollTimerCallback,
|
||||
this,
|
||||
kScrollPosCheckWait,
|
||||
nsITimer::TYPE_REPEATING_SLACK,
|
||||
"a11y::DocAccessible::ScrollPositionDidChange");
|
||||
}
|
||||
}
|
||||
mScrollPositionChangedTicks = 1;
|
||||
|
@ -77,15 +77,12 @@ xpcAccessibilityService::Release(void)
|
||||
// xpcAccessibilityService and we can attempt to shut down acceessiblity
|
||||
// service.
|
||||
if (count == 1 && !mShutdownTimer) {
|
||||
mShutdownTimer = do_CreateInstance(NS_TIMER_CONTRACTID);
|
||||
if (mShutdownTimer) {
|
||||
mShutdownTimer->InitWithNamedFuncCallback(
|
||||
ShutdownCallback,
|
||||
this,
|
||||
100,
|
||||
nsITimer::TYPE_ONE_SHOT,
|
||||
"xpcAccessibilityService::Release");
|
||||
}
|
||||
NS_NewTimerWithFuncCallback(getter_AddRefs(mShutdownTimer),
|
||||
ShutdownCallback,
|
||||
this,
|
||||
100,
|
||||
nsITimer::TYPE_ONE_SHOT,
|
||||
"xpcAccessibilityService::Release");
|
||||
}
|
||||
|
||||
return count;
|
||||
|
@ -27,7 +27,7 @@ XPCOMUtils.defineLazyServiceGetter(this, "quotaManagerService",
|
||||
"@mozilla.org/dom/quota-manager-service;1",
|
||||
"nsIQuotaManagerService");
|
||||
|
||||
var {classes: Cc, interfaces: Ci} = Components;
|
||||
var {classes: Cc, interfaces: Ci, results: Cr} = Components;
|
||||
|
||||
/**
|
||||
* A number of iterations after which to yield time back
|
||||
@ -308,6 +308,13 @@ Sanitizer.prototype = {
|
||||
let promises = [];
|
||||
await new Promise(resolve => {
|
||||
quotaManagerService.getUsage(request => {
|
||||
if (request.resultCode != Cr.NS_OK) {
|
||||
// We are probably shutting down. We don't want to propagate the
|
||||
// error, rejecting the promise.
|
||||
resolve();
|
||||
return;
|
||||
}
|
||||
|
||||
for (let item of request.result) {
|
||||
let principal = Services.scriptSecurityManager.createCodebasePrincipalFromOrigin(item.origin);
|
||||
let uri = principal.URI;
|
||||
|
@ -88,6 +88,13 @@ const clearIndexedDB = async function(options) {
|
||||
|
||||
await new Promise(resolve => {
|
||||
quotaManagerService.getUsage(request => {
|
||||
if (request.resultCode != Components.results.NS_OK) {
|
||||
// We are probably shutting down. We don't want to propagate the error,
|
||||
// rejecting the promise.
|
||||
resolve();
|
||||
return;
|
||||
}
|
||||
|
||||
for (let item of request.result) {
|
||||
let principal = Services.scriptSecurityManager.createCodebasePrincipalFromOrigin(item.origin);
|
||||
let uri = principal.URI;
|
||||
|
@ -128,3 +128,36 @@ add_task(async function clickWithPrefSet() {
|
||||
|
||||
await SpecialPowers.popPrefEnv();
|
||||
});
|
||||
|
||||
// Open a tab, then quickly open the context menu to ensure that the command
|
||||
// enabled state of the menuitems is updated properly.
|
||||
add_task(async function quickContextMenu() {
|
||||
await SpecialPowers.pushPrefEnv({set: [
|
||||
[PREF_LOAD_BOOKMARKS_IN_TABS, true]
|
||||
]});
|
||||
|
||||
let tabPromise = BrowserTestUtils.waitForNewTab(gBrowser, TEST_PAGES[0]);
|
||||
|
||||
EventUtils.synthesizeMouseAtCenter(gBookmarkElements[0], {
|
||||
button: 0
|
||||
});
|
||||
let newTab = await tabPromise;
|
||||
|
||||
let placesContext = document.getElementById("placesContext");
|
||||
let promise = BrowserTestUtils.waitForEvent(placesContext, "popupshown");
|
||||
EventUtils.synthesizeMouseAtCenter(gBookmarkElements[1], {
|
||||
button: 2,
|
||||
type: "contextmenu"
|
||||
});
|
||||
await promise;
|
||||
|
||||
Assert.ok(!document.getElementById("placesContext_open").disabled,
|
||||
"Commands in context menu are enabled");
|
||||
|
||||
promise = BrowserTestUtils.waitForEvent(placesContext, "popuphidden");
|
||||
placesContext.hidePopup();
|
||||
await promise;
|
||||
await BrowserTestUtils.removeTab(newTab);
|
||||
|
||||
await SpecialPowers.popPrefEnv();
|
||||
});
|
||||
|
@ -22,6 +22,7 @@ support-files =
|
||||
!/devtools/client/framework/test/shared-head.js
|
||||
|
||||
[browser_addons_debug_bootstrapped.js]
|
||||
skip-if = coverage # Bug 1387827
|
||||
[browser_addons_debug_info.js]
|
||||
[browser_addons_debug_webextension.js]
|
||||
tags = webextensions
|
||||
@ -30,6 +31,7 @@ tags = webextensions
|
||||
[browser_addons_debug_webextension_nobg.js]
|
||||
tags = webextensions
|
||||
[browser_addons_debug_webextension_popup.js]
|
||||
skip-if = coverage # Bug 1387827
|
||||
tags = webextensions
|
||||
[browser_addons_debugging_initial_state.js]
|
||||
[browser_addons_install.js]
|
||||
|
@ -48,6 +48,7 @@ support-files =
|
||||
!/devtools/client/debugger/new/test/mochitest/head.js
|
||||
|
||||
[browser_browser_toolbox.js]
|
||||
skip-if = coverage # Bug 1387827
|
||||
[browser_browser_toolbox_debugger.js]
|
||||
skip-if = debug # Bug 1282269
|
||||
[browser_devtools_api.js]
|
||||
|
@ -26,6 +26,7 @@
|
||||
#include "mozilla/LoadInfo.h"
|
||||
#include "mozilla/HTMLEditor.h"
|
||||
#include "mozilla/Preferences.h"
|
||||
#include "mozilla/ResultExtensions.h"
|
||||
#include "mozilla/Services.h"
|
||||
#include "mozilla/StartupTimeline.h"
|
||||
#include "mozilla/Telemetry.h"
|
||||
@ -456,23 +457,13 @@ nsPingListener::StartTimeout(DocGroup* aDocGroup)
|
||||
{
|
||||
NS_ENSURE_ARG(aDocGroup);
|
||||
|
||||
nsCOMPtr<nsITimer> timer = do_CreateInstance(NS_TIMER_CONTRACTID);
|
||||
timer->SetTarget(aDocGroup->EventTargetFor(TaskCategory::Network));
|
||||
|
||||
if (timer) {
|
||||
nsresult rv =
|
||||
timer->InitWithNamedFuncCallback(OnPingTimeout,
|
||||
mLoadGroup,
|
||||
PING_TIMEOUT,
|
||||
nsITimer::TYPE_ONE_SHOT,
|
||||
"nsPingListener::StartTimeout");
|
||||
if (NS_SUCCEEDED(rv)) {
|
||||
mTimer = timer;
|
||||
return NS_OK;
|
||||
}
|
||||
}
|
||||
|
||||
return NS_ERROR_OUT_OF_MEMORY;
|
||||
return NS_NewTimerWithFuncCallback(getter_AddRefs(mTimer),
|
||||
OnPingTimeout,
|
||||
mLoadGroup,
|
||||
PING_TIMEOUT,
|
||||
nsITimer::TYPE_ONE_SHOT,
|
||||
"nsPingListener::StartTimeout",
|
||||
aDocGroup->EventTargetFor(TaskCategory::Network));
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
@ -6858,14 +6849,15 @@ nsDocShell::RefreshURI(nsIURI* aURI, int32_t aDelay, bool aRepeat,
|
||||
} else {
|
||||
// There is no page loading going on right now. Create the
|
||||
// timer and fire it right away.
|
||||
nsCOMPtr<nsITimer> timer = do_CreateInstance("@mozilla.org/timer;1");
|
||||
NS_ENSURE_TRUE(timer, NS_ERROR_FAILURE);
|
||||
nsCOMPtr<nsPIDOMWindowOuter> win = GetWindow();
|
||||
NS_ENSURE_TRUE(win, NS_ERROR_FAILURE);
|
||||
|
||||
nsCOMPtr<nsITimer> timer;
|
||||
MOZ_TRY_VAR(timer,
|
||||
NS_NewTimerWithCallback(refreshTimer, aDelay, nsITimer::TYPE_ONE_SHOT,
|
||||
win->TabGroup()->EventTargetFor(TaskCategory::Network)));
|
||||
|
||||
mRefreshURIList->AppendElement(timer, /*weak =*/ false); // owning timer ref
|
||||
timer->SetTarget(win->TabGroup()->EventTargetFor(TaskCategory::Network));
|
||||
timer->InitWithCallback(refreshTimer, aDelay, nsITimer::TYPE_ONE_SHOT);
|
||||
}
|
||||
return NS_OK;
|
||||
}
|
||||
@ -7345,16 +7337,20 @@ nsDocShell::RefreshURIFromQueue()
|
||||
uint32_t delay =
|
||||
static_cast<nsRefreshTimer*>(
|
||||
static_cast<nsITimerCallback*>(refreshInfo))->GetDelay();
|
||||
nsCOMPtr<nsITimer> timer = do_CreateInstance("@mozilla.org/timer;1");
|
||||
nsCOMPtr<nsPIDOMWindowOuter> win = GetWindow();
|
||||
if (timer && win) {
|
||||
// Replace the nsRefreshTimer element in the queue with
|
||||
// its corresponding timer object, so that in case another
|
||||
// load comes through before the timer can go off, the timer will
|
||||
// get cancelled in CancelRefreshURITimer()
|
||||
mRefreshURIList->ReplaceElementAt(timer, n, /*weak =*/ false);
|
||||
timer->SetTarget(win->TabGroup()->EventTargetFor(TaskCategory::Network));
|
||||
timer->InitWithCallback(refreshInfo, delay, nsITimer::TYPE_ONE_SHOT);
|
||||
if (win) {
|
||||
nsCOMPtr<nsITimer> timer;
|
||||
NS_NewTimerWithCallback(getter_AddRefs(timer),
|
||||
refreshInfo, delay, nsITimer::TYPE_ONE_SHOT,
|
||||
win->TabGroup()->EventTargetFor(TaskCategory::Network));
|
||||
|
||||
if (timer) {
|
||||
// Replace the nsRefreshTimer element in the queue with
|
||||
// its corresponding timer object, so that in case another
|
||||
// load comes through before the timer can go off, the timer will
|
||||
// get cancelled in CancelRefreshURITimer()
|
||||
mRefreshURIList->ReplaceElementAt(timer, n, /*weak =*/ false);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1244,30 +1244,31 @@ ChromeTooltipListener::MouseMove(nsIDOMEvent* aMouseEvent)
|
||||
}
|
||||
|
||||
if (!mShowingTooltip && !mTooltipShownOnce) {
|
||||
mTooltipTimer = do_CreateInstance("@mozilla.org/timer;1");
|
||||
if (mTooltipTimer) {
|
||||
nsCOMPtr<EventTarget> eventTarget =
|
||||
aMouseEvent->InternalDOMEvent()->GetTarget();
|
||||
if (eventTarget) {
|
||||
mPossibleTooltipNode = do_QueryInterface(eventTarget);
|
||||
nsCOMPtr<nsIGlobalObject> global(eventTarget->GetOwnerGlobal());
|
||||
if (global) {
|
||||
mTooltipTimer->SetTarget(global->EventTargetFor(TaskCategory::UI));
|
||||
}
|
||||
nsIEventTarget* target = nullptr;
|
||||
|
||||
nsCOMPtr<EventTarget> eventTarget =
|
||||
aMouseEvent->InternalDOMEvent()->GetTarget();
|
||||
if (eventTarget) {
|
||||
mPossibleTooltipNode = do_QueryInterface(eventTarget);
|
||||
nsCOMPtr<nsIGlobalObject> global(eventTarget->GetOwnerGlobal());
|
||||
if (global) {
|
||||
target = global->EventTargetFor(TaskCategory::UI);
|
||||
}
|
||||
if (mPossibleTooltipNode) {
|
||||
nsresult rv = mTooltipTimer->InitWithNamedFuncCallback(
|
||||
sTooltipCallback,
|
||||
this,
|
||||
LookAndFeel::GetInt(LookAndFeel::eIntID_TooltipDelay, 500),
|
||||
nsITimer::TYPE_ONE_SHOT,
|
||||
"ChromeTooltipListener::MouseMove");
|
||||
if (NS_FAILED(rv)) {
|
||||
mPossibleTooltipNode = nullptr;
|
||||
}
|
||||
}
|
||||
|
||||
if (mPossibleTooltipNode) {
|
||||
nsresult rv = NS_NewTimerWithFuncCallback(
|
||||
getter_AddRefs(mTooltipTimer),
|
||||
sTooltipCallback,
|
||||
this,
|
||||
LookAndFeel::GetInt(LookAndFeel::eIntID_TooltipDelay, 500),
|
||||
nsITimer::TYPE_ONE_SHOT,
|
||||
"ChromeTooltipListener::MouseMove",
|
||||
target);
|
||||
if (NS_FAILED(rv)) {
|
||||
mPossibleTooltipNode = nullptr;
|
||||
NS_WARNING("Could not create a timer for tooltip tracking");
|
||||
}
|
||||
} else {
|
||||
NS_WARNING("Could not create a timer for tooltip tracking");
|
||||
}
|
||||
} else {
|
||||
mTooltipShownOnce = true;
|
||||
|
@ -319,11 +319,9 @@ namespace {
|
||||
{
|
||||
MOZ_ASSERT(aTarget);
|
||||
MOZ_ASSERT(!mTimer);
|
||||
mTimer = do_CreateInstance(NS_TIMER_CONTRACTID);
|
||||
if (mTimer) {
|
||||
mTimer->SetTarget(aTarget);
|
||||
mTimer->InitWithCallback(this, aDelay, nsITimer::TYPE_ONE_SHOT);
|
||||
}
|
||||
NS_NewTimerWithCallback(getter_AddRefs(mTimer),
|
||||
this, aDelay, nsITimer::TYPE_ONE_SHOT,
|
||||
aTarget);
|
||||
}
|
||||
|
||||
protected:
|
||||
|
@ -1202,7 +1202,7 @@ EventSourceImpl::SetReconnectionTimeout()
|
||||
|
||||
// the timer will be used whenever the requests are going finished.
|
||||
if (!mTimer) {
|
||||
mTimer = do_CreateInstance("@mozilla.org/timer;1");
|
||||
mTimer = NS_NewTimer();
|
||||
NS_ENSURE_STATE(mTimer);
|
||||
}
|
||||
|
||||
|
@ -177,13 +177,11 @@ public:
|
||||
mContent = nsIPresShell::GetCapturingContent();
|
||||
|
||||
if (!mTimer) {
|
||||
nsresult result;
|
||||
mTimer = do_CreateInstance("@mozilla.org/timer;1", &result);
|
||||
mTimer->SetTarget(
|
||||
mTimer = NS_NewTimer(
|
||||
mPresContext->Document()->EventTargetFor(TaskCategory::Other));
|
||||
|
||||
if (NS_FAILED(result)) {
|
||||
return result;
|
||||
if (!mTimer) {
|
||||
return NS_ERROR_OUT_OF_MEMORY;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -55,8 +55,8 @@ TimeoutExecutor::ScheduleDelayed(const TimeStamp& aDeadline,
|
||||
nsresult rv = NS_OK;
|
||||
|
||||
if (!mTimer) {
|
||||
mTimer = do_CreateInstance("@mozilla.org/timer;1", &rv);
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
mTimer = NS_NewTimer();
|
||||
NS_ENSURE_TRUE(mTimer, NS_ERROR_OUT_OF_MEMORY);
|
||||
|
||||
uint32_t earlyMicros = 0;
|
||||
MOZ_ALWAYS_SUCCEEDS(mTimer->GetAllowedEarlyFiringMicroseconds(&earlyMicros));
|
||||
|
@ -1309,19 +1309,12 @@ TimeoutManager::MaybeStartThrottleTimeout()
|
||||
("TimeoutManager %p delaying tracking timeout throttling by %dms\n",
|
||||
this, gTimeoutThrottlingDelay));
|
||||
|
||||
mThrottleTimeoutsTimer =
|
||||
do_CreateInstance("@mozilla.org/timer;1");
|
||||
if (!mThrottleTimeoutsTimer) {
|
||||
return;
|
||||
}
|
||||
|
||||
nsCOMPtr<nsITimerCallback> callback =
|
||||
new ThrottleTimeoutsCallback(&mWindow);
|
||||
|
||||
mThrottleTimeoutsTimer->SetTarget(EventTarget());
|
||||
|
||||
mThrottleTimeoutsTimer->InitWithCallback(
|
||||
callback, gTimeoutThrottlingDelay, nsITimer::TYPE_ONE_SHOT);
|
||||
NS_NewTimerWithCallback(getter_AddRefs(mThrottleTimeoutsTimer),
|
||||
callback, gTimeoutThrottlingDelay, nsITimer::TYPE_ONE_SHOT,
|
||||
EventTarget());
|
||||
}
|
||||
|
||||
void
|
||||
|
@ -1402,20 +1402,14 @@ nsContentSink::WillInterruptImpl()
|
||||
// Convert to milliseconds
|
||||
delay /= PR_USEC_PER_MSEC;
|
||||
|
||||
mNotificationTimer = do_CreateInstance("@mozilla.org/timer;1",
|
||||
&result);
|
||||
if (NS_SUCCEEDED(result)) {
|
||||
NS_NewTimerWithCallback(getter_AddRefs(mNotificationTimer),
|
||||
this, delay,
|
||||
nsITimer::TYPE_ONE_SHOT);
|
||||
if (mNotificationTimer) {
|
||||
SINK_TRACE(static_cast<LogModule*>(gContentSinkLogModuleInfo),
|
||||
SINK_TRACE_REFLOW,
|
||||
("nsContentSink::WillInterrupt: setting up timer with "
|
||||
"delay %d", delay));
|
||||
|
||||
result =
|
||||
mNotificationTimer->InitWithCallback(this, delay,
|
||||
nsITimer::TYPE_ONE_SHOT);
|
||||
if (NS_FAILED(result)) {
|
||||
mNotificationTimer = nullptr;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -7098,10 +7098,10 @@ FullscreenTransitionTask::Run()
|
||||
// powerful, layout could take a long time, in which case, staying
|
||||
// in black screen for that long could hurt user experience even
|
||||
// more than exposing an intermediate state.
|
||||
mTimer = do_CreateInstance(NS_TIMER_CONTRACTID);
|
||||
uint32_t timeout =
|
||||
Preferences::GetUint("full-screen-api.transition.timeout", 1000);
|
||||
mTimer->Init(observer, timeout, nsITimer::TYPE_ONE_SHOT);
|
||||
NS_NewTimerWithObserver(getter_AddRefs(mTimer),
|
||||
observer, timeout, nsITimer::TYPE_ONE_SHOT);
|
||||
} else if (stage == eAfterToggle) {
|
||||
Telemetry::AccumulateTimeDelta(Telemetry::FULLSCREEN_TRANSITION_BLACK_MS,
|
||||
mFullscreenChangeStartTime);
|
||||
@ -12017,8 +12017,8 @@ nsGlobalWindow::RegisterIdleObserver(nsIIdleObserver* aIdleObserver)
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
if (!mIdleTimer) {
|
||||
mIdleTimer = do_CreateInstance(NS_TIMER_CONTRACTID, &rv);
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
mIdleTimer = NS_NewTimer();
|
||||
NS_ENSURE_TRUE(mIdleTimer, NS_ERROR_OUT_OF_MEMORY);
|
||||
} else {
|
||||
mIdleTimer->Cancel();
|
||||
}
|
||||
|
@ -2115,25 +2115,19 @@ nsJSContext::PokeGC(JS::gcreason::Reason aReason,
|
||||
return;
|
||||
}
|
||||
|
||||
CallCreateInstance("@mozilla.org/timer;1", &sGCTimer);
|
||||
|
||||
if (!sGCTimer) {
|
||||
// Failed to create timer (probably because we're in XPCOM shutdown)
|
||||
return;
|
||||
}
|
||||
|
||||
static bool first = true;
|
||||
|
||||
sGCTimer->SetTarget(SystemGroup::EventTargetFor(TaskCategory::GarbageCollection));
|
||||
sGCTimer->InitWithNamedFuncCallback(GCTimerFired,
|
||||
reinterpret_cast<void *>(aReason),
|
||||
aDelay
|
||||
? aDelay
|
||||
: (first
|
||||
? NS_FIRST_GC_DELAY
|
||||
: NS_GC_DELAY),
|
||||
nsITimer::TYPE_ONE_SHOT_LOW_PRIORITY,
|
||||
"GCTimerFired");
|
||||
NS_NewTimerWithFuncCallback(&sGCTimer,
|
||||
GCTimerFired,
|
||||
reinterpret_cast<void *>(aReason),
|
||||
aDelay
|
||||
? aDelay
|
||||
: (first
|
||||
? NS_FIRST_GC_DELAY
|
||||
: NS_GC_DELAY),
|
||||
nsITimer::TYPE_ONE_SHOT_LOW_PRIORITY,
|
||||
"GCTimerFired",
|
||||
SystemGroup::EventTargetFor(TaskCategory::GarbageCollection));
|
||||
|
||||
first = false;
|
||||
}
|
||||
@ -2146,18 +2140,12 @@ nsJSContext::PokeShrinkingGC()
|
||||
return;
|
||||
}
|
||||
|
||||
CallCreateInstance("@mozilla.org/timer;1", &sShrinkingGCTimer);
|
||||
|
||||
if (!sShrinkingGCTimer) {
|
||||
// Failed to create timer (probably because we're in XPCOM shutdown)
|
||||
return;
|
||||
}
|
||||
|
||||
sShrinkingGCTimer->SetTarget(SystemGroup::EventTargetFor(TaskCategory::GarbageCollection));
|
||||
sShrinkingGCTimer->InitWithNamedFuncCallback(ShrinkingGCTimerFired, nullptr,
|
||||
sCompactOnUserInactiveDelay,
|
||||
nsITimer::TYPE_ONE_SHOT_LOW_PRIORITY,
|
||||
"ShrinkingGCTimerFired");
|
||||
NS_NewTimerWithFuncCallback(&sShrinkingGCTimer,
|
||||
ShrinkingGCTimerFired, nullptr,
|
||||
sCompactOnUserInactiveDelay,
|
||||
nsITimer::TYPE_ONE_SHOT_LOW_PRIORITY,
|
||||
"ShrinkingGCTimerFired",
|
||||
SystemGroup::EventTargetFor(TaskCategory::GarbageCollection));
|
||||
}
|
||||
|
||||
// static
|
||||
@ -2335,13 +2323,13 @@ DOMGCSliceCallback(JSContext* aCx, JS::GCProgress aProgress, const JS::GCDescrip
|
||||
|
||||
if (aDesc.isZone_) {
|
||||
if (!sFullGCTimer && !sShuttingDown) {
|
||||
CallCreateInstance("@mozilla.org/timer;1", &sFullGCTimer);
|
||||
sFullGCTimer->SetTarget(SystemGroup::EventTargetFor(TaskCategory::GarbageCollection));
|
||||
sFullGCTimer->InitWithNamedFuncCallback(FullGCTimerFired,
|
||||
nullptr,
|
||||
NS_FULL_GC_DELAY,
|
||||
nsITimer::TYPE_ONE_SHOT_LOW_PRIORITY,
|
||||
"FullGCTimerFired");
|
||||
NS_NewTimerWithFuncCallback(&sFullGCTimer,
|
||||
FullGCTimerFired,
|
||||
nullptr,
|
||||
NS_FULL_GC_DELAY,
|
||||
nsITimer::TYPE_ONE_SHOT_LOW_PRIORITY,
|
||||
"FullGCTimerFired",
|
||||
SystemGroup::EventTargetFor(TaskCategory::GarbageCollection));
|
||||
}
|
||||
} else {
|
||||
nsJSContext::KillFullGCTimer();
|
||||
|
@ -827,13 +827,10 @@ nsWindowMemoryReporter::AsyncCheckForGhostWindows()
|
||||
int32_t timeSinceLastCheck = (TimeStamp::NowLoRes() - mLastCheckForGhostWindows).ToSeconds();
|
||||
int32_t timerDelay = (kTimeBetweenChecks - std::min(timeSinceLastCheck, kTimeBetweenChecks)) * PR_MSEC_PER_SEC;
|
||||
|
||||
mCheckTimer = do_CreateInstance("@mozilla.org/timer;1");
|
||||
|
||||
if (mCheckTimer) {
|
||||
mCheckTimer->InitWithNamedFuncCallback(CheckTimerFired, nullptr,
|
||||
timerDelay, nsITimer::TYPE_ONE_SHOT,
|
||||
"nsWindowMemoryReporter::AsyncCheckForGhostWindows_timer");
|
||||
}
|
||||
NS_NewTimerWithFuncCallback(getter_AddRefs(mCheckTimer),
|
||||
CheckTimerFired, nullptr,
|
||||
timerDelay, nsITimer::TYPE_ONE_SHOT,
|
||||
"nsWindowMemoryReporter::AsyncCheckForGhostWindows_timer");
|
||||
}
|
||||
|
||||
void
|
||||
|
@ -258,6 +258,7 @@ support-files =
|
||||
[test_anonymousContent_api.html]
|
||||
[test_anonymousContent_append_after_reflow.html]
|
||||
[test_anonymousContent_canvas.html]
|
||||
skip-if = headless # Bug 1405867
|
||||
[test_anonymousContent_insert.html]
|
||||
[test_anonymousContent_manipulate_content.html]
|
||||
[test_anonymousContent_style_csp.html]
|
||||
@ -306,7 +307,7 @@ skip-if = toolkit == 'android'
|
||||
[test_bug330925.xhtml]
|
||||
[test_bug331959.html]
|
||||
[test_bug333064.html]
|
||||
skip-if = toolkit == 'android'
|
||||
skip-if = toolkit == 'android' || headless # Headless: Bug 1405868
|
||||
[test_bug333198.html]
|
||||
[test_bug333673.html]
|
||||
[test_bug337631.html]
|
||||
|
24
dom/cache/FileUtils.cpp
vendored
24
dom/cache/FileUtils.cpp
vendored
@ -11,8 +11,8 @@
|
||||
#include "mozilla/dom/quota/QuotaManager.h"
|
||||
#include "mozilla/SnappyCompressOutputStream.h"
|
||||
#include "mozilla/Unused.h"
|
||||
#include "nsIBinaryInputStream.h"
|
||||
#include "nsIBinaryOutputStream.h"
|
||||
#include "nsIObjectInputStream.h"
|
||||
#include "nsIObjectOutputStream.h"
|
||||
#include "nsIFile.h"
|
||||
#include "nsIUUIDGenerator.h"
|
||||
#include "nsNetCID.h"
|
||||
@ -420,14 +420,10 @@ LockedDirectoryPaddingWrite(nsIFile* aBaseDir, DirPaddingFile aPaddingFileType,
|
||||
rv = NS_NewLocalFileOutputStream(getter_AddRefs(outputStream), file);
|
||||
if (NS_WARN_IF(NS_FAILED(rv))) { return rv; }
|
||||
|
||||
nsCOMPtr<nsIBinaryOutputStream> binaryStream =
|
||||
do_CreateInstance("@mozilla.org/binaryoutputstream;1");
|
||||
if (NS_WARN_IF(!binaryStream)) { return NS_ERROR_FAILURE; }
|
||||
nsCOMPtr<nsIObjectOutputStream> objectStream =
|
||||
NS_NewObjectOutputStream(outputStream);
|
||||
|
||||
rv = binaryStream->SetOutputStream(outputStream);
|
||||
if (NS_WARN_IF(NS_FAILED(rv))) { return rv; }
|
||||
|
||||
rv = binaryStream->Write64(aPaddingSize);
|
||||
rv = objectStream->Write64(aPaddingSize);
|
||||
if (NS_WARN_IF(NS_FAILED(rv))) { return rv; }
|
||||
|
||||
return rv;
|
||||
@ -744,15 +740,11 @@ LockedDirectoryPaddingGet(nsIFile* aBaseDir, int64_t* aPaddingSizeOut)
|
||||
rv = NS_NewBufferedInputStream(getter_AddRefs(bufferedStream), stream, 512);
|
||||
if (NS_WARN_IF(NS_FAILED(rv))) { return rv; }
|
||||
|
||||
nsCOMPtr<nsIBinaryInputStream> binaryStream =
|
||||
do_CreateInstance("@mozilla.org/binaryinputstream;1");
|
||||
if (NS_WARN_IF(NS_FAILED(rv))) { return rv; }
|
||||
|
||||
rv = binaryStream->SetInputStream(bufferedStream);
|
||||
if (NS_WARN_IF(NS_FAILED(rv))) { return rv; }
|
||||
nsCOMPtr<nsIObjectInputStream> objectStream =
|
||||
NS_NewObjectInputStream(bufferedStream);
|
||||
|
||||
uint64_t paddingSize = 0;
|
||||
rv = binaryStream->Read64(&paddingSize);
|
||||
rv = objectStream->Read64(&paddingSize);
|
||||
if (NS_WARN_IF(NS_FAILED(rv))) { return rv; }
|
||||
|
||||
*aPaddingSizeOut = paddingSize;
|
||||
|
@ -49,7 +49,7 @@ NS_IMPL_ISUPPORTS(WatchdogTimerEvent, nsITimerCallback, nsINamed)
|
||||
|
||||
WebGLContextLossHandler::WebGLContextLossHandler(WebGLContext* webgl)
|
||||
: mWebGL(webgl)
|
||||
, mTimer(do_CreateInstance(NS_TIMER_CONTRACTID))
|
||||
, mTimer(NS_NewTimer())
|
||||
, mTimerPending(false)
|
||||
, mShouldRunTimerAgain(false)
|
||||
#ifdef DEBUG
|
||||
|
@ -19,8 +19,8 @@
|
||||
#include "nsIClipboard.h"
|
||||
#include "nsContentUtils.h"
|
||||
#include "nsIContent.h"
|
||||
#include "nsIBinaryInputStream.h"
|
||||
#include "nsIBinaryOutputStream.h"
|
||||
#include "nsIObjectInputStream.h"
|
||||
#include "nsIObjectOutputStream.h"
|
||||
#include "nsIStorageStream.h"
|
||||
#include "nsStringStream.h"
|
||||
#include "nsCRT.h"
|
||||
@ -996,7 +996,7 @@ DataTransfer::GetTransferable(uint32_t aIndex, nsILoadContext* aLoadContext)
|
||||
transferable->Init(aLoadContext);
|
||||
|
||||
nsCOMPtr<nsIStorageStream> storageStream;
|
||||
nsCOMPtr<nsIBinaryOutputStream> stream;
|
||||
nsCOMPtr<nsIObjectOutputStream> stream;
|
||||
|
||||
bool added = false;
|
||||
bool handlingCustomFormats = true;
|
||||
@ -1087,8 +1087,7 @@ DataTransfer::GetTransferable(uint32_t aIndex, nsILoadContext* aLoadContext)
|
||||
nsCOMPtr<nsIOutputStream> outputStream;
|
||||
storageStream->GetOutputStream(0, getter_AddRefs(outputStream));
|
||||
|
||||
stream = do_CreateInstance("@mozilla.org/binaryoutputstream;1");
|
||||
stream->SetOutputStream(outputStream);
|
||||
stream = NS_NewObjectOutputStream(outputStream);
|
||||
}
|
||||
|
||||
CheckedInt<uint32_t> formatLength =
|
||||
@ -1593,14 +1592,8 @@ DataTransfer::FillInExternalCustomTypes(nsIVariant* aData, uint32_t aIndex,
|
||||
nsCOMPtr<nsIInputStream> stringStream;
|
||||
NS_NewCStringInputStream(getter_AddRefs(stringStream), str);
|
||||
|
||||
nsCOMPtr<nsIBinaryInputStream> stream =
|
||||
do_CreateInstance("@mozilla.org/binaryinputstream;1");
|
||||
if (!stream) {
|
||||
return;
|
||||
}
|
||||
|
||||
rv = stream->SetInputStream(stringStream);
|
||||
NS_ENSURE_SUCCESS_VOID(rv);
|
||||
nsCOMPtr<nsIObjectInputStream> stream =
|
||||
NS_NewObjectInputStream(stringStream);
|
||||
|
||||
uint32_t type;
|
||||
do {
|
||||
|
@ -319,11 +319,8 @@ EventStateManager::UpdateUserActivityTimer()
|
||||
return NS_OK;
|
||||
|
||||
if (!gUserInteractionTimer) {
|
||||
CallCreateInstance("@mozilla.org/timer;1", &gUserInteractionTimer);
|
||||
if (gUserInteractionTimer) {
|
||||
gUserInteractionTimer->SetTarget(
|
||||
SystemGroup::EventTargetFor(TaskCategory::Other));
|
||||
}
|
||||
gUserInteractionTimer = NS_NewTimer(
|
||||
SystemGroup::EventTargetFor(TaskCategory::Other)).take();
|
||||
}
|
||||
|
||||
if (gUserInteractionTimer) {
|
||||
@ -1454,18 +1451,15 @@ EventStateManager::CreateClickHoldTimer(nsPresContext* inPresContext,
|
||||
return;
|
||||
}
|
||||
|
||||
mClickHoldTimer = do_CreateInstance("@mozilla.org/timer;1");
|
||||
if (mClickHoldTimer) {
|
||||
int32_t clickHoldDelay =
|
||||
Preferences::GetInt("ui.click_hold_context_menus.delay", 500);
|
||||
mClickHoldTimer->SetTarget(SystemGroup::EventTargetFor(TaskCategory::Other));
|
||||
mClickHoldTimer->InitWithNamedFuncCallback(
|
||||
sClickHoldCallback,
|
||||
this,
|
||||
clickHoldDelay,
|
||||
nsITimer::TYPE_ONE_SHOT,
|
||||
"EventStateManager::CreateClickHoldTimer");
|
||||
}
|
||||
int32_t clickHoldDelay =
|
||||
Preferences::GetInt("ui.click_hold_context_menus.delay", 500);
|
||||
NS_NewTimerWithFuncCallback(getter_AddRefs(mClickHoldTimer),
|
||||
sClickHoldCallback,
|
||||
this,
|
||||
clickHoldDelay,
|
||||
nsITimer::TYPE_ONE_SHOT,
|
||||
"EventStateManager::CreateClickHoldTimer",
|
||||
SystemGroup::EventTargetFor(TaskCategory::Other));
|
||||
} // CreateClickHoldTimer
|
||||
|
||||
//
|
||||
|
@ -324,11 +324,10 @@ WheelTransaction::OnTimeout(nsITimer* aTimer, void* aClosure)
|
||||
WheelTransaction::SetTimeout()
|
||||
{
|
||||
if (!sTimer) {
|
||||
nsCOMPtr<nsITimer> timer = do_CreateInstance(NS_TIMER_CONTRACTID);
|
||||
if (!timer) {
|
||||
sTimer = NS_NewTimer().take();
|
||||
if (!sTimer) {
|
||||
return;
|
||||
}
|
||||
timer.swap(sTimer);
|
||||
}
|
||||
sTimer->Cancel();
|
||||
DebugOnly<nsresult> rv =
|
||||
|
@ -175,6 +175,7 @@ skip-if = toolkit == 'android' #CRASH_DUMP, RANDOM
|
||||
[test_onerror_handler_args.html]
|
||||
[test_passive_listeners.html]
|
||||
[test_paste_image.html]
|
||||
skip-if = headless # Bug 1405869
|
||||
[test_wheel_default_action.html]
|
||||
[test_bug687787.html]
|
||||
[test_bug1305458.html]
|
||||
|
@ -529,7 +529,7 @@ void
|
||||
FileReader::StartProgressEventTimer()
|
||||
{
|
||||
if (!mProgressNotifier) {
|
||||
mProgressNotifier = do_CreateInstance(NS_TIMER_CONTRACTID);
|
||||
mProgressNotifier = NS_NewTimer();
|
||||
}
|
||||
|
||||
if (mProgressNotifier) {
|
||||
|
@ -434,18 +434,10 @@ public:
|
||||
Create(nsTArray<nsWeakPtr>&& aArray)
|
||||
{
|
||||
RefPtr<ReleasingTimerHolder> holder = new ReleasingTimerHolder(Move(aArray));
|
||||
holder->mTimer = do_CreateInstance(NS_TIMER_CONTRACTID);
|
||||
|
||||
// If we are shutting down, we are not able to create a timer.
|
||||
if (!holder->mTimer) {
|
||||
return;
|
||||
}
|
||||
|
||||
MOZ_ALWAYS_SUCCEEDS(holder->mTimer->SetTarget(
|
||||
SystemGroup::EventTargetFor(TaskCategory::Other)));
|
||||
|
||||
nsresult rv = holder->mTimer->InitWithCallback(holder, RELEASING_TIMER,
|
||||
nsITimer::TYPE_ONE_SHOT);
|
||||
nsresult rv = NS_NewTimerWithCallback(getter_AddRefs(holder->mTimer),
|
||||
holder, RELEASING_TIMER,
|
||||
nsITimer::TYPE_ONE_SHOT,
|
||||
SystemGroup::EventTargetFor(TaskCategory::Other));
|
||||
NS_ENSURE_SUCCESS_VOID(rv);
|
||||
}
|
||||
|
||||
|
@ -670,12 +670,12 @@ FlyWebMDNSService::Init()
|
||||
{
|
||||
MOZ_ASSERT(mDiscoveryState == DISCOVERY_IDLE);
|
||||
|
||||
mDiscoveryStartTimer = do_CreateInstance("@mozilla.org/timer;1");
|
||||
mDiscoveryStartTimer = NS_NewTimer();
|
||||
if (!mDiscoveryStartTimer) {
|
||||
return NS_ERROR_FAILURE;
|
||||
}
|
||||
|
||||
mDiscoveryStopTimer = do_CreateInstance("@mozilla.org/timer;1");
|
||||
mDiscoveryStopTimer = NS_NewTimer();
|
||||
if (!mDiscoveryStopTimer) {
|
||||
return NS_ERROR_FAILURE;
|
||||
}
|
||||
|
@ -354,9 +354,9 @@ class WindowsGamepadService
|
||||
public:
|
||||
WindowsGamepadService()
|
||||
{
|
||||
mDirectInputTimer = do_CreateInstance("@mozilla.org/timer;1");
|
||||
mXInputTimer = do_CreateInstance("@mozilla.org/timer;1");
|
||||
mDeviceChangeTimer = do_CreateInstance("@mozilla.org/timer;1");
|
||||
mDirectInputTimer = NS_NewTimer();
|
||||
mXInputTimer = NS_NewTimer();
|
||||
mDeviceChangeTimer = NS_NewTimer();
|
||||
}
|
||||
virtual ~WindowsGamepadService()
|
||||
{
|
||||
|
@ -28,11 +28,8 @@ MLSFallback::Startup(nsIGeolocationUpdate* aWatcher)
|
||||
}
|
||||
|
||||
mUpdateWatcher = aWatcher;
|
||||
nsresult rv;
|
||||
mHandoffTimer = do_CreateInstance("@mozilla.org/timer;1", &rv);
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
rv = mHandoffTimer->InitWithCallback(this, mDelayMs, nsITimer::TYPE_ONE_SHOT);
|
||||
return rv;
|
||||
return NS_NewTimerWithCallback(getter_AddRefs(mHandoffTimer),
|
||||
this, mDelayMs, nsITimer::TYPE_ONE_SHOT);
|
||||
}
|
||||
|
||||
nsresult
|
||||
|
@ -522,9 +522,9 @@ nsGeolocationRequest::SetTimeoutTimer()
|
||||
StopTimeoutTimer();
|
||||
|
||||
if (mOptions && mOptions->mTimeout != 0 && mOptions->mTimeout != 0x7fffffff) {
|
||||
mTimeoutTimer = do_CreateInstance("@mozilla.org/timer;1");
|
||||
RefPtr<TimerCallbackHolder> holder = new TimerCallbackHolder(this);
|
||||
mTimeoutTimer->InitWithCallback(holder, mOptions->mTimeout, nsITimer::TYPE_ONE_SHOT);
|
||||
NS_NewTimerWithCallback(getter_AddRefs(mTimeoutTimer),
|
||||
holder, mOptions->mTimeout, nsITimer::TYPE_ONE_SHOT);
|
||||
}
|
||||
}
|
||||
|
||||
@ -867,7 +867,7 @@ void
|
||||
nsGeolocationService::SetDisconnectTimer()
|
||||
{
|
||||
if (!mDisconnectTimer) {
|
||||
mDisconnectTimer = do_CreateInstance("@mozilla.org/timer;1");
|
||||
mDisconnectTimer = NS_NewTimer();
|
||||
} else {
|
||||
mDisconnectTimer->Cancel();
|
||||
}
|
||||
|
@ -4580,12 +4580,11 @@ void HTMLMediaElement::HiddenVideoStart()
|
||||
// Already started, just keep it running.
|
||||
return;
|
||||
}
|
||||
mVideoDecodeSuspendTimer = do_CreateInstance("@mozilla.org/timer;1");
|
||||
mVideoDecodeSuspendTimer->SetTarget(mMainThreadEventTarget);
|
||||
mVideoDecodeSuspendTimer->InitWithNamedFuncCallback(
|
||||
VideoDecodeSuspendTimerCallback, this,
|
||||
MediaPrefs::MDSMSuspendBackgroundVideoDelay(), nsITimer::TYPE_ONE_SHOT,
|
||||
"HTMLMediaElement::VideoDecodeSuspendTimerCallback");
|
||||
NS_NewTimerWithFuncCallback(getter_AddRefs(mVideoDecodeSuspendTimer),
|
||||
VideoDecodeSuspendTimerCallback, this,
|
||||
MediaPrefs::MDSMSuspendBackgroundVideoDelay(), nsITimer::TYPE_ONE_SHOT,
|
||||
"HTMLMediaElement::VideoDecodeSuspendTimerCallback",
|
||||
mMainThreadEventTarget);
|
||||
}
|
||||
|
||||
void HTMLMediaElement::HiddenVideoStop()
|
||||
@ -5789,11 +5788,10 @@ void HTMLMediaElement::StartProgressTimer()
|
||||
MOZ_ASSERT(mNetworkState == nsIDOMHTMLMediaElement::NETWORK_LOADING);
|
||||
NS_ASSERTION(!mProgressTimer, "Already started progress timer.");
|
||||
|
||||
mProgressTimer = do_CreateInstance("@mozilla.org/timer;1");
|
||||
mProgressTimer->SetTarget(mMainThreadEventTarget);
|
||||
mProgressTimer->InitWithNamedFuncCallback(
|
||||
ProgressTimerCallback, this, PROGRESS_MS, nsITimer::TYPE_REPEATING_SLACK,
|
||||
"HTMLMediaElement::ProgressTimerCallback");
|
||||
NS_NewTimerWithFuncCallback(getter_AddRefs(mProgressTimer),
|
||||
ProgressTimerCallback, this, PROGRESS_MS, nsITimer::TYPE_REPEATING_SLACK,
|
||||
"HTMLMediaElement::ProgressTimerCallback",
|
||||
mMainThreadEventTarget);
|
||||
}
|
||||
|
||||
void HTMLMediaElement::StartProgress()
|
||||
|
@ -278,7 +278,7 @@ nsHTMLDNSPrefetch::nsDeferrals::nsDeferrals()
|
||||
mActiveLoaderCount(0),
|
||||
mTimerArmed(false)
|
||||
{
|
||||
mTimer = do_CreateInstance("@mozilla.org/timer;1");
|
||||
mTimer = NS_NewTimer();;
|
||||
}
|
||||
|
||||
nsHTMLDNSPrefetch::nsDeferrals::~nsDeferrals()
|
||||
|
@ -11992,7 +11992,7 @@ DatabaseUpdateFunction::UpdateInternal(int64_t aId,
|
||||
|
||||
ConnectionPool::ConnectionPool()
|
||||
: mDatabasesMutex("ConnectionPool::mDatabasesMutex")
|
||||
, mIdleTimer(do_CreateInstance(NS_TIMER_CONTRACTID))
|
||||
, mIdleTimer(NS_NewTimer())
|
||||
, mNextTransactionId(0)
|
||||
, mTotalThreadCount(0)
|
||||
, mShutdownRequested(false)
|
||||
|
@ -388,7 +388,7 @@ IndexedDatabaseManager::Init()
|
||||
obs->AddObserver(this, DISKSPACEWATCHER_OBSERVER_TOPIC, false);
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
mDeleteTimer = do_CreateInstance(NS_TIMER_CONTRACTID);
|
||||
mDeleteTimer = NS_NewTimer();
|
||||
NS_ENSURE_STATE(mDeleteTimer);
|
||||
|
||||
if (QuotaManager* quotaManager = QuotaManager::Get()) {
|
||||
|
@ -2950,14 +2950,13 @@ ContentChild::StartForceKillTimer()
|
||||
|
||||
int32_t timeoutSecs = Preferences::GetInt("dom.ipc.tabs.shutdownTimeoutSecs", 5);
|
||||
if (timeoutSecs > 0) {
|
||||
mForceKillTimer = do_CreateInstance("@mozilla.org/timer;1");
|
||||
NS_NewTimerWithFuncCallback(getter_AddRefs(mForceKillTimer),
|
||||
ContentChild::ForceKillTimerCallback,
|
||||
this,
|
||||
timeoutSecs * 1000,
|
||||
nsITimer::TYPE_ONE_SHOT,
|
||||
"dom::ContentChild::StartForceKillTimer");
|
||||
MOZ_ASSERT(mForceKillTimer);
|
||||
mForceKillTimer->InitWithNamedFuncCallback(
|
||||
ContentChild::ForceKillTimerCallback,
|
||||
this,
|
||||
timeoutSecs * 1000,
|
||||
nsITimer::TYPE_ONE_SHOT,
|
||||
"dom::ContentChild::StartForceKillTimer");
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1906,14 +1906,13 @@ ContentParent::StartForceKillTimer()
|
||||
|
||||
int32_t timeoutSecs = Preferences::GetInt("dom.ipc.tabs.shutdownTimeoutSecs", 5);
|
||||
if (timeoutSecs > 0) {
|
||||
mForceKillTimer = do_CreateInstance("@mozilla.org/timer;1");
|
||||
NS_NewTimerWithFuncCallback(getter_AddRefs(mForceKillTimer),
|
||||
ContentParent::ForceKillTimerCallback,
|
||||
this,
|
||||
timeoutSecs * 1000,
|
||||
nsITimer::TYPE_ONE_SHOT,
|
||||
"dom::ContentParent::StartForceKillTimer");
|
||||
MOZ_ASSERT(mForceKillTimer);
|
||||
mForceKillTimer->InitWithNamedFuncCallback(
|
||||
ContentParent::ForceKillTimerCallback,
|
||||
this,
|
||||
timeoutSecs * 1000,
|
||||
nsITimer::TYPE_ONE_SHOT,
|
||||
"dom::ContentParent::StartForceKillTimer");
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -813,8 +813,8 @@ ParticularProcessPriorityManager::ScheduleResetPriority(TimeoutPref aTimeoutPref
|
||||
}
|
||||
|
||||
LOGP("Scheduling reset timer to fire in %dms.", timeout);
|
||||
mResetPriorityTimer = do_CreateInstance(NS_TIMER_CONTRACTID);
|
||||
mResetPriorityTimer->InitWithCallback(this, timeout, nsITimer::TYPE_ONE_SHOT);
|
||||
NS_NewTimerWithCallback(getter_AddRefs(mResetPriorityTimer),
|
||||
this, timeout, nsITimer::TYPE_ONE_SHOT);
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
|
@ -140,15 +140,12 @@ public:
|
||||
return;
|
||||
}
|
||||
|
||||
mTimer = do_CreateInstance(NS_TIMER_CONTRACTID);
|
||||
if (!mTimer) {
|
||||
return;
|
||||
}
|
||||
mTimer->InitWithNamedFuncCallback(&TimerTick,
|
||||
this,
|
||||
int(1000 / mFPS),
|
||||
nsITimer::TYPE_REPEATING_SLACK,
|
||||
"dom::TimerDriver::TimerDriver");
|
||||
NS_NewTimerWithFuncCallback(getter_AddRefs(mTimer),
|
||||
&TimerTick,
|
||||
this,
|
||||
int(1000 / mFPS),
|
||||
nsITimer::TYPE_REPEATING_SLACK,
|
||||
"dom::TimerDriver::TimerDriver");
|
||||
}
|
||||
|
||||
static void TimerTick(nsITimer* aTimer, void* aClosure)
|
||||
|
@ -30,8 +30,7 @@ ChannelMediaDecoder::ResourceCallback::Connect(ChannelMediaDecoder* aDecoder)
|
||||
{
|
||||
MOZ_ASSERT(NS_IsMainThread());
|
||||
mDecoder = aDecoder;
|
||||
mTimer = do_CreateInstance("@mozilla.org/timer;1");
|
||||
mTimer->SetTarget(mAbstractMainThread->AsEventTarget());
|
||||
mTimer = NS_NewTimer(mAbstractMainThread->AsEventTarget());
|
||||
}
|
||||
|
||||
void
|
||||
|
@ -234,7 +234,7 @@ MediaDevices::OnDeviceChange()
|
||||
|
||||
if (!mFuzzTimer)
|
||||
{
|
||||
mFuzzTimer = do_CreateInstance(NS_TIMER_CONTRACTID);
|
||||
mFuzzTimer = NS_NewTimer();
|
||||
}
|
||||
|
||||
if (!mFuzzTimer) {
|
||||
|
@ -1502,13 +1502,10 @@ MediaStreamGraphImpl::ForceShutDown(media::ShutdownTicket* aShutdownTicket)
|
||||
// Avoid waiting forever for a graph to shut down
|
||||
// synchronously. Reports are that some 3rd-party audio drivers
|
||||
// occasionally hang in shutdown (both for us and Chrome).
|
||||
mShutdownTimer = do_CreateInstance(NS_TIMER_CONTRACTID);
|
||||
if (!mShutdownTimer) {
|
||||
return;
|
||||
}
|
||||
mShutdownTimer->InitWithCallback(this,
|
||||
MediaStreamGraph::AUDIO_CALLBACK_DRIVER_SHUTDOWN_TIMEOUT,
|
||||
nsITimer::TYPE_ONE_SHOT);
|
||||
NS_NewTimerWithCallback(getter_AddRefs(mShutdownTimer),
|
||||
this,
|
||||
MediaStreamGraph::AUDIO_CALLBACK_DRIVER_SHUTDOWN_TIMEOUT,
|
||||
nsITimer::TYPE_ONE_SHOT);
|
||||
}
|
||||
mForceShutDown = true;
|
||||
mForceShutdownTicket = aShutdownTicket;
|
||||
|
@ -20,7 +20,7 @@ NS_IMPL_RELEASE_WITH_DESTROY(MediaTimer, DispatchDestroy())
|
||||
|
||||
MediaTimer::MediaTimer()
|
||||
: mMonitor("MediaTimer Monitor")
|
||||
, mTimer(do_CreateInstance("@mozilla.org/timer;1"))
|
||||
, mTimer(NS_NewTimer())
|
||||
, mCreationTimeStamp(TimeStamp::Now())
|
||||
, mUpdateScheduled(false)
|
||||
{
|
||||
|
@ -367,23 +367,13 @@ SimpleTimer::Init(nsIRunnable* aTask, uint32_t aTimeoutMs, nsIEventTarget* aTarg
|
||||
}
|
||||
}
|
||||
|
||||
nsCOMPtr<nsITimer> timer = do_CreateInstance(NS_TIMER_CONTRACTID, &rv);
|
||||
if (NS_FAILED(rv)) {
|
||||
return rv;
|
||||
}
|
||||
// Note: set target before InitWithCallback in case the timer fires before
|
||||
// we change the event target.
|
||||
rv = timer->SetTarget(target);
|
||||
if (NS_FAILED(rv)) {
|
||||
timer->Cancel();
|
||||
return rv;
|
||||
}
|
||||
rv = timer->InitWithCallback(this, aTimeoutMs, nsITimer::TYPE_ONE_SHOT);
|
||||
rv = NS_NewTimerWithCallback(getter_AddRefs(mTimer),
|
||||
this, aTimeoutMs, nsITimer::TYPE_ONE_SHOT,
|
||||
target);
|
||||
if (NS_FAILED(rv)) {
|
||||
return rv;
|
||||
}
|
||||
|
||||
mTimer = timer.forget();
|
||||
mTask = aTask;
|
||||
return NS_OK;
|
||||
}
|
||||
|
@ -227,15 +227,8 @@ DecoderDoctorDocumentWatcher::EnsureTimerIsStarted()
|
||||
MOZ_ASSERT(NS_IsMainThread());
|
||||
|
||||
if (!mTimer) {
|
||||
mTimer = do_CreateInstance(NS_TIMER_CONTRACTID);
|
||||
if (NS_WARN_IF(!mTimer)) {
|
||||
return;
|
||||
}
|
||||
if (NS_WARN_IF(NS_FAILED(
|
||||
mTimer->InitWithCallback(
|
||||
this, sAnalysisPeriod_ms, nsITimer::TYPE_ONE_SHOT)))) {
|
||||
mTimer = nullptr;
|
||||
}
|
||||
NS_NewTimerWithCallback(getter_AddRefs(mTimer),
|
||||
this, sAnalysisPeriod_ms, nsITimer::TYPE_ONE_SHOT);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -281,8 +281,10 @@ MediaKeySystemAccessManager::AwaitInstall(DetailedPromise* aPromise,
|
||||
return false;
|
||||
}
|
||||
|
||||
nsCOMPtr<nsITimer> timer(do_CreateInstance("@mozilla.org/timer;1"));
|
||||
if (!timer || NS_FAILED(timer->Init(this, 60 * 1000, nsITimer::TYPE_ONE_SHOT))) {
|
||||
nsCOMPtr<nsITimer> timer;
|
||||
NS_NewTimerWithObserver(getter_AddRefs(timer),
|
||||
this, 60 * 1000, nsITimer::TYPE_ONE_SHOT);
|
||||
if (!timer) {
|
||||
NS_WARNING("Failed to create timer to await CDM install.");
|
||||
return false;
|
||||
}
|
||||
|
@ -46,22 +46,19 @@ GMPTimerParent::RecvSetTimer(const uint32_t& aTimerId,
|
||||
|
||||
nsresult rv;
|
||||
nsAutoPtr<Context> ctx(new Context());
|
||||
ctx->mTimer = do_CreateInstance("@mozilla.org/timer;1", &rv);
|
||||
|
||||
rv = NS_NewTimerWithFuncCallback(getter_AddRefs(ctx->mTimer),
|
||||
&GMPTimerParent::GMPTimerExpired,
|
||||
ctx,
|
||||
aTimeoutMs,
|
||||
nsITimer::TYPE_ONE_SHOT,
|
||||
"gmp::GMPTimerParent::RecvSetTimer",
|
||||
mGMPEventTarget);
|
||||
NS_ENSURE_SUCCESS(rv, IPC_OK());
|
||||
|
||||
ctx->mId = aTimerId;
|
||||
rv = ctx->mTimer->SetTarget(mGMPEventTarget);
|
||||
NS_ENSURE_SUCCESS(rv, IPC_OK());
|
||||
ctx->mParent = this;
|
||||
|
||||
rv =
|
||||
ctx->mTimer->InitWithNamedFuncCallback(&GMPTimerParent::GMPTimerExpired,
|
||||
ctx,
|
||||
aTimeoutMs,
|
||||
nsITimer::TYPE_ONE_SHOT,
|
||||
"gmp::GMPTimerParent::RecvSetTimer");
|
||||
NS_ENSURE_SUCCESS(rv, IPC_OK());
|
||||
|
||||
mTimers.PutEntry(ctx.forget());
|
||||
|
||||
return IPC_OK();
|
||||
|
@ -178,7 +178,7 @@ MediaEngineDefaultVideoSource::Start(SourceMediaStream* aStream, TrackID aID,
|
||||
return NS_ERROR_FAILURE;
|
||||
}
|
||||
|
||||
mTimer = do_CreateInstance(NS_TIMER_CONTRACTID);
|
||||
mTimer = NS_NewTimer();
|
||||
if (!mTimer) {
|
||||
return NS_ERROR_FAILURE;
|
||||
}
|
||||
|
@ -51,8 +51,9 @@ nsresult
|
||||
MediaEngineTabVideoSource::StartRunnable::Run()
|
||||
{
|
||||
mVideoSource->Draw();
|
||||
mVideoSource->mTimer = do_CreateInstance(NS_TIMER_CONTRACTID);
|
||||
mVideoSource->mTimer->InitWithCallback(mVideoSource, mVideoSource->mTimePerFrame, nsITimer:: TYPE_REPEATING_SLACK);
|
||||
NS_NewTimerWithCallback(getter_AddRefs(mVideoSource->mTimer),
|
||||
mVideoSource, mVideoSource->mTimePerFrame,
|
||||
nsITimer::TYPE_REPEATING_SLACK);
|
||||
if (mVideoSource->mTabSource) {
|
||||
mVideoSource->mTabSource->NotifyStreamStart(mVideoSource->mWindow);
|
||||
}
|
||||
|
@ -117,7 +117,7 @@ SpeechRecognition::SpeechRecognition(nsPIDOMWindowInner* aOwnerWindow)
|
||||
: DOMEventTargetHelper(aOwnerWindow)
|
||||
, mEndpointer(kSAMPLE_RATE)
|
||||
, mAudioSamplesPerChunk(mEndpointer.FrameSize())
|
||||
, mSpeechDetectionTimer(do_CreateInstance(NS_TIMER_CONTRACTID))
|
||||
, mSpeechDetectionTimer(NS_NewTimer())
|
||||
, mSpeechGrammarList(new SpeechGrammarList(GetParentObject()))
|
||||
, mInterimResults(false)
|
||||
, mMaxAlternatives(1)
|
||||
|
@ -1031,18 +1031,17 @@ nsNPAPIPluginInstance::ScheduleTimer(uint32_t interval, NPBool repeat, void (*ti
|
||||
|
||||
// create new xpcom timer, scheduled correctly
|
||||
nsresult rv;
|
||||
nsCOMPtr<nsITimer> xpcomTimer = do_CreateInstance(NS_TIMER_CONTRACTID, &rv);
|
||||
const short timerType = (repeat ? (short)nsITimer::TYPE_REPEATING_SLACK : (short)nsITimer::TYPE_ONE_SHOT);
|
||||
rv = NS_NewTimerWithFuncCallback(getter_AddRefs(newTimer->timer),
|
||||
PluginTimerCallback,
|
||||
newTimer,
|
||||
interval,
|
||||
timerType,
|
||||
"nsNPAPIPluginInstance::ScheduleTimer");
|
||||
if (NS_FAILED(rv)) {
|
||||
delete newTimer;
|
||||
return 0;
|
||||
}
|
||||
const short timerType = (repeat ? (short)nsITimer::TYPE_REPEATING_SLACK : (short)nsITimer::TYPE_ONE_SHOT);
|
||||
xpcomTimer->InitWithNamedFuncCallback(PluginTimerCallback,
|
||||
newTimer,
|
||||
interval,
|
||||
timerType,
|
||||
"nsNPAPIPluginInstance::ScheduleTimer");
|
||||
newTimer->timer = xpcomTimer;
|
||||
|
||||
// save callback function
|
||||
newTimer->callback = timerFunc;
|
||||
|
@ -272,14 +272,10 @@ nsNPAPIPluginStreamListener::ResumeRequest()
|
||||
nsresult
|
||||
nsNPAPIPluginStreamListener::StartDataPump()
|
||||
{
|
||||
nsresult rv;
|
||||
mDataPumpTimer = do_CreateInstance("@mozilla.org/timer;1", &rv);
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
// Start pumping data to the plugin every 100ms until it obeys and
|
||||
// eats the data.
|
||||
return mDataPumpTimer->InitWithCallback(this, 100,
|
||||
nsITimer::TYPE_REPEATING_SLACK);
|
||||
return NS_NewTimerWithCallback(getter_AddRefs(mDataPumpTimer),
|
||||
this, 100, nsITimer::TYPE_REPEATING_SLACK);
|
||||
}
|
||||
|
||||
void
|
||||
|
@ -657,7 +657,7 @@ void nsPluginHost::OnPluginInstanceDestroyed(nsPluginTag* aPluginTag)
|
||||
if (aPluginTag->mUnloadTimer) {
|
||||
aPluginTag->mUnloadTimer->Cancel();
|
||||
} else {
|
||||
aPluginTag->mUnloadTimer = do_CreateInstance(NS_TIMER_CONTRACTID);
|
||||
aPluginTag->mUnloadTimer = NS_NewTimer();
|
||||
}
|
||||
uint32_t unloadTimeout = Preferences::GetUint(kPrefUnloadPluginTimeoutSecs,
|
||||
kDefaultPluginUnloadingTimeout);
|
||||
|
@ -1287,8 +1287,7 @@ NPEventModel nsPluginInstanceOwner::GetEventModel()
|
||||
}
|
||||
|
||||
#define DEFAULT_REFRESH_RATE 20 // 50 FPS
|
||||
|
||||
nsCOMPtr<nsITimer> *nsPluginInstanceOwner::sCATimer = nullptr;
|
||||
StaticRefPtr<nsITimer> nsPluginInstanceOwner::sCATimer;
|
||||
nsTArray<nsPluginInstanceOwner*> *nsPluginInstanceOwner::sCARefreshListeners = nullptr;
|
||||
|
||||
void nsPluginInstanceOwner::CARefresh(nsITimer *aTimer, void *aClosure) {
|
||||
@ -1334,15 +1333,13 @@ void nsPluginInstanceOwner::AddToCARefreshTimer() {
|
||||
|
||||
sCARefreshListeners->AppendElement(this);
|
||||
|
||||
if (!sCATimer) {
|
||||
sCATimer = new nsCOMPtr<nsITimer>();
|
||||
}
|
||||
|
||||
if (sCARefreshListeners->Length() == 1) {
|
||||
*sCATimer = do_CreateInstance("@mozilla.org/timer;1");
|
||||
(*sCATimer)->InitWithNamedFuncCallback(CARefresh, nullptr,
|
||||
DEFAULT_REFRESH_RATE, nsITimer::TYPE_REPEATING_SLACK,
|
||||
"nsPluginInstanceOwner::CARefresh");
|
||||
nsCOMPtr<nsITimer> timer;
|
||||
NS_NewTimerWithFuncCallback(getter_AddRefs(timer),
|
||||
CARefresh, nullptr,
|
||||
DEFAULT_REFRESH_RATE, nsITimer::TYPE_REPEATING_SLACK,
|
||||
"nsPluginInstanceOwner::CARefresh");
|
||||
sCATimer = timer.forget();
|
||||
}
|
||||
}
|
||||
|
||||
@ -1355,8 +1352,7 @@ void nsPluginInstanceOwner::RemoveFromCARefreshTimer() {
|
||||
|
||||
if (sCARefreshListeners->Length() == 0) {
|
||||
if (sCATimer) {
|
||||
(*sCATimer)->Cancel();
|
||||
delete sCATimer;
|
||||
sCATimer->Cancel();
|
||||
sCATimer = nullptr;
|
||||
}
|
||||
delete sCARefreshListeners;
|
||||
|
@ -8,6 +8,7 @@
|
||||
#define nsPluginInstanceOwner_h_
|
||||
|
||||
#include "mozilla/Attributes.h"
|
||||
#include "mozilla/StaticPtr.h"
|
||||
#include "npapi.h"
|
||||
#include "nsCOMPtr.h"
|
||||
#include "nsIKeyEventInPluginCallback.h"
|
||||
@ -308,7 +309,7 @@ private:
|
||||
RefPtr<nsPluginHost> mPluginHost;
|
||||
|
||||
#ifdef XP_MACOSX
|
||||
static nsCOMPtr<nsITimer> *sCATimer;
|
||||
static mozilla::StaticRefPtr<nsITimer> sCATimer;
|
||||
static nsTArray<nsPluginInstanceOwner*> *sCARefreshListeners;
|
||||
bool mSentInitialTopLevelWindowEvent;
|
||||
bool mLastWindowIsActive;
|
||||
|
@ -1172,11 +1172,8 @@ PresentationPresentingInfo::Init(nsIPresentationControlChannel* aControlChannel)
|
||||
nsresult rv;
|
||||
int32_t timeout =
|
||||
Preferences::GetInt("presentation.receiver.loading.timeout", 10000);
|
||||
mTimer = do_CreateInstance(NS_TIMER_CONTRACTID, &rv);
|
||||
if (NS_WARN_IF(NS_FAILED(rv))) {
|
||||
return rv;
|
||||
}
|
||||
rv = mTimer->InitWithCallback(this, timeout, nsITimer::TYPE_ONE_SHOT);
|
||||
rv = NS_NewTimerWithCallback(getter_AddRefs(mTimer),
|
||||
this, timeout, nsITimer::TYPE_ONE_SHOT);
|
||||
if (NS_WARN_IF(NS_FAILED(rv))) {
|
||||
return rv;
|
||||
}
|
||||
|
@ -144,14 +144,14 @@ MulticastDNSDeviceProvider::Init()
|
||||
return rv;
|
||||
}
|
||||
|
||||
mDiscoveryTimer = do_CreateInstance(NS_TIMER_CONTRACTID, &rv);
|
||||
if (NS_WARN_IF(NS_FAILED(rv))) {
|
||||
return rv;
|
||||
mDiscoveryTimer = NS_NewTimer();
|
||||
if (NS_WARN_IF(!mDiscoveryTimer)) {
|
||||
return NS_ERROR_OUT_OF_MEMORY;
|
||||
}
|
||||
|
||||
mServerRetryTimer = do_CreateInstance(NS_TIMER_CONTRACTID, &rv);
|
||||
if (NS_WARN_IF(NS_FAILED(rv))) {
|
||||
return rv;
|
||||
mServerRetryTimer = NS_NewTimer();
|
||||
if (NS_WARN_IF(!mServerRetryTimer)) {
|
||||
return NS_ERROR_OUT_OF_MEMORY;
|
||||
}
|
||||
Preferences::AddStrongObservers(this, kObservedPrefs);
|
||||
|
||||
|
@ -8,8 +8,8 @@
|
||||
|
||||
#include "mozIStorageConnection.h"
|
||||
#include "mozIStorageService.h"
|
||||
#include "nsIBinaryInputStream.h"
|
||||
#include "nsIBinaryOutputStream.h"
|
||||
#include "nsIObjectInputStream.h"
|
||||
#include "nsIObjectOutputStream.h"
|
||||
#include "nsIFile.h"
|
||||
#include "nsIFileStreams.h"
|
||||
#include "nsIObserverService.h"
|
||||
@ -2140,18 +2140,14 @@ GetBinaryOutputStream(nsIFile* aFile,
|
||||
return rv;
|
||||
}
|
||||
|
||||
nsCOMPtr<nsIBinaryOutputStream> binaryStream =
|
||||
do_CreateInstance("@mozilla.org/binaryoutputstream;1");
|
||||
if (NS_WARN_IF(!binaryStream)) {
|
||||
return NS_ERROR_FAILURE;
|
||||
if (NS_WARN_IF(!outputStream)) {
|
||||
return NS_ERROR_UNEXPECTED;
|
||||
}
|
||||
|
||||
rv = binaryStream->SetOutputStream(outputStream);
|
||||
if (NS_WARN_IF(NS_FAILED(rv))) {
|
||||
return rv;
|
||||
}
|
||||
nsCOMPtr<nsIObjectOutputStream> objectOutputStream =
|
||||
NS_NewObjectOutputStream(outputStream);
|
||||
|
||||
binaryStream.forget(aStream);
|
||||
objectOutputStream.forget(aStream);
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
@ -3623,7 +3619,7 @@ QuotaManager::Init(const nsAString& aBasePath)
|
||||
|
||||
// Make a timer here to avoid potential failures later. We don't actually
|
||||
// initialize the timer until shutdown.
|
||||
mShutdownTimer = do_CreateInstance(NS_TIMER_CONTRACTID);
|
||||
mShutdownTimer = NS_NewTimer();
|
||||
if (NS_WARN_IF(!mShutdownTimer)) {
|
||||
return NS_ERROR_FAILURE;
|
||||
}
|
||||
|
@ -20,7 +20,7 @@ support-files =
|
||||
[test_main.html]
|
||||
skip-if = toolkit == 'android' #TIMED_OUT
|
||||
[test_bug803225.html]
|
||||
skip-if = toolkit == 'android' || (os=='linux' && bits==32) #Android: TIMED_OUT; Linux32:bug 1324870
|
||||
skip-if = toolkit == 'android' || (os=='linux' && bits==32) || headless #Android: TIMED_OUT; Linux32:bug 1324870; Headless:bug 1405870
|
||||
[test_frameNavigation.html]
|
||||
skip-if = toolkit == 'android' #TIMED_OUT
|
||||
[test_redirect.html]
|
||||
|
@ -211,14 +211,8 @@ StorageObserver::Observe(nsISupports* aSubject,
|
||||
nsCOMPtr<nsIObserverService> obs = mozilla::services::GetObserverService();
|
||||
obs->RemoveObserver(this, kStartupTopic);
|
||||
|
||||
mDBThreadStartDelayTimer = do_CreateInstance(NS_TIMER_CONTRACTID);
|
||||
if (!mDBThreadStartDelayTimer) {
|
||||
return NS_ERROR_UNEXPECTED;
|
||||
}
|
||||
|
||||
mDBThreadStartDelayTimer->Init(this, nsITimer::TYPE_ONE_SHOT, kStartupDelay);
|
||||
|
||||
return NS_OK;
|
||||
return NS_NewTimerWithObserver(getter_AddRefs(mDBThreadStartDelayTimer),
|
||||
this, nsITimer::TYPE_ONE_SHOT, kStartupDelay);
|
||||
}
|
||||
|
||||
// Timer callback used to start the database a short timer after startup
|
||||
|
@ -34,8 +34,7 @@ public:
|
||||
private:
|
||||
~VREventObserver();
|
||||
|
||||
// Weak pointer, instance is owned by mWindow.
|
||||
nsGlobalWindow* MOZ_NON_OWNING_REF mWindow;
|
||||
RefPtr<nsGlobalWindow> mWindow;
|
||||
// For WebVR telemetry for tracking users who view content
|
||||
// in the 2D view.
|
||||
TimeStamp mSpendTimeIn2DView;
|
||||
|
@ -1984,7 +1984,7 @@ RuntimeService::Init()
|
||||
do_GetService(kStreamTransportServiceCID, &rv);
|
||||
NS_ENSURE_TRUE(sts, NS_ERROR_FAILURE);
|
||||
|
||||
mIdleThreadTimer = do_CreateInstance(NS_TIMER_CONTRACTID);
|
||||
mIdleThreadTimer = NS_NewTimer();
|
||||
NS_ENSURE_STATE(mIdleThreadTimer);
|
||||
|
||||
nsCOMPtr<nsIObserverService> obs = services::GetObserverService();
|
||||
|
@ -4340,23 +4340,18 @@ ServiceWorkerManager::ScheduleUpdateTimer(nsIPrincipal* aPrincipal,
|
||||
return;
|
||||
}
|
||||
|
||||
timer = do_CreateInstance("@mozilla.org/timer;1", &rv);
|
||||
if (NS_WARN_IF(NS_FAILED(rv))) {
|
||||
data->mUpdateTimers.Remove(aScope); // another lookup, but very rare
|
||||
return;
|
||||
}
|
||||
|
||||
// Label with SystemGroup because UpdateTimerCallback only sends an IPC message
|
||||
// (PServiceWorkerUpdaterConstructor) without touching any web contents.
|
||||
timer->SetTarget(SystemGroup::EventTargetFor(TaskCategory::Other));
|
||||
|
||||
nsCOMPtr<nsITimerCallback> callback = new UpdateTimerCallback(aPrincipal,
|
||||
aScope);
|
||||
|
||||
const uint32_t UPDATE_DELAY_MS = 1000;
|
||||
|
||||
rv = timer->InitWithCallback(callback, UPDATE_DELAY_MS,
|
||||
nsITimer::TYPE_ONE_SHOT);
|
||||
// Label with SystemGroup because UpdateTimerCallback only sends an IPC message
|
||||
// (PServiceWorkerUpdaterConstructor) without touching any web contents.
|
||||
rv = NS_NewTimerWithCallback(getter_AddRefs(timer),
|
||||
callback, UPDATE_DELAY_MS,
|
||||
nsITimer::TYPE_ONE_SHOT,
|
||||
SystemGroup::EventTargetFor(TaskCategory::Other));
|
||||
|
||||
if (NS_WARN_IF(NS_FAILED(rv))) {
|
||||
data->mUpdateTimers.Remove(aScope); // another lookup, but very rare
|
||||
return;
|
||||
|
@ -89,7 +89,7 @@ ServiceWorkerPrivate::ServiceWorkerPrivate(ServiceWorkerInfo* aInfo)
|
||||
AssertIsOnMainThread();
|
||||
MOZ_ASSERT(aInfo);
|
||||
|
||||
mIdleWorkerTimer = do_CreateInstance(NS_TIMER_CONTRACTID);
|
||||
mIdleWorkerTimer = NS_NewTimer();
|
||||
MOZ_ASSERT(mIdleWorkerTimer);
|
||||
}
|
||||
|
||||
@ -1100,13 +1100,8 @@ class AllowWindowInteractionHandler final : public ExtendableEventCallback
|
||||
MOZ_ASSERT(!mTimer);
|
||||
|
||||
nsresult rv;
|
||||
nsCOMPtr<nsITimer> timer = do_CreateInstance(NS_TIMER_CONTRACTID, &rv);
|
||||
if (NS_WARN_IF(NS_FAILED(rv))) {
|
||||
return;
|
||||
}
|
||||
|
||||
rv = timer->SetTarget(aWorkerPrivate->ControlEventTarget());
|
||||
if (NS_WARN_IF(NS_FAILED(rv))) {
|
||||
nsCOMPtr<nsITimer> timer = NS_NewTimer(aWorkerPrivate->ControlEventTarget());
|
||||
if (NS_WARN_IF(!timer)) {
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -5296,7 +5296,7 @@ WorkerPrivate::InitializeGCTimers()
|
||||
// Once the worker goes idle we set a short (IDLE_GC_TIMER_DELAY_SEC) timer to
|
||||
// run a shrinking GC. If the worker receives more messages then the short
|
||||
// timer is canceled and the periodic timer resumes.
|
||||
mGCTimer = do_CreateInstance(NS_TIMER_CONTRACTID);
|
||||
mGCTimer = NS_NewTimer();
|
||||
MOZ_ASSERT(mGCTimer);
|
||||
|
||||
mPeriodicGCTimerRunning = false;
|
||||
@ -6482,12 +6482,10 @@ WorkerPrivate::SetTimeout(JSContext* aCx,
|
||||
// If the timeout we just made is set to fire next then we need to update the
|
||||
// timer, unless we're currently running timeouts.
|
||||
if (insertedInfo == mTimeouts.Elements() && !mRunningExpiredTimeouts) {
|
||||
nsresult rv;
|
||||
|
||||
if (!mTimer) {
|
||||
mTimer = do_CreateInstance(NS_TIMER_CONTRACTID, &rv);
|
||||
if (NS_FAILED(rv)) {
|
||||
aRv.Throw(rv);
|
||||
mTimer = NS_NewTimer();
|
||||
if (!mTimer) {
|
||||
aRv.Throw(NS_ERROR_UNEXPECTED);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -393,15 +393,13 @@ nsBindingManager::DoProcessAttachedQueue()
|
||||
// But don't poll in a tight loop -- otherwise we keep the Gecko
|
||||
// event loop non-empty and trigger bug 1021240 on OS X.
|
||||
nsresult rv = NS_ERROR_FAILURE;
|
||||
nsCOMPtr<nsITimer> timer = do_CreateInstance(NS_TIMER_CONTRACTID);
|
||||
if (timer) {
|
||||
rv = timer->InitWithNamedFuncCallback(
|
||||
PostPAQEventCallback,
|
||||
this,
|
||||
100,
|
||||
nsITimer::TYPE_ONE_SHOT,
|
||||
"nsBindingManager::DoProcessAttachedQueue");
|
||||
}
|
||||
nsCOMPtr<nsITimer> timer;
|
||||
rv = NS_NewTimerWithFuncCallback(getter_AddRefs(timer),
|
||||
PostPAQEventCallback,
|
||||
this,
|
||||
100,
|
||||
nsITimer::TYPE_ONE_SHOT,
|
||||
"nsBindingManager::DoProcessAttachedQueue");
|
||||
if (NS_SUCCEEDED(rv)) {
|
||||
NS_ADDREF_THIS();
|
||||
// We drop our reference to the timer here, since the timer callback is
|
||||
|
@ -3290,7 +3290,7 @@ XMLHttpRequestMainThread::StartTimeoutTimer()
|
||||
}
|
||||
|
||||
if (!mTimeoutTimer) {
|
||||
mTimeoutTimer = do_CreateInstance(NS_TIMER_CONTRACTID);
|
||||
mTimeoutTimer = NS_NewTimer();
|
||||
SetTimerEventTarget(mTimeoutTimer);
|
||||
}
|
||||
uint32_t elapsed =
|
||||
@ -3769,7 +3769,7 @@ void
|
||||
XMLHttpRequestMainThread::StartProgressEventTimer()
|
||||
{
|
||||
if (!mProgressNotifier) {
|
||||
mProgressNotifier = do_CreateInstance(NS_TIMER_CONTRACTID);
|
||||
mProgressNotifier = NS_NewTimer();
|
||||
SetTimerEventTarget(mProgressNotifier);
|
||||
}
|
||||
if (mProgressNotifier) {
|
||||
@ -3796,7 +3796,7 @@ XMLHttpRequestMainThread::MaybeStartSyncTimeoutTimer()
|
||||
return eErrorOrExpired;
|
||||
}
|
||||
|
||||
mSyncTimeoutTimer = do_CreateInstance(NS_TIMER_CONTRACTID);
|
||||
mSyncTimeoutTimer = NS_NewTimer();
|
||||
SetTimerEventTarget(mSyncTimeoutTimer);
|
||||
if (!mSyncTimeoutTimer) {
|
||||
return eErrorOrExpired;
|
||||
|
@ -399,11 +399,15 @@ nsXULPrototypeCache::GetOutputStream(nsIURI* uri, nsIObjectOutputStream** stream
|
||||
nsCOMPtr<nsIStorageStream> storageStream;
|
||||
bool found = mOutputStreamTable.Get(uri, getter_AddRefs(storageStream));
|
||||
if (found) {
|
||||
objectOutput = do_CreateInstance("mozilla.org/binaryoutputstream;1");
|
||||
if (!objectOutput) return NS_ERROR_OUT_OF_MEMORY;
|
||||
// Setting an output stream here causes crashes on Windows. The previous
|
||||
// version of this code always returned NS_ERROR_OUT_OF_MEMORY here,
|
||||
// because it used a mistyped contract ID to create its object stream.
|
||||
return NS_ERROR_NOT_IMPLEMENTED;
|
||||
#if 0
|
||||
nsCOMPtr<nsIOutputStream> outputStream
|
||||
= do_QueryInterface(storageStream);
|
||||
objectOutput->SetOutputStream(outputStream);
|
||||
objectOutput = NS_NewObjectOutputStream(outputStream);
|
||||
#endif
|
||||
} else {
|
||||
rv = NewObjectOutputWrappedStorageStream(getter_AddRefs(objectOutput),
|
||||
getter_AddRefs(storageStream),
|
||||
|
@ -225,9 +225,8 @@ nsresult
|
||||
nsComposerCommandsUpdater::PrimeUpdateTimer()
|
||||
{
|
||||
if (!mUpdateTimer) {
|
||||
nsresult rv = NS_OK;
|
||||
mUpdateTimer = do_CreateInstance("@mozilla.org/timer;1", &rv);
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
mUpdateTimer = NS_NewTimer();;
|
||||
NS_ENSURE_TRUE(mUpdateTimer, NS_ERROR_OUT_OF_MEMORY);
|
||||
}
|
||||
|
||||
const uint32_t kUpdateTimerDelay = 150;
|
||||
|
@ -967,16 +967,16 @@ nsEditingSession::EndDocumentLoad(nsIWebProgress *aWebProgress,
|
||||
mLoadBlankDocTimer = nullptr;
|
||||
}
|
||||
|
||||
mLoadBlankDocTimer = do_CreateInstance("@mozilla.org/timer;1", &rv);
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
mEditorStatus = eEditorCreationInProgress;
|
||||
mLoadBlankDocTimer->InitWithNamedFuncCallback(
|
||||
rv = NS_NewTimerWithFuncCallback(
|
||||
getter_AddRefs(mLoadBlankDocTimer),
|
||||
nsEditingSession::TimerCallback,
|
||||
static_cast<void*>(mDocShell.get()),
|
||||
10,
|
||||
nsITimer::TYPE_ONE_SHOT,
|
||||
"nsEditingSession::EndDocumentLoad");
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
mEditorStatus = eEditorCreationInProgress;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -713,8 +713,8 @@ TextEditRules::WillInsertText(EditAction aAction,
|
||||
if (mTimer) {
|
||||
mTimer->Cancel();
|
||||
} else {
|
||||
mTimer = do_CreateInstance("@mozilla.org/timer;1", &rv);
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
mTimer = NS_NewTimer();
|
||||
NS_ENSURE_TRUE(mTimer, NS_ERROR_OUT_OF_MEMORY);
|
||||
}
|
||||
mTimer->InitWithCallback(this, LookAndFeel::GetPasswordMaskDelay(),
|
||||
nsITimer::TYPE_ONE_SHOT);
|
||||
|
@ -3,6 +3,7 @@
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||
|
||||
#include "mozilla/ResultExtensions.h"
|
||||
#include "nsAutoConfig.h"
|
||||
#include "nsIURI.h"
|
||||
#include "nsIHttpChannel.h"
|
||||
@ -335,13 +336,8 @@ nsresult nsAutoConfig::downloadAutoConfig()
|
||||
if (NS_SUCCEEDED(rv) && minutes > 0) {
|
||||
// Create a new timer and pass this nsAutoConfig
|
||||
// object as a timer callback.
|
||||
mTimer = do_CreateInstance("@mozilla.org/timer;1",&rv);
|
||||
if (NS_FAILED(rv))
|
||||
return rv;
|
||||
rv = mTimer->InitWithCallback(this, minutes * 60 * 1000,
|
||||
nsITimer::TYPE_REPEATING_SLACK);
|
||||
if (NS_FAILED(rv))
|
||||
return rv;
|
||||
MOZ_TRY_VAR(mTimer, NS_NewTimerWithCallback(this, minutes * 60 * 1000,
|
||||
nsITimer::TYPE_REPEATING_SLACK));
|
||||
}
|
||||
} //first_time
|
||||
|
||||
|
@ -207,7 +207,7 @@ APZEventState::ProcessSingleTap(const CSSPoint& aPoint,
|
||||
LayoutDevicePoint ldPoint = aPoint * aScale;
|
||||
|
||||
APZES_LOG("Scheduling timer for click event\n");
|
||||
nsCOMPtr<nsITimer> timer = do_CreateInstance(NS_TIMER_CONTRACTID);
|
||||
nsCOMPtr<nsITimer> timer = NS_NewTimer();
|
||||
dom::TabChild* tabChild = widget->GetOwningTabChild();
|
||||
|
||||
if (tabChild && XRE_IsContentProcess()) {
|
||||
|
@ -62,8 +62,8 @@ TextureClientPool::TextureClientPool(LayersBackend aLayersBackend,
|
||||
{
|
||||
TCP_LOG("TexturePool %p created with maximum unused texture clients %u\n",
|
||||
this, mInitialPoolSize);
|
||||
mShrinkTimer = do_CreateInstance("@mozilla.org/timer;1");
|
||||
mClearTimer = do_CreateInstance("@mozilla.org/timer;1");
|
||||
mShrinkTimer = NS_NewTimer();
|
||||
mClearTimer = NS_NewTimer();
|
||||
if (aFormat == gfx::SurfaceFormat::UNKNOWN) {
|
||||
gfxWarning() << "Creating texture pool for SurfaceFormat::UNKNOWN format";
|
||||
}
|
||||
|
@ -1250,15 +1250,13 @@ gfxFcPlatformFontList::gfxFcPlatformFontList()
|
||||
int rescanInterval = FcConfigGetRescanInterval(nullptr);
|
||||
if (rescanInterval) {
|
||||
mLastConfig = FcConfigGetCurrent();
|
||||
mCheckFontUpdatesTimer = do_CreateInstance("@mozilla.org/timer;1");
|
||||
if (mCheckFontUpdatesTimer) {
|
||||
mCheckFontUpdatesTimer->InitWithNamedFuncCallback(
|
||||
CheckFontUpdates,
|
||||
this,
|
||||
(rescanInterval + 1) * 1000,
|
||||
nsITimer::TYPE_REPEATING_SLACK,
|
||||
"gfxFcPlatformFontList::gfxFcPlatformFontList");
|
||||
} else {
|
||||
NS_NewTimerWithFuncCallback(getter_AddRefs(mCheckFontUpdatesTimer),
|
||||
CheckFontUpdates,
|
||||
this,
|
||||
(rescanInterval + 1) * 1000,
|
||||
nsITimer::TYPE_REPEATING_SLACK,
|
||||
"gfxFcPlatformFontList::gfxFcPlatformFontList");
|
||||
if (!mCheckFontUpdatesTimer) {
|
||||
NS_WARNING("Failure to create font updates timer");
|
||||
}
|
||||
}
|
||||
|
@ -184,18 +184,17 @@ gfxFontCache::gfxFontCache(nsIEventTarget* aEventTarget)
|
||||
#ifndef RELEASE_OR_BETA
|
||||
// Currently disabled for release builds, due to unexplained crashes
|
||||
// during expiration; see bug 717175 & 894798.
|
||||
mWordCacheExpirationTimer = do_CreateInstance("@mozilla.org/timer;1");
|
||||
if (mWordCacheExpirationTimer) {
|
||||
if (XRE_IsContentProcess() && NS_IsMainThread()) {
|
||||
mWordCacheExpirationTimer->SetTarget(aEventTarget);
|
||||
}
|
||||
mWordCacheExpirationTimer->InitWithNamedFuncCallback(
|
||||
WordCacheExpirationTimerCallback,
|
||||
this,
|
||||
SHAPED_WORD_TIMEOUT_SECONDS * 1000,
|
||||
nsITimer::TYPE_REPEATING_SLACK,
|
||||
"gfxFontCache::gfxFontCache");
|
||||
nsIEventTarget* target = nullptr;
|
||||
if (XRE_IsContentProcess() && NS_IsMainThread()) {
|
||||
target = aEventTarget;
|
||||
}
|
||||
NS_NewTimerWithFuncCallback(getter_AddRefs(mWordCacheExpirationTimer),
|
||||
WordCacheExpirationTimerCallback,
|
||||
this,
|
||||
SHAPED_WORD_TIMEOUT_SECONDS * 1000,
|
||||
nsITimer::TYPE_REPEATING_SLACK,
|
||||
"gfxFontCache::gfxFontCache",
|
||||
target);
|
||||
#endif
|
||||
}
|
||||
|
||||
|
@ -152,7 +152,7 @@ gfxFontInfoLoader::StartLoader(uint32_t aDelay, uint32_t aInterval)
|
||||
|
||||
// set up timer
|
||||
if (!mTimer) {
|
||||
mTimer = do_CreateInstance("@mozilla.org/timer;1");
|
||||
mTimer = NS_NewTimer();
|
||||
if (!mTimer) {
|
||||
NS_WARNING("Failure to create font info loader timer");
|
||||
return;
|
||||
|
@ -399,7 +399,7 @@ public:
|
||||
: mDisplayLink(nullptr)
|
||||
{
|
||||
MOZ_ASSERT(NS_IsMainThread());
|
||||
mTimer = do_CreateInstance(NS_TIMER_CONTRACTID);
|
||||
mTimer = NS_NewTimer();
|
||||
}
|
||||
|
||||
~OSXDisplay() override
|
||||
|
@ -1030,9 +1030,8 @@ ParentImpl::CreateBackgroundThread()
|
||||
nsCOMPtr<nsITimer> newShutdownTimer;
|
||||
|
||||
if (!sShutdownTimer) {
|
||||
nsresult rv;
|
||||
newShutdownTimer = do_CreateInstance(NS_TIMER_CONTRACTID, &rv);
|
||||
if (NS_WARN_IF(NS_FAILED(rv))) {
|
||||
newShutdownTimer = NS_NewTimer();
|
||||
if (!newShutdownTimer) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
@ -86,7 +86,7 @@ MessagePump::Run(MessagePump::Delegate* aDelegate)
|
||||
nsIThread* thisThread = NS_GetCurrentThread();
|
||||
MOZ_ASSERT(thisThread);
|
||||
|
||||
mDelayedWorkTimer = do_CreateInstance(kNS_TIMER_CID);
|
||||
mDelayedWorkTimer = NS_NewTimer();
|
||||
MOZ_ASSERT(mDelayedWorkTimer);
|
||||
|
||||
base::ScopedNSAutoreleasePool autoReleasePool;
|
||||
@ -162,7 +162,7 @@ MessagePump::ScheduleDelayedWork(const base::TimeTicks& aDelayedTime)
|
||||
|| mEventTarget->IsOnCurrentThread());
|
||||
|
||||
if (!mDelayedWorkTimer) {
|
||||
mDelayedWorkTimer = do_CreateInstance(kNS_TIMER_CID);
|
||||
mDelayedWorkTimer = NS_NewTimer();
|
||||
if (!mDelayedWorkTimer) {
|
||||
// Called before XPCOM has started up? We can't do this correctly.
|
||||
NS_WARNING("Delayed task might not run!");
|
||||
@ -310,13 +310,9 @@ MessagePumpForNonMainThreads::Run(base::MessagePump::Delegate* aDelegate)
|
||||
nsIThread* thread = NS_GetCurrentThread();
|
||||
MOZ_RELEASE_ASSERT(mEventTarget->IsOnCurrentThread());
|
||||
|
||||
mDelayedWorkTimer = do_CreateInstance(kNS_TIMER_CID);
|
||||
mDelayedWorkTimer = NS_NewTimer(mEventTarget);
|
||||
MOZ_ASSERT(mDelayedWorkTimer);
|
||||
|
||||
if (NS_FAILED(mDelayedWorkTimer->SetTarget(mEventTarget))) {
|
||||
MOZ_CRASH("Failed to set timer target!");
|
||||
}
|
||||
|
||||
// Chromium event notifications to be processed will be received by this
|
||||
// event loop as a DoWorkRunnables via ScheduleWork. Chromium events that
|
||||
// were received before our thread is valid, however, will not generate
|
||||
|
@ -440,10 +440,10 @@ AccessibleCaretEventHub::Init()
|
||||
mDocShell = static_cast<nsDocShell*>(docShell);
|
||||
|
||||
if (sUseLongTapInjector) {
|
||||
mLongTapInjectorTimer = do_CreateInstance("@mozilla.org/timer;1");
|
||||
mLongTapInjectorTimer = NS_NewTimer();
|
||||
}
|
||||
|
||||
mScrollEndInjectorTimer = do_CreateInstance("@mozilla.org/timer;1");
|
||||
mScrollEndInjectorTimer = NS_NewTimer();
|
||||
|
||||
mManager = MakeUnique<AccessibleCaretManager>(mPresShell);
|
||||
|
||||
|
@ -1822,7 +1822,7 @@ PresShell::Initialize(nscoord aWidth, nscoord aHeight)
|
||||
// Don't suppress painting if the document isn't loading.
|
||||
nsIDocument::ReadyState readyState = mDocument->GetReadyStateEnum();
|
||||
if (readyState != nsIDocument::READYSTATE_COMPLETE) {
|
||||
mPaintSuppressionTimer = do_CreateInstance("@mozilla.org/timer;1");
|
||||
mPaintSuppressionTimer = NS_NewTimer();
|
||||
}
|
||||
if (!mPaintSuppressionTimer) {
|
||||
mPaintingSuppressed = false;
|
||||
@ -1978,7 +1978,7 @@ PresShell::ResizeReflowIgnoreOverride(nscoord aWidth, nscoord aHeight, nscoord a
|
||||
!mAsyncResizeTimerIsActive) {
|
||||
if (mInResize) {
|
||||
if (!mAsyncResizeEventTimer) {
|
||||
mAsyncResizeEventTimer = do_CreateInstance("@mozilla.org/timer;1");
|
||||
mAsyncResizeEventTimer = NS_NewTimer();
|
||||
}
|
||||
if (mAsyncResizeEventTimer) {
|
||||
mAsyncResizeTimerIsActive = true;
|
||||
@ -3665,14 +3665,13 @@ PresShell::ScheduleViewManagerFlush(PaintType aType)
|
||||
self->ScheduleViewManagerFlush();
|
||||
};
|
||||
|
||||
mDelayedPaintTimer = do_CreateInstance(NS_TIMER_CONTRACTID);
|
||||
mDelayedPaintTimer->SetTarget(
|
||||
mDocument->EventTargetFor(TaskCategory::Other));
|
||||
mDelayedPaintTimer->InitWithNamedFuncCallback(PaintTimerCallBack,
|
||||
this,
|
||||
kPaintDelayPeriod,
|
||||
nsITimer::TYPE_ONE_SHOT,
|
||||
"PaintTimerCallBack");
|
||||
NS_NewTimerWithFuncCallback(getter_AddRefs(mDelayedPaintTimer),
|
||||
PaintTimerCallBack,
|
||||
this,
|
||||
kPaintDelayPeriod,
|
||||
nsITimer::TYPE_ONE_SHOT,
|
||||
"PaintTimerCallBack",
|
||||
mDocument->EventTargetFor(TaskCategory::Other));
|
||||
}
|
||||
return;
|
||||
}
|
||||
@ -8814,16 +8813,13 @@ PresShell::ScheduleReflowOffTimer()
|
||||
ASSERT_REFLOW_SCHEDULED_STATE();
|
||||
|
||||
if (!mReflowContinueTimer) {
|
||||
mReflowContinueTimer = do_CreateInstance("@mozilla.org/timer;1");
|
||||
mReflowContinueTimer->SetTarget(
|
||||
nsresult rv = NS_NewTimerWithFuncCallback(
|
||||
getter_AddRefs(mReflowContinueTimer),
|
||||
sReflowContinueCallback, this, 30,
|
||||
nsITimer::TYPE_ONE_SHOT,
|
||||
"sReflowContinueCallback",
|
||||
mDocument->EventTargetFor(TaskCategory::Other));
|
||||
if (!mReflowContinueTimer ||
|
||||
NS_FAILED(mReflowContinueTimer->
|
||||
InitWithNamedFuncCallback(sReflowContinueCallback, this, 30,
|
||||
nsITimer::TYPE_ONE_SHOT,
|
||||
"sReflowContinueCallback"))) {
|
||||
return false;
|
||||
}
|
||||
return NS_SUCCEEDED(rv);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
@ -636,17 +636,17 @@ void nsCaret::ResetBlinking()
|
||||
if (mBlinkTimer) {
|
||||
mBlinkTimer->Cancel();
|
||||
} else {
|
||||
nsresult err;
|
||||
mBlinkTimer = do_CreateInstance("@mozilla.org/timer;1", &err);
|
||||
if (NS_FAILED(err)) {
|
||||
return;
|
||||
}
|
||||
|
||||
nsIEventTarget* target = nullptr;
|
||||
if (nsCOMPtr<nsIPresShell> presShell = do_QueryReferent(mPresShell)) {
|
||||
if (nsCOMPtr<nsIDocument> doc = presShell->GetDocument()) {
|
||||
mBlinkTimer->SetTarget(doc->EventTargetFor(TaskCategory::Other));
|
||||
target = doc->EventTargetFor(TaskCategory::Other);
|
||||
}
|
||||
}
|
||||
|
||||
mBlinkTimer = NS_NewTimer(target);
|
||||
if (!mBlinkTimer) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
if (blinkRate > 0) {
|
||||
|
@ -2798,18 +2798,13 @@ nsPresContext::CreateTimer(nsTimerCallbackFunc aCallback,
|
||||
const char* aName,
|
||||
uint32_t aDelay)
|
||||
{
|
||||
nsCOMPtr<nsITimer> timer = do_CreateInstance("@mozilla.org/timer;1");
|
||||
timer->SetTarget(Document()->EventTargetFor(TaskCategory::Other));
|
||||
if (timer) {
|
||||
nsresult rv = timer->InitWithNamedFuncCallback(aCallback, this, aDelay,
|
||||
nsITimer::TYPE_ONE_SHOT,
|
||||
aName);
|
||||
if (NS_SUCCEEDED(rv)) {
|
||||
return timer.forget();
|
||||
}
|
||||
}
|
||||
|
||||
return nullptr;
|
||||
nsCOMPtr<nsITimer> timer;
|
||||
NS_NewTimerWithFuncCallback(getter_AddRefs(timer),
|
||||
aCallback, this, aDelay,
|
||||
nsITimer::TYPE_ONE_SHOT,
|
||||
aName,
|
||||
Document()->EventTargetFor(TaskCategory::Other));
|
||||
return timer.forget();
|
||||
}
|
||||
|
||||
static bool sGotInterruptEnv = false;
|
||||
@ -3446,21 +3441,20 @@ nsRootPresContext::EnsureEventualDidPaintEvent(uint64_t aTransactionId)
|
||||
}
|
||||
}
|
||||
|
||||
nsCOMPtr<nsITimer> timer = do_CreateInstance("@mozilla.org/timer;1");
|
||||
timer->SetTarget(Document()->EventTargetFor(TaskCategory::Other));
|
||||
if (timer) {
|
||||
RefPtr<nsRootPresContext> self = this;
|
||||
nsresult rv = timer->InitWithCallback(
|
||||
NewNamedTimerCallback([self, aTransactionId](){
|
||||
nsAutoScriptBlocker blockScripts;
|
||||
self->NotifyDidPaintForSubtree(aTransactionId);
|
||||
}, "NotifyDidPaintForSubtree"), 100, nsITimer::TYPE_ONE_SHOT);
|
||||
nsCOMPtr<nsITimer> timer;
|
||||
RefPtr<nsRootPresContext> self = this;
|
||||
nsresult rv = NS_NewTimerWithCallback(
|
||||
getter_AddRefs(timer),
|
||||
NewNamedTimerCallback([self, aTransactionId](){
|
||||
nsAutoScriptBlocker blockScripts;
|
||||
self->NotifyDidPaintForSubtree(aTransactionId);
|
||||
}, "NotifyDidPaintForSubtree"), 100, nsITimer::TYPE_ONE_SHOT,
|
||||
Document()->EventTargetFor(TaskCategory::Other));
|
||||
|
||||
if (NS_SUCCEEDED(rv)) {
|
||||
NotifyDidPaintTimer* t = mNotifyDidPaintTimers.AppendElement();
|
||||
t->mTransactionId = aTransactionId;
|
||||
t->mTimer = timer;
|
||||
}
|
||||
if (NS_SUCCEEDED(rv)) {
|
||||
NotifyDidPaintTimer* t = mNotifyDidPaintTimers.AppendElement();
|
||||
t->mTransactionId = aTransactionId;
|
||||
t->mTimer = timer;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -371,7 +371,7 @@ public:
|
||||
explicit SimpleTimerBasedRefreshDriverTimer(double aRate)
|
||||
{
|
||||
SetRate(aRate);
|
||||
mTimer = do_CreateInstance(NS_TIMER_CONTRACTID);
|
||||
mTimer = NS_NewTimer();
|
||||
}
|
||||
|
||||
virtual ~SimpleTimerBasedRefreshDriverTimer() override
|
||||
|
@ -428,7 +428,7 @@ ScrollbarActivity::StartFadeBeginTimer()
|
||||
return;
|
||||
}
|
||||
if (!mFadeBeginTimer) {
|
||||
mFadeBeginTimer = do_CreateInstance("@mozilla.org/timer;1");
|
||||
mFadeBeginTimer = NS_NewTimer();
|
||||
}
|
||||
mFadeBeginTimer->InitWithNamedFuncCallback(
|
||||
FadeBeginTimerFired, this, mScrollbarFadeBeginDelay,
|
||||
|
@ -2606,7 +2606,7 @@ void ScrollFrameHelper::TriggerDisplayPortExpiration()
|
||||
}
|
||||
|
||||
if (!mDisplayPortExpiryTimer) {
|
||||
mDisplayPortExpiryTimer = do_CreateInstance("@mozilla.org/timer;1");
|
||||
mDisplayPortExpiryTimer = NS_NewTimer();
|
||||
}
|
||||
ResetDisplayPortExpiryTimer();
|
||||
}
|
||||
@ -2726,13 +2726,11 @@ void
|
||||
ScrollFrameHelper::ScheduleSyntheticMouseMove()
|
||||
{
|
||||
if (!mScrollActivityTimer) {
|
||||
mScrollActivityTimer = do_CreateInstance("@mozilla.org/timer;1");
|
||||
mScrollActivityTimer = NS_NewTimer(
|
||||
mOuter->PresContext()->Document()->EventTargetFor(TaskCategory::Other));
|
||||
if (!mScrollActivityTimer) {
|
||||
return;
|
||||
}
|
||||
|
||||
mScrollActivityTimer->SetTarget(
|
||||
mOuter->PresContext()->Document()->EventTargetFor(TaskCategory::Other));
|
||||
}
|
||||
|
||||
mScrollActivityTimer->InitWithNamedFuncCallback(
|
||||
@ -3392,18 +3390,20 @@ ScrollFrameHelper::BuildDisplayList(nsDisplayListBuilder* aBuilder,
|
||||
// area to the dispatch to content layer event regions) necessary to activate
|
||||
// a scroll frame so it creates a scrollable layer.
|
||||
bool couldBuildLayer = false;
|
||||
if (mWillBuildScrollableLayer) {
|
||||
couldBuildLayer = true;
|
||||
} else {
|
||||
couldBuildLayer =
|
||||
nsLayoutUtils::AsyncPanZoomEnabled(mOuter) &&
|
||||
WantAsyncScroll() &&
|
||||
// If we are using containers for root frames, and we are the root
|
||||
// scroll frame for the display root, then we don't need a scroll
|
||||
// info layer. nsDisplayList::PaintForFrame already calls
|
||||
// ComputeFrameMetrics for us.
|
||||
(!(gfxPrefs::LayoutUseContainersForRootFrames() && mIsRoot) ||
|
||||
(aBuilder->RootReferenceFrame()->PresContext() != mOuter->PresContext()));
|
||||
if (aBuilder->IsPaintingToWindow()) {
|
||||
if (mWillBuildScrollableLayer) {
|
||||
couldBuildLayer = true;
|
||||
} else {
|
||||
couldBuildLayer =
|
||||
nsLayoutUtils::AsyncPanZoomEnabled(mOuter) &&
|
||||
WantAsyncScroll() &&
|
||||
// If we are using containers for root frames, and we are the root
|
||||
// scroll frame for the display root, then we don't need a scroll
|
||||
// info layer. nsDisplayList::PaintForFrame already calls
|
||||
// ComputeFrameMetrics for us.
|
||||
(!(gfxPrefs::LayoutUseContainersForRootFrames() && mIsRoot) ||
|
||||
(aBuilder->RootReferenceFrame()->PresContext() != mOuter->PresContext()));
|
||||
}
|
||||
}
|
||||
|
||||
// Now display the scrollbars and scrollcorner. These parts are drawn
|
||||
@ -3505,7 +3505,7 @@ ScrollFrameHelper::BuildDisplayList(nsDisplayListBuilder* aBuilder,
|
||||
}
|
||||
|
||||
nsDisplayListBuilder::AutoCurrentActiveScrolledRootSetter asrSetter(aBuilder);
|
||||
if (mWillBuildScrollableLayer) {
|
||||
if (mWillBuildScrollableLayer && aBuilder->IsPaintingToWindow()) {
|
||||
asrSetter.EnterScrollFrame(sf);
|
||||
}
|
||||
|
||||
@ -3521,7 +3521,7 @@ ScrollFrameHelper::BuildDisplayList(nsDisplayListBuilder* aBuilder,
|
||||
nsRect scrolledRectClip =
|
||||
GetUnsnappedScrolledRectInternal(mScrolledFrame->GetScrollableOverflowRect(),
|
||||
mScrollPort.Size()) + mScrolledFrame->GetPosition();
|
||||
if (mWillBuildScrollableLayer) {
|
||||
if (mWillBuildScrollableLayer && aBuilder->IsPaintingToWindow()) {
|
||||
// Clip the contents to the display port.
|
||||
// The dirty rect already acts kind of like a clip, in that
|
||||
// FrameLayerBuilder intersects item bounds and opaque regions with
|
||||
@ -3569,7 +3569,8 @@ ScrollFrameHelper::BuildDisplayList(nsDisplayListBuilder* aBuilder,
|
||||
// above (where the idSetter variable is created).
|
||||
//
|
||||
// This is not compatible when using containes for root scrollframes.
|
||||
MOZ_ASSERT(couldBuildLayer && mScrolledFrame->GetContent());
|
||||
MOZ_ASSERT(couldBuildLayer && mScrolledFrame->GetContent() &&
|
||||
aBuilder->IsPaintingToWindow());
|
||||
if (!mWillBuildScrollableLayer) {
|
||||
// Set a displayport so next paint we don't have to force layerization
|
||||
// after the fact.
|
||||
@ -3591,7 +3592,7 @@ ScrollFrameHelper::BuildDisplayList(nsDisplayListBuilder* aBuilder,
|
||||
}
|
||||
}
|
||||
|
||||
if (mWillBuildScrollableLayer) {
|
||||
if (mWillBuildScrollableLayer && aBuilder->IsPaintingToWindow()) {
|
||||
aBuilder->ForceLayerForScrollParent();
|
||||
}
|
||||
|
||||
@ -5057,9 +5058,11 @@ ScrollFrameHelper::IsMaybeScrollingActive() const
|
||||
return true;
|
||||
}
|
||||
|
||||
nsIContent* content = mOuter->GetContent();
|
||||
return mHasBeenScrolledRecently ||
|
||||
IsAlwaysActive() ||
|
||||
mWillBuildScrollableLayer;
|
||||
nsLayoutUtils::HasDisplayPort(content) ||
|
||||
nsContentUtils::HasScrollgrab(content);
|
||||
}
|
||||
|
||||
bool
|
||||
@ -5071,9 +5074,11 @@ ScrollFrameHelper::IsScrollingActive(nsDisplayListBuilder* aBuilder) const
|
||||
return true;
|
||||
}
|
||||
|
||||
nsIContent* content = mOuter->GetContent();
|
||||
return mHasBeenScrolledRecently ||
|
||||
IsAlwaysActive() ||
|
||||
mWillBuildScrollableLayer;
|
||||
nsLayoutUtils::HasDisplayPort(content) ||
|
||||
nsContentUtils::HasScrollgrab(content);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -404,7 +404,8 @@ nsSubDocumentFrame::BuildDisplayList(nsDisplayListBuilder* aBuilder,
|
||||
©OfDirty,
|
||||
/* aSetBase = */ true);
|
||||
|
||||
if (!gfxPrefs::LayoutUseContainersForRootFrames()) {
|
||||
if (!gfxPrefs::LayoutUseContainersForRootFrames() ||
|
||||
!aBuilder->IsPaintingToWindow()) {
|
||||
haveDisplayPort = false;
|
||||
}
|
||||
|
||||
|
@ -97,6 +97,7 @@ support-files = bug633762_iframe.html
|
||||
[test_bug1198135.html]
|
||||
[test_bug1307853.html]
|
||||
support-files = file_bug1307853.html
|
||||
[test_bug1408607.html]
|
||||
[test_contained_plugin_transplant.html]
|
||||
skip-if = os=='win'
|
||||
[test_image_selection.html]
|
||||
@ -124,7 +125,7 @@ skip-if = e10s
|
||||
[test_plugin_focus.html]
|
||||
skip-if = os == 'win' # bug 1207918
|
||||
[test_plugin_mouse_coords.html]
|
||||
skip-if = toolkit == 'android'
|
||||
skip-if = toolkit == 'android' || headless # Headless:Bug 1405871
|
||||
[test_plugin_position.xhtml]
|
||||
skip-if = e10s
|
||||
[test_scroll_behavior.html]
|
||||
|
48
layout/generic/test/test_bug1408607.html
Normal file
48
layout/generic/test/test_bug1408607.html
Normal file
@ -0,0 +1,48 @@
|
||||
<!DOCTYPE HTML>
|
||||
<html>
|
||||
<!--
|
||||
https://bugzilla.mozilla.org/show_bug.cgi?id=1408607
|
||||
-->
|
||||
<head>
|
||||
<title>Test for Bug 1408607</title>
|
||||
<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
|
||||
<script type="text/javascript" src="/tests/SimpleTest/EventUtils.js"></script>
|
||||
<script type="text/javascript" src="/tests/SimpleTest/WindowSnapshot.js"></script>
|
||||
<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
|
||||
</head>
|
||||
<body>
|
||||
<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1408607">Mozilla Bug 1408607</a>
|
||||
<iframe id="display" src="about:blank"></iframe>
|
||||
<div id="content" style="display: none">
|
||||
|
||||
</div>
|
||||
|
||||
<div style="margin-left: 1%; border: 1px solid black;">
|
||||
<div style="height: 200px; overflow: auto; transform: translateZ(0);">
|
||||
<div style="height: 100px;"></div>
|
||||
<a id="x" href="./">Hello</a>
|
||||
<div style="height: 500px;"></div>
|
||||
</div>
|
||||
</div
|
||||
|
||||
<pre id="test">
|
||||
<script type="application/javascript">
|
||||
|
||||
SimpleTest.waitForExplicitFinish();
|
||||
|
||||
window.addEventListener("load", step1);
|
||||
|
||||
|
||||
function step1()
|
||||
{
|
||||
var rect = document.getElementById("x").getBoundingClientRect();
|
||||
|
||||
is(document.elementFromPoint(rect.x + rect.width/2, rect.y + rect.height/2), document.getElementById("x"), "Able to hit transformed object");
|
||||
SimpleTest.finish();
|
||||
}
|
||||
|
||||
|
||||
</script>
|
||||
</pre>
|
||||
</body>
|
||||
</html>
|
@ -29,44 +29,32 @@ nsPagePrintTimer::~nsPagePrintTimer()
|
||||
nsresult
|
||||
nsPagePrintTimer::StartTimer(bool aUseDelay)
|
||||
{
|
||||
nsresult result;
|
||||
mTimer = do_CreateInstance("@mozilla.org/timer;1", &result);
|
||||
if (NS_FAILED(result)) {
|
||||
NS_WARNING("unable to start the timer");
|
||||
} else {
|
||||
uint32_t delay = 0;
|
||||
if (aUseDelay) {
|
||||
if (mFiringCount < 10) {
|
||||
// Longer delay for the few first pages.
|
||||
delay = mDelay + ((10 - mFiringCount) * 100);
|
||||
} else {
|
||||
delay = mDelay;
|
||||
}
|
||||
uint32_t delay = 0;
|
||||
if (aUseDelay) {
|
||||
if (mFiringCount < 10) {
|
||||
// Longer delay for the few first pages.
|
||||
delay = mDelay + ((10 - mFiringCount) * 100);
|
||||
} else {
|
||||
delay = mDelay;
|
||||
}
|
||||
mTimer->SetTarget(mDocument->EventTargetFor(TaskCategory::Other));
|
||||
mTimer->InitWithCallback(this, delay, nsITimer::TYPE_ONE_SHOT);
|
||||
}
|
||||
return result;
|
||||
return NS_NewTimerWithCallback(getter_AddRefs(mTimer),
|
||||
this, delay, nsITimer::TYPE_ONE_SHOT,
|
||||
mDocument->EventTargetFor(TaskCategory::Other));
|
||||
}
|
||||
|
||||
nsresult
|
||||
nsPagePrintTimer::StartWatchDogTimer()
|
||||
{
|
||||
nsresult result;
|
||||
if (mWatchDogTimer) {
|
||||
mWatchDogTimer->Cancel();
|
||||
}
|
||||
mWatchDogTimer = do_CreateInstance("@mozilla.org/timer;1", &result);
|
||||
if (NS_FAILED(result)) {
|
||||
NS_WARNING("unable to start the timer");
|
||||
} else {
|
||||
// Instead of just doing one timer for a long period do multiple so we
|
||||
// can check if the user cancelled the printing.
|
||||
mWatchDogTimer->SetTarget(mDocument->EventTargetFor(TaskCategory::Other));
|
||||
mWatchDogTimer->InitWithCallback(this, WATCH_DOG_INTERVAL,
|
||||
nsITimer::TYPE_ONE_SHOT);
|
||||
}
|
||||
return result;
|
||||
// Instead of just doing one timer for a long period do multiple so we
|
||||
// can check if the user cancelled the printing.
|
||||
return NS_NewTimerWithCallback(getter_AddRefs(mWatchDogTimer),
|
||||
this, WATCH_DOG_INTERVAL,
|
||||
nsITimer::TYPE_ONE_SHOT,
|
||||
mDocument->EventTargetFor(TaskCategory::Other));
|
||||
}
|
||||
|
||||
void
|
||||
@ -179,11 +167,9 @@ nsPagePrintTimer::Notify(nsITimer *timer)
|
||||
void
|
||||
nsPagePrintTimer::WaitForRemotePrint()
|
||||
{
|
||||
nsresult result;
|
||||
mWaitingForRemotePrint = do_CreateInstance("@mozilla.org/timer;1", &result);
|
||||
if (NS_FAILED(result)) {
|
||||
mWaitingForRemotePrint = NS_NewTimer();
|
||||
if (!mWaitingForRemotePrint) {
|
||||
NS_WARNING("Failed to wait for remote print, we might time-out.");
|
||||
mWaitingForRemotePrint = nullptr;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -89,16 +89,13 @@ nsFontFaceLoader::StartedLoading(nsIStreamLoader* aStreamLoader)
|
||||
}
|
||||
|
||||
if (loadTimeout > 0) {
|
||||
mLoadTimer = do_CreateInstance("@mozilla.org/timer;1");
|
||||
if (mLoadTimer) {
|
||||
mLoadTimer->SetTarget(
|
||||
mFontFaceSet->Document()->EventTargetFor(TaskCategory::Other));
|
||||
mLoadTimer->InitWithNamedFuncCallback(LoadTimerCallback,
|
||||
static_cast<void*>(this),
|
||||
loadTimeout,
|
||||
nsITimer::TYPE_ONE_SHOT,
|
||||
"LoadTimerCallback");
|
||||
}
|
||||
NS_NewTimerWithFuncCallback(getter_AddRefs(mLoadTimer),
|
||||
LoadTimerCallback,
|
||||
static_cast<void*>(this),
|
||||
loadTimeout,
|
||||
nsITimer::TYPE_ONE_SHOT,
|
||||
"LoadTimerCallback",
|
||||
mFontFaceSet->Document()->EventTargetFor(TaskCategory::Other));
|
||||
} else {
|
||||
mUserFontEntry->mFontDataLoadingState = gfxUserFontEntry::LOADING_SLOWLY;
|
||||
}
|
||||
|
@ -1127,6 +1127,7 @@ input[type="number"] > div > div > div:hover {
|
||||
input[type="date"],
|
||||
input[type="time"] {
|
||||
overflow: hidden !important;
|
||||
font-family: -moz-fixed;
|
||||
}
|
||||
|
||||
:-moz-autofill, :-moz-autofill-preview {
|
||||
|
@ -122,20 +122,19 @@ nsListScrollSmoother::Start()
|
||||
};
|
||||
|
||||
Stop();
|
||||
mRepeatTimer = do_CreateInstance("@mozilla.org/timer;1");
|
||||
nsIContent* content = nullptr;
|
||||
nsIEventTarget* target = nullptr;
|
||||
if (mOuter) {
|
||||
content = mOuter->GetContent();
|
||||
if (nsIContent* content = mOuter->GetContent()) {
|
||||
target = content->OwnerDoc()->EventTargetFor(TaskCategory::Other);
|
||||
}
|
||||
}
|
||||
if (content) {
|
||||
mRepeatTimer->SetTarget(
|
||||
content->OwnerDoc()->EventTargetFor(TaskCategory::Other));
|
||||
}
|
||||
mRepeatTimer->InitWithNamedFuncCallback(scrollSmootherCallback,
|
||||
this,
|
||||
SMOOTH_INTERVAL,
|
||||
nsITimer::TYPE_ONE_SHOT,
|
||||
"scrollSmootherCallback");
|
||||
NS_NewTimerWithFuncCallback(getter_AddRefs(mRepeatTimer),
|
||||
scrollSmootherCallback,
|
||||
this,
|
||||
SMOOTH_INTERVAL,
|
||||
nsITimer::TYPE_ONE_SHOT,
|
||||
"scrollSmootherCallback",
|
||||
target);
|
||||
}
|
||||
|
||||
void
|
||||
|
@ -528,10 +528,9 @@ nsMenuFrame::HandleEvent(nsPresContext* aPresContext,
|
||||
LookAndFeel::GetInt(LookAndFeel::eIntID_SubmenuDelay, 300); // ms
|
||||
|
||||
// We're a menu, we're built, we're closed, and no timer has been kicked off.
|
||||
mOpenTimer = do_CreateInstance("@mozilla.org/timer;1");
|
||||
mOpenTimer->SetTarget(
|
||||
mContent->OwnerDoc()->EventTargetFor(TaskCategory::Other));
|
||||
mOpenTimer->InitWithCallback(mTimerMediator, menuDelay, nsITimer::TYPE_ONE_SHOT);
|
||||
NS_NewTimerWithCallback(getter_AddRefs(mOpenTimer),
|
||||
mTimerMediator, menuDelay, nsITimer::TYPE_ONE_SHOT,
|
||||
mContent->OwnerDoc()->EventTargetFor(TaskCategory::Other));
|
||||
}
|
||||
}
|
||||
|
||||
@ -1242,10 +1241,9 @@ nsMenuFrame::StartBlinking(WidgetGUIEvent* aEvent, bool aFlipChecked)
|
||||
}
|
||||
|
||||
// Set up a timer to blink back on.
|
||||
mBlinkTimer = do_CreateInstance("@mozilla.org/timer;1");
|
||||
mBlinkTimer->SetTarget(
|
||||
mContent->OwnerDoc()->EventTargetFor(TaskCategory::Other));
|
||||
mBlinkTimer->InitWithCallback(mTimerMediator, kBlinkDelay, nsITimer::TYPE_ONE_SHOT);
|
||||
NS_NewTimerWithCallback(getter_AddRefs(mBlinkTimer),
|
||||
mTimerMediator, kBlinkDelay, nsITimer::TYPE_ONE_SHOT,
|
||||
mContent->OwnerDoc()->EventTargetFor(TaskCategory::Other));
|
||||
mBlinkState = 1;
|
||||
}
|
||||
|
||||
|
@ -55,11 +55,10 @@ nsRepeatService::Start(Callback aCallback, void* aCallbackData,
|
||||
mCallbackData = aCallbackData;
|
||||
mCallbackName = aCallbackName;
|
||||
|
||||
nsresult rv;
|
||||
mRepeatTimer = do_CreateInstance("@mozilla.org/timer;1", &rv);
|
||||
mRepeatTimer = NS_NewTimer(
|
||||
aDocument->EventTargetFor(TaskCategory::Other));
|
||||
|
||||
if (NS_SUCCEEDED(rv)) {
|
||||
mRepeatTimer->SetTarget(aDocument->EventTargetFor(TaskCategory::Other));
|
||||
if (mRepeatTimer) {
|
||||
InitTimerCallback(aInitialDelay);
|
||||
}
|
||||
}
|
||||
|
@ -15,6 +15,8 @@
|
||||
#include "nsXULElement.h"
|
||||
#include "nsIDOMXULMenuListElement.h"
|
||||
#include "nsIXULDocument.h"
|
||||
#include "nsIDOMXULDocument.h"
|
||||
#include "nsIDOMXULCommandDispatcher.h"
|
||||
#include "nsIXULTemplateBuilder.h"
|
||||
#include "nsCSSFrameConstructor.h"
|
||||
#include "nsGlobalWindow.h"
|
||||
@ -1243,18 +1245,19 @@ nsXULPopupManager::HidePopupAfterDelay(nsMenuPopupFrame* aPopup)
|
||||
LookAndFeel::GetInt(LookAndFeel::eIntID_SubmenuDelay, 300); // ms
|
||||
|
||||
// Kick off the timer.
|
||||
mCloseTimer = do_CreateInstance("@mozilla.org/timer;1");
|
||||
nsIContent* content = aPopup->GetContent();
|
||||
if (content) {
|
||||
mCloseTimer->SetTarget(
|
||||
content->OwnerDoc()->EventTargetFor(TaskCategory::Other));
|
||||
nsIEventTarget* target = nullptr;
|
||||
if (nsIContent* content = aPopup->GetContent()) {
|
||||
target = content->OwnerDoc()->EventTargetFor(TaskCategory::Other);
|
||||
}
|
||||
mCloseTimer->InitWithNamedFuncCallback([](nsITimer* aTimer, void* aClosure) {
|
||||
nsXULPopupManager* pm = nsXULPopupManager::GetInstance();
|
||||
if (pm) {
|
||||
pm->KillMenuTimer();
|
||||
}
|
||||
}, nullptr, menuDelay, nsITimer::TYPE_ONE_SHOT, "KillMenuTimer");
|
||||
NS_NewTimerWithFuncCallback(
|
||||
getter_AddRefs(mCloseTimer),
|
||||
[](nsITimer* aTimer, void* aClosure) {
|
||||
nsXULPopupManager* pm = nsXULPopupManager::GetInstance();
|
||||
if (pm) {
|
||||
pm->KillMenuTimer();
|
||||
}
|
||||
}, nullptr, menuDelay, nsITimer::TYPE_ONE_SHOT, "KillMenuTimer",
|
||||
target);
|
||||
|
||||
// the popup will call PopupDestroyed if it is destroyed, which checks if it
|
||||
// is set to mTimerMenu, so it should be safe to keep a reference to it
|
||||
@ -1974,6 +1977,16 @@ nsXULPopupManager::UpdateMenuItems(nsIContent* aPopup)
|
||||
return;
|
||||
}
|
||||
|
||||
// When a menu is opened, make sure that command updating is unlocked first.
|
||||
nsCOMPtr<nsIDOMXULDocument> xulDoc = do_QueryInterface(document);
|
||||
if (xulDoc) {
|
||||
nsCOMPtr<nsIDOMXULCommandDispatcher> xulCommandDispatcher;
|
||||
xulDoc->GetCommandDispatcher(getter_AddRefs(xulCommandDispatcher));
|
||||
if (xulCommandDispatcher) {
|
||||
xulCommandDispatcher->Unlock();
|
||||
}
|
||||
}
|
||||
|
||||
for (nsCOMPtr<nsIContent> grandChild = aPopup->GetFirstChild();
|
||||
grandChild;
|
||||
grandChild = grandChild->GetNextSibling()) {
|
||||
|
@ -195,21 +195,18 @@ nsXULTooltipListener::MouseMove(nsIDOMEvent* aEvent)
|
||||
}
|
||||
}
|
||||
|
||||
mTooltipTimer = do_CreateInstance("@mozilla.org/timer;1");
|
||||
mTooltipTimer->SetTarget(
|
||||
mTargetNode = do_GetWeakReference(eventTarget);
|
||||
if (mTargetNode) {
|
||||
nsresult rv = NS_NewTimerWithFuncCallback(
|
||||
getter_AddRefs(mTooltipTimer),
|
||||
sTooltipCallback, this,
|
||||
LookAndFeel::GetInt(LookAndFeel::eIntID_TooltipDelay, 500),
|
||||
nsITimer::TYPE_ONE_SHOT,
|
||||
"sTooltipCallback",
|
||||
sourceContent->OwnerDoc()->EventTargetFor(TaskCategory::Other));
|
||||
if (mTooltipTimer) {
|
||||
mTargetNode = do_GetWeakReference(eventTarget);
|
||||
if (mTargetNode) {
|
||||
nsresult rv =
|
||||
mTooltipTimer->InitWithNamedFuncCallback(sTooltipCallback, this,
|
||||
LookAndFeel::GetInt(LookAndFeel::eIntID_TooltipDelay, 500),
|
||||
nsITimer::TYPE_ONE_SHOT,
|
||||
"sTooltipCallback");
|
||||
if (NS_FAILED(rv)) {
|
||||
mTargetNode = nullptr;
|
||||
mSourceNode = nullptr;
|
||||
}
|
||||
if (NS_FAILED(rv)) {
|
||||
mTargetNode = nullptr;
|
||||
mSourceNode = nullptr;
|
||||
}
|
||||
}
|
||||
return;
|
||||
|
@ -13,6 +13,7 @@
|
||||
#include "mozilla/Likely.h"
|
||||
#include "mozilla/MathAlgorithms.h"
|
||||
#include "mozilla/MouseEvents.h"
|
||||
#include "mozilla/ResultExtensions.h"
|
||||
#include "mozilla/TextEditRules.h"
|
||||
|
||||
#include "gfxUtils.h"
|
||||
@ -1810,16 +1811,12 @@ nsTreeBodyFrame::CreateTimer(const LookAndFeel::IntID aID,
|
||||
// Create a new timer only if the delay is greater than zero.
|
||||
// Zero value means that this feature is completely disabled.
|
||||
if (delay > 0) {
|
||||
timer = do_CreateInstance("@mozilla.org/timer;1");
|
||||
if (timer) {
|
||||
timer->SetTarget(
|
||||
mContent->OwnerDoc()->EventTargetFor(TaskCategory::Other));
|
||||
timer->InitWithNamedFuncCallback(aFunc, this, delay, aType, aName);
|
||||
}
|
||||
MOZ_TRY_VAR(timer, NS_NewTimerWithFuncCallback(
|
||||
aFunc, this, delay, aType, aName,
|
||||
mContent->OwnerDoc()->EventTargetFor(TaskCategory::Other)));
|
||||
}
|
||||
|
||||
NS_IF_ADDREF(*aTimer = timer);
|
||||
|
||||
timer.forget(aTimer);
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user