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 |