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

Unified Diff: cc/trees/layer_tree_impl.cc

Issue 2652643004: Make PageScaleFactor work for oopif subframes.
Patch Set: Put function prototype in correct place. Created 3 years, 11 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 | « cc/trees/layer_tree_impl.h ('k') | content/browser/frame_host/render_frame_host_delegate.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: cc/trees/layer_tree_impl.cc
diff --git a/cc/trees/layer_tree_impl.cc b/cc/trees/layer_tree_impl.cc
index e6484ec89fb90556b4f7da7ece1b7629699b6e98..b5fa3b944b9db05a99145a02f86debe2ab7ae4a7 100644
--- a/cc/trees/layer_tree_impl.cc
+++ b/cc/trees/layer_tree_impl.cc
@@ -56,6 +56,7 @@ namespace cc {
LayerTreeImpl::LayerTreeImpl(
LayerTreeHostImpl* layer_tree_host_impl,
scoped_refptr<SyncedProperty<ScaleGroup>> page_scale_factor,
+ scoped_refptr<SyncedProperty<ScaleGroup>> subframe_page_scale_factor,
scoped_refptr<SyncedBrowserControls> top_controls_shown_ratio,
scoped_refptr<SyncedElasticOverscroll> elastic_overscroll)
: layer_tree_host_impl_(layer_tree_host_impl),
@@ -71,6 +72,7 @@ LayerTreeImpl::LayerTreeImpl(
inner_viewport_scroll_layer_id_(Layer::INVALID_ID),
outer_viewport_scroll_layer_id_(Layer::INVALID_ID),
page_scale_factor_(page_scale_factor),
+ subframe_page_scale_factor_(subframe_page_scale_factor),
min_page_scale_factor_(0),
max_page_scale_factor_(0),
device_scale_factor_(1.f),
@@ -451,8 +453,8 @@ void LayerTreeImpl::PushPropertiesTo(LayerTreeImpl* target_tree) {
// Active tree already shares the page_scale_factor object with pending
// tree so only the limits need to be provided.
- target_tree->PushPageScaleFactorAndLimits(nullptr, min_page_scale_factor(),
- max_page_scale_factor());
+ target_tree->PushPageScaleFactorAndLimits(
+ nullptr, nullptr, min_page_scale_factor(), max_page_scale_factor());
target_tree->SetDeviceScaleFactor(device_scale_factor());
target_tree->set_painted_device_scale_factor(painted_device_scale_factor());
target_tree->SetDeviceColorSpace(device_color_space_);
@@ -743,18 +745,39 @@ void LayerTreeImpl::SetPageScaleOnActiveTree(float active_page_scale) {
}
}
+void LayerTreeImpl::SetSubframePageScaleOnActiveTree(
+ float active_subframe_page_scale) {
+ DCHECK(IsActiveTree());
+ if (subframe_page_scale_factor()->SetCurrent(
+ ClampPageScaleFactorToLimits(active_subframe_page_scale))) {
+ DidUpdatePageScale();
+ }
+}
+
void LayerTreeImpl::PushPageScaleFromMainThread(float page_scale_factor,
float min_page_scale_factor,
float max_page_scale_factor) {
- PushPageScaleFactorAndLimits(&page_scale_factor, min_page_scale_factor,
- max_page_scale_factor);
+ PushPageScaleFactorAndLimits(&page_scale_factor, nullptr,
+ min_page_scale_factor, max_page_scale_factor);
}
-void LayerTreeImpl::PushPageScaleFactorAndLimits(const float* page_scale_factor,
- float min_page_scale_factor,
- float max_page_scale_factor) {
- DCHECK(page_scale_factor || IsActiveTree());
+void LayerTreeImpl::PushPageScaleFromMainThread(
+ float page_scale_factor,
+ float subframe_page_scale_factor,
+ float min_page_scale_factor,
+ float max_page_scale_factor) {
+ PushPageScaleFactorAndLimits(&page_scale_factor, &subframe_page_scale_factor,
+ min_page_scale_factor, max_page_scale_factor);
+}
+
+void LayerTreeImpl::PushPageScaleFactorAndLimits(
+ const float* page_scale_factor,
+ const float* subframe_page_scale_factor,
+ float min_page_scale_factor,
+ float max_page_scale_factor) {
+ DCHECK(page_scale_factor || subframe_page_scale_factor || IsActiveTree());
bool changed_page_scale = false;
+ bool changed_subframe_page_scale = false;
changed_page_scale |=
SetPageScaleFactorLimits(min_page_scale_factor, max_page_scale_factor);
@@ -769,15 +792,26 @@ void LayerTreeImpl::PushPageScaleFactorAndLimits(const float* page_scale_factor,
page_scale_factor_->PushFromMainThread(*page_scale_factor);
}
+ if (subframe_page_scale_factor) {
+ changed_subframe_page_scale |= subframe_page_scale_factor_->Delta() != 1.f;
+ changed_subframe_page_scale |=
+ subframe_page_scale_factor_->PushFromMainThread(
+ *subframe_page_scale_factor);
+ }
+
if (IsActiveTree()) {
// TODO(enne): Pushing from pending to active should never require
// DidUpdatePageScale. The values should already be set by the fully
// computed property trees being synced from one tree to another. Remove
// this once CDP goes away.
changed_page_scale |= page_scale_factor_->PushPendingToActive();
+ // TODO(wjmaclean): subframe_page_scale_factor is not involved in CDP so far
+ // as I know, not sure that that means for this next line.
+ changed_subframe_page_scale |=
+ subframe_page_scale_factor_->PushPendingToActive();
}
- if (changed_page_scale)
+ if (changed_page_scale || changed_subframe_page_scale)
DidUpdatePageScale();
if (page_scale_factor) {
@@ -864,9 +898,12 @@ bool LayerTreeImpl::SetPageScaleFactorLimits(float min_page_scale_factor,
}
void LayerTreeImpl::DidUpdatePageScale() {
- if (IsActiveTree())
+ if (IsActiveTree()) {
page_scale_factor()->SetCurrent(
ClampPageScaleFactorToLimits(current_page_scale_factor()));
+ subframe_page_scale_factor()->SetCurrent(
+ ClampPageScaleFactorToLimits(GetSubframePageScaleFactor()));
+ }
set_needs_update_draw_properties();
DidUpdateScrollState(inner_viewport_scroll_layer_id_);
@@ -898,6 +935,15 @@ const SyncedProperty<ScaleGroup>* LayerTreeImpl::page_scale_factor() const {
return page_scale_factor_.get();
}
+SyncedProperty<ScaleGroup>* LayerTreeImpl::subframe_page_scale_factor() {
+ return subframe_page_scale_factor_.get();
+}
+
+const SyncedProperty<ScaleGroup>* LayerTreeImpl::subframe_page_scale_factor()
+ const {
+ return subframe_page_scale_factor_.get();
+}
+
gfx::SizeF LayerTreeImpl::ScrollableViewportSize() const {
if (!InnerViewportContainerLayer())
return gfx::SizeF();
@@ -921,6 +967,7 @@ void LayerTreeImpl::ApplySentScrollAndScaleDeltasFromAbortedCommit() {
DCHECK(IsActiveTree());
page_scale_factor()->AbortCommit();
+ subframe_page_scale_factor()->AbortCommit();
top_controls_shown_ratio()->AbortCommit();
elastic_overscroll()->AbortCommit();
« no previous file with comments | « cc/trees/layer_tree_impl.h ('k') | content/browser/frame_host/render_frame_host_delegate.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698