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

Side by Side Diff: chrome/android/java/src/org/chromium/chrome/browser/fullscreen/ChromeFullscreenManager.java

Issue 2512573003: [Android] Fix toolbar jumping in after returning to Chrome. (Closed)
Patch Set: rebase Created 4 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
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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.browser.fullscreen; 5 package org.chromium.chrome.browser.fullscreen;
6 6
7 import android.app.Activity; 7 import android.app.Activity;
8 import android.content.res.Resources; 8 import android.content.res.Resources;
9 import android.view.Gravity; 9 import android.view.Gravity;
10 import android.view.MotionEvent; 10 import android.view.MotionEvent;
11 import android.view.View; 11 import android.view.View;
12 import android.view.ViewGroup; 12 import android.view.ViewGroup;
13 import android.view.ViewGroup.LayoutParams; 13 import android.view.ViewGroup.LayoutParams;
14 import android.view.Window; 14 import android.view.Window;
15 import android.widget.FrameLayout; 15 import android.widget.FrameLayout;
16 16
17 import org.chromium.base.ActivityState; 17 import org.chromium.base.ActivityState;
18 import org.chromium.base.ApplicationStatus; 18 import org.chromium.base.ApplicationStatus;
19 import org.chromium.base.ApplicationStatus.ActivityStateListener; 19 import org.chromium.base.ApplicationStatus.ActivityStateListener;
20 import org.chromium.base.BaseChromiumApplication; 20 import org.chromium.base.BaseChromiumApplication;
21 import org.chromium.base.BaseChromiumApplication.WindowFocusChangedListener; 21 import org.chromium.base.BaseChromiumApplication.WindowFocusChangedListener;
22 import org.chromium.base.ThreadUtils;
22 import org.chromium.base.TraceEvent; 23 import org.chromium.base.TraceEvent;
23 import org.chromium.base.library_loader.LibraryLoader; 24 import org.chromium.base.library_loader.LibraryLoader;
24 import org.chromium.chrome.browser.fullscreen.FullscreenHtmlApiHandler.Fullscree nHtmlApiDelegate; 25 import org.chromium.chrome.browser.fullscreen.FullscreenHtmlApiHandler.Fullscree nHtmlApiDelegate;
25 import org.chromium.chrome.browser.tab.Tab; 26 import org.chromium.chrome.browser.tab.Tab;
26 import org.chromium.chrome.browser.tabmodel.TabModel.TabSelectionType; 27 import org.chromium.chrome.browser.tabmodel.TabModel.TabSelectionType;
27 import org.chromium.chrome.browser.tabmodel.TabModelSelector; 28 import org.chromium.chrome.browser.tabmodel.TabModelSelector;
28 import org.chromium.chrome.browser.tabmodel.TabModelSelectorTabModelObserver; 29 import org.chromium.chrome.browser.tabmodel.TabModelSelectorTabModelObserver;
29 import org.chromium.chrome.browser.util.ViewUtils; 30 import org.chromium.chrome.browser.util.ViewUtils;
30 import org.chromium.chrome.browser.widget.ControlContainer; 31 import org.chromium.chrome.browser.widget.ControlContainer;
31 import org.chromium.content.browser.ContentVideoView; 32 import org.chromium.content.browser.ContentVideoView;
32 import org.chromium.content.browser.ContentViewCore; 33 import org.chromium.content.browser.ContentViewCore;
33 import org.chromium.content_public.common.BrowserControlsState; 34 import org.chromium.content_public.common.BrowserControlsState;
34 35
35 import java.util.ArrayList; 36 import java.util.ArrayList;
36 37
37 /** 38 /**
38 * A class that manages control and content views to create the fullscreen mode. 39 * A class that manages control and content views to create the fullscreen mode.
39 */ 40 */
40 public class ChromeFullscreenManager 41 public class ChromeFullscreenManager
41 extends FullscreenManager implements ActivityStateListener, WindowFocusC hangedListener { 42 extends FullscreenManager implements ActivityStateListener, WindowFocusC hangedListener {
42 43
44 // The amount of time to delay the control show request after returning to a once visible
45 // activity. This delay is meant to allow Android to run its Activity focus ing animation and
46 // have the controls scroll back in smoothly once that has finished.
47 private static final long ACTIVITY_RETURN_SHOW_REQUEST_DELAY_MS = 100;
48
43 private final Activity mActivity; 49 private final Activity mActivity;
44 private final Window mWindow; 50 private final Window mWindow;
45 private final BrowserStateBrowserControlsVisibilityDelegate mBrowserVisibili tyDelegate; 51 private final BrowserStateBrowserControlsVisibilityDelegate mBrowserVisibili tyDelegate;
46 private final boolean mIsBottomControls; 52 private final boolean mIsBottomControls;
47 53
48 private ControlContainer mControlContainer; 54 private ControlContainer mControlContainer;
49 private int mTopControlContainerHeight; 55 private int mTopControlContainerHeight;
50 private int mBottomControlContainerHeight; 56 private int mBottomControlContainerHeight;
51 private TabModelSelector mTabModelSelector; 57 private TabModelSelector mTabModelSelector;
52 private TabModelSelectorTabModelObserver mTabModelObserver; 58 private TabModelSelectorTabModelObserver mTabModelObserver;
(...skipping 129 matching lines...) Expand 10 before | Expand all | Expand 10 after
182 /** 188 /**
183 * @return The visibility delegate that allows browser UI to control the bro wser control 189 * @return The visibility delegate that allows browser UI to control the bro wser control
184 * visibility. 190 * visibility.
185 */ 191 */
186 public BrowserStateBrowserControlsVisibilityDelegate getBrowserVisibilityDel egate() { 192 public BrowserStateBrowserControlsVisibilityDelegate getBrowserVisibilityDel egate() {
187 return mBrowserVisibilityDelegate; 193 return mBrowserVisibilityDelegate;
188 } 194 }
189 195
190 @Override 196 @Override
191 public void setTab(Tab tab) { 197 public void setTab(Tab tab) {
198 Tab previousTab = getTab();
192 super.setTab(tab); 199 super.setTab(tab);
193 mBrowserVisibilityDelegate.setTab(getTab()); 200 mBrowserVisibilityDelegate.setTab(getTab());
194 if (tab != null) mBrowserVisibilityDelegate.showControlsTransient(); 201 if (tab != null && previousTab != getTab()) {
202 mBrowserVisibilityDelegate.showControlsTransient();
203 }
195 } 204 }
196 205
197 @Override 206 @Override
198 public void onActivityStateChange(Activity activity, int newState) { 207 public void onActivityStateChange(Activity activity, int newState) {
199 if (newState == ActivityState.STOPPED) { 208 if (newState == ActivityState.STOPPED) {
200 // Exit fullscreen in onStop to ensure the system UI flags are set c orrectly when 209 // Exit fullscreen in onStop to ensure the system UI flags are set c orrectly when
201 // showing again (on JB MR2+ builds, the omnibox would be covered by the 210 // showing again (on JB MR2+ builds, the omnibox would be covered by the
202 // notification bar when this was done in onStart()). 211 // notification bar when this was done in onStart()).
203 setPersistentFullscreenMode(false); 212 setPersistentFullscreenMode(false);
204 } else if (newState == ActivityState.STARTED) { 213 } else if (newState == ActivityState.STARTED) {
205 mBrowserVisibilityDelegate.showControlsTransient(); 214 ThreadUtils.postOnUiThreadDelayed(new Runnable() {
215 @Override
216 public void run() {
217 mBrowserVisibilityDelegate.showControlsTransient();
218 }
219 }, ACTIVITY_RETURN_SHOW_REQUEST_DELAY_MS);
206 } else if (newState == ActivityState.DESTROYED) { 220 } else if (newState == ActivityState.DESTROYED) {
207 ApplicationStatus.unregisterActivityStateListener(this); 221 ApplicationStatus.unregisterActivityStateListener(this);
208 ((BaseChromiumApplication) mWindow.getContext().getApplicationContex t()) 222 ((BaseChromiumApplication) mWindow.getContext().getApplicationContex t())
209 .unregisterWindowFocusChangedListener(this); 223 .unregisterWindowFocusChangedListener(this);
210 224
211 mTabModelObserver.destroy(); 225 mTabModelObserver.destroy();
212 } 226 }
213 } 227 }
214 228
215 @Override 229 @Override
(...skipping 410 matching lines...) Expand 10 before | Expand all | Expand 10 after
626 updateVisuals(); 640 updateVisuals();
627 } 641 }
628 } 642 }
629 643
630 @Override 644 @Override
631 public void onContentViewScrollingStateChanged(boolean scrolling) { 645 public void onContentViewScrollingStateChanged(boolean scrolling) {
632 mContentViewScrolling = scrolling; 646 mContentViewScrolling = scrolling;
633 if (!scrolling) updateVisuals(); 647 if (!scrolling) updateVisuals();
634 } 648 }
635 } 649 }
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698