| 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 "content/renderer/pepper/pepper_plugin_instance_impl.h" | 5 #include "content/renderer/pepper/pepper_plugin_instance_impl.h" |
| 6 | 6 |
| 7 #include "base/bind.h" | 7 #include "base/bind.h" |
| 8 #include "base/callback_helpers.h" | 8 #include "base/callback_helpers.h" |
| 9 #include "base/command_line.h" | 9 #include "base/command_line.h" |
| 10 #include "base/debug/trace_event.h" | 10 #include "base/debug/trace_event.h" |
| (...skipping 562 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 573 | 573 |
| 574 if (!module_->IsProxied()) { | 574 if (!module_->IsProxied()) { |
| 575 PepperBrowserConnection* browser_connection = | 575 PepperBrowserConnection* browser_connection = |
| 576 PepperBrowserConnection::Get(render_frame_); | 576 PepperBrowserConnection::Get(render_frame_); |
| 577 browser_connection->DidCreateInProcessInstance( | 577 browser_connection->DidCreateInProcessInstance( |
| 578 pp_instance(), | 578 pp_instance(), |
| 579 render_frame_->GetRoutingID(), | 579 render_frame_->GetRoutingID(), |
| 580 container_->element().document().url(), | 580 container_->element().document().url(), |
| 581 GetPluginURL()); | 581 GetPluginURL()); |
| 582 } | 582 } |
| 583 | |
| 584 PluginPowerSaverHelper* power_saver_helper = | |
| 585 render_frame_->plugin_power_saver_helper(); | |
| 586 GURL content_origin = plugin_url_.GetOrigin(); | |
| 587 blink::WebRect bounds = container_->element().boundsInViewportSpace(); | |
| 588 | |
| 589 bool cross_origin = false; | |
| 590 power_saver_enabled_ = | |
| 591 CommandLine::ForCurrentProcess()->HasSwitch( | |
| 592 switches::kEnablePluginPowerSaver) && | |
| 593 IsFlashPlugin(module_.get()) && | |
| 594 power_saver_helper->ShouldThrottleContent( | |
| 595 content_origin, bounds.width, bounds.height, &cross_origin); | |
| 596 | |
| 597 if (power_saver_enabled_) { | |
| 598 power_saver_helper->RegisterPeripheralPlugin( | |
| 599 content_origin, | |
| 600 base::Bind(&PepperPluginInstanceImpl::DisablePowerSaverAndUnthrottle, | |
| 601 weak_factory_.GetWeakPtr())); | |
| 602 | |
| 603 throttler_.reset(new PepperPluginInstanceThrottler( | |
| 604 base::Bind(&PepperPluginInstanceImpl::SetPluginThrottled, | |
| 605 weak_factory_.GetWeakPtr(), true /* throttled */))); | |
| 606 } else if (cross_origin) { | |
| 607 power_saver_helper->WhitelistContentOrigin(content_origin); | |
| 608 } | |
| 609 } | 583 } |
| 610 | 584 |
| 611 RendererPpapiHostImpl* host_impl = module_->renderer_ppapi_host(); | 585 RendererPpapiHostImpl* host_impl = module_->renderer_ppapi_host(); |
| 612 resource_creation_ = host_impl->CreateInProcessResourceCreationAPI(this); | 586 resource_creation_ = host_impl->CreateInProcessResourceCreationAPI(this); |
| 613 | 587 |
| 614 if (GetContentClient()->renderer() && // NULL in unit tests. | 588 if (GetContentClient()->renderer() && // NULL in unit tests. |
| 615 GetContentClient()->renderer()->IsExternalPepperPlugin(module->name())) | 589 GetContentClient()->renderer()->IsExternalPepperPlugin(module->name())) |
| 616 external_document_load_ = true; | 590 external_document_load_ = true; |
| 617 | 591 |
| 618 if (IsFlashPlugin(module_.get())) { | 592 if (IsFlashPlugin(module_.get())) { |
| (...skipping 249 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 868 "Flash.UsesGPU", is_xp * 4 + needs_gpu * 2 + prefs.is_webgl_supported, 8); | 842 "Flash.UsesGPU", is_xp * 4 + needs_gpu * 2 + prefs.is_webgl_supported, 8); |
| 869 #endif | 843 #endif |
| 870 } | 844 } |
| 871 | 845 |
| 872 bool PepperPluginInstanceImpl::Initialize( | 846 bool PepperPluginInstanceImpl::Initialize( |
| 873 const std::vector<std::string>& arg_names, | 847 const std::vector<std::string>& arg_names, |
| 874 const std::vector<std::string>& arg_values, | 848 const std::vector<std::string>& arg_values, |
| 875 bool full_frame) { | 849 bool full_frame) { |
| 876 if (!render_frame_) | 850 if (!render_frame_) |
| 877 return false; | 851 return false; |
| 852 |
| 853 PluginPowerSaverHelper* power_saver_helper = |
| 854 render_frame_->plugin_power_saver_helper(); |
| 855 GURL content_origin = plugin_url_.GetOrigin(); |
| 856 blink::WebRect bounds = container_->element().boundsInViewportSpace(); |
| 857 |
| 858 bool cross_origin = false; |
| 859 power_saver_enabled_ = |
| 860 CommandLine::ForCurrentProcess()->HasSwitch( |
| 861 switches::kEnablePluginPowerSaver) && |
| 862 IsFlashPlugin(module_.get()) && |
| 863 power_saver_helper->ShouldThrottleContent( |
| 864 content_origin, bounds.width, bounds.height, &cross_origin); |
| 865 |
| 866 if (power_saver_enabled_) { |
| 867 power_saver_helper->RegisterPeripheralPlugin( |
| 868 content_origin, |
| 869 base::Bind(&PepperPluginInstanceImpl::DisablePowerSaverAndUnthrottle, |
| 870 weak_factory_.GetWeakPtr())); |
| 871 |
| 872 throttler_.reset(new PepperPluginInstanceThrottler( |
| 873 base::Bind(&PepperPluginInstanceImpl::SetPluginThrottled, |
| 874 weak_factory_.GetWeakPtr(), true /* throttled */))); |
| 875 } else if (cross_origin) { |
| 876 power_saver_helper->WhitelistContentOrigin(content_origin); |
| 877 } |
| 878 |
| 878 message_channel_ = MessageChannel::Create(this, &message_channel_object_); | 879 message_channel_ = MessageChannel::Create(this, &message_channel_object_); |
| 879 | 880 |
| 880 full_frame_ = full_frame; | 881 full_frame_ = full_frame; |
| 881 | 882 |
| 882 UpdateTouchEventRequest(); | 883 UpdateTouchEventRequest(); |
| 883 container_->setWantsWheelEvents(IsAcceptingWheelEvents()); | 884 container_->setWantsWheelEvents(IsAcceptingWheelEvents()); |
| 884 | 885 |
| 885 SetGPUHistogram(ppapi::Preferences(PpapiPreferencesBuilder::Build( | 886 SetGPUHistogram(ppapi::Preferences(PpapiPreferencesBuilder::Build( |
| 886 render_frame_->render_view()->webkit_preferences())), | 887 render_frame_->render_view()->webkit_preferences())), |
| 887 arg_names, | 888 arg_names, |
| (...skipping 2443 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3331 SendDidChangeView(); | 3332 SendDidChangeView(); |
| 3332 } | 3333 } |
| 3333 | 3334 |
| 3334 void PepperPluginInstanceImpl::DisablePowerSaverAndUnthrottle() { | 3335 void PepperPluginInstanceImpl::DisablePowerSaverAndUnthrottle() { |
| 3335 DCHECK(power_saver_enabled_); | 3336 DCHECK(power_saver_enabled_); |
| 3336 power_saver_enabled_ = false; | 3337 power_saver_enabled_ = false; |
| 3337 SetPluginThrottled(false); | 3338 SetPluginThrottled(false); |
| 3338 } | 3339 } |
| 3339 | 3340 |
| 3340 } // namespace content | 3341 } // namespace content |
| OLD | NEW |