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

Side by Side Diff: content/renderer/pepper/plugin_module.cc

Issue 1132873002: Plugin Power Saver: Fix poster-click flaky test. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@0275-plugin-power-saver-preserve-js-access-for-throttled-plugins
Patch Set: Created 5 years, 7 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
OLDNEW
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 "content/renderer/pepper/plugin_module.h" 5 #include "content/renderer/pepper/plugin_module.h"
6 6
7 #include <set> 7 #include <set>
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/command_line.h" 10 #include "base/command_line.h"
(...skipping 169 matching lines...) Expand 10 before | Expand all | Expand 10 after
180 PluginModuleSet* GetLivePluginSet() { 180 PluginModuleSet* GetLivePluginSet() {
181 CR_DEFINE_STATIC_LOCAL(PluginModuleSet, live_plugin_libs, ()); 181 CR_DEFINE_STATIC_LOCAL(PluginModuleSet, live_plugin_libs, ());
182 return &live_plugin_libs; 182 return &live_plugin_libs;
183 } 183 }
184 184
185 class PowerSaverTestPluginDelegate : public PluginInstanceThrottler::Observer { 185 class PowerSaverTestPluginDelegate : public PluginInstanceThrottler::Observer {
186 public: 186 public:
187 explicit PowerSaverTestPluginDelegate(PluginInstanceThrottlerImpl* throttler) 187 explicit PowerSaverTestPluginDelegate(PluginInstanceThrottlerImpl* throttler)
188 : throttler_(throttler) { 188 : throttler_(throttler) {
189 throttler_->AddObserver(this); 189 throttler_->AddObserver(this);
190 PostPowerSaverStatusToJavaScript(throttler_, "initial"); 190 PostPowerSaverStatusToJavaScript("initial");
191 } 191 }
192 192
193 virtual ~PowerSaverTestPluginDelegate() { throttler_->RemoveObserver(this); } 193 virtual ~PowerSaverTestPluginDelegate() { throttler_->RemoveObserver(this); }
194 194
195 static void PostPowerSaverStatusToJavaScript( 195 static void PostPowerSaverStatusToJavaScript(
tommycli 2015/05/08 19:26:58 The changes in this file are necessary because pre
196 PluginInstanceThrottlerImpl* throttler, 196 PepperPluginInstanceImpl* instance,
197 const std::string& source) { 197 const std::string& source) {
198 if (!throttler->GetWebPlugin() || !throttler->GetWebPlugin()->instance()) 198 DCHECK(instance);
199 return;
200 199
201 PepperPluginInstanceImpl* instance = throttler->GetWebPlugin()->instance(); 200 bool is_hidden_for_placeholder = false;
201 bool is_peripheral = false;
202 bool is_throttled = false;
203
204 if (instance->throttler()) {
205 PluginInstanceThrottlerImpl* throttler = instance->throttler();
206 is_hidden_for_placeholder = throttler->IsHiddenForPlaceholder();
207 is_peripheral = throttler->power_saver_enabled();
208 is_throttled = throttler->IsThrottled();
209 }
202 210
203 // Refcounted by the returned PP_Var. 211 // Refcounted by the returned PP_Var.
204 ppapi::DictionaryVar* dictionary = new ppapi::DictionaryVar; 212 ppapi::DictionaryVar* dictionary = new ppapi::DictionaryVar;
205 dictionary->Set(ppapi::StringVar::StringToPPVar("source"), 213 dictionary->Set(ppapi::StringVar::StringToPPVar("source"),
206 ppapi::StringVar::StringToPPVar(source)); 214 ppapi::StringVar::StringToPPVar(source));
207 dictionary->Set( 215 dictionary->Set(ppapi::StringVar::StringToPPVar("isHiddenForPlaceholder"),
208 ppapi::StringVar::StringToPPVar("isHiddenForPlaceholder"), 216 PP_MakeBool(PP_FromBool(is_hidden_for_placeholder)));
209 PP_MakeBool(PP_FromBool(throttler->IsHiddenForPlaceholder())));
210 dictionary->Set(ppapi::StringVar::StringToPPVar("isPeripheral"), 217 dictionary->Set(ppapi::StringVar::StringToPPVar("isPeripheral"),
211 PP_MakeBool(PP_FromBool(throttler->power_saver_enabled()))); 218 PP_MakeBool(PP_FromBool(is_peripheral)));
212 dictionary->Set(ppapi::StringVar::StringToPPVar("isThrottled"), 219 dictionary->Set(ppapi::StringVar::StringToPPVar("isThrottled"),
213 PP_MakeBool(PP_FromBool(throttler->IsThrottled()))); 220 PP_MakeBool(PP_FromBool(is_throttled)));
214 221
215 instance->PostMessageToJavaScript(dictionary->GetPPVar()); 222 instance->PostMessageToJavaScript(dictionary->GetPPVar());
216 } 223 }
217 224
218 private: 225 private:
219 void OnThrottleStateChange() override { 226 void OnThrottleStateChange() override {
220 PostPowerSaverStatusToJavaScript(throttler_, "throttleStatusChange"); 227 PostPowerSaverStatusToJavaScript("throttleStatusChange");
221 } 228 }
222 229
223 void OnPeripheralStateChange() override { 230 void OnPeripheralStateChange() override {
224 PostPowerSaverStatusToJavaScript(throttler_, "peripheralStatusChange"); 231 PostPowerSaverStatusToJavaScript("peripheralStatusChange");
225 } 232 }
226 233
227 void OnHiddenForPlaceholder(bool hidden) override { 234 void OnHiddenForPlaceholder(bool hidden) override {
228 PostPowerSaverStatusToJavaScript(throttler_, 235 PostPowerSaverStatusToJavaScript("hiddenForPlaceholderStatusChange");
229 "hiddenForPlaceholderStatusChange");
230 } 236 }
231 237
232 void OnThrottlerDestroyed() override { delete this; } 238 void OnThrottlerDestroyed() override { delete this; }
233 239
240 void PostPowerSaverStatusToJavaScript(const std::string& source) {
241 if (!throttler_->GetWebPlugin() || !throttler_->GetWebPlugin()->instance())
242 return;
243 PostPowerSaverStatusToJavaScript(throttler_->GetWebPlugin()->instance(),
244 source);
245 }
246
234 // Non-owning pointer. 247 // Non-owning pointer.
235 PluginInstanceThrottlerImpl* const throttler_; 248 PluginInstanceThrottlerImpl* const throttler_;
236 }; 249 };
237 250
238 // PPB_Core -------------------------------------------------------------------- 251 // PPB_Core --------------------------------------------------------------------
239 252
240 void AddRefResource(PP_Resource resource) { 253 void AddRefResource(PP_Resource resource) {
241 PpapiGlobals::Get()->GetResourceTracker()->AddRefResource(resource); 254 PpapiGlobals::Get()->GetResourceTracker()->AddRefResource(resource);
242 } 255 }
243 256
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
296 uint32_t GetLiveObjectsForInstance(PP_Instance instance_id) { 309 uint32_t GetLiveObjectsForInstance(PP_Instance instance_id) {
297 return HostGlobals::Get()->GetResourceTracker()->GetLiveObjectsForInstance( 310 return HostGlobals::Get()->GetResourceTracker()->GetLiveObjectsForInstance(
298 instance_id); 311 instance_id);
299 } 312 }
300 313
301 PP_Bool IsOutOfProcess() { return PP_FALSE; } 314 PP_Bool IsOutOfProcess() { return PP_FALSE; }
302 315
303 void PostPowerSaverStatus(PP_Instance instance_id) { 316 void PostPowerSaverStatus(PP_Instance instance_id) {
304 PepperPluginInstanceImpl* plugin_instance = 317 PepperPluginInstanceImpl* plugin_instance =
305 host_globals->GetInstance(instance_id); 318 host_globals->GetInstance(instance_id);
306 if (!plugin_instance || !plugin_instance->throttler()) 319 if (!plugin_instance)
307 return; 320 return;
308 321
309 PowerSaverTestPluginDelegate::PostPowerSaverStatusToJavaScript( 322 PowerSaverTestPluginDelegate::PostPowerSaverStatusToJavaScript(
310 plugin_instance->throttler(), "getPowerSaverStatusResponse"); 323 plugin_instance, "getPowerSaverStatusResponse");
311 } 324 }
312 325
313 void SubscribeToPowerSaverNotifications(PP_Instance instance_id) { 326 void SubscribeToPowerSaverNotifications(PP_Instance instance_id) {
314 PepperPluginInstanceImpl* plugin_instance = 327 PepperPluginInstanceImpl* plugin_instance =
315 host_globals->GetInstance(instance_id); 328 host_globals->GetInstance(instance_id);
316 if (!plugin_instance || !plugin_instance->throttler()) 329 if (!plugin_instance)
317 return; 330 return;
318 331
319 // Manages its own lifetime. 332 if (plugin_instance->throttler()) {
320 new PowerSaverTestPluginDelegate(plugin_instance->throttler()); 333 // Manages its own lifetime.
334 new PowerSaverTestPluginDelegate(plugin_instance->throttler());
335 } else {
336 // Just send an initial status. This status will never be updated.
337 PowerSaverTestPluginDelegate::PostPowerSaverStatusToJavaScript(
338 plugin_instance, "initial");
339 }
321 } 340 }
322 341
323 void SimulateInputEvent(PP_Instance instance, PP_Resource input_event) { 342 void SimulateInputEvent(PP_Instance instance, PP_Resource input_event) {
324 PepperPluginInstanceImpl* plugin_instance = 343 PepperPluginInstanceImpl* plugin_instance =
325 host_globals->GetInstance(instance); 344 host_globals->GetInstance(instance);
326 if (!plugin_instance) 345 if (!plugin_instance)
327 return; 346 return;
328 347
329 EnterResource<PPB_InputEvent_API> enter(input_event, false); 348 EnterResource<PPB_InputEvent_API> enter(input_event, false);
330 if (enter.failed()) 349 if (enter.failed())
(...skipping 472 matching lines...) Expand 10 before | Expand all | Expand 10 after
803 channel_handle, 822 channel_handle,
804 peer_pid, 823 peer_pid,
805 plugin_child_id, 824 plugin_child_id,
806 false)) // is_external = false 825 false)) // is_external = false
807 return scoped_refptr<PluginModule>(); 826 return scoped_refptr<PluginModule>();
808 827
809 return module; 828 return module;
810 } 829 }
811 830
812 } // namespace content 831 } // namespace content
OLDNEW
« content/public/common/content_switches.cc ('K') | « content/public/common/content_switches.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698