[Mac] Maximise timer slack for background tabs
When a tab not playing audio is sent to the background, set timer slack to its maximum value.
Support for setting timer slack is added at the MessageLoop level, the concrete implementation of this CL only affects CFMessagePump backed MessageLoops (which means just the main thread for backgrounded renderer processes at present).
The MessageLoop implementation is designed to support its use on Windows and Linux (the Windows API sets slack per-timer like the Mac one, while on Linux slack, is set per-thread via a call to prctl() using PR_SET_TIMERSLACK).
BUG=356804
Review URL: https://codereview.chromium.org/289863005
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@275218 0039d316-1c4b-4281-b951-d872f2087c98
CrOS-Libchrome-Original-Commit: 57cd3d24748da3060fa42b70979a4c0390139ba1
diff --git a/base/message_loop/timer_slack.h b/base/message_loop/timer_slack.h
new file mode 100644
index 0000000..1ad6ca9
--- /dev/null
+++ b/base/message_loop/timer_slack.h
@@ -0,0 +1,22 @@
+// Copyright 2014 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef BASE_MESSAGE_LOOP_TIMER_SLACK_H_
+#define BASE_MESSAGE_LOOP_TIMER_SLACK_H_
+
+namespace base {
+
+// Amount of timer slack to use for delayed timers. Increasing timer slack
+// allows the OS to coalesce timers more effectively.
+enum TimerSlack {
+ // Lowest value for timer slack allowed by OS.
+ TIMER_SLACK_NONE,
+
+ // Maximal value for timer slack allowed by OS.
+ TIMER_SLACK_MAXIMUM
+};
+
+} // namespace base
+
+#endif // BASE_MESSAGE_LOOP_TIMER_SLACK_H_