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

Side by Side Diff: chrome/android/java/src/org/chromium/chrome/browser/InsetConsumerView.java

Issue 1386403003: Resize only the virtual viewport when the OSK triggers a resize. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: add inset consumer view one off the root view Created 4 years, 9 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 2016 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;
6
7 import android.annotation.TargetApi;
8 import android.content.Context;
9 import android.graphics.Rect;
10 import android.os.Build;
11 import android.util.AttributeSet;
12 import android.view.WindowInsets;
13 import android.widget.FrameLayout;
14
15 /**
16 * The purpose of this view is to consume the insets (OSK resizes, status bar).
17 * It stores the value of the insets in ContentViewCore so that size of things
18 * like the OSK can be known.
19 */
20 public class InsetConsumerView extends FrameLayout {
Ted C 2016/03/12 00:01:44 if we go sibling child route, can this just be a
ymalik 2016/03/14 22:19:01 Yes. Done.
21
22 private Rect mWindowInsets;
Ted C 2016/03/12 00:01:44 make this final
ymalik 2016/03/14 22:19:01 Done.
23
24 /**
25 * Creates an {@link InsetConsumerView}.
26 *
27 * @param context The Context to create this {@link InsetConsumerView} in.
28 */
29 public InsetConsumerView(Context context) {
30 super(context);
31 mWindowInsets = new Rect();
Ted C 2016/03/12 00:01:44 also if we go with the sibling child route, add s
ymalik 2016/03/14 22:19:01 Done.
32 }
33
34 /**
35 * Creates an {@link InsetConsumerView}.
36 *
37 * @param context The Context to create this {@link InsetConsumerView} in.
38 * @param attrs The AttributeSet used to create this
39 * {@link InsetConsumerView}.
40 */
41 public InsetConsumerView(Context context, AttributeSet attrs) {
42 super(context, attrs);
43 mWindowInsets = new Rect();
44 }
45
46 /**
47 * Returns the left {@link WindowInsets} in pixels.
48 *
49 * @return The left system window inset.
50 */
51 public int getSystemWindowInsetsLeft() {
52 return mWindowInsets.left;
53 }
54
55 /**
56 * Returns the top {@link WindowInsets} in pixels.
57 *
58 * @return The top system window inset.
59 */
60 public int getSystemWindowInsetsTop() {
61 return mWindowInsets.top;
62 }
63
64 /**
65 * Returns the right {@link WindowInsets} in pixels.
66 *
67 * @return The right system window inset.
68 */
69 public int getSystemWindowInsetsRight() {
70 return mWindowInsets.right;
71 }
72
73 /**
74 * Returns the bottom {@link WindowInsets} in pixels.
75 *
76 * @return The bottom system window inset.
77 */
78 public int getSystemWindowInsetsBottom() {
79 return mWindowInsets.bottom;
80 }
81
82 @SuppressWarnings("deprecation")
83 @Override
84 protected boolean fitSystemWindows(Rect insets) {
85 // For Lollipop and above, onApplyWindowInsets will set the insets.
86 if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) {
87 mWindowInsets.set(insets.left, insets.top, insets.right, insets.bott om);
88 }
89 return super.fitSystemWindows(insets);
Ted C 2016/03/12 00:01:44 if you return false here, then adding it at positi
ymalik 2016/03/14 22:19:01 Done.
90 }
91
92 @TargetApi(Build.VERSION_CODES.LOLLIPOP)
93 @Override
94 public WindowInsets onApplyWindowInsets(WindowInsets insets) {
Ted C 2016/03/12 00:01:44 As for fixing this, you want to do something like
ymalik 2016/03/14 22:19:01 Done. Thanks for the snippet :)!
95 mWindowInsets.set(insets.getSystemWindowInsetLeft(), insets.getSystemWin dowInsetTop(),
96 insets.getSystemWindowInsetRight(), insets.getSystemWindowInsetB ottom());
97 return super.onApplyWindowInsets(insets);
98 }
99 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698