Add resize confirmation dialog for resize-locked apps

This CL adds the resize confirmation dialog that will be shown the user clicks the maximize button on resize-locked ARC apps.
Even if the resize-lock is enabled, the window size can be changed via caption buttons if the user agrees to do so (i.e. if the user presses the “Enable” button in the dialog).
And the restore button should work without confirmation dialog regardless of the resize-lock mode.

This CL also adds the ArcResizeLockManager that manages the dialogs such as this resize confirmation dialog (and resize toggle dialog shortly after).

BUG=b:182525754
BUG=b:180252797
BUG=b:180252634

TEST=FrameCaptionButtonContainerViewTest.TestSizeButtonBehaviorOverride
TEST=ArcResizeLockManagerTest
TEST=ResizeConfirmationDialogTest
TEST=integration part will be tested in tast (b/181614430)

Change-Id: I184882d480c392e7c6fd21ad7a914a60fb8c4363
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2759806
Commit-Queue: Toshiki Kikuchi <[email protected]>
Reviewed-by: Yuichiro Hanada <[email protected]>
Reviewed-by: Hidehiko Abe <[email protected]>
Reviewed-by: Jochen Eisinger <[email protected]>
Reviewed-by: Mitsuru Oshima <[email protected]>
Reviewed-by: Scott Violet <[email protected]>
Reviewed-by: Yusuke Sato <[email protected]>
Cr-Commit-Position: refs/heads/master@{#869396}
21 files changed
tree: 49fa581a01ba7aa363b5f38fd4a3f92c421a09a1
  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.

To check out the source code locally, don't use git clone! Instead, follow the instructions on how to get the code.

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.