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

Side by Side Diff: chrome/browser/idle_mac.mm

Issue 6359008: Do not show notifications when in fullscreen or screensaver mode.... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 9 years, 11 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
OLDNEW
1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2009 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 #include "chrome/browser/idle.h" 5 #import "chrome/browser/idle.h"
6 6
7 #include <CoreGraphics/CGEventSource.h> 7 #import <Cocoa/Cocoa.h>
8 #import <CoreGraphics/CGEventSource.h>
9
10 @interface MacScreenMonitor : NSObject {
11 @private
12 BOOL screensaverRunning_;
13 BOOL screenLocked_;
14 }
15
16 - (BOOL)isScreensaverRunning;
dmac 2011/01/25 05:04:37 You could also do this with properties @property
jianli 2011/01/25 19:30:16 Done.
17 - (BOOL)isScreenLocked;
18
19 @end
20
21 @implementation MacScreenMonitor
22
23 - (id)init {
24 if ((self = [super init])) {
25 NSDistributedNotificationCenter* distCenter =
26 [NSDistributedNotificationCenter defaultCenter];
27 [distCenter addObserver:self
28 selector:@selector(onScreenSaverStarted:)
29 name:@"com.apple.screensaver.didstart"
30 object:nil];
31 [distCenter addObserver:self
32 selector:@selector(onScreenSaverStopped:)
33 name:@"com.apple.screensaver.didstop"
34 object:nil];
35 [distCenter addObserver:self
36 selector:@selector(onScreenLocked:)
37 name:@"com.apple.screenIsLocked"
38 object:nil];
39 [distCenter addObserver:self
40 selector:@selector(onScreenUnlocked:)
41 name:@"com.apple.screenIsUnlocked"
42 object:nil];
43 }
44 return self;
45 }
46
47 - (void)dealloc {
48 [[NSDistributedNotificationCenter defaultCenter] removeObject:self];
49 [super dealloc];
50 }
51
52 - (void)onScreenSaverStarted:(NSNotification*)notification {
53 screensaverRunning_ = YES;
54 }
55
56 - (void)onScreenSaverStopped:(NSNotification*)notification {
57 screensaverRunning_ = NO;
58 }
59
60 - (void)onScreenLocked:(NSNotification*)notification {
61 screenLocked_ = YES;
62 }
63
64 - (void)onScreenUnlocked:(NSNotification*)notification {
65 screenLocked_ = NO;
66 }
67
68 - (BOOL)isScreensaverRunning {
69 return screensaverRunning_;
70 }
71
72 - (BOOL)isScreenLocked {
73 return screenLocked_;
74 }
75
76 @end
77
78 MacScreenMonitor* g_screenMonitor = nil;
dmac 2011/01/25 05:04:37 should this be static or in an anonymous namespace
jianli 2011/01/25 19:30:16 Done.
79
80 void InitIdleMonitor() {
81 if (!g_screenMonitor)
82 g_screenMonitor = [[MacScreenMonitor alloc] init];
83 }
84
85 void StopIdleMonitor() {
86 [g_screenMonitor release];
87 g_screenMonitor = nil;
88 }
8 89
9 IdleState CalculateIdleState(unsigned int idle_threshold) { 90 IdleState CalculateIdleState(unsigned int idle_threshold) {
91 if ([g_screenMonitor isScreensaverRunning] ||
92 [g_screenMonitor isScreenLocked])
93 return IDLE_STATE_LOCKED;
94
10 unsigned int idle_time = CGEventSourceSecondsSinceLastEventType( 95 unsigned int idle_time = CGEventSourceSecondsSinceLastEventType(
dmac 2011/01/25 05:04:37 you are changing a double (CFTimeInterval) into an
jianli 2011/01/25 19:30:16 This is from old code written by other people. Tha
11 kCGEventSourceStateCombinedSessionState, 96 kCGEventSourceStateCombinedSessionState,
12 kCGAnyInputEventType); 97 kCGAnyInputEventType);
13 if (idle_time >= idle_threshold) 98 if (idle_time >= idle_threshold)
14 return IDLE_STATE_IDLE; 99 return IDLE_STATE_IDLE;
100
15 return IDLE_STATE_ACTIVE; 101 return IDLE_STATE_ACTIVE;
16 } 102 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698