Chromium Code Reviews| OLD | NEW |
|---|---|
| 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 #include <X11/Xlib.h> | 5 #include <X11/Xlib.h> |
| 6 #include <X11/extensions/dpms.h> | 6 #include <X11/extensions/dpms.h> |
| 7 #include <X11/extensions/scrnsaver.h> | 7 #include <X11/extensions/scrnsaver.h> |
| 8 #include <stdint.h> | 8 #include <stdint.h> |
| 9 | 9 |
| 10 #include <memory> | 10 #include <memory> |
| (...skipping 14 matching lines...) Expand all Loading... | |
| 25 #include "base/logging.h" | 25 #include "base/logging.h" |
| 26 #include "base/macros.h" | 26 #include "base/macros.h" |
| 27 #include "base/memory/ref_counted.h" | 27 #include "base/memory/ref_counted.h" |
| 28 #include "base/memory/singleton.h" | 28 #include "base/memory/singleton.h" |
| 29 #include "base/nix/xdg_util.h" | 29 #include "base/nix/xdg_util.h" |
| 30 #include "base/synchronization/lock.h" | 30 #include "base/synchronization/lock.h" |
| 31 #include "dbus/bus.h" | 31 #include "dbus/bus.h" |
| 32 #include "dbus/message.h" | 32 #include "dbus/message.h" |
| 33 #include "dbus/object_path.h" | 33 #include "dbus/object_path.h" |
| 34 #include "dbus/object_proxy.h" | 34 #include "dbus/object_proxy.h" |
| 35 #include "ui/gfx/switches.h" | |
| 35 #include "ui/gfx/x/x11_types.h" | 36 #include "ui/gfx/x/x11_types.h" |
| 36 | 37 |
| 37 namespace { | 38 namespace { |
| 38 | 39 |
| 39 enum DBusAPI { | 40 enum DBusAPI { |
| 40 NO_API, // Disable. No supported API available. | 41 NO_API, // Disable. No supported API available. |
| 41 GNOME_API, // Use the GNOME API. (Supports more features.) | 42 GNOME_API, // Use the GNOME API. (Supports more features.) |
| 42 FREEDESKTOP_API, // Use the FreeDesktop API, for KDE4, KDE5, and XFCE. | 43 FREEDESKTOP_API, // Use the FreeDesktop API, for KDE4, KDE5, and XFCE. |
| 43 }; | 44 }; |
| 44 | 45 |
| (...skipping 384 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 429 int dummy; | 430 int dummy; |
| 430 if (DPMSQueryExtension(display, &dummy, &dummy) && DPMSCapable(display)) { | 431 if (DPMSQueryExtension(display, &dummy, &dummy) && DPMSCapable(display)) { |
| 431 CARD16 state; | 432 CARD16 state; |
| 432 DPMSInfo(display, &state, &enabled); | 433 DPMSInfo(display, &state, &enabled); |
| 433 } | 434 } |
| 434 return enabled; | 435 return enabled; |
| 435 } | 436 } |
| 436 | 437 |
| 437 bool PowerSaveBlocker::Delegate::XSSAvailable() { | 438 bool PowerSaveBlocker::Delegate::XSSAvailable() { |
| 438 DCHECK(ui_task_runner_->RunsTasksOnCurrentThread()); | 439 DCHECK(ui_task_runner_->RunsTasksOnCurrentThread()); |
| 440 if (base::CommandLine::ForCurrentProcess()->HasSwitch(switches::kHeadless)) | |
|
hashimoto
2017/01/17 15:28:32
Please add a brief comment to justify this behavio
Sami
2017/01/17 15:43:49
Done.
| |
| 441 return false; | |
| 439 XDisplay* display = gfx::GetXDisplay(); | 442 XDisplay* display = gfx::GetXDisplay(); |
| 440 int dummy; | 443 int dummy; |
| 441 int major; | 444 int major; |
| 442 int minor; | 445 int minor; |
| 443 | 446 |
| 444 if (!XScreenSaverQueryExtension(display, &dummy, &dummy)) | 447 if (!XScreenSaverQueryExtension(display, &dummy, &dummy)) |
| 445 return false; | 448 return false; |
| 446 | 449 |
| 447 if (!XScreenSaverQueryVersion(display, &major, &minor)) | 450 if (!XScreenSaverQueryVersion(display, &major, &minor)) |
| 448 return false; | 451 return false; |
| 449 | 452 |
| 450 return major > 1 || (major == 1 && minor >= 1); | 453 return major > 1 || (major == 1 && minor >= 1); |
| 451 } | 454 } |
| 452 | 455 |
| 453 DBusAPI PowerSaveBlocker::Delegate::SelectAPI() { | 456 DBusAPI PowerSaveBlocker::Delegate::SelectAPI() { |
| 454 DCHECK(ui_task_runner_->RunsTasksOnCurrentThread()); | 457 DCHECK(ui_task_runner_->RunsTasksOnCurrentThread()); |
| 458 if (base::CommandLine::ForCurrentProcess()->HasSwitch(switches::kHeadless)) | |
|
hashimoto
2017/01/17 15:28:32
ditto.
Sami
2017/01/17 15:43:49
Done.
| |
| 459 return NO_API; | |
| 455 std::unique_ptr<base::Environment> env(base::Environment::Create()); | 460 std::unique_ptr<base::Environment> env(base::Environment::Create()); |
| 456 switch (base::nix::GetDesktopEnvironment(env.get())) { | 461 switch (base::nix::GetDesktopEnvironment(env.get())) { |
| 457 case base::nix::DESKTOP_ENVIRONMENT_GNOME: | 462 case base::nix::DESKTOP_ENVIRONMENT_GNOME: |
| 458 case base::nix::DESKTOP_ENVIRONMENT_UNITY: | 463 case base::nix::DESKTOP_ENVIRONMENT_UNITY: |
| 459 if (DPMSEnabled()) | 464 if (DPMSEnabled()) |
| 460 return GNOME_API; | 465 return GNOME_API; |
| 461 break; | 466 break; |
| 462 case base::nix::DESKTOP_ENVIRONMENT_XFCE: | 467 case base::nix::DESKTOP_ENVIRONMENT_XFCE: |
| 463 case base::nix::DESKTOP_ENVIRONMENT_KDE4: | 468 case base::nix::DESKTOP_ENVIRONMENT_KDE4: |
| 464 case base::nix::DESKTOP_ENVIRONMENT_KDE5: | 469 case base::nix::DESKTOP_ENVIRONMENT_KDE5: |
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 496 } | 501 } |
| 497 } | 502 } |
| 498 | 503 |
| 499 PowerSaveBlocker::~PowerSaveBlocker() { | 504 PowerSaveBlocker::~PowerSaveBlocker() { |
| 500 delegate_->CleanUp(); | 505 delegate_->CleanUp(); |
| 501 if (freedesktop_suspend_delegate_) | 506 if (freedesktop_suspend_delegate_) |
| 502 freedesktop_suspend_delegate_->CleanUp(); | 507 freedesktop_suspend_delegate_->CleanUp(); |
| 503 } | 508 } |
| 504 | 509 |
| 505 } // namespace device | 510 } // namespace device |
| OLD | NEW |