EMMA Coverage Report (generated Fri Aug 23 16:39:17 PDT 2013)
[all classes][org.chromium.ui]

COVERAGE SUMMARY FOR SOURCE FILE [UiUtils.java]

nameclass, %method, %block, %line, %
UiUtils.java0%   (0/1)0%   (0/8)0%   (0/109)0%   (0/25)

COVERAGE BREAKDOWN BY CLASS AND METHOD

nameclass, %method, %block, %line, %
     
class UiUtils0%   (0/1)0%   (0/8)0%   (0/109)0%   (0/25)
<static initializer> 0%   (0/1)0%   (0/3)0%   (0/1)
UiUtils (): void 0%   (0/1)0%   (0/3)0%   (0/2)
hideKeyboard (View): boolean 0%   (0/1)0%   (0/12)0%   (0/2)
insertAfter (ViewGroup, View, View): int 0%   (0/1)0%   (0/6)0%   (0/1)
insertBefore (ViewGroup, View, View): int 0%   (0/1)0%   (0/6)0%   (0/1)
insertView (ViewGroup, View, View, boolean): int 0%   (0/1)0%   (0/25)0%   (0/7)
isKeyboardShowing (Context, View): boolean 0%   (0/1)0%   (0/42)0%   (0/8)
showKeyboard (View): void 0%   (0/1)0%   (0/12)0%   (0/3)

1// Copyright (c) 2013 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 
5package org.chromium.ui;
6 
7import android.content.Context;
8import android.graphics.Rect;
9import android.view.View;
10import android.view.ViewGroup;
11import android.view.inputmethod.InputMethodManager;
12 
13/**
14 * Utility functions for common Android UI tasks.
15 * This class is not supposed to be instantiated.
16 */
17public class UiUtils {
18    /**
19     * Guards this class from being instantiated.
20     */
21    private UiUtils() {
22    }
23 
24    /** The minimum size of the bottom margin below the app to detect a keyboard. */
25    private static float KEYBOARD_DETECT_BOTTOM_THRESHOLD_DP = 100;
26 
27    /**
28     * Shows the software keyboard if necessary.
29     * @param view The currently focused {@link View}, which would receive soft keyboard input.
30     */
31    public static void showKeyboard(View view) {
32        InputMethodManager imm =
33                (InputMethodManager) view.getContext().getSystemService(
34                        Context.INPUT_METHOD_SERVICE);
35        // Only shows soft keyboard if there isn't an open physical keyboard.
36        imm.showSoftInput(view, InputMethodManager.SHOW_IMPLICIT);
37    }
38 
39    /**
40     * Hides the keyboard.
41     * @param view The {@link View} that is currently accepting input.
42     * @return Whether the keyboard was visible before.
43     */
44    public static boolean hideKeyboard(View view) {
45        InputMethodManager imm =
46                (InputMethodManager) view.getContext().getSystemService(
47                        Context.INPUT_METHOD_SERVICE);
48        return imm.hideSoftInputFromWindow(view.getWindowToken(), 0);
49    }
50 
51    public static boolean isKeyboardShowing(Context context, View view) {
52        View rootView = view.getRootView();
53        if (rootView == null) return false;
54        Rect appRect = new Rect();
55        rootView.getWindowVisibleDisplayFrame(appRect);
56        final float screenHeight = context.getResources().getDisplayMetrics().heightPixels;
57        final float bottomMargin = Math.abs(appRect.bottom - screenHeight);
58        final float density = context.getResources().getDisplayMetrics().density;
59        return bottomMargin > KEYBOARD_DETECT_BOTTOM_THRESHOLD_DP * density;
60    }
61 
62    /**
63     * Inserts a {@link View} into a {@link ViewGroup} after directly before a given {@View}.
64     * @param container The {@link View} to add newView to.
65     * @param newView The new {@link View} to add.
66     * @param existingView The {@link View} to insert the newView before.
67     * @return The index where newView was inserted, or -1 if it was not inserted.
68     */
69    public static int insertBefore(ViewGroup container, View newView, View existingView) {
70        return insertView(container, newView, existingView, false);
71    }
72 
73    /**
74     * Inserts a {@link View} into a {@link ViewGroup} after directly after a given {@View}.
75     * @param container The {@link View} to add newView to.
76     * @param newView The new {@link View} to add.
77     * @param existingView The {@link View} to insert the newView after.
78     * @return The index where newView was inserted, or -1 if it was not inserted.
79     */
80    public static int insertAfter(ViewGroup container, View newView, View existingView) {
81        return insertView(container, newView, existingView, true);
82    }
83 
84    private static int insertView(
85            ViewGroup container, View newView, View existingView, boolean after) {
86        // See if the view has already been added.
87        int index = container.indexOfChild(newView);
88        if (index >= 0) return index;
89 
90        // Find the location of the existing view.
91        index = container.indexOfChild(existingView);
92        if (index < 0) return -1;
93 
94        // Add the view.
95        if (after) index++;
96        container.addView(newView, index);
97        return index;
98    }
99}

[all classes][org.chromium.ui]
EMMA 2.0.5312 (C) Vladimir Roubtsov