Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(224)

Side by Side Diff: base/message_loop/message_pump_mac.h

Issue 289863005: [Mac] Maximise timer slack for background tabs (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Really rebase Created 6 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « base/message_loop/message_pump.cc ('k') | base/message_loop/message_pump_mac.mm » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 // The basis for all native run loops on the Mac is the CFRunLoop. It can be 5 // The basis for all native run loops on the Mac is the CFRunLoop. It can be
6 // used directly, it can be used as the driving force behind the similar 6 // used directly, it can be used as the driving force behind the similar
7 // Foundation NSRunLoop, and it can be used to implement higher-level event 7 // Foundation NSRunLoop, and it can be used to implement higher-level event
8 // loops such as the NSApplication event loop. 8 // loops such as the NSApplication event loop.
9 // 9 //
10 // This file introduces a basic CFRunLoop-based implementation of the 10 // This file introduces a basic CFRunLoop-based implementation of the
(...skipping 19 matching lines...) Expand all
30 #ifndef BASE_MESSAGE_LOOP_MESSAGE_PUMP_MAC_H_ 30 #ifndef BASE_MESSAGE_LOOP_MESSAGE_PUMP_MAC_H_
31 #define BASE_MESSAGE_LOOP_MESSAGE_PUMP_MAC_H_ 31 #define BASE_MESSAGE_LOOP_MESSAGE_PUMP_MAC_H_
32 32
33 #include "base/message_loop/message_pump.h" 33 #include "base/message_loop/message_pump.h"
34 34
35 #include "base/basictypes.h" 35 #include "base/basictypes.h"
36 36
37 #include <CoreFoundation/CoreFoundation.h> 37 #include <CoreFoundation/CoreFoundation.h>
38 38
39 #include "base/memory/weak_ptr.h" 39 #include "base/memory/weak_ptr.h"
40 #include "base/message_loop/timer_slack.h"
40 41
41 #if defined(__OBJC__) 42 #if defined(__OBJC__)
42 #if defined(OS_IOS) 43 #if defined(OS_IOS)
43 #import <Foundation/Foundation.h> 44 #import <Foundation/Foundation.h>
44 #else 45 #else
45 #import <AppKit/AppKit.h> 46 #import <AppKit/AppKit.h>
46 47
47 // Clients must subclass NSApplication and implement this protocol if they use 48 // Clients must subclass NSApplication and implement this protocol if they use
48 // MessagePumpMac. 49 // MessagePumpMac.
49 @protocol CrAppProtocol 50 @protocol CrAppProtocol
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
86 87
87 // Subclasses should implement the work they need to do in MessagePump::Run 88 // Subclasses should implement the work they need to do in MessagePump::Run
88 // in the DoRun method. MessagePumpCFRunLoopBase::Run calls DoRun directly. 89 // in the DoRun method. MessagePumpCFRunLoopBase::Run calls DoRun directly.
89 // This arrangement is used because MessagePumpCFRunLoopBase needs to set 90 // This arrangement is used because MessagePumpCFRunLoopBase needs to set
90 // up and tear down things before and after the "meat" of DoRun. 91 // up and tear down things before and after the "meat" of DoRun.
91 virtual void Run(Delegate* delegate) OVERRIDE; 92 virtual void Run(Delegate* delegate) OVERRIDE;
92 virtual void DoRun(Delegate* delegate) = 0; 93 virtual void DoRun(Delegate* delegate) = 0;
93 94
94 virtual void ScheduleWork() OVERRIDE; 95 virtual void ScheduleWork() OVERRIDE;
95 virtual void ScheduleDelayedWork(const TimeTicks& delayed_work_time) OVERRIDE; 96 virtual void ScheduleDelayedWork(const TimeTicks& delayed_work_time) OVERRIDE;
97 virtual void SetTimerSlack(TimerSlack timer_slack) OVERRIDE;
96 98
97 protected: 99 protected:
98 // Accessors for private data members to be used by subclasses. 100 // Accessors for private data members to be used by subclasses.
99 CFRunLoopRef run_loop() const { return run_loop_; } 101 CFRunLoopRef run_loop() const { return run_loop_; }
100 int nesting_level() const { return nesting_level_; } 102 int nesting_level() const { return nesting_level_; }
101 int run_nesting_level() const { return run_nesting_level_; } 103 int run_nesting_level() const { return run_nesting_level_; }
102 104
103 // Sets this pump's delegate. Signals the appropriate sources if 105 // Sets this pump's delegate. Signals the appropriate sources if
104 // |delegateless_work_| is true. |delegate| can be NULL. 106 // |delegateless_work_| is true. |delegate| can be NULL.
105 void SetDelegate(Delegate* delegate); 107 void SetDelegate(Delegate* delegate);
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after
188 190
189 // (weak) Delegate passed as an argument to the innermost Run call. 191 // (weak) Delegate passed as an argument to the innermost Run call.
190 Delegate* delegate_; 192 Delegate* delegate_;
191 193
192 // The time that delayed_work_timer_ is scheduled to fire. This is tracked 194 // The time that delayed_work_timer_ is scheduled to fire. This is tracked
193 // independently of CFRunLoopTimerGetNextFireDate(delayed_work_timer_) 195 // independently of CFRunLoopTimerGetNextFireDate(delayed_work_timer_)
194 // to be able to reset the timer properly after waking from system sleep. 196 // to be able to reset the timer properly after waking from system sleep.
195 // See PowerStateNotification. 197 // See PowerStateNotification.
196 CFAbsoluteTime delayed_work_fire_time_; 198 CFAbsoluteTime delayed_work_fire_time_;
197 199
200 base::TimerSlack timer_slack_;
201
198 // The recursion depth of the currently-executing CFRunLoopRun loop on the 202 // The recursion depth of the currently-executing CFRunLoopRun loop on the
199 // run loop's thread. 0 if no run loops are running inside of whatever scope 203 // run loop's thread. 0 if no run loops are running inside of whatever scope
200 // the object was created in. 204 // the object was created in.
201 int nesting_level_; 205 int nesting_level_;
202 206
203 // The recursion depth (calculated in the same way as nesting_level_) of the 207 // The recursion depth (calculated in the same way as nesting_level_) of the
204 // innermost executing CFRunLoopRun loop started by a call to Run. 208 // innermost executing CFRunLoopRun loop started by a call to Run.
205 int run_nesting_level_; 209 int run_nesting_level_;
206 210
207 // The deepest (numerically highest) recursion depth encountered since the 211 // The deepest (numerically highest) recursion depth encountered since the
(...skipping 134 matching lines...) Expand 10 before | Expand all | Expand 10 after
342 static bool IsHandlingSendEvent(); 346 static bool IsHandlingSendEvent();
343 #endif // !defined(OS_IOS) 347 #endif // !defined(OS_IOS)
344 348
345 private: 349 private:
346 DISALLOW_IMPLICIT_CONSTRUCTORS(MessagePumpMac); 350 DISALLOW_IMPLICIT_CONSTRUCTORS(MessagePumpMac);
347 }; 351 };
348 352
349 } // namespace base 353 } // namespace base
350 354
351 #endif // BASE_MESSAGE_LOOP_MESSAGE_PUMP_MAC_H_ 355 #endif // BASE_MESSAGE_LOOP_MESSAGE_PUMP_MAC_H_
OLDNEW
« no previous file with comments | « base/message_loop/message_pump.cc ('k') | base/message_loop/message_pump_mac.mm » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698