Chromium Code Reviews| Index: chrome/browser/renderer_host/pepper/pepper_flash_browser_host.cc |
| diff --git a/chrome/browser/renderer_host/pepper/pepper_flash_browser_host.cc b/chrome/browser/renderer_host/pepper/pepper_flash_browser_host.cc |
| index 5ce665036057c6062f7d54cc8bc8ad568c52e7a3..c8ff5919e21c1ae7b530ef85248e6fa82892e76a 100644 |
| --- a/chrome/browser/renderer_host/pepper/pepper_flash_browser_host.cc |
| +++ b/chrome/browser/renderer_host/pepper/pepper_flash_browser_host.cc |
| @@ -13,6 +13,7 @@ |
| #include "content/public/browser/browser_ppapi_host.h" |
| #include "content/public/browser/browser_thread.h" |
| #include "content/public/browser/render_process_host.h" |
| +#include "device/power_save_blocker/power_save_blocker.h" |
| #include "ipc/ipc_message_macros.h" |
| #include "ppapi/c/pp_errors.h" |
| #include "ppapi/c/private/ppb_flash.h" |
| @@ -80,19 +81,20 @@ int32_t PepperFlashBrowserHost::OnResourceMessageReceived( |
| int32_t PepperFlashBrowserHost::OnUpdateActivity( |
| ppapi::host::HostMessageContext* host_context) { |
| -#if defined(OS_WIN) |
| - // Reading then writing back the same value to the screensaver timeout system |
| - // setting resets the countdown which prevents the screensaver from turning |
| - // on "for a while". As long as the plugin pings us with this message faster |
| - // than the screensaver timeout, it won't go on. |
| - int value = 0; |
| - if (SystemParametersInfo(SPI_GETSCREENSAVETIMEOUT, 0, &value, 0)) |
| - SystemParametersInfo(SPI_SETSCREENSAVETIMEOUT, value, NULL, 0); |
| -#elif defined(OS_MACOSX) |
| - UpdateSystemActivity(OverallAct); |
| -#else |
| -// TODO(brettw) implement this for other platforms. |
| -#endif |
| + device::PowerSaveBlocker* blocker = new device::PowerSaveBlocker( |
| + device::PowerSaveBlocker::kPowerSaveBlockPreventAppSuspension, |
| + device::PowerSaveBlocker::kReasonOther, "Requested By PepperFlash", |
| + BrowserThread::GetTaskRunnerForThread(BrowserThread::UI), |
| + BrowserThread::GetTaskRunnerForThread(BrowserThread::FILE)); |
| + auto delete_blocker = [](device::PowerSaveBlocker* blocker) { |
| + delete blocker; |
| + }; |
| + // There is no specification for how long OnUpdateActivity should prevent the |
| + // screen from going to sleep. Empirically, twitch.tv calls this method every |
| + // 10 seconds. Be conservative and allow 45 seconds before deleting the block. |
| + BrowserThread::PostDelayedTask(BrowserThread::IO, FROM_HERE, |
| + base::Bind(delete_blocker, blocker), |
| + base::TimeDelta::FromSeconds(45)); |
|
bbudge
2016/10/13 19:53:51
Since this is a plugin API, it seems bad to allow
ccameron
2016/10/14 21:39:43
Sure -- switched it to a DelayTimer impl.
|
| return PP_OK; |
| } |