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

Side by Side Diff: components/plugins/renderer/loadable_plugin_placeholder.cc

Issue 1407913002: Plugin Power Saver: Fix play-icon positioning when poster specified. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 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 unified diff | Download patch
« no previous file with comments | « chrome/renderer/resources/plugins/plugin_poster.html ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 "components/plugins/renderer/loadable_plugin_placeholder.h" 5 #include "components/plugins/renderer/loadable_plugin_placeholder.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/bind_helpers.h" 8 #include "base/bind_helpers.h"
9 #include "base/command_line.h" 9 #include "base/command_line.h"
10 #include "base/json/string_escape.h" 10 #include "base/json/string_escape.h"
(...skipping 166 matching lines...) Expand 10 before | Expand all | Expand 10 after
177 // Pass through JavaScript access to the underlying throttled plugin. 177 // Pass through JavaScript access to the underlying throttled plugin.
178 if (premade_throttler_ && premade_throttler_->GetWebPlugin()) { 178 if (premade_throttler_ && premade_throttler_->GetWebPlugin()) {
179 return premade_throttler_->GetWebPlugin()->v8ScriptableObject(isolate); 179 return premade_throttler_->GetWebPlugin()->v8ScriptableObject(isolate);
180 } 180 }
181 return v8::Local<v8::Object>(); 181 return v8::Local<v8::Object>();
182 } 182 }
183 183
184 void LoadablePluginPlaceholder::OnUnobscuredRectUpdate( 184 void LoadablePluginPlaceholder::OnUnobscuredRectUpdate(
185 const gfx::Rect& unobscured_rect) { 185 const gfx::Rect& unobscured_rect) {
186 DCHECK(content::RenderThread::Get()); 186 DCHECK(content::RenderThread::Get());
187 if (!power_saver_enabled_ || !premade_throttler_ || !finished_loading_) 187 if (!power_saver_enabled_ || !finished_loading_)
188 return; 188 return;
189 189
190 unobscured_rect_ = unobscured_rect; 190 unobscured_rect_ = unobscured_rect;
191 191
192 // During a size recheck, we will get another notification into this method. 192 // During a size recheck, we will get another notification into this method.
193 // Use this flag to early exit to prevent reentrancy issues. 193 // Use this flag to early exit to prevent reentrancy issues.
194 if (in_size_recheck_) 194 if (in_size_recheck_)
195 return; 195 return;
196 196
197 if (!size_update_timer_.IsRunning()) { 197 if (!size_update_timer_.IsRunning()) {
(...skipping 123 matching lines...) Expand 10 before | Expand all | Expand 10 after
321 if (!plugin()) 321 if (!plugin())
322 return; 322 return;
323 323
324 in_size_recheck_ = true; 324 in_size_recheck_ = true;
325 325
326 // Re-check the size in case the reported size was incorrect. 326 // Re-check the size in case the reported size was incorrect.
327 plugin()->container()->reportGeometry(); 327 plugin()->container()->reportGeometry();
328 328
329 float zoom_factor = plugin()->container()->pageZoomFactor(); 329 float zoom_factor = plugin()->container()->pageZoomFactor();
330 330
331 // Adjust padding using clip coordinates to center play button for plugins 331 // Adjust poster container padding and dimensions to center play button for
332 // that have their top or left portions obscured. 332 // plugins and plugin posters that have their top or left portions obscured.
333 if (is_blocked_for_power_saver_poster_) { 333 if (is_blocked_for_power_saver_poster_) {
334 int x = roundf(unobscured_rect_.x() / zoom_factor); 334 int x = roundf(unobscured_rect_.x() / zoom_factor);
335 int y = roundf(unobscured_rect_.y() / zoom_factor); 335 int y = roundf(unobscured_rect_.y() / zoom_factor);
336 std::string script = 336 int width = roundf(unobscured_rect_.width() / zoom_factor);
337 base::StringPrintf("window.setPosterMargin('%dpx', '%dpx')", x, y); 337 int height = roundf(unobscured_rect_.height() / zoom_factor);
338 std::string script = base::StringPrintf(
339 "window.resizePoster('%dpx', '%dpx', '%dpx', '%dpx')", x, y, width,
340 height);
338 plugin()->web_view()->mainFrame()->executeScript( 341 plugin()->web_view()->mainFrame()->executeScript(
339 blink::WebScriptSource(base::UTF8ToUTF16(script))); 342 blink::WebScriptSource(base::UTF8ToUTF16(script)));
340 } 343 }
341 344
342 if (PluginInstanceThrottler::IsLargeContent( 345 // Only unthrottle on size increase for plugins without poster.
346 // TODO(tommycli): Address this unfairness to plugins that specify a poster.
347 if (premade_throttler_ &&
tommycli 2015/10/15 21:54:50 Needed to compensate for change in line 187.
Lei Zhang 2015/10/15 23:05:31 Sorry, it's been a while. You'll have to remind me
tommycli 2015/10/16 17:16:25 Discussed in person.
348 PluginInstanceThrottler::IsLargeContent(
343 roundf(unobscured_rect_.width() / zoom_factor), 349 roundf(unobscured_rect_.width() / zoom_factor),
344 roundf(unobscured_rect_.height() / zoom_factor))) { 350 roundf(unobscured_rect_.height() / zoom_factor))) {
345 MarkPluginEssential( 351 MarkPluginEssential(
346 PluginInstanceThrottler::UNTHROTTLE_METHOD_BY_SIZE_CHANGE); 352 PluginInstanceThrottler::UNTHROTTLE_METHOD_BY_SIZE_CHANGE);
347 } 353 }
348 354
349 in_size_recheck_ = false; 355 in_size_recheck_ = false;
350 } 356 }
351 357
352 } // namespace plugins 358 } // namespace plugins
OLDNEW
« no previous file with comments | « chrome/renderer/resources/plugins/plugin_poster.html ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698