mirror of
https://github.com/electron/electron.git
synced 2026-04-10 03:01:51 -04:00
* chore: bump chromium in DEPS to 85.0.4182.1 * chore: bump chromium in DEPS to 85.0.4183.2 * chore: bump chromium in DEPS to 85.0.4183.4 * chore: bump chromium in DEPS to 85.0.4183.5 * update patches * chore: bump chromium in DEPS to 85.0.4183.6 * chore: bump chromium in DEPS to 85.0.4183.7 * update patches * chore: bump chromium in DEPS to 85.0.4183.8 * remove chromeos-only TtsControllerDelegate Refs: https://chromium-review.googlesource.com/c/chromium/src/+/2255314 (cherry picked from commitf975f84a3c) * rename GetHighContrastColorScheme -> GetPlatformHighContrastColorScheme Refs: https://chromium-review.googlesource.com/c/chromium/src/+/2250224 (cherry picked from commit014b487258) * add max_xcode_version build var Refs: https://chromium-review.googlesource.com/c/chromium/src/+/2264867 (cherry picked from commit2c3b94f497) * add empty floc blocklist to BrowserProcessImpl Refs: https://chromium-review.googlesource.com/c/chromium/src/+/2240873 (cherry picked from commit3cdaae146d) * Move zygote from //services/service_manager back to //content https://chromium-review.googlesource.com/c/chromium/src/+/2252466 (cherry picked from commite0d6dbcf1e) * Reland "[base] Stop including check.h, notreached.h, etc. in logging.h" https://chromium-review.googlesource.com/c/chromium/src/+/2264297 (cherry picked from commit1407040133) * Update mas private api patch * Reland "Reland "New toolchain for Windows 10 19041 SDK"" https://chromium-review.googlesource.com/c/chromium/src/+/2255527 (cherry picked from commit8101d956f5) * [XProto] Remove usage of Shape extension https://chromium-review.googlesource.com/c/chromium/src/+/2262113 (cherry picked from commit72b6f11958) * chore: bump chromium in DEPS to 85.0.4183.9 * chore: bump chromium in DEPS to 85.0.4183.10 * chore: bump chromium in DEPS to 85.0.4183.11 * chore: bump chromium in DEPS to 85.0.4183.12 * chore: bump chromium in DEPS to 85.0.4183.13 * update patches * fixup! add empty floc blocklist to BrowserProcessImpl (cherry picked from commit07b0b65c1d) * fixup! Reland "[base] Stop including check.h, notreached.h, etc. in logging.h" (cherry picked from commitf91c1ab162) * Check for GDI exhaustion if window creation fails https://chromium-review.googlesource.com/c/chromium/src/+/2244124 (cherry picked from commit3d45d7b78c) * chore: bump chromium in DEPS to 85.0.4183.14 * Fixup lint issue * update patches * fix: include missing header file * chore: bump chromium in DEPS to 85.0.4183.19 * update patches * refactor: match upstream print preview handling (#24452) (cherry picked from commit004e29ad33) * use PrintHostMsg_DidPreviewPage_Params https://chromium-review.googlesource.com/c/chromium/src/+/2257124 Co-authored-by: Andy Locascio <andy@slack-corp.com> Co-authored-by: Electron Bot <anonymous@electronjs.org> Co-authored-by: deepak1556 <hop2deep@gmail.com> Co-authored-by: John Kleinschmidt <jkleinsc@github.com> Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com>
90 lines
2.9 KiB
C++
90 lines
2.9 KiB
C++
// Copyright (c) 2013 GitHub, Inc.
|
|
// Use of this source code is governed by the MIT license that can be
|
|
// found in the LICENSE file.
|
|
|
|
#include "shell/browser/api/electron_api_power_monitor.h"
|
|
|
|
#include <windows.h>
|
|
#include <wtsapi32.h>
|
|
|
|
#include "base/win/windows_types.h"
|
|
#include "base/win/wrapped_window_proc.h"
|
|
#include "ui/base/win/shell.h"
|
|
#include "ui/gfx/win/hwnd_util.h"
|
|
|
|
namespace electron {
|
|
|
|
namespace {
|
|
|
|
const wchar_t kPowerMonitorWindowClass[] = L"Electron_PowerMonitorHostWindow";
|
|
|
|
} // namespace
|
|
|
|
namespace api {
|
|
|
|
void PowerMonitor::InitPlatformSpecificMonitors() {
|
|
WNDCLASSEX window_class;
|
|
base::win::InitializeWindowClass(
|
|
kPowerMonitorWindowClass,
|
|
&base::win::WrappedWindowProc<PowerMonitor::WndProcStatic>, 0, 0, 0, NULL,
|
|
NULL, NULL, NULL, NULL, &window_class);
|
|
instance_ = window_class.hInstance;
|
|
atom_ = RegisterClassEx(&window_class);
|
|
|
|
// Create an offscreen window for receiving broadcast messages for the
|
|
// session lock and unlock events.
|
|
window_ = CreateWindow(MAKEINTATOM(atom_), 0, 0, 0, 0, 0, 0, HWND_MESSAGE, 0,
|
|
instance_, 0);
|
|
gfx::CheckWindowCreated(window_, ::GetLastError());
|
|
gfx::SetWindowUserData(window_, this);
|
|
|
|
// Tel windows we want to be notified with session events
|
|
WTSRegisterSessionNotification(window_, NOTIFY_FOR_THIS_SESSION);
|
|
}
|
|
|
|
LRESULT CALLBACK PowerMonitor::WndProcStatic(HWND hwnd,
|
|
UINT message,
|
|
WPARAM wparam,
|
|
LPARAM lparam) {
|
|
PowerMonitor* msg_wnd =
|
|
reinterpret_cast<PowerMonitor*>(GetWindowLongPtr(hwnd, GWLP_USERDATA));
|
|
if (msg_wnd)
|
|
return msg_wnd->WndProc(hwnd, message, wparam, lparam);
|
|
else
|
|
return ::DefWindowProc(hwnd, message, wparam, lparam);
|
|
}
|
|
|
|
LRESULT CALLBACK PowerMonitor::WndProc(HWND hwnd,
|
|
UINT message,
|
|
WPARAM wparam,
|
|
LPARAM lparam) {
|
|
if (message == WM_WTSSESSION_CHANGE) {
|
|
bool should_treat_as_current_session = true;
|
|
DWORD current_session_id = 0;
|
|
if (!::ProcessIdToSessionId(::GetCurrentProcessId(), ¤t_session_id)) {
|
|
LOG(ERROR) << "ProcessIdToSessionId failed, assuming current session";
|
|
} else {
|
|
should_treat_as_current_session =
|
|
(static_cast<DWORD>(lparam) == current_session_id);
|
|
}
|
|
if (should_treat_as_current_session) {
|
|
if (wparam == WTS_SESSION_LOCK) {
|
|
Emit("lock-screen");
|
|
} else if (wparam == WTS_SESSION_UNLOCK) {
|
|
Emit("unlock-screen");
|
|
}
|
|
}
|
|
} else if (message == WM_POWERBROADCAST) {
|
|
if (wparam == PBT_APMRESUMEAUTOMATIC) {
|
|
Emit("resume");
|
|
} else if (wparam == PBT_APMSUSPEND) {
|
|
Emit("suspend");
|
|
}
|
|
}
|
|
return ::DefWindowProc(hwnd, message, wparam, lparam);
|
|
}
|
|
|
|
} // namespace api
|
|
|
|
} // namespace electron
|