Block tab-unders using the framebusting UI.

The CL adds a NavigationThrottle which cancels navigations if it
detects that they are tab-unders. This CL exposes this
functionality behind the command line flag
--enable-features="BlockTabUnders". A followup CL will add an 
entry to chrome://flags for additional user testing.

A tab-under is classified as a navigation in a tab which:
1. Has opened a popup since the last user gesture in that tab. And
2. Is a "suspicious" client redirect, which:
 a. Is renderer initiated
 b. Has no user gesture
 c. Was started when the tab was in the background
 d. Is cross origin to the last committed URL in the tab.

If a navigation is blocked, the WebContents delegate is told about it
so that the "framebusting" (aka 3p redirect intervention) UI is shown.
This allows a user to allow the navigation by clicking the link on some
native UI.

NOTE: This UI is currently only implemented on Android, so the
experiment should not be enabled for real users on desktop platforms.

In the future we may want to be even stricter here. Instead of showing
some native UI we could just close the opener tab entirely (see
discussion on the linked bug). However, this approach is a good first
step in that direction and has a better chance of breaking less web
content.

Additionally, this CL refactors some of the popup opener metrics to
share logic with the throttle.

Bug: 661629
Change-Id: Ifa46979016a7dee725f836948fbed6e1641e0bbc
Reviewed-on: https://chromium-review.googlesource.com/693255
Commit-Queue: Charlie Harrison <csharrison@chromium.org>
Reviewed-by: Avi Drissman <avi@chromium.org>
Reviewed-by: Ilya Sherman <isherman@chromium.org>
Cr-Commit-Position: refs/heads/master@{#505964}
11 files changed