@Override protected boolean onUpdateAnimation(long time, boolean jumpToEnd) { boolean parentAnimating = super.onUpdateAnimation(time, jumpToEnd); boolean panelAnimating = mReaderModePanel != null ? mReaderModePanel.onUpdateAnimation(time, jumpToEnd) : false; return panelAnimating || parentAnimating; }
private void setStaticTab(final int id) { if (mLayoutTabs != null && mLayoutTabs.length > 0 && mLayoutTabs[0].getId() == id) { if (!mLayoutTabs[0].shouldStall()) setPostHideState(); return; } TabModel model = mTabModelSelector.getModelForTabId(id); if (model == null) return; updateCacheVisibleIds(new LinkedList<Integer>(Arrays.asList(id))); if (mLayoutTabs == null || mLayoutTabs.length != 1) mLayoutTabs = new LayoutTab[1]; mLayoutTabs[0] = createLayoutTab(id, model.isIncognito(), NO_CLOSE_BUTTON, NO_TITLE); mLayoutTabs[0].setDrawDecoration(false); if (mLayoutTabs[0].shouldStall()) { setPreHideState(); mHandler.postDelayed(mUnstallRunnable, HIDE_TIMEOUT_MS); } else { setPostHideState(); } mReaderModePanel = ReaderModePanel.getReaderModePanel(mTabModelSelector.getTabById(id)); if (mReaderModePanel != null) { mReaderModePanel.setLayoutDelegate( new ReaderModePanelLayoutDelegate() { @Override public void requestUpdate() { StaticLayout.this.requestUpdate(); } @Override public void setLayoutTabBrightness(float v) { if (mLayoutTabs != null && mLayoutTabs.length > 0 && mLayoutTabs[0].getId() == id) { mLayoutTabs[0].setBrightness(v); } } @Override public void setLayoutTabY(float v) { if (mLayoutTabs != null && mLayoutTabs.length > 0 && mLayoutTabs[0].getId() == id) { mLayoutTabs[0].setY(v); } } }); final boolean isToolbarVisible = getHeight() == getHeightMinusTopControls(); final float dpToPx = getContext().getResources().getDisplayMetrics().density; mReaderModePanel.onSizeChanged(getWidth(), getHeight(), isToolbarVisible, dpToPx); } requestRender(); }
@Override protected void notifySizeChanged(float width, float height, int orientation) { super.notifySizeChanged(width, height, orientation); if (mReaderModePanel == null) return; final boolean isToolbarVisible = getHeight() == getHeightMinusTopControls(); final float dpToPx = getContext().getResources().getDisplayMetrics().density; mReaderModePanel.onSizeChanged(width, height, isToolbarVisible, dpToPx); }
@Override protected void updateSceneLayer( Rect viewport, Rect contentViewport, LayerTitleCache layerTitleCache, TabContentManager tabContentManager, ResourceManager resourceManager, ChromeFullscreenManager fullscreenManager) { super.updateSceneLayer( viewport, contentViewport, layerTitleCache, tabContentManager, resourceManager, fullscreenManager); assert mSceneLayer != null; final LayoutTab[] tabs = getLayoutTabsToRender(); if (tabs == null || tabs.length != 1 || tabs[0].getId() == Tab.INVALID_TAB_ID) { return; } LayoutTab layoutTab = tabs[0]; final float dpToPx = getContext().getResources().getDisplayMetrics().density; mReaderModeSceneLayer.update(mReaderModePanel, resourceManager); mSceneLayer.update( dpToPx, contentViewport, layerTitleCache, tabContentManager, fullscreenManager, layoutTab); // TODO(pedrosimonetti): Coordinate w/ dtrainor@ to improve integration with TreeProvider. SceneLayer overlayLayer = null; if (mSearchPanel.isShowing()) { overlayLayer = super.getSceneLayer(); } else if (mReaderModePanel != null && mReaderModePanel.isShowing()) { overlayLayer = mReaderModeSceneLayer; } mSceneLayer.setContentSceneLayer(overlayLayer); // TODO(dtrainor): Find the best way to properly track this metric for cold starts. // We should probably erase the thumbnail when we select a tab that we need to restore. if (tabContentManager != null && tabContentManager.hasFullCachedThumbnail(layoutTab.getId())) { TabModelBase.logPerceivedTabSwitchLatencyMetric(); } }
@Override public float getTopControlsOffset(float currentOffsetDp) { if (mReaderModePanel == null) return super.getTopControlsOffset(currentOffsetDp); return mReaderModePanel.getTopControlsOffset(currentOffsetDp); }