Remove the DidSetFramePolicyHeaders IPC.

Merge the DidSetFramePolicyHeaders IPC into DidCommitProvisionalLoad.
They were sent together one after the other, but in two separate calls,
which caused race conditions.

Benefits:

1. Fix a race condition about sandbox flags. This is
   https://bugs.chromium.org/p/chromium/issues/detail?id=1145139#c5.
   The first IPC was resetting the sandbox flags, and the second was
   updating them with the right values. If a navigation is started from
   the browser process just in between receiving both IPCs, the
   navigation will use no sandbox, when it should have.

2. Fix https://crbug.com/1093268. It was possible to receive
   DidSetFramePolicyHeaders for speculative RenderFrameHost. It is
   logically no more possible, since DidCommitProvisionalLoad is the IPC
   that will "activate" the speculative RenderFrameHost.

3. Recover from https://crbug.com/1146025. Page with sandbox flags are
   properly restored after entering the BackForwardCache.

4. Since the IPC doesn't exist anymore. There are no more need to be
   guarded behind a `IsInactiveAndDisallowReactivation`. A page in the
   backforward cache can't receive this anymore, since it doesn't exist.

Fixed: 1145139, 1146025
Bug: 1145139, 1146025
Change-Id: Ic720dd125a103fa09894a7f5348accc34823e33b
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2536467
Reviewed-by: Andy Paicu <andypaicu@chromium.org>
Reviewed-by: Mike West <mkwst@chromium.org>
Reviewed-by: Arthur Sonzogni <arthursonzogni@chromium.org>
Reviewed-by: Ian Clelland <iclelland@chromium.org>
Reviewed-by: Nasko Oskov <nasko@chromium.org>
Reviewed-by: Alex Moshchuk <alexmos@chromium.org>
Reviewed-by: Alexander Timin <altimin@chromium.org>
Commit-Queue: Arthur Sonzogni <arthursonzogni@chromium.org>
Cr-Commit-Position: refs/heads/master@{#830989}
34 files changed
tree: 856bdc83ab871798ca4de2913657bdbf3fe533ff
  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. codelabs/
  14. components/
  15. content/
  16. courgette/
  17. crypto/
  18. dbus/
  19. device/
  20. docs/
  21. extensions/
  22. fuchsia/
  23. gin/
  24. google_apis/
  25. google_update/
  26. gpu/
  27. headless/
  28. infra/
  29. ios/
  30. ipc/
  31. jingle/
  32. media/
  33. mojo/
  34. native_client_sdk/
  35. net/
  36. pdf/
  37. ppapi/
  38. printing/
  39. remoting/
  40. rlz/
  41. sandbox/
  42. services/
  43. skia/
  44. sql/
  45. storage/
  46. styleguide/
  47. testing/
  48. third_party/
  49. tools/
  50. ui/
  51. url/
  52. weblayer/
  53. .clang-format
  54. .clang-tidy
  55. .eslintrc.js
  56. .git-blame-ignore-revs
  57. .gitattributes
  58. .gitignore
  59. .gn
  60. .vpython
  61. .vpython3
  62. .yapfignore
  63. AUTHORS
  64. BUILD.gn
  65. CODE_OF_CONDUCT.md
  66. codereview.settings
  67. DEPS
  68. DIR_METADATA
  69. ENG_REVIEW_OWNERS
  70. LICENSE
  71. LICENSE.chromium_os
  72. OWNERS
  73. PRESUBMIT.py
  74. PRESUBMIT_test.py
  75. PRESUBMIT_test_mocks.py
  76. README.md
  77. 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.