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

Side by Side Diff: cc/trees/layer_tree_host_impl.h

Issue 23171014: Fix UpdateTilePriorities viewport in Android WebView. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Add tests Created 7 years, 3 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 2011 The Chromium Authors. All rights reserved. 1 // Copyright 2011 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 #ifndef CC_TREES_LAYER_TREE_HOST_IMPL_H_ 5 #ifndef CC_TREES_LAYER_TREE_HOST_IMPL_H_
6 #define CC_TREES_LAYER_TREE_HOST_IMPL_H_ 6 #define CC_TREES_LAYER_TREE_HOST_IMPL_H_
7 7
8 #include <list> 8 #include <list>
9 #include <string> 9 #include <string>
10 #include <vector> 10 #include <vector>
(...skipping 158 matching lines...) Expand 10 before | Expand all | Expand 10 after
169 virtual bool PrepareToDraw(FrameData* frame, 169 virtual bool PrepareToDraw(FrameData* frame,
170 gfx::Rect device_viewport_damage_rect); 170 gfx::Rect device_viewport_damage_rect);
171 virtual void DrawLayers(FrameData* frame, base::TimeTicks frame_begin_time); 171 virtual void DrawLayers(FrameData* frame, base::TimeTicks frame_begin_time);
172 // Must be called if and only if PrepareToDraw was called. 172 // Must be called if and only if PrepareToDraw was called.
173 void DidDrawAllLayers(const FrameData& frame); 173 void DidDrawAllLayers(const FrameData& frame);
174 174
175 const LayerTreeSettings& settings() const { return settings_; } 175 const LayerTreeSettings& settings() const { return settings_; }
176 176
177 // Returns the currently visible viewport size in DIP. This value excludes 177 // Returns the currently visible viewport size in DIP. This value excludes
178 // the URL bar and non-overlay scrollbars. 178 // the URL bar and non-overlay scrollbars.
179 gfx::SizeF VisibleViewportSize() const; 179 gfx::SizeF UnscaledScrollableViewportSize() const;
180 180
181 // Evict all textures by enforcing a memory policy with an allocation of 0. 181 // Evict all textures by enforcing a memory policy with an allocation of 0.
182 void EvictTexturesForTesting(); 182 void EvictTexturesForTesting();
183 183
184 // When blocking, this prevents client_->NotifyReadyToActivate() from being 184 // When blocking, this prevents client_->NotifyReadyToActivate() from being
185 // called. When disabled, it calls client_->NotifyReadyToActivate() 185 // called. When disabled, it calls client_->NotifyReadyToActivate()
186 // immediately if any notifications had been blocked while blocking. 186 // immediately if any notifications had been blocked while blocking.
187 virtual void BlockNotifyReadyToActivateForTesting(bool block); 187 virtual void BlockNotifyReadyToActivateForTesting(bool block);
188 188
189 bool device_viewport_valid_for_tile_management() const {
190 return device_viewport_valid_for_tile_management_;
191 }
192
189 // RendererClient implementation 193 // RendererClient implementation
190 virtual gfx::Rect DeviceViewport() const OVERRIDE; 194 virtual gfx::Rect DeviceViewport() const OVERRIDE;
195 virtual gfx::Rect DeviceClip() const OVERRIDE;
191 private: 196 private:
192 virtual float DeviceScaleFactor() const OVERRIDE; 197 virtual float DeviceScaleFactor() const OVERRIDE;
193 virtual const LayerTreeSettings& Settings() const OVERRIDE; 198 virtual const LayerTreeSettings& Settings() const OVERRIDE;
194 public: 199 public:
195 virtual void SetFullRootLayerDamage() OVERRIDE; 200 virtual void SetFullRootLayerDamage() OVERRIDE;
196 virtual bool HasImplThread() const OVERRIDE; 201 virtual bool HasImplThread() const OVERRIDE;
197 virtual bool ShouldClearRootRenderPass() const OVERRIDE; 202 virtual bool ShouldClearRootRenderPass() const OVERRIDE;
198 virtual CompositorFrameMetadata MakeCompositorFrameMetadata() const OVERRIDE; 203 virtual CompositorFrameMetadata MakeCompositorFrameMetadata() const OVERRIDE;
199 virtual bool AllowPartialSwap() const OVERRIDE; 204 virtual bool AllowPartialSwap() const OVERRIDE;
200 virtual bool ExternalStencilTestEnabled() const OVERRIDE; 205 virtual bool ExternalStencilTestEnabled() const OVERRIDE;
201 206
202 // TileManagerClient implementation. 207 // TileManagerClient implementation.
203 virtual void NotifyReadyToActivate() OVERRIDE; 208 virtual void NotifyReadyToActivate() OVERRIDE;
204 209
205 // OutputSurfaceClient implementation. 210 // OutputSurfaceClient implementation.
206 virtual bool DeferredInitialize( 211 virtual bool DeferredInitialize(
207 scoped_refptr<ContextProvider> offscreen_context_provider) OVERRIDE; 212 scoped_refptr<ContextProvider> offscreen_context_provider) OVERRIDE;
208 virtual void ReleaseGL() OVERRIDE; 213 virtual void ReleaseGL() OVERRIDE;
209 virtual void SetNeedsRedrawRect(gfx::Rect rect) OVERRIDE; 214 virtual void SetNeedsRedrawRect(gfx::Rect rect) OVERRIDE;
210 virtual void BeginFrame(const BeginFrameArgs& args) OVERRIDE; 215 virtual void BeginFrame(const BeginFrameArgs& args) OVERRIDE;
211 virtual void SetExternalDrawConstraints(const gfx::Transform& transform, 216 virtual void SetExternalDrawConstraints(
212 gfx::Rect viewport) OVERRIDE; 217 const gfx::Transform& transform,
218 gfx::Rect viewport,
219 gfx::Rect clip,
220 bool valid_for_tile_management) OVERRIDE;
213 virtual void SetExternalStencilTest(bool enabled) OVERRIDE; 221 virtual void SetExternalStencilTest(bool enabled) OVERRIDE;
214 virtual void DidLoseOutputSurface() OVERRIDE; 222 virtual void DidLoseOutputSurface() OVERRIDE;
215 virtual void OnSwapBuffersComplete(const CompositorFrameAck* ack) OVERRIDE; 223 virtual void OnSwapBuffersComplete(const CompositorFrameAck* ack) OVERRIDE;
216 virtual void SetMemoryPolicy(const ManagedMemoryPolicy& policy) OVERRIDE; 224 virtual void SetMemoryPolicy(const ManagedMemoryPolicy& policy) OVERRIDE;
217 virtual void SetDiscardBackBufferWhenNotVisible(bool discard) OVERRIDE; 225 virtual void SetDiscardBackBufferWhenNotVisible(bool discard) OVERRIDE;
218 virtual void SetTreeActivationCallback(const base::Closure& callback) 226 virtual void SetTreeActivationCallback(const base::Closure& callback)
219 OVERRIDE; 227 OVERRIDE;
220 228
221 // Called from LayerTreeImpl. 229 // Called from LayerTreeImpl.
222 void OnCanDrawStateChangedForTree(); 230 void OnCanDrawStateChangedForTree();
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
266 bool visible() const { return visible_; } 274 bool visible() const { return visible_; }
267 275
268 void SetNeedsCommit() { client_->SetNeedsCommitOnImplThread(); } 276 void SetNeedsCommit() { client_->SetNeedsCommitOnImplThread(); }
269 void SetNeedsRedraw() { client_->SetNeedsRedrawOnImplThread(); } 277 void SetNeedsRedraw() { client_->SetNeedsRedrawOnImplThread(); }
270 278
271 ManagedMemoryPolicy ActualManagedMemoryPolicy() const; 279 ManagedMemoryPolicy ActualManagedMemoryPolicy() const;
272 280
273 size_t memory_allocation_limit_bytes() const; 281 size_t memory_allocation_limit_bytes() const;
274 282
275 void SetViewportSize(gfx::Size device_viewport_size); 283 void SetViewportSize(gfx::Size device_viewport_size);
276 gfx::Size device_viewport_size() const { return device_viewport_size_; }
277 284
278 void SetOverdrawBottomHeight(float overdraw_bottom_height); 285 void SetOverdrawBottomHeight(float overdraw_bottom_height);
279 float overdraw_bottom_height() const { return overdraw_bottom_height_; } 286 float overdraw_bottom_height() const { return overdraw_bottom_height_; }
280 287
281 void SetDeviceScaleFactor(float device_scale_factor); 288 void SetDeviceScaleFactor(float device_scale_factor);
282 float device_scale_factor() const { return device_scale_factor_; } 289 float device_scale_factor() const { return device_scale_factor_; }
283 290
284 const gfx::Transform& DeviceTransform() const; 291 const gfx::Transform& DeviceTransform() const;
285 292
286 scoped_ptr<ScrollAndScaleSet> ProcessScrollDeltas(); 293 scoped_ptr<ScrollAndScaleSet> ProcessScrollDeltas();
(...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after
405 base::Time wall_clock_time); 412 base::Time wall_clock_time);
406 413
407 // Virtual for testing. 414 // Virtual for testing.
408 virtual base::TimeDelta LowFrequencyAnimationInterval() const; 415 virtual base::TimeDelta LowFrequencyAnimationInterval() const;
409 416
410 const AnimationRegistrar::AnimationControllerMap& 417 const AnimationRegistrar::AnimationControllerMap&
411 active_animation_controllers() const { 418 active_animation_controllers() const {
412 return animation_registrar_->active_animation_controllers(); 419 return animation_registrar_->active_animation_controllers();
413 } 420 }
414 421
422 bool manage_tiles_needed() const { return manage_tiles_needed_; }
423
415 LayerTreeHostImplClient* client_; 424 LayerTreeHostImplClient* client_;
416 Proxy* proxy_; 425 Proxy* proxy_;
417 426
418 private: 427 private:
419 void CreateAndSetRenderer( 428 void CreateAndSetRenderer(
420 OutputSurface* output_surface, 429 OutputSurface* output_surface,
421 ResourceProvider* resource_provider, 430 ResourceProvider* resource_provider,
422 bool skip_gl_renderer); 431 bool skip_gl_renderer);
423 void CreateAndSetTileManager(ResourceProvider* resource_provider, 432 void CreateAndSetTileManager(ResourceProvider* resource_provider,
424 bool using_map_image); 433 bool using_map_image);
(...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after
526 // The maximum memory that would be used by the prioritized resource 535 // The maximum memory that would be used by the prioritized resource
527 // manager, if there were no limit on memory usage. 536 // manager, if there were no limit on memory usage.
528 size_t max_memory_needed_bytes_; 537 size_t max_memory_needed_bytes_;
529 538
530 size_t last_sent_memory_visible_bytes_; 539 size_t last_sent_memory_visible_bytes_;
531 size_t last_sent_memory_visible_and_nearby_bytes_; 540 size_t last_sent_memory_visible_and_nearby_bytes_;
532 size_t last_sent_memory_use_bytes_; 541 size_t last_sent_memory_use_bytes_;
533 bool zero_budget_; 542 bool zero_budget_;
534 543
535 // Viewport size passed in from the main thread, in physical pixels. 544 // Viewport size passed in from the main thread, in physical pixels.
536 gfx::Size device_viewport_size_; 545 gfx::Size device_viewport_size_;
aelias_OOO_until_Jul13 2013/09/03 19:52:09 Added a comment explaining the role of this better
537 546
538 // Conversion factor from CSS pixels to physical pixels when 547 // Conversion factor from CSS pixels to physical pixels when
539 // pageScaleFactor=1. 548 // pageScaleFactor=1.
540 float device_scale_factor_; 549 float device_scale_factor_;
541 550
542 // Vertical amount of the viewport size that's known to covered by a 551 // Vertical amount of the viewport size that's known to covered by a
543 // browser-side UI element, such as an on-screen-keyboard. This affects 552 // browser-side UI element, such as an on-screen-keyboard. This affects
544 // scrollable size since we want to still be able to scroll to the bottom of 553 // scrollable size since we want to still be able to scroll to the bottom of
545 // the page when the keyboard is up. 554 // the page when the keyboard is up.
546 float overdraw_bottom_height_; 555 float overdraw_bottom_height_;
547 556
548 // Optional top-level constraints that can be set by the OutputSurface. The 557 // Optional top-level constraints that can be set by the OutputSurface.
549 // external_viewport_'s size takes precedence over device_viewport_size_ for 558 // - external_transform_ applies a transform above the root layer
550 // DrawQuad generation and Renderer; however, device_viewport_size_ is still 559 // - external_viewport_ is used DrawProperties, tile management and
551 // used for scrollable size. 560 // glViewport/window projection matrix.
561 // - external_clip_ specifies a top-level clip rect
562 // - external_stencil_test_enabled_ tells CC to respect existing stencil bits
563 // (When these are specified, device_viewport_size_ remains used only for
564 // scrollable size.)
552 gfx::Transform external_transform_; 565 gfx::Transform external_transform_;
553 gfx::Rect external_viewport_; 566 gfx::Rect external_viewport_;
567 gfx::Rect external_clip_;
568 bool device_viewport_valid_for_tile_management_;
554 bool external_stencil_test_enabled_; 569 bool external_stencil_test_enabled_;
555 570
556 gfx::Rect viewport_damage_rect_; 571 gfx::Rect viewport_damage_rect_;
557 572
558 base::TimeTicks current_frame_timeticks_; 573 base::TimeTicks current_frame_timeticks_;
559 base::Time current_frame_time_; 574 base::Time current_frame_time_;
560 575
561 scoped_ptr<AnimationRegistrar> animation_registrar_; 576 scoped_ptr<AnimationRegistrar> animation_registrar_;
562 577
563 RenderingStatsInstrumentation* rendering_stats_instrumentation_; 578 RenderingStatsInstrumentation* rendering_stats_instrumentation_;
564 579
565 bool need_to_update_visible_tiles_before_draw_; 580 bool need_to_update_visible_tiles_before_draw_;
566 581
567 // Optional callback to notify of new tree activations. 582 // Optional callback to notify of new tree activations.
568 base::Closure tree_activation_callback_; 583 base::Closure tree_activation_callback_;
569 584
570 DISALLOW_COPY_AND_ASSIGN(LayerTreeHostImpl); 585 DISALLOW_COPY_AND_ASSIGN(LayerTreeHostImpl);
571 }; 586 };
572 587
573 } // namespace cc 588 } // namespace cc
574 589
575 #endif // CC_TREES_LAYER_TREE_HOST_IMPL_H_ 590 #endif // CC_TREES_LAYER_TREE_HOST_IMPL_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698