Fixes sizing issue when dragging tabs

To avoid unnecessary layout (and stopping of animations) TabStrip
caches the last size it layed out. During drag and drop of tabs
SetTabBoundsForDrag may be used to force a particular tab
size/location. After a call to SetTabBoundsForDrag we need to ensure
the tabstrip does in fact relayout next time Layout() is invoked. By
clearing last_layaout_size_ we ensure this happens.

BUG=338617
TEST=see bug

Review URL: https://codereview.chromium.org/131763007

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@247619 0039d316-1c4b-4281-b951-d872f2087c98
SVN changes up to revision 247619
Initialize AppListItem::has_shadow_ to avoid uninitialized reads.

BUG=338739
R=koz@chromium.org
TEST=unit_tests:AppListModelPicklerUnitTest.OneItem

Review URL: https://codereview.chromium.org/132743006

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@247620 0039d316-1c4b-4281-b951-d872f2087c98
Performance fixes for CoreAnimation.

Consolidate the calls to [NSScreen screens] because this call can take
several milliseconds, and use an observer to ensure that this call is
only made when the value is changed.

Only use a single OpenGL context because using multiple contexts does
not improve performance and only adds complexity.

BUG=245900

Review URL: https://codereview.chromium.org/134753008

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@247621 0039d316-1c4b-4281-b951-d872f2087c98
SVN changes up to revision 247621