void CancelVibrate(const WindowIdentifier &id) { AssertMainThread(); // Although only active windows may start vibrations, a window may // cancel its own vibration even if it's no longer active. // // After a window is marked as inactive, it sends a CancelVibrate // request. We want this request to cancel a playing vibration // started by that window, so we certainly don't want to reject the // cancellation request because the window is now inactive. // // But it could be the case that, after this window became inactive, // some other window came along and started a vibration. We don't // want this window's cancellation request to cancel that window's // actively-playing vibration! // // To solve this problem, we keep track of the id of the last window // to start a vibration, and only accepts cancellation requests from // the same window. All other cancellation requests are ignored. if (InSandbox()) { hal_sandbox::CancelVibrate(id); } else if (*gLastIDToVibrate == id.AsArray()) { // Don't forward our ID to hal_impl. It doesn't need it, and we // don't want it to be tempted to read it. The empty identifier // will assert if it's used. HAL_LOG(("CancelVibrate: Forwarding to hal_impl.")); hal_impl::CancelVibrate(WindowIdentifier()); } }
bool RegisterTheOneAlarmObserver(AlarmObserver* aObserver) { MOZ_ASSERT(!InSandbox()); MOZ_ASSERT(!sAlarmObserver); sAlarmObserver = aObserver; RETURN_PROXY_IF_SANDBOXED(EnableAlarm(), false); }
void SetProcessPriority(int aPid, ProcessPriority aPriority) { if (InSandbox()) { hal_sandbox::SetProcessPriority(aPid, aPriority); } else { hal_impl::SetProcessPriority(aPid, aPriority); } }
void ModifyWakeLock(const nsAString& aTopic, WakeLockControl aLockAdjust, WakeLockControl aHiddenAdjust, uint64_t aProcessID /* = CONTENT_PROCESS_ID_UNKNOWN */) { AssertMainThread(); if (aProcessID == CONTENT_PROCESS_ID_UNKNOWN) { aProcessID = InSandbox() ? ContentChild::GetSingleton()->GetID() : CONTENT_PROCESS_ID_MAIN; } PROXY_IF_SANDBOXED(ModifyWakeLock(aTopic, aLockAdjust, aHiddenAdjust, aProcessID)); }