| 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 |