1116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// Copyright 2014 The Chromium Authors. All rights reserved. 2116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// Use of this source code is governed by a BSD-style license that can be 3116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// found in the LICENSE file. 4116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 5116680a4aac90f2aa7413d9095a592090648e557Ben Murdochpackage org.chromium.android_webview; 6116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 7116680a4aac90f2aa7413d9095a592090648e557Ben Murdochimport android.content.Context; 8116680a4aac90f2aa7413d9095a592090648e557Ben Murdochimport android.content.res.Configuration; 9116680a4aac90f2aa7413d9095a592090648e557Ben Murdochimport android.graphics.Canvas; 10116680a4aac90f2aa7413d9095a592090648e557Ben Murdochimport android.graphics.Paint; 11116680a4aac90f2aa7413d9095a592090648e557Ben Murdochimport android.graphics.Rect; 12116680a4aac90f2aa7413d9095a592090648e557Ben Murdochimport android.view.KeyEvent; 13116680a4aac90f2aa7413d9095a592090648e557Ben Murdochimport android.view.MotionEvent; 14116680a4aac90f2aa7413d9095a592090648e557Ben Murdochimport android.view.View; 15116680a4aac90f2aa7413d9095a592090648e557Ben Murdochimport android.view.inputmethod.EditorInfo; 16116680a4aac90f2aa7413d9095a592090648e557Ben Murdochimport android.view.inputmethod.InputConnection; 175f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)import android.widget.FrameLayout; 18116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 19116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch/** 20116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch * A view that is used to render the web contents in fullscreen mode, ie. 21116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch * html controls and subtitles, over the {@link ContentVideoView}. 22116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch */ 235f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)public class FullScreenView extends FrameLayout { 24116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 25116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch private AwViewMethods mAwViewMethods; 26116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch private InternalAccessAdapter mInternalAccessAdapter; 27116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 28116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch public FullScreenView(Context context, AwViewMethods awViewMethods) { 29116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch super(context); 30116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch setAwViewMethods(awViewMethods); 31116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mInternalAccessAdapter = new InternalAccessAdapter(); 32116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch } 33116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 34116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch public InternalAccessAdapter getInternalAccessAdapter() { 35116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch return mInternalAccessAdapter; 36116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch } 37116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 38116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch public void setAwViewMethods(AwViewMethods awViewMethods) { 39116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mAwViewMethods = awViewMethods; 40116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch } 41116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 42116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch @Override 43116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch public void onDraw(final Canvas canvas) { 44116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mAwViewMethods.onDraw(canvas); 45116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch } 46116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 47116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch @Override 48116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch public void onMeasure(final int widthMeasureSpec, final int heightMeasureSpec) { 49116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mAwViewMethods.onMeasure(widthMeasureSpec, heightMeasureSpec); 50116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch } 51116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 52116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch @Override 53116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch public boolean requestFocus(final int direction, final Rect previouslyFocusedRect) { 54116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mAwViewMethods.requestFocus(); 55116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch return super.requestFocus(direction, previouslyFocusedRect); 56116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch } 57116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 58116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch @Override 59116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch public void setLayerType(int layerType, Paint paint) { 60116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch super.setLayerType(layerType, paint); 61116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mAwViewMethods.setLayerType(layerType, paint); 62116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch } 63116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 64116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch @Override 65116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch public InputConnection onCreateInputConnection(final EditorInfo outAttrs) { 66116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch return mAwViewMethods.onCreateInputConnection(outAttrs); 67116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch } 68116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 69116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch @Override 70116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch public boolean onKeyUp(final int keyCode, final KeyEvent event) { 71116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch return mAwViewMethods.onKeyUp(keyCode, event); 72116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch } 73116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 74116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch @Override 75116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch public boolean dispatchKeyEvent(final KeyEvent event) { 76116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch return mAwViewMethods.dispatchKeyEvent(event); 77116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch } 78116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 79116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch @Override 80116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch public boolean onTouchEvent(final MotionEvent event) { 81116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch return mAwViewMethods.onTouchEvent(event); 82116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch } 83116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 84116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch @Override 85116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch public boolean onHoverEvent(final MotionEvent event) { 86116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch return mAwViewMethods.onHoverEvent(event); 87116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch } 88116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 89116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch @Override 90116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch public boolean onGenericMotionEvent(final MotionEvent event) { 91116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch return mAwViewMethods.onGenericMotionEvent(event); 92116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch } 93116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 94116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch @Override 95116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch public void onConfigurationChanged(final Configuration newConfig) { 96116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mAwViewMethods.onConfigurationChanged(newConfig); 97116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch } 98116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 99116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch @Override 100116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch protected void onAttachedToWindow() { 101116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch super.onAttachedToWindow(); 102116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mAwViewMethods.onAttachedToWindow(); 103116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch } 104116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 105116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch @Override 106116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch public void onDetachedFromWindow() { 107116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch super.onDetachedFromWindow(); 108116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mAwViewMethods.onDetachedFromWindow(); 109116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch } 110116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 111116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch @Override 112116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch public void onWindowFocusChanged(final boolean hasWindowFocus) { 113116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch super.onWindowFocusChanged(hasWindowFocus); 114116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mAwViewMethods.onWindowFocusChanged(hasWindowFocus); 115116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch } 116116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 117116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch @Override 118116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch public void onFocusChanged(final boolean focused, final int direction, 119116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch final Rect previouslyFocusedRect) { 120116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch super.onFocusChanged(focused, direction, previouslyFocusedRect); 121116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mAwViewMethods.onFocusChanged( 122116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch focused, direction, previouslyFocusedRect); 123116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch } 124116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 125116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch @Override 126116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch public void onSizeChanged(final int w, final int h, final int ow, final int oh) { 127116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch super.onSizeChanged(w, h, ow, oh); 128116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mAwViewMethods.onSizeChanged(w, h, ow, oh); 129116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch } 130116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 131116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch @Override 132116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch protected void onVisibilityChanged(View changedView, int visibility) { 133116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch super.onVisibilityChanged(changedView, visibility); 134116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mAwViewMethods.onVisibilityChanged(changedView, visibility); 135116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch } 136116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 137116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch @Override 138116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch public void onWindowVisibilityChanged(final int visibility) { 139116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch super.onWindowVisibilityChanged(visibility); 140116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mAwViewMethods.onWindowVisibilityChanged(visibility); 141116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch } 142116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 143116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // AwContents.InternalAccessDelegate implementation -------------------------------------- 144116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch private class InternalAccessAdapter implements AwContents.InternalAccessDelegate { 145116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 146116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch @Override 147116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch public boolean drawChild(Canvas canvas, View child, long drawingTime) { 148116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // Intentional no-op 149116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch return false; 150116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch } 151116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 152116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch @Override 153116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch public boolean super_onKeyUp(int keyCode, KeyEvent event) { 154116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch return FullScreenView.super.onKeyUp(keyCode, event); 155116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch } 156116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 157116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch @Override 158116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch public boolean super_dispatchKeyEventPreIme(KeyEvent event) { 159116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch return FullScreenView.super.dispatchKeyEventPreIme(event); 160116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch } 161116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 162116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch @Override 163116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch public boolean super_dispatchKeyEvent(KeyEvent event) { 164116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch return FullScreenView.super.dispatchKeyEvent(event); 165116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch } 166116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 167116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch @Override 168116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch public boolean super_onGenericMotionEvent(MotionEvent event) { 169116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch return FullScreenView.super.onGenericMotionEvent(event); 170116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch } 171116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 172116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch @Override 173116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch public void super_onConfigurationChanged(Configuration newConfig) { 174116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // Intentional no-op 175116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch } 176116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 177116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch @Override 178116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch public int super_getScrollBarStyle() { 179116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch return FullScreenView.super.getScrollBarStyle(); 180116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch } 181116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 182116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch @Override 183116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch public boolean awakenScrollBars() { 184116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch return false; 185116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch } 186116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 187116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch @Override 188116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch public boolean super_awakenScrollBars(int startDelay, boolean invalidate) { 189116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch return false; 190116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch } 191116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 192116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch @Override 193116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch public void onScrollChanged(int lPix, int tPix, int oldlPix, int oldtPix) { 194116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // Intentional no-op. 195116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch } 196116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 197116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch @Override 198116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch public void overScrollBy(int deltaX, int deltaY, int scrollX, int scrollY, 199116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch int scrollRangeX, int scrollRangeY, int maxOverScrollX, 200116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch int maxOverScrollY, boolean isTouchEvent) { 201116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // Intentional no-op. 202116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch } 203116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 204116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch @Override 205116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch public void super_scrollTo(int scrollX, int scrollY) { 206116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // Intentional no-op. 207116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch } 208116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 209116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch @Override 210116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch public void setMeasuredDimension(int measuredWidth, int measuredHeight) { 211116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch FullScreenView.this.setMeasuredDimension(measuredWidth, measuredHeight); 212116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch } 213116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch } 214116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch} 215