Reland "Add pre- and post-commit modes to LoginHandler"

This is a reland of a6f001aebce818cc656b99b0d5e7ad76d2a95415
The revert didn't help.

Original change's description:
> Add pre- and post-commit modes to LoginHandler
>
> LoginHandler currently handles two tasks when showing an interstitial:
> running the request through extensions and then showing a login
> prompt. When converted to committed interstitials, we need to run the
> request through extensions before the navigation commits, and then
> show a login prompt on top of a committed error page. This CL adds a
> "mode" argument to LoginHandler. When committed interstitials are
> enabled, the "mode" argument determines whether we should just run the
> request through extensions and then cancel it (pre-commit mode), or
> show a login prompt (post-commit). The post-commit mode is currently
> not reachable; we'll use it once we add the WebContentsObserver that
> observes the committed error page (https://crbug.com/963313).
>
> Note: this "mode" design is kind of messy and we'll probably want to
> come back and clean it up later. For now, it's the simplest way to
> leave LoginHandler intact for when committed interstitials are
> disabled, and use the parts of it that we need before+after commit
> when committed interstitials are enabled. Once committed interstitials
> land and we clean up the old code, we will probably want to split
> LoginHandler into two classes rather than having one class that can
> operate in two different modes.
>
> Bug: 963311
> Change-Id: I1efddb3eca3a6b822135bd721db05f2f47561a86
> Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1616943
> Reviewed-by: Carlos IL <carlosil@chromium.org>
> Reviewed-by: Joe DeBlasio <jdeblasio@chromium.org>
> Commit-Queue: Emily Stark <estark@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#661141}

TBR=estark

Bug: 963311
Change-Id: I518122f7a769e4dd38224a6a30294e3e15249b9c
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1618272
Reviewed-by: Nico Weber <thakis@chromium.org>
Commit-Queue: Nico Weber <thakis@chromium.org>
Cr-Commit-Position: refs/heads/master@{#661220}
4 files changed