OLD | NEW |
1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 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.compositor; | 5 package org.chromium.chrome.browser.compositor; |
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.graphics.Color; | 9 import android.graphics.Color; |
10 import android.graphics.PixelFormat; | 10 import android.graphics.PixelFormat; |
11 import android.graphics.Rect; | 11 import android.graphics.Rect; |
12 import android.graphics.drawable.Drawable; | 12 import android.graphics.drawable.Drawable; |
13 import android.os.Build; | 13 import android.os.Build; |
14 import android.view.Display; | 14 import android.view.Display; |
15 import android.view.MotionEvent; | 15 import android.view.MotionEvent; |
16 import android.view.Surface; | 16 import android.view.Surface; |
17 import android.view.SurfaceHolder; | 17 import android.view.SurfaceHolder; |
18 import android.view.SurfaceView; | 18 import android.view.SurfaceView; |
19 import android.view.View; | 19 import android.view.View; |
20 import android.view.WindowManager; | 20 import android.view.WindowManager; |
21 import android.widget.FrameLayout; | 21 import android.widget.FrameLayout; |
22 | 22 |
23 import org.chromium.base.TraceEvent; | 23 import org.chromium.base.TraceEvent; |
24 import org.chromium.base.annotations.CalledByNative; | 24 import org.chromium.base.annotations.CalledByNative; |
25 import org.chromium.base.annotations.JNINamespace; | 25 import org.chromium.base.annotations.JNINamespace; |
26 import org.chromium.base.annotations.UsedByReflection; | |
27 import org.chromium.chrome.browser.compositor.layouts.Layout; | 26 import org.chromium.chrome.browser.compositor.layouts.Layout; |
28 import org.chromium.chrome.browser.compositor.layouts.LayoutProvider; | 27 import org.chromium.chrome.browser.compositor.layouts.LayoutProvider; |
29 import org.chromium.chrome.browser.compositor.layouts.LayoutRenderHost; | 28 import org.chromium.chrome.browser.compositor.layouts.LayoutRenderHost; |
30 import org.chromium.chrome.browser.compositor.layouts.content.TabContentManager; | 29 import org.chromium.chrome.browser.compositor.layouts.content.TabContentManager; |
31 import org.chromium.chrome.browser.compositor.resources.StaticResourcePreloads; | 30 import org.chromium.chrome.browser.compositor.resources.StaticResourcePreloads; |
32 import org.chromium.chrome.browser.compositor.scene_layer.SceneLayer; | 31 import org.chromium.chrome.browser.compositor.scene_layer.SceneLayer; |
33 import org.chromium.chrome.browser.externalnav.IntentWithGesturesHandler; | 32 import org.chromium.chrome.browser.externalnav.IntentWithGesturesHandler; |
34 import org.chromium.chrome.browser.multiwindow.MultiWindowUtils; | 33 import org.chromium.chrome.browser.multiwindow.MultiWindowUtils; |
35 import org.chromium.chrome.browser.tabmodel.TabModelImpl; | 34 import org.chromium.chrome.browser.tabmodel.TabModelImpl; |
36 import org.chromium.chrome.browser.widget.ClipDrawableProgressBar.DrawingInfo; | 35 import org.chromium.chrome.browser.widget.ClipDrawableProgressBar.DrawingInfo; |
37 import org.chromium.content_public.browser.WebContents; | 36 import org.chromium.content_public.browser.WebContents; |
38 import org.chromium.ui.base.WindowAndroid; | 37 import org.chromium.ui.base.WindowAndroid; |
39 import org.chromium.ui.resources.AndroidResourceType; | 38 import org.chromium.ui.resources.AndroidResourceType; |
40 import org.chromium.ui.resources.ResourceManager; | 39 import org.chromium.ui.resources.ResourceManager; |
41 | 40 |
42 import java.util.ArrayList; | 41 import java.util.ArrayList; |
43 import java.util.List; | 42 import java.util.List; |
44 | 43 |
45 /** | 44 /** |
46 * The is the {@link View} displaying the ui compositor results; including webpa
ges and tabswitcher. | 45 * The is the {@link View} displaying the ui compositor results; including webpa
ges and tabswitcher. |
47 */ | 46 */ |
48 @JNINamespace("android") | 47 @JNINamespace("android") |
49 public class CompositorView extends FrameLayout implements SurfaceHolder.Callbac
k2 { | 48 public class CompositorView |
| 49 extends FrameLayout implements CompositorSurfaceManager.SurfaceHolderCal
lbackTarget { |
50 private static final String TAG = "CompositorView"; | 50 private static final String TAG = "CompositorView"; |
51 private static final long NANOSECONDS_PER_MILLISECOND = 1000000; | 51 private static final long NANOSECONDS_PER_MILLISECOND = 1000000; |
52 | 52 |
53 // Cache objects that should not be created every frame | 53 // Cache objects that should not be created every frame |
54 private final Rect mCacheAppRect = new Rect(); | 54 private final Rect mCacheAppRect = new Rect(); |
55 private final int[] mCacheViewPosition = new int[2]; | 55 private final int[] mCacheViewPosition = new int[2]; |
56 | 56 |
57 private final CompositorSurfaceManager mCompositorSurfaceManager; | 57 private final CompositorSurfaceManager mCompositorSurfaceManager; |
58 private boolean mOverlayVideoEnabled; | 58 private boolean mOverlayVideoEnabled; |
59 private boolean mAlwaysTranslucent; | 59 private boolean mAlwaysTranslucent; |
(...skipping 184 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
244 // Note that we don't know if we'll get a surfaceCreated / surfaceDestoy
ed for this surface. | 244 // Note that we don't know if we'll get a surfaceCreated / surfaceDestoy
ed for this surface. |
245 // We do know that if we do get one, then it will be for the surface tha
t we just requested. | 245 // We do know that if we do get one, then it will be for the surface tha
t we just requested. |
246 } | 246 } |
247 | 247 |
248 private int getSurfacePixelFormat() { | 248 private int getSurfacePixelFormat() { |
249 return (mOverlayVideoEnabled || mAlwaysTranslucent) ? PixelFormat.TRANSL
UCENT | 249 return (mOverlayVideoEnabled || mAlwaysTranslucent) ? PixelFormat.TRANSL
UCENT |
250 : PixelFormat.OPAQUE
; | 250 : PixelFormat.OPAQUE
; |
251 } | 251 } |
252 | 252 |
253 @Override | 253 @Override |
254 public void surfaceRedrawNeeded(SurfaceHolder holder) { | |
255 // Intentionally not implemented. | |
256 } | |
257 | |
258 // TODO(boliu): Mark this override instead. | |
259 @UsedByReflection("Android") | |
260 public void surfaceRedrawNeededAsync(SurfaceHolder holder, Runnable drawingF
inished) { | 254 public void surfaceRedrawNeededAsync(SurfaceHolder holder, Runnable drawingF
inished) { |
261 if (mDrawingFinishedCallbacks == null) mDrawingFinishedCallbacks = new A
rrayList<>(); | 255 if (mDrawingFinishedCallbacks == null) mDrawingFinishedCallbacks = new A
rrayList<>(); |
262 mDrawingFinishedCallbacks.add(drawingFinished); | 256 mDrawingFinishedCallbacks.add(drawingFinished); |
263 if (mNativeCompositorView != 0) nativeSetNeedsComposite(mNativeComposito
rView); | 257 if (mNativeCompositorView != 0) nativeSetNeedsComposite(mNativeComposito
rView); |
264 } | 258 } |
265 | 259 |
266 @Override | 260 @Override |
267 public void surfaceChanged(SurfaceHolder holder, int format, int width, int
height) { | 261 public void surfaceChanged(SurfaceHolder holder, int format, int width, int
height) { |
268 if (mNativeCompositorView == 0) return; | 262 if (mNativeCompositorView == 0) return; |
269 | 263 |
(...skipping 168 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
438 private native void nativeSurfaceChanged( | 432 private native void nativeSurfaceChanged( |
439 long nativeCompositorView, int format, int width, int height, Surfac
e surface); | 433 long nativeCompositorView, int format, int width, int height, Surfac
e surface); |
440 private native void nativeOnPhysicalBackingSizeChanged( | 434 private native void nativeOnPhysicalBackingSizeChanged( |
441 long nativeCompositorView, WebContents webContents, int width, int h
eight); | 435 long nativeCompositorView, WebContents webContents, int width, int h
eight); |
442 private native void nativeFinalizeLayers(long nativeCompositorView); | 436 private native void nativeFinalizeLayers(long nativeCompositorView); |
443 private native void nativeSetNeedsComposite(long nativeCompositorView); | 437 private native void nativeSetNeedsComposite(long nativeCompositorView); |
444 private native void nativeSetLayoutBounds(long nativeCompositorView); | 438 private native void nativeSetLayoutBounds(long nativeCompositorView); |
445 private native void nativeSetOverlayVideoMode(long nativeCompositorView, boo
lean enabled); | 439 private native void nativeSetOverlayVideoMode(long nativeCompositorView, boo
lean enabled); |
446 private native void nativeSetSceneLayer(long nativeCompositorView, SceneLaye
r sceneLayer); | 440 private native void nativeSetSceneLayer(long nativeCompositorView, SceneLaye
r sceneLayer); |
447 } | 441 } |
OLD | NEW |