Move visible_viewport_size into the VisualProperties waterfall dance

Currently the visible_viewport_size is passed to each RenderView
separately from other properties which are passed down through the
RenderWidget/local root hierarchy. This moves the property into the
standard waterfall flow.

Prior logic to determine the value was spread out between various
implementations of RenderWidgetHostViews, with
RenderWidgetHostViewChildFrame doing some tricky (and incomplete for
portals) checking to see if it is the main frame of a nested frame
tree/WebContents. Now RenderWidgetHostImpl contains the logic to decide
which visible_viewport_size to use, using the RenderWidgetHostView for
main frames (nested and top level). For child widgets it always uses
the value received from the parent.

This change may cause child widgets to receive the value a bit slower
than before as it has to bounce through the RenderWidget hierarchy to
get to them, but it will allow them to all be synchronized for display
to the user. It will also cause child frames inside a nested WebContents
to get the value of their parent instead of their own
RenderWidgetHostView, which is more correct.

Based on a previous CL that was reverted:
https://chromium-review.googlesource.com/c/chromium/src/+/1863512

[email protected], [email protected], [email protected]

Change-Id: Ia5b99f48266ad758592f088e13a23002d90ba05b
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2083916
Reviewed-by: Daniel Cheng <[email protected]>
Reviewed-by: Avi Drissman <[email protected]>
Commit-Queue: danakj <[email protected]>
Cr-Commit-Position: refs/heads/master@{#749137}
30 files changed
tree: a125efa153706d52d56a4ec7bdad2e898957caa2
  1. android_webview/
  2. apps/
  3. ash/
  4. base/
  5. build/
  6. build_overrides/
  7. buildtools/
  8. cc/
  9. chrome/
  10. chromecast/
  11. chromeos/
  12. cloud_print/
  13. components/
  14. content/
  15. courgette/
  16. crypto/
  17. dbus/
  18. device/
  19. docs/
  20. extensions/
  21. fuchsia/
  22. gin/
  23. google_apis/
  24. google_update/
  25. gpu/
  26. headless/
  27. infra/
  28. ios/
  29. ipc/
  30. jingle/
  31. media/
  32. mojo/
  33. native_client_sdk/
  34. net/
  35. pdf/
  36. ppapi/
  37. printing/
  38. remoting/
  39. rlz/
  40. sandbox/
  41. services/
  42. skia/
  43. sql/
  44. storage/
  45. styleguide/
  46. testing/
  47. third_party/
  48. tools/
  49. ui/
  50. url/
  51. weblayer/
  52. .clang-format
  53. .clang-tidy
  54. .eslintrc.js
  55. .git-blame-ignore-revs
  56. .gitattributes
  57. .gitignore
  58. .gn
  59. .vpython
  60. .vpython3
  61. .yapfignore
  62. AUTHORS
  63. BUILD.gn
  64. CODE_OF_CONDUCT.md
  65. codereview.settings
  66. DEPS
  67. ENG_REVIEW_OWNERS
  68. LICENSE
  69. LICENSE.chromium_os
  70. OWNERS
  71. PRESUBMIT.py
  72. PRESUBMIT_test.py
  73. PRESUBMIT_test_mocks.py
  74. README.md
  75. WATCHLISTS
README.md

Logo Chromium

Chromium is an open-source browser project that aims to build a safer, faster, and more stable way for all users to experience the web.

The project's web site is https://www.chromium.org.

Documentation in the source is rooted in docs/README.md.

Learn how to Get Around the Chromium Source Code Directory Structure .

For historical reasons, there are some small top level directories. Now the guidance is that new top level directories are for product (e.g. Chrome, Android WebView, Ash). Even if these products have multiple executables, the code should be in subdirectories of the product.