Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(201)

Side by Side Diff: chrome/android/java_staging/src/org/chromium/chrome/browser/widget/OverviewListLayout.java

Issue 1141283003: Upstream oodles of Chrome for Android code into Chromium. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: final patch? Created 5 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 package org.chromium.chrome.browser.widget;
6
7 import android.content.Context;
8 import android.view.LayoutInflater;
9 import android.view.ViewGroup;
10 import android.widget.FrameLayout;
11 import android.widget.ListView;
12
13 import org.chromium.base.VisibleForTesting;
14 import org.chromium.chrome.R;
15 import org.chromium.chrome.browser.compositor.layouts.Layout;
16 import org.chromium.chrome.browser.compositor.layouts.LayoutRenderHost;
17 import org.chromium.chrome.browser.compositor.layouts.LayoutUpdateHost;
18 import org.chromium.chrome.browser.compositor.layouts.content.TabContentManager;
19 import org.chromium.chrome.browser.compositor.layouts.eventfilter.EventFilter;
20 import org.chromium.chrome.browser.compositor.scene_layer.SceneLayer;
21 import org.chromium.chrome.browser.tabmodel.TabModel;
22 import org.chromium.chrome.browser.tabmodel.TabModelSelector;
23 import org.chromium.chrome.browser.tabmodel.TabModelUtils;
24 import org.chromium.chrome.browser.widget.accessibility.AccessibilityTabModelAda pter.AccessibilityTabModelAdapterListener;
25 import org.chromium.chrome.browser.widget.accessibility.AccessibilityTabModelWra pper;
26
27 /**
28 * A {@link Layout} that shows the tabs as two {@link ListView}s, one for each { @link TabModel} to
29 * represent.
30 */
31 public class OverviewListLayout extends Layout implements AccessibilityTabModelA dapterListener {
32 private AccessibilityTabModelWrapper mTabModelWrapper;
33 private final float mDpToPx;
34 private final SceneLayer mSceneLayer;
35
36 public OverviewListLayout(Context context, LayoutUpdateHost updateHost,
37 LayoutRenderHost renderHost, EventFilter eventFilter) {
38 super(context, updateHost, renderHost, eventFilter);
39 mDpToPx = context.getResources().getDisplayMetrics().density;
40 mSceneLayer = new SceneLayer();
41 }
42
43 @Override
44 public void attachViews(ViewGroup container) {
45 if (mTabModelWrapper == null) {
46 mTabModelWrapper =
47 (AccessibilityTabModelWrapper) LayoutInflater.from(container .getContext())
48 .inflate(R.layout.accessibility_tab_switcher, null);
49 mTabModelWrapper.setup(this);
50 mTabModelWrapper.setTabModelSelector(mTabModelSelector);
51 adjustForFullscreen();
52 }
53
54 if (container == null) return;
55
56 if (mTabModelWrapper.getParent() == null) {
57 container.addView(mTabModelWrapper);
58 }
59 }
60
61 @Override
62 public int getSizingFlags() {
63 return SizingFlags.REQUIRE_FULLSCREEN_SIZE;
64 }
65
66 @Override
67 protected void notifySizeChanged(float width, float height, int orientation) {
68 adjustForFullscreen();
69 }
70
71 private void adjustForFullscreen() {
72 if (mTabModelWrapper == null) return;
73 FrameLayout.LayoutParams params =
74 (FrameLayout.LayoutParams) mTabModelWrapper.getLayoutParams();
75 if (params == null) return;
76 params.topMargin = (int) ((getHeight() - getHeightMinusTopControls()) * mDpToPx);
77 mTabModelWrapper.setLayoutParams(params);
78 }
79
80 @Override
81 public boolean handlesTabClosing() {
82 return true;
83 }
84
85 @Override
86 public boolean handlesTabCreating() {
87 return true;
88 }
89
90 @Override
91 public boolean handlesCloseAll() {
92 return true;
93 }
94
95 @Override
96 public void onTabCreating(int sourceTabId) {
97 super.onTabCreating(sourceTabId);
98 startHiding(sourceTabId, false);
99 }
100
101 @Override
102 public void onTabCreated(long time, int tabId, int tabIndex, int sourceTabId ,
103 boolean newIsIncognito, boolean background, float originX, float ori ginY) {
104 super.onTabCreated(
105 time, tabId, tabIndex, sourceTabId, newIsIncognito, background, originX, originY);
106 startHiding(tabId, false);
107 }
108
109 @Override
110 public void onTabModelSwitched(boolean incognito) {
111 super.onTabModelSwitched(incognito);
112 if (mTabModelWrapper == null) return;
113 mTabModelWrapper.setStateBasedOnModel();
114 }
115
116 @Override
117 public void show(long time, boolean animate) {
118 super.show(time, animate);
119 if (mTabModelWrapper == null) return;
120 mTabModelWrapper.setStateBasedOnModel();
121
122 doneShowing();
123 }
124
125 @Override
126 public void startHiding(int nextId, boolean hintAtTabSelection) {
127 super.startHiding(nextId, hintAtTabSelection);
128
129 doneHiding();
130 }
131
132 @Override
133 public void detachViews() {
134 if (mTabModelSelector != null) mTabModelSelector.commitAllTabClosures();
135 if (mTabModelWrapper != null) {
136 ViewGroup parent = (ViewGroup) mTabModelWrapper.getParent();
137 if (parent != null) parent.removeView(mTabModelWrapper);
138 }
139 }
140
141 @Override
142 public void setTabModelSelector(
143 TabModelSelector tabModelSelector, TabContentManager tabContentManag er) {
144 super.setTabModelSelector(tabModelSelector, tabContentManager);
145
146 if (mTabModelWrapper == null) return;
147 mTabModelWrapper.setTabModelSelector(tabModelSelector);
148 }
149
150 @VisibleForTesting
151 public ViewGroup getContainer() {
152 return mTabModelWrapper;
153 }
154
155 @Override
156 public void onTabsAllClosing(long time, boolean incognito) {
157 super.onTabsAllClosing(time, incognito);
158
159 TabModel model = mTabModelSelector.getModel(incognito);
160 while (model.getCount() > 0) TabModelUtils.closeTabByIndex(model, 0);
161
162 if (incognito) {
163 mTabModelSelector.selectModel(!incognito);
164 }
165 if (mTabModelWrapper == null) return;
166 mTabModelWrapper.setStateBasedOnModel();
167 }
168
169 @Override
170 public void onTabClosureCommitted(long time, int tabId, boolean incognito) {
171 mTabModelWrapper.setStateBasedOnModel();
172 }
173
174 @Override
175 public void showTab(int tabId) {
176 onTabSelecting(0, tabId);
177 }
178
179 @Override
180 protected SceneLayer getSceneLayer() {
181 return mSceneLayer;
182 }
183 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698