Fix another way to crash as in https://crbug.com/1006814.

This is very similar to https://crrev.com/c/2159389

WebContentsAndroid::EvaluateJavaScript calls
WebContentsImpl::CreateRenderViewForInitialEmptyDocument even when it is
not the initial empty document. If the main frame has crashed, this
causes it to be reused even with RenderDocument set to not reuse crashed
frames.

This fix is the same as before.

Rename InitializeRenderFrameForDebugURLIfNecessary to
InitializeRenderFrameForImmediateUse. It's now OK to call this
unconditionally and now it is called from the newly-added
WebContentsAndroid::InitializeRenderFrameForJavaScript
which is used from all of the WebView APIs for evaluating JS in a frame.

This adds a Java test from webview. In the process it moves a bunch of
local variables to be members of the test class. I can factor that out
into a different CL, if desired, it should be a no-op.

Bug: 1006814
Change-Id: Ib111065840c57511fba0bdcfbccb5301d6c3e997
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2186901
Commit-Queue: Fergal Daly <[email protected]>
Reviewed-by: Bo <[email protected]>
Reviewed-by: Alex Moshchuk <[email protected]>
Auto-Submit: Fergal Daly <[email protected]>
Cr-Commit-Position: refs/heads/master@{#767833}
9 files changed
tree: 4777bceb99a9a5dcfd0a2985cf3c42f89b4c5f18
  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.