| OLD | NEW |
| 1 // Copyright 2017 The Chromium Authors. All rights reserved. | 1 // Copyright 2017 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.browser.ntp; | 5 package org.chromium.chrome.browser.ntp; |
| 6 | 6 |
| 7 import android.content.Context; | 7 import android.content.Context; |
| 8 import android.support.annotation.CallSuper; | 8 import android.support.annotation.CallSuper; |
| 9 import android.support.annotation.Nullable; | 9 import android.support.annotation.Nullable; |
| 10 import android.text.TextUtils; |
| 10 import android.view.View; | 11 import android.view.View; |
| 11 import android.view.View.OnClickListener; | 12 import android.view.View.OnClickListener; |
| 12 | 13 |
| 13 import org.chromium.base.VisibleForTesting; | 14 import org.chromium.base.VisibleForTesting; |
| 14 import org.chromium.chrome.R; | 15 import org.chromium.chrome.R; |
| 15 import org.chromium.chrome.browser.ChromeTabbedActivity; | 16 import org.chromium.chrome.browser.ChromeTabbedActivity; |
| 16 import org.chromium.chrome.browser.NativePage; | 17 import org.chromium.chrome.browser.NativePage; |
| 17 import org.chromium.chrome.browser.UrlConstants; | 18 import org.chromium.chrome.browser.UrlConstants; |
| 18 import org.chromium.chrome.browser.compositor.layouts.EmptyOverviewModeObserver; | 19 import org.chromium.chrome.browser.compositor.layouts.EmptyOverviewModeObserver; |
| 19 import org.chromium.chrome.browser.compositor.layouts.LayoutManagerChrome; | 20 import org.chromium.chrome.browser.compositor.layouts.LayoutManagerChrome; |
| 20 import org.chromium.chrome.browser.compositor.layouts.OverviewModeBehavior.Overv
iewModeObserver; | 21 import org.chromium.chrome.browser.compositor.layouts.OverviewModeBehavior.Overv
iewModeObserver; |
| 21 import org.chromium.chrome.browser.tab.EmptyTabObserver; | 22 import org.chromium.chrome.browser.tab.EmptyTabObserver; |
| 22 import org.chromium.chrome.browser.tab.Tab; | 23 import org.chromium.chrome.browser.tab.Tab; |
| 23 import org.chromium.chrome.browser.tab.TabObserver; | 24 import org.chromium.chrome.browser.tab.TabObserver; |
| 24 import org.chromium.chrome.browser.tabmodel.TabModelSelector; | 25 import org.chromium.chrome.browser.tabmodel.TabModelSelector; |
| 25 import org.chromium.chrome.browser.widget.bottomsheet.BottomSheet; | 26 import org.chromium.chrome.browser.widget.bottomsheet.BottomSheet; |
| 26 import org.chromium.chrome.browser.widget.bottomsheet.BottomSheetMetrics; | 27 import org.chromium.chrome.browser.widget.bottomsheet.BottomSheetMetrics; |
| 28 import org.chromium.content_public.browser.LoadUrlParams; |
| 27 | 29 |
| 28 /** | 30 /** |
| 29 * The base class for the new tab pages displayed in Chrome Home. | 31 * The base class for the new tab pages displayed in Chrome Home. |
| 30 */ | 32 */ |
| 31 public abstract class ChromeHomeNewTabPageBase implements NativePage { | 33 public abstract class ChromeHomeNewTabPageBase implements NativePage { |
| 32 final Tab mTab; | 34 final Tab mTab; |
| 33 final TabObserver mTabObserver; | 35 final TabObserver mTabObserver; |
| 34 final TabModelSelector mTabModelSelector; | 36 final TabModelSelector mTabModelSelector; |
| 35 final OverviewModeObserver mOverviewModeObserver; | 37 final OverviewModeObserver mOverviewModeObserver; |
| 36 @Nullable | 38 @Nullable |
| (...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 83 @Override | 85 @Override |
| 84 public void onShown(Tab tab) { | 86 public void onShown(Tab tab) { |
| 85 onNewTabPageShown(); | 87 onNewTabPageShown(); |
| 86 } | 88 } |
| 87 | 89 |
| 88 @Override | 90 @Override |
| 89 public void onHidden(Tab tab) { | 91 public void onHidden(Tab tab) { |
| 90 mFadingBackgroundView.setEnabled(true); | 92 mFadingBackgroundView.setEnabled(true); |
| 91 if (!mTab.isClosing()) mShowOverviewOnClose = false; | 93 if (!mTab.isClosing()) mShowOverviewOnClose = false; |
| 92 } | 94 } |
| 95 |
| 96 @Override |
| 97 public void onLoadUrl(Tab tab, LoadUrlParams params, int loadType) { |
| 98 // If the NTP is loading, the sheet state will be set to SHEET_S
TATE_HALF. |
| 99 if (TextUtils.equals(tab.getUrl(), getUrl())) return; |
| 100 |
| 101 mBottomSheet.setSheetState(BottomSheet.SHEET_STATE_PEEK, true); |
| 102 } |
| 93 }; | 103 }; |
| 94 mTab.addObserver(mTabObserver); | 104 mTab.addObserver(mTabObserver); |
| 95 | 105 |
| 96 // If the tab is already showing TabObserver#onShown() won't be called,
so we need to call | 106 // If the tab is already showing TabObserver#onShown() won't be called,
so we need to call |
| 97 // #onNewTabPageShown() directly. | 107 // #onNewTabPageShown() directly. |
| 98 boolean tabAlreadyShowing = mTabModelSelector.getCurrentTab() == mTab; | 108 boolean tabAlreadyShowing = mTabModelSelector.getCurrentTab() == mTab; |
| 99 if (tabAlreadyShowing) onNewTabPageShown(); | 109 if (tabAlreadyShowing) onNewTabPageShown(); |
| 100 | 110 |
| 101 // TODO(twellington): disallow moving the NTP to the other window in And
roid N+ | 111 // TODO(twellington): disallow moving the NTP to the other window in And
roid N+ |
| 102 // multi-window mode. | 112 // multi-window mode. |
| (...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 182 return ((ChromeTabbedActivity) mTab.getActivity()).getLayoutManager(); | 192 return ((ChromeTabbedActivity) mTab.getActivity()).getLayoutManager(); |
| 183 } | 193 } |
| 184 | 194 |
| 185 // Methods for testing. | 195 // Methods for testing. |
| 186 | 196 |
| 187 @VisibleForTesting | 197 @VisibleForTesting |
| 188 public View getCloseButtonForTests() { | 198 public View getCloseButtonForTests() { |
| 189 return mCloseButton; | 199 return mCloseButton; |
| 190 } | 200 } |
| 191 } | 201 } |
| OLD | NEW |