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

Unified Diff: chrome/browser/renderer_host/pepper/pepper_flash_browser_host.cc

Issue 2388313004: Flash: Use better APIs for preventing sleep (Closed)
Patch Set: Use DelayTimer Created 4 years, 2 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/browser/renderer_host/pepper/pepper_flash_browser_host.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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..662544a57510a7402d5b54248c912a23124e4389 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"
@@ -57,6 +58,8 @@ PepperFlashBrowserHost::PepperFlashBrowserHost(BrowserPpapiHost* host,
PP_Resource resource)
: ResourceHost(host->GetPpapiHost(), instance, resource),
host_(host),
+ delay_timer_(FROM_HERE, base::TimeDelta::FromSeconds(45), this,
+ &PepperFlashBrowserHost::OnDelayTimerFired),
weak_factory_(this) {
int unused;
host->GetRenderFrameIDsForInstance(instance, &render_process_id_, &unused);
@@ -78,21 +81,24 @@ int32_t PepperFlashBrowserHost::OnResourceMessageReceived(
return PP_ERROR_FAILED;
}
+void PepperFlashBrowserHost::OnDelayTimerFired() {
+ power_save_blocker_.reset();
+}
+
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
+ if (!power_save_blocker_) {
+ power_save_blocker_.reset(new device::PowerSaveBlocker(
+ device::PowerSaveBlocker::kPowerSaveBlockPreventAppSuspension,
+ device::PowerSaveBlocker::kReasonOther, "Requested By PepperFlash",
+ BrowserThread::GetTaskRunnerForThread(BrowserThread::UI),
+ BrowserThread::GetTaskRunnerForThread(BrowserThread::FILE)));
+ }
+ // 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 (set in |delay_timer_|'s
+ // ctor) before deleting the block.
+ delay_timer_.Reset();
return PP_OK;
}
« no previous file with comments | « chrome/browser/renderer_host/pepper/pepper_flash_browser_host.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698