OopAsh: improve immersive fullscreen for app windows

Immersive fullscreen for an app window almost works aside from the fact
that the normal frame remains when the app window is fullscreened. This
is a result of not updating the client area inset when the window show
state changes (e.g. from restored to fullscreen). The client area is
updated when the window bounds change, as they would when entering
fullscreen, but the bounds change comes through just before the state
change. Thus, when ClientSideNonClientFrameView checks fullscreen state
during layout, it still finds the widget is restored and calculates the
wrong bounds. The solution is to explicitly kick off a layout when
entering or exiting fullscreen.

      after launching with --enable-features=Mash --ash-dev-shortcuts

Test: enter and exit fullscreen on an app window with ctrl+shift+F
Bug: 640365
Change-Id: I499e29427ed072f3428de1f195ede1dc9892e71f
Reviewed-on: https://chromium-review.googlesource.com/1150618
Reviewed-by: Scott Violet <sky@chromium.org>
Commit-Queue: Evan Stade <estade@chromium.org>
Cr-Commit-Position: refs/heads/master@{#578353}
3 files changed