| 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.browser.tab; | 5 package org.chromium.chrome.browser.tab; |
| 6 | 6 |
| 7 import android.app.Activity; | 7 import android.app.Activity; |
| 8 import android.content.Context; | 8 import android.content.Context; |
| 9 import android.content.Intent; | 9 import android.content.Intent; |
| 10 import android.content.res.Resources; | 10 import android.content.res.Resources; |
| (...skipping 322 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 333 * page twice (A, B, A, B): the first two times in loadUrl(), the second two
times in | 333 * page twice (A, B, A, B): the first two times in loadUrl(), the second two
times in |
| 334 * didCommitProvisionalLoadForFrame(). | 334 * didCommitProvisionalLoadForFrame(). |
| 335 */ | 335 */ |
| 336 private boolean mIsNativePageCommitPending; | 336 private boolean mIsNativePageCommitPending; |
| 337 | 337 |
| 338 private TabRedirectHandler mTabRedirectHandler; | 338 private TabRedirectHandler mTabRedirectHandler; |
| 339 | 339 |
| 340 private FullscreenManager mFullscreenManager; | 340 private FullscreenManager mFullscreenManager; |
| 341 private float mPreviousFullscreenTopControlsOffsetY = Float.NaN; | 341 private float mPreviousFullscreenTopControlsOffsetY = Float.NaN; |
| 342 private float mPreviousFullscreenContentOffsetY = Float.NaN; | 342 private float mPreviousFullscreenContentOffsetY = Float.NaN; |
| 343 private float mPreviousFullscreenOverdrawBottomHeight = Float.NaN; | |
| 344 private int mFullscreenHungRendererToken = FullscreenManager.INVALID_TOKEN; | 343 private int mFullscreenHungRendererToken = FullscreenManager.INVALID_TOKEN; |
| 345 private boolean mIsFullscreenWaitingForLoad = false; | 344 private boolean mIsFullscreenWaitingForLoad = false; |
| 346 | 345 |
| 347 /** | 346 /** |
| 348 * The UMA object used to report stats for this tab. Note that this may be n
ull under certain | 347 * The UMA object used to report stats for this tab. Note that this may be n
ull under certain |
| 349 * conditions, such as incognito mode. | 348 * conditions, such as incognito mode. |
| 350 */ | 349 */ |
| 351 private TabUma mTabUma; | 350 private TabUma mTabUma; |
| 352 | 351 |
| 353 /** | 352 /** |
| (...skipping 10 matching lines...) Expand all Loading... |
| 364 private LoFiBarPopupController mLoFiBarPopupController; | 363 private LoFiBarPopupController mLoFiBarPopupController; |
| 365 | 364 |
| 366 private class TabContentViewClient extends ContentViewClient { | 365 private class TabContentViewClient extends ContentViewClient { |
| 367 @Override | 366 @Override |
| 368 public void onBackgroundColorChanged(int color) { | 367 public void onBackgroundColorChanged(int color) { |
| 369 Tab.this.onBackgroundColorChanged(color); | 368 Tab.this.onBackgroundColorChanged(color); |
| 370 } | 369 } |
| 371 | 370 |
| 372 @Override | 371 @Override |
| 373 public void onOffsetsForFullscreenChanged( | 372 public void onOffsetsForFullscreenChanged( |
| 374 float topControlsOffsetY, float contentOffsetY, float overdrawBo
ttomHeight) { | 373 float topControlsOffsetY, float contentOffsetY) { |
| 375 onOffsetsChanged(topControlsOffsetY, contentOffsetY, overdrawBottomH
eight, | 374 onOffsetsChanged(topControlsOffsetY, contentOffsetY, isShowingSadTab
()); |
| 376 isShowingSadTab()); | |
| 377 } | 375 } |
| 378 | 376 |
| 379 @Override | 377 @Override |
| 380 public void onUpdateTitle(String title) { | 378 public void onUpdateTitle(String title) { |
| 381 updateTitle(title); | 379 updateTitle(title); |
| 382 } | 380 } |
| 383 | 381 |
| 384 @Override | 382 @Override |
| 385 public void onContextualActionBarShown() { | 383 public void onContextualActionBarShown() { |
| 386 for (TabObserver observer : mObservers) { | 384 for (TabObserver observer : mObservers) { |
| (...skipping 786 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1173 if (isHidden()) return; | 1171 if (isHidden()) return; |
| 1174 mIsHidden = true; | 1172 mIsHidden = true; |
| 1175 | 1173 |
| 1176 if (mContentViewCore != null) mContentViewCore.onHide(); | 1174 if (mContentViewCore != null) mContentViewCore.onHide(); |
| 1177 | 1175 |
| 1178 // Clean up any fullscreen state that might impact other tabs. | 1176 // Clean up any fullscreen state that might impact other tabs. |
| 1179 if (mFullscreenManager != null) { | 1177 if (mFullscreenManager != null) { |
| 1180 mFullscreenManager.setPersistentFullscreenMode(false); | 1178 mFullscreenManager.setPersistentFullscreenMode(false); |
| 1181 mFullscreenManager.hideControlsPersistent(mFullscreenHungRendere
rToken); | 1179 mFullscreenManager.hideControlsPersistent(mFullscreenHungRendere
rToken); |
| 1182 mFullscreenHungRendererToken = FullscreenManager.INVALID_TOKEN; | 1180 mFullscreenHungRendererToken = FullscreenManager.INVALID_TOKEN; |
| 1183 mPreviousFullscreenOverdrawBottomHeight = Float.NaN; | |
| 1184 } | 1181 } |
| 1185 | 1182 |
| 1186 if (mTabUma != null) mTabUma.onHide(); | 1183 if (mTabUma != null) mTabUma.onHide(); |
| 1187 | 1184 |
| 1188 mTabRedirectHandler.clear(); | 1185 mTabRedirectHandler.clear(); |
| 1189 | 1186 |
| 1190 cancelEnableFullscreenLoadDelay(); | 1187 cancelEnableFullscreenLoadDelay(); |
| 1191 | 1188 |
| 1192 // Allow this tab's NativePage to be frozen if it stays hidden for a
while. | 1189 // Allow this tab's NativePage to be frozen if it stays hidden for a
while. |
| 1193 NativePageAssassin.getInstance().tabHidden(this); | 1190 NativePageAssassin.getInstance().tabHidden(this); |
| (...skipping 1152 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2346 mFullscreenManager.hideControlsPersistent(mFullscreenHungRendererToken); | 2343 mFullscreenManager.hideControlsPersistent(mFullscreenHungRendererToken); |
| 2347 mFullscreenHungRendererToken = FullscreenManager.INVALID_TOKEN; | 2344 mFullscreenHungRendererToken = FullscreenManager.INVALID_TOKEN; |
| 2348 updateFullscreenEnabledState(); | 2345 updateFullscreenEnabledState(); |
| 2349 } | 2346 } |
| 2350 | 2347 |
| 2351 /** | 2348 /** |
| 2352 * Called when offset values related with fullscreen functionality has been
changed by the | 2349 * Called when offset values related with fullscreen functionality has been
changed by the |
| 2353 * compositor. | 2350 * compositor. |
| 2354 * @param topControlsOffsetY The Y offset of the top controls in physical pi
xels. | 2351 * @param topControlsOffsetY The Y offset of the top controls in physical pi
xels. |
| 2355 * @param contentOffsetY The Y offset of the content in physical pixels. | 2352 * @param contentOffsetY The Y offset of the content in physical pixels. |
| 2356 * @param overdrawBottomHeight The overdraw height. | |
| 2357 * @param isNonFullscreenPage Whether a current page is non-fullscreen page
or not. | 2353 * @param isNonFullscreenPage Whether a current page is non-fullscreen page
or not. |
| 2358 */ | 2354 */ |
| 2359 private void onOffsetsChanged(float topControlsOffsetY, float contentOffsetY
, | 2355 private void onOffsetsChanged(float topControlsOffsetY, float contentOffsetY
, |
| 2360 float overdrawBottomHeight, boolean isNonFullscreenPage) { | 2356 boolean isNonFullscreenPage) { |
| 2361 mPreviousFullscreenTopControlsOffsetY = topControlsOffsetY; | 2357 mPreviousFullscreenTopControlsOffsetY = topControlsOffsetY; |
| 2362 mPreviousFullscreenContentOffsetY = contentOffsetY; | 2358 mPreviousFullscreenContentOffsetY = contentOffsetY; |
| 2363 mPreviousFullscreenOverdrawBottomHeight = overdrawBottomHeight; | |
| 2364 | 2359 |
| 2365 if (mFullscreenManager == null) return; | 2360 if (mFullscreenManager == null) return; |
| 2366 if (isNonFullscreenPage || isNativePage()) { | 2361 if (isNonFullscreenPage || isNativePage()) { |
| 2367 mFullscreenManager.setPositionsForTabToNonFullscreen(); | 2362 mFullscreenManager.setPositionsForTabToNonFullscreen(); |
| 2368 } else { | 2363 } else { |
| 2369 mFullscreenManager.setPositionsForTab(topControlsOffsetY, contentOff
setY); | 2364 mFullscreenManager.setPositionsForTab(topControlsOffsetY, contentOff
setY); |
| 2370 } | 2365 } |
| 2371 TabModelImpl.setActualTabSwitchLatencyMetricRequired(); | 2366 TabModelImpl.setActualTabSwitchLatencyMetricRequired(); |
| 2372 } | 2367 } |
| 2373 | 2368 |
| (...skipping 122 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2496 } else { | 2491 } else { |
| 2497 mFullscreenManager.setPositionsForTab( | 2492 mFullscreenManager.setPositionsForTab( |
| 2498 mPreviousFullscreenTopControlsOffsetY, mPreviousFullscre
enContentOffsetY); | 2493 mPreviousFullscreenTopControlsOffsetY, mPreviousFullscre
enContentOffsetY); |
| 2499 } | 2494 } |
| 2500 mFullscreenManager.showControlsTransient(); | 2495 mFullscreenManager.showControlsTransient(); |
| 2501 updateFullscreenEnabledState(); | 2496 updateFullscreenEnabledState(); |
| 2502 } | 2497 } |
| 2503 } | 2498 } |
| 2504 | 2499 |
| 2505 /** | 2500 /** |
| 2506 * @return The most recent frame's overdraw bottom height in pixels. | |
| 2507 */ | |
| 2508 public float getFullscreenOverdrawBottomHeightPix() { | |
| 2509 return mPreviousFullscreenOverdrawBottomHeight; | |
| 2510 } | |
| 2511 | |
| 2512 /** | |
| 2513 * Add a new navigation entry for the current URL and page title. | 2501 * Add a new navigation entry for the current URL and page title. |
| 2514 */ | 2502 */ |
| 2515 void pushNativePageStateToNavigationEntry() { | 2503 void pushNativePageStateToNavigationEntry() { |
| 2516 assert mNativeTabAndroid != 0 && getNativePage() != null; | 2504 assert mNativeTabAndroid != 0 && getNativePage() != null; |
| 2517 nativeSetActiveNavigationEntryTitleForUrl(mNativeTabAndroid, getNativePa
ge().getUrl(), | 2505 nativeSetActiveNavigationEntryTitleForUrl(mNativeTabAndroid, getNativePa
ge().getUrl(), |
| 2518 getNativePage().getTitle()); | 2506 getNativePage().getTitle()); |
| 2519 } | 2507 } |
| 2520 | 2508 |
| 2521 @Override | 2509 @Override |
| 2522 public void onChildViewRemoved(View parent, View child) { | 2510 public void onChildViewRemoved(View parent, View child) { |
| (...skipping 370 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2893 private native void nativeSetInterceptNavigationDelegate(long nativeTabAndro
id, | 2881 private native void nativeSetInterceptNavigationDelegate(long nativeTabAndro
id, |
| 2894 InterceptNavigationDelegate delegate); | 2882 InterceptNavigationDelegate delegate); |
| 2895 private native void nativeAttachToTabContentManager(long nativeTabAndroid, | 2883 private native void nativeAttachToTabContentManager(long nativeTabAndroid, |
| 2896 TabContentManager tabContentManager); | 2884 TabContentManager tabContentManager); |
| 2897 private native void nativeAttachOverlayContentViewCore(long nativeTabAndroid
, | 2885 private native void nativeAttachOverlayContentViewCore(long nativeTabAndroid
, |
| 2898 ContentViewCore content, boolean visible); | 2886 ContentViewCore content, boolean visible); |
| 2899 private native void nativeDetachOverlayContentViewCore(long nativeTabAndroid
, | 2887 private native void nativeDetachOverlayContentViewCore(long nativeTabAndroid
, |
| 2900 ContentViewCore content); | 2888 ContentViewCore content); |
| 2901 private native boolean nativeHasPrerenderedUrl(long nativeTabAndroid, String
url); | 2889 private native boolean nativeHasPrerenderedUrl(long nativeTabAndroid, String
url); |
| 2902 } | 2890 } |
| OLD | NEW |