Chromium Code Reviews| OLD | NEW |
|---|---|
| 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 } |
| OLD | NEW |