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: chrome/browser/idle_win.cc

Issue 140453002: Repaint windows on screen unlock. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 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
« no previous file with comments | « no previous file | ui/base/win/lock_state.h » ('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) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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 #include "chrome/browser/idle.h"
6 6
7 #include <limits.h> 7 #include <limits.h>
8 #include <windows.h> 8 #include <windows.h>
9 9
10 #include "ui/base/win/lock_state.h"
11
10 namespace { 12 namespace {
11 13
12 DWORD CalculateIdleTimeInternal() { 14 DWORD CalculateIdleTimeInternal() {
13 LASTINPUTINFO last_input_info = {0}; 15 LASTINPUTINFO last_input_info = {0};
14 last_input_info.cbSize = sizeof(LASTINPUTINFO); 16 last_input_info.cbSize = sizeof(LASTINPUTINFO);
15 DWORD current_idle_time = 0; 17 DWORD current_idle_time = 0;
16 if (::GetLastInputInfo(&last_input_info)) { 18 if (::GetLastInputInfo(&last_input_info)) {
17 DWORD now = ::GetTickCount(); 19 DWORD now = ::GetTickCount();
18 if (now < last_input_info.dwTime) { 20 if (now < last_input_info.dwTime) {
19 // GetTickCount() wraps around every 49.7 days -- assume it wrapped just 21 // GetTickCount() wraps around every 49.7 days -- assume it wrapped just
(...skipping 14 matching lines...) Expand all
34 return current_idle_time; 36 return current_idle_time;
35 } 37 }
36 38
37 bool IsScreensaverRunning() { 39 bool IsScreensaverRunning() {
38 DWORD result = 0; 40 DWORD result = 0;
39 if (::SystemParametersInfo(SPI_GETSCREENSAVERRUNNING, 0, &result, 0)) 41 if (::SystemParametersInfo(SPI_GETSCREENSAVERRUNNING, 0, &result, 0))
40 return result != FALSE; 42 return result != FALSE;
41 return false; 43 return false;
42 } 44 }
43 45
44 bool IsWorkstationLocked() {
45 bool is_locked = true;
46 HDESK input_desk = ::OpenInputDesktop(0, 0, GENERIC_READ);
47 if (input_desk) {
48 wchar_t name[256] = {0};
49 DWORD needed = 0;
50 if (::GetUserObjectInformation(input_desk,
51 UOI_NAME,
52 name,
53 sizeof(name),
54 &needed)) {
55 is_locked = lstrcmpi(name, L"default") != 0;
56 }
57 ::CloseDesktop(input_desk);
58 }
59 return is_locked;
60 }
61
62 } // namespace 46 } // namespace
63 47
64 void CalculateIdleTime(IdleTimeCallback notify) { 48 void CalculateIdleTime(IdleTimeCallback notify) {
65 notify.Run(static_cast<int>(CalculateIdleTimeInternal())); 49 notify.Run(static_cast<int>(CalculateIdleTimeInternal()));
66 } 50 }
67 51
68 bool CheckIdleStateIsLocked() { 52 bool CheckIdleStateIsLocked() {
69 return IsWorkstationLocked() || IsScreensaverRunning(); 53 return ui::IsWorkstationLocked() || IsScreensaverRunning();
70 } 54 }
OLDNEW
« no previous file with comments | « no previous file | ui/base/win/lock_state.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698