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

Side by Side Diff: chrome/android/shell/java/src/org/chromium/chrome/shell/ChromeShellTabModelSelector.java

Issue 683203006: Adding option for adding new tab in tab manager for chrome shell. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Review changes Created 6 years, 1 month 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
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 package org.chromium.chrome.shell; 5 package org.chromium.chrome.shell;
6 6
7 import android.view.LayoutInflater; 7 import android.content.Context;
8 import android.view.ViewGroup; 8 import android.view.ViewGroup;
9 import android.view.ViewParent;
10 9
11 import org.chromium.chrome.browser.Tab; 10 import org.chromium.chrome.browser.Tab;
12 import org.chromium.chrome.browser.tabmodel.EmptyTabModel; 11 import org.chromium.chrome.browser.tabmodel.EmptyTabModel;
13 import org.chromium.chrome.browser.tabmodel.TabModel; 12 import org.chromium.chrome.browser.tabmodel.TabModel;
14 import org.chromium.chrome.browser.tabmodel.TabModel.TabLaunchType; 13 import org.chromium.chrome.browser.tabmodel.TabModel.TabLaunchType;
15 import org.chromium.chrome.browser.tabmodel.TabModel.TabSelectionType; 14 import org.chromium.chrome.browser.tabmodel.TabModel.TabSelectionType;
16 import org.chromium.chrome.browser.tabmodel.TabModelDelegate; 15 import org.chromium.chrome.browser.tabmodel.TabModelDelegate;
17 import org.chromium.chrome.browser.tabmodel.TabModelOrderController; 16 import org.chromium.chrome.browser.tabmodel.TabModelOrderController;
18 import org.chromium.chrome.browser.tabmodel.TabModelSelectorBase; 17 import org.chromium.chrome.browser.tabmodel.TabModelSelectorBase;
19 import org.chromium.chrome.browser.widget.accessibility.AccessibilityTabModelWra pper;
20 import org.chromium.content.browser.ContentVideoViewClient; 18 import org.chromium.content.browser.ContentVideoViewClient;
21 import org.chromium.content.browser.ContentViewClient; 19 import org.chromium.content.browser.ContentViewClient;
22 import org.chromium.content_public.browser.LoadUrlParams; 20 import org.chromium.content_public.browser.LoadUrlParams;
23 import org.chromium.ui.base.WindowAndroid; 21 import org.chromium.ui.base.WindowAndroid;
24 22
25 /** 23 /**
26 * Basic implementation of TabModelSelector for use in ChromeShell. Only has a r egular TabModel, 24 * Basic implementation of TabModelSelector for use in ChromeShell. Only has a r egular TabModel,
27 * no incognito one. 25 * no incognito one.
28 */ 26 */
29 class ChromeShellTabModelSelector extends TabModelSelectorBase { 27 class ChromeShellTabModelSelector extends TabModelSelectorBase {
30 28
31 private final WindowAndroid mWindow; 29 private final WindowAndroid mWindow;
32 private final ContentVideoViewClient mContentVideoViewClient; 30 private final ContentVideoViewClient mContentVideoViewClient;
33 private final ViewGroup mParent; 31 private final Context mParentContext;
34 private final TabModelOrderController mOrderController; 32 private final TabModelOrderController mOrderController;
35 33
36 private AccessibilityTabModelWrapper mTabModelWrapper;
37 private TabManager mTabManager; 34 private TabManager mTabManager;
38 35
39 public ChromeShellTabModelSelector( 36 public ChromeShellTabModelSelector(
40 WindowAndroid window, ContentVideoViewClient videoViewClient, ViewGr oup parent, 37 WindowAndroid window, ContentVideoViewClient videoViewClient, ViewGr oup parent,
Bernhard Bauer 2014/11/12 09:23:17 You don't even need to pass in the parent, just di
divya.bansal 2014/11/12 09:48:22 Done.
41 TabManager tabManager) { 38 TabManager tabManager) {
42 mWindow = window; 39 mWindow = window;
43 mContentVideoViewClient = videoViewClient; 40 mContentVideoViewClient = videoViewClient;
44 mParent = parent; 41 mParentContext = parent.getContext();
45 mOrderController = new TabModelOrderController(this); 42 mOrderController = new TabModelOrderController(this);
46 mTabManager = tabManager; 43 mTabManager = tabManager;
47 44
48 TabModelDelegate tabModelDelegate = new TabModelDelegate() { 45 TabModelDelegate tabModelDelegate = new TabModelDelegate() {
49 @Override 46 @Override
50 public void didCreateNewTab(Tab tab) {} 47 public void didCreateNewTab(Tab tab) {}
51 48
52 @Override 49 @Override
53 public void didChange() {} 50 public void didChange() {}
54 51
55 @Override 52 @Override
56 public void selectModel(boolean incognito) { 53 public void selectModel(boolean incognito) {
57 assert !incognito; 54 assert !incognito;
58 } 55 }
59 56
60 @Override 57 @Override
61 public void requestToShowTab(Tab tab, TabSelectionType type) { 58 public void requestToShowTab(Tab tab, TabSelectionType type) {
62 } 59 }
63 60
64 @Override 61 @Override
65 public boolean isSessionRestoreInProgress() { 62 public boolean isSessionRestoreInProgress() {
66 return false; 63 return false;
67 } 64 }
68 65
69 @Override 66 @Override
70 public boolean isInOverviewMode() { 67 public boolean isInOverviewMode() {
71 return isTabSwitcherVisible(); 68 return mTabManager.isTabSwitcherVisible();
72 } 69 }
73 70
74 @Override 71 @Override
75 public TabModel getModel(boolean incognito) { 72 public TabModel getModel(boolean incognito) {
76 return ChromeShellTabModelSelector.this.getModel(incognito); 73 return ChromeShellTabModelSelector.this.getModel(incognito);
77 } 74 }
78 75
79 @Override 76 @Override
80 public TabModel getCurrentModel() { 77 public TabModel getCurrentModel() {
81 return ChromeShellTabModelSelector.this.getCurrentModel(); 78 return ChromeShellTabModelSelector.this.getCurrentModel();
82 } 79 }
83 }; 80 };
84 TabModel tabModel = new ChromeShellTabModel(mOrderController, tabModelDe legate); 81 TabModel tabModel = new ChromeShellTabModel(mOrderController, tabModelDe legate);
85 initialize(false, tabModel, EmptyTabModel.getInstance()); 82 initialize(false, tabModel, EmptyTabModel.getInstance());
86 } 83 }
87 84
88 @Override 85 @Override
89 public Tab openNewTab(LoadUrlParams loadUrlParams, TabLaunchType type, Tab p arent, 86 public Tab openNewTab(LoadUrlParams loadUrlParams, TabLaunchType type, Tab p arent,
90 boolean incognito) { 87 boolean incognito) {
91 assert !incognito; 88 assert !incognito;
92 ContentViewClient client = new ContentViewClient() { 89 ContentViewClient client = new ContentViewClient() {
93 @Override 90 @Override
94 public ContentVideoViewClient getContentVideoViewClient() { 91 public ContentVideoViewClient getContentVideoViewClient() {
95 return mContentVideoViewClient; 92 return mContentVideoViewClient;
96 } 93 }
97 }; 94 };
98 ChromeShellTab tab = new ChromeShellTab( 95 ChromeShellTab tab = new ChromeShellTab(
99 mParent.getContext(), loadUrlParams.getUrl(), mWindow, client, m TabManager); 96 mParentContext, loadUrlParams.getUrl(), mWindow, client, mTabMan ager);
100 int index = mOrderController.determineInsertionIndex(type, tab); 97 int index = mOrderController.determineInsertionIndex(type, tab);
101 TabModel tabModel = getCurrentModel(); 98 TabModel tabModel = getCurrentModel();
102 tabModel.addTab(tab, index, type); 99 tabModel.addTab(tab, index, type);
103 tabModel.setIndex(index, TabSelectionType.FROM_NEW); 100 tabModel.setIndex(index, TabSelectionType.FROM_NEW);
104 return tab; 101 return tab;
105 } 102 }
106 103
107 /**
108 * Toggles the tab switcher visibility.
109 */
110 public void toggleTabSwitcher() {
111 if (!isTabSwitcherVisible()) {
112 showTabSwitcher();
113 } else {
114 hideTabSwitcher();
115 }
116 }
117
118 /*
119 * Hide the tab switcher.
120 */
121 public void hideTabSwitcher() {
122 if (mTabModelWrapper == null) return;
123 ViewParent parent = mTabModelWrapper.getParent();
124 if (parent != null) {
125 assert parent == mParent;
126 mParent.removeView(mTabModelWrapper);
127 }
128 }
129
130 private void showTabSwitcher() {
131 if (mTabModelWrapper == null) {
132 mTabModelWrapper = (AccessibilityTabModelWrapper) LayoutInflater.fro m(
133 mParent.getContext()).inflate(R.layout.accessibility_tab_swi tcher, null);
134 mTabModelWrapper.setup(null);
135 mTabModelWrapper.setTabModelSelector(this);
136 }
137
138 if (mTabModelWrapper.getParent() == null) {
139 mParent.addView(mTabModelWrapper);
140 }
141 }
142
143 public boolean isTabSwitcherVisible() {
144 return mTabModelWrapper != null && mTabModelWrapper.getParent() == mPare nt;
145 }
146
147 } 104 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698