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

Side by Side Diff: chrome/android/java_staging/src/org/chromium/chrome/browser/compositor/scene_layer/TabStripSceneLayer.java

Issue 1141283003: Upstream oodles of Chrome for Android code into Chromium. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: final patch? Created 5 years, 7 months 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
OLDNEW
(Empty)
1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 package org.chromium.chrome.browser.compositor.scene_layer;
6
7 import android.content.Context;
8
9 import org.chromium.base.JNINamespace;
10 import org.chromium.chrome.browser.compositor.LayerTitleCache;
11 import org.chromium.chrome.browser.compositor.layouts.components.CompositorButto n;
12 import org.chromium.chrome.browser.compositor.overlays.strip.StripLayoutHelperMa nager;
13 import org.chromium.chrome.browser.compositor.overlays.strip.StripLayoutTab;
14 import org.chromium.chrome.browser.fullscreen.ChromeFullscreenManager;
15 import org.chromium.ui.resources.ResourceManager;
16
17 /**
18 * The Java component of what is basically a CC Layer that manages drawing the T ab Strip (which is
19 * composed of {@link StripLayoutTab}s) to the screen. This object keeps the la yers up to date and
20 * removes/creates children as necessary. This object is built by its native co unterpart.
21 */
22 @JNINamespace("chrome::android")
23 public class TabStripSceneLayer extends SceneOverlayLayer {
24 private long mNativePtr;
25 private final float mDpToPx;
26 private SceneLayer mChildSceneLayer;
27
28 public TabStripSceneLayer(Context context) {
29 mDpToPx = context.getResources().getDisplayMetrics().density;
30 }
31
32 @Override
33 protected void initializeNative() {
34 if (mNativePtr == 0) {
35 mNativePtr = nativeInit();
36 }
37 assert mNativePtr != 0;
38 }
39
40 @Override
41 public void setContentTree(SceneLayer contentTree) {
42 nativeSetContentTree(mNativePtr, contentTree);
43 }
44
45 /**
46 * Pushes all relevant {@link StripLayoutTab}s to the CC Layer tree.
47 * This also pushes any other assets required to draw the Tab Strip. This s hould only be called
48 * when the Compositor has disabled ScheduleComposite calls as this will cha nge the tree and
49 * could subsequently cause unnecessary follow up renders.
50 *
51 * @param layoutHelper A layout helper for the tab strip.
52 * @param layerTitleCache A layer title cache.
53 * @param resourceManager A resource manager.
54 * @param fullscreenManager A fullscreen manager.
55 * @param stripLayoutTabsToRender Array of strip layout tabs.
56 */
57 public void pushAndUpdateStrip(StripLayoutHelperManager layoutHelper,
58 LayerTitleCache layerTitleCache, ResourceManager resourceManager,
59 ChromeFullscreenManager fullscreenManager, StripLayoutTab[] stripLay outTabsToRender) {
60 if (mNativePtr == 0) return;
61
62 nativeBeginBuildingFrame(mNativePtr);
63 pushButtonsAndBackground(layoutHelper, resourceManager, fullscreenManage r);
64 pushStripTabs(layoutHelper, layerTitleCache, resourceManager, stripLayou tTabsToRender);
65 nativeFinishBuildingFrame(mNativePtr);
66 }
67
68 private void pushButtonsAndBackground(StripLayoutHelperManager layoutHelper,
69 ResourceManager resourceManager, ChromeFullscreenManager fullscreenM anager) {
70 float yOffset = fullscreenManager != null ? fullscreenManager.getControl Offset() : 0.f;
71
72 nativeUpdateTabStripLayer(mNativePtr, layoutHelper.getWidth() * mDpToPx,
73 layoutHelper.getHeight() * mDpToPx, yOffset, layoutHelper.getStr ipBrightness());
74
75 CompositorButton newTabButton = layoutHelper.getNewTabButton();
76 CompositorButton modelSelectorButton = layoutHelper.getModelSelectorButt on();
77 boolean newTabButtonVisible = newTabButton.isVisible();
78 boolean modelSelectorButtonVisible = modelSelectorButton.isVisible();
79
80 nativeUpdateNewTabButton(mNativePtr, newTabButton.getResourceId(),
81 newTabButton.getX() * mDpToPx, newTabButton.getY() * mDpToPx,
82 newTabButton.getWidth() * mDpToPx, newTabButton.getHeight() * mD pToPx,
83 newTabButtonVisible, resourceManager);
84
85 nativeUpdateModelSelectorButton(mNativePtr, modelSelectorButton.getResou rceId(),
86 modelSelectorButton.getX() * mDpToPx, modelSelectorButton.getY() * mDpToPx,
87 modelSelectorButton.getWidth() * mDpToPx, modelSelectorButton.ge tHeight() * mDpToPx,
88 modelSelectorButton.isIncognito(), modelSelectorButtonVisible, r esourceManager);
89 }
90
91 private void pushStripTabs(StripLayoutHelperManager layoutHelper,
92 LayerTitleCache layerTitleCache, ResourceManager resourceManager,
93 StripLayoutTab[] stripTabs) {
94 final int tabsCount = stripTabs != null ? stripTabs.length : 0;
95
96 for (int i = 0; i < tabsCount; i++) {
97 final StripLayoutTab st = stripTabs[i];
98 nativePutStripTabLayer(mNativePtr, st.getId(), st.getCloseButton().g etResourceId(),
99 st.getResourceId(i == tabsCount - 1), i == tabsCount - 1, st .getClosePressed(),
100 layoutHelper.getWidth() * mDpToPx, st.getDrawX() * mDpToPx,
101 st.getDrawY() * mDpToPx, st.getWidth() * mDpToPx, st.getHeig ht() * mDpToPx,
102 st.getContentOffsetX() * mDpToPx, st.getCloseButton().getOpa city(),
103 st.isLoading(), st.getLoadingSpinnerRotation(), layoutHelper .getBorderOpacity(),
104 layerTitleCache, resourceManager);
105 }
106 }
107
108 @Override
109 public void destroy() {
110 super.destroy();
111 mNativePtr = 0;
112 }
113
114 private native long nativeInit();
115 private native void nativeBeginBuildingFrame(long nativeTabStripSceneLayer);
116 private native void nativeFinishBuildingFrame(long nativeTabStripSceneLayer) ;
117 private native void nativeUpdateTabStripLayer(long nativeTabStripSceneLayer, float width,
118 float height, float yOffset, float stripBrightness);
119 private native void nativeUpdateNewTabButton(long nativeTabStripSceneLayer, int resourceId,
120 float x, float y, float width, float height, boolean visible,
121 ResourceManager resourceManager);
122 private native void nativeUpdateModelSelectorButton(long nativeTabStripScene Layer,
123 int resourceId, float x, float y, float width, float height, boolean incognito,
124 boolean visible, ResourceManager resourceManager);
125 private native void nativePutStripTabLayer(long nativeTabStripSceneLayer, in t id,
126 int closeResourceId, int handleResourceId, boolean foreground, boole an closePressed,
127 float toolbarWidth, float x, float y, float width, float height, flo at contentOffsetX,
128 float closeButtonAlpha, boolean isLoading, float spinnerRotation, fl oat borderOpacity,
129 LayerTitleCache layerTitleCache, ResourceManager resourceManager);
130 private native void nativeSetContentTree(long nativeTabStripSceneLayer, Scen eLayer contentTree);
131 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698