tree 220895b80a6d2ca8a005df732736134228131d85
parent 5f929566179a7d0f323c8a3a09bac734286e2980
author John Spurlock <jspurlock@google.com> 1378908591 -0400
committer John Spurlock <jspurlock@google.com> 1378931374 -0400

Add system window inset support to DragLayer and children.

Instead of fitting system windows as before, DragLayer now
lays out under the system windows.

DragLayer will simply add the system window insets to each
child's layout margins by default.  e.g. for Hotseat, Page
Indicators, QSB, Search Overlay.

Children that want to use the full viewport can declare so
by implementing a new Insettable interface.  System window
insets will be passed to Insettable#setInsets(insets) and
the child can do what it wants with them.

Currently, two of DragLayer's children implement Insettable:

1) Workspace (for the -1 screen).
   Full screen pages are given the entire viewport, paged
   view offsets modified to end up in the right place now
   that the viewport is larger (the full screen height).
   Non-full screen pages like the normal icon pages simply
   apply the insets to end up in the same place they did
   before.
   NowClientCardsView uses the full viewport, applying the
   insets as padding. Will want to better take advantage
   of this new real estate in a future CL.

2) All Apps (AppsCustomizeTabHost).
   Applies the insets as layout margin one level down, so that
   the bar area is opaque during the transition, but visually
   the content lands in the same place.

(Also add db_files to .gitignore to ignore the output of the
db tool)

Bug:10687177
Bug:10652189
Change-Id: I80b25d63884d244fcf704b24dad9497ee0d8b453
