Android: Navigation on TabSwitcher

This CL add edge-swipe navigation to Tab switcher. Swipe from left
edge exits the switcher, and swipe from right edge does nothing. An
upcoming CL will add edge glow effect to the right swipe to indicate
that no forward navigation is possible.

FrameLayout(mViewContainer) in StackLayout which is the topmost view
for tab switcher below CompositorViewHolder, is used as the container
view for HistoryNavigationLayout.

To make HistoryNavigationLayout (and below) a pure Android view
structure without Chrome-specific classes (like Tab or
ChromeActivity), introduced an interface
HistoryNavigation.NavigationHelper. Its implementation
NavigationHelperImpl is injected from various native page view. This
makes it easy to write tests based on DumyyUiActivity.

NavigationHandler.ActionDelegate is another interface that keeps
NavigationHandler free of Tab/ChromeActivity. Native/rendered pages
can share a common impl (TabbedActionDelegate). Tab switcher has its
own implementation of ActionDelegate since it doesn't depend on Tab
for navigation.

Bug: 937946
Change-Id: Id9572e39ce9c6b537e118014d6924064117492af
Commit-Queue: Jinsuk Kim <>
Reviewed-by: Ted Choc <>
Cr-Commit-Position: refs/heads/master@{#653884}
29 files changed