OLD | NEW |
1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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 "chrome/renderer/plugins/plugin_preroller.h" | 5 #include "chrome/renderer/plugins/plugin_preroller.h" |
6 | 6 |
7 #include "base/base64.h" | 7 #include "base/base64.h" |
8 #include "chrome/grit/renderer_resources.h" | 8 #include "chrome/grit/renderer_resources.h" |
9 #include "chrome/renderer/plugins/chrome_plugin_placeholder.h" | 9 #include "chrome/renderer/plugins/chrome_plugin_placeholder.h" |
10 #include "chrome/renderer/plugins/power_saver_info.h" | 10 #include "chrome/renderer/plugins/power_saver_info.h" |
11 #include "third_party/WebKit/public/platform/WebRect.h" | 11 #include "third_party/WebKit/public/platform/WebRect.h" |
12 #include "third_party/WebKit/public/web/WebElement.h" | 12 #include "third_party/WebKit/public/web/WebElement.h" |
13 #include "third_party/WebKit/public/web/WebPlugin.h" | 13 #include "third_party/WebKit/public/web/WebPlugin.h" |
14 #include "third_party/WebKit/public/web/WebPluginContainer.h" | 14 #include "third_party/WebKit/public/web/WebPluginContainer.h" |
15 #include "ui/gfx/codec/png_codec.h" | 15 #include "ui/gfx/codec/png_codec.h" |
16 | 16 |
17 PluginPreroller::PluginPreroller(content::RenderFrame* render_frame, | 17 PluginPreroller::PluginPreroller(content::RenderFrame* render_frame, |
18 blink::WebLocalFrame* frame, | |
19 const blink::WebPluginParams& params, | 18 const blink::WebPluginParams& params, |
20 const content::WebPluginInfo& info, | 19 const content::WebPluginInfo& info, |
21 const std::string& identifier, | 20 const std::string& identifier, |
22 const base::string16& name, | 21 const base::string16& name, |
23 const base::string16& message, | 22 const base::string16& message, |
24 content::PluginInstanceThrottler* throttler) | 23 content::PluginInstanceThrottler* throttler) |
25 : RenderFrameObserver(render_frame), | 24 : RenderFrameObserver(render_frame), |
26 frame_(frame), | |
27 params_(params), | 25 params_(params), |
28 info_(info), | 26 info_(info), |
29 identifier_(identifier), | 27 identifier_(identifier), |
30 name_(name), | 28 name_(name), |
31 message_(message), | 29 message_(message), |
32 throttler_(throttler) { | 30 throttler_(throttler) { |
33 DCHECK(throttler); | 31 DCHECK(throttler); |
34 throttler_->AddObserver(this); | 32 throttler_->AddObserver(this); |
35 } | 33 } |
36 | 34 |
(...skipping 22 matching lines...) Expand all Loading... |
59 if (!throttler_->IsThrottled()) | 57 if (!throttler_->IsThrottled()) |
60 return; | 58 return; |
61 | 59 |
62 PowerSaverInfo power_saver_info; | 60 PowerSaverInfo power_saver_info; |
63 power_saver_info.power_saver_enabled = true; | 61 power_saver_info.power_saver_enabled = true; |
64 power_saver_info.poster_attribute = keyframe_data_url_.spec(); | 62 power_saver_info.poster_attribute = keyframe_data_url_.spec(); |
65 power_saver_info.custom_poster_size = throttler_->GetSize(); | 63 power_saver_info.custom_poster_size = throttler_->GetSize(); |
66 | 64 |
67 ChromePluginPlaceholder* placeholder = | 65 ChromePluginPlaceholder* placeholder = |
68 ChromePluginPlaceholder::CreateBlockedPlugin( | 66 ChromePluginPlaceholder::CreateBlockedPlugin( |
69 render_frame(), frame_, params_, info_, identifier_, name_, | 67 render_frame(), params_, info_, identifier_, name_, |
70 IDR_PLUGIN_POSTER_HTML, message_, power_saver_info); | 68 IDR_PLUGIN_POSTER_HTML, message_, power_saver_info); |
71 placeholder->SetPremadePlugin(throttler_); | 69 placeholder->SetPremadePlugin(throttler_); |
72 placeholder->AllowLoading(); | 70 placeholder->AllowLoading(); |
73 | 71 |
74 blink::WebPluginContainer* container = | 72 blink::WebPluginContainer* container = |
75 throttler_->GetWebPlugin()->Container(); | 73 throttler_->GetWebPlugin()->Container(); |
76 container->SetPlugin(placeholder->plugin()); | 74 container->SetPlugin(placeholder->plugin()); |
77 | 75 |
78 bool success = placeholder->plugin()->Initialize(container); | 76 bool success = placeholder->plugin()->Initialize(container); |
79 DCHECK(success); | 77 DCHECK(success); |
80 | 78 |
81 container->Invalidate(); | 79 container->Invalidate(); |
82 container->ReportGeometry(); | 80 container->ReportGeometry(); |
83 | 81 |
84 delete this; | 82 delete this; |
85 } | 83 } |
86 | 84 |
87 void PluginPreroller::OnThrottlerDestroyed() { | 85 void PluginPreroller::OnThrottlerDestroyed() { |
88 throttler_ = nullptr; | 86 throttler_ = nullptr; |
89 delete this; | 87 delete this; |
90 } | 88 } |
91 | 89 |
92 void PluginPreroller::OnDestruct() { | 90 void PluginPreroller::OnDestruct() { |
93 delete this; | 91 delete this; |
94 } | 92 } |
OLD | NEW |