| // Copyright 2016 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| package org.chromium.chrome.browser.compositor.bottombar; |
| |
| import android.content.Context; |
| import android.view.View; |
| import android.view.ViewGroup; |
| |
| import org.chromium.ui.resources.dynamics.DynamicResourceLoader; |
| import org.chromium.ui.resources.dynamics.ViewResourceInflater; |
| |
| /** |
| * A helper class for inflating Overlay Panel Views. |
| */ |
| public abstract class OverlayPanelInflater extends ViewResourceInflater { |
| |
| /** |
| * The panel used to get information about the panel layout. |
| */ |
| protected OverlayPanel mOverlayPanel; |
| |
| /** |
| * Object Replacement Character that is used in place of HTML objects that cannot be represented |
| * as text (e.g. images). Overlay panel should not be displaying such characters as |
| * they get shown as [obj] character. |
| */ |
| private static final String OBJ_CHARACTER = "\uFFFC"; |
| |
| /** |
| * @param panel The panel. |
| * @param layoutId The XML Layout that declares the View. |
| * @param viewId The id of the root View of the Layout. |
| * @param context The Android Context used to inflate the View. |
| * @param container The container View used to inflate the View. |
| * @param resourceLoader The resource loader that will handle the snapshot capturing. |
| */ |
| public OverlayPanelInflater(OverlayPanel panel, |
| int layoutId, |
| int viewId, |
| Context context, |
| ViewGroup container, |
| DynamicResourceLoader resourceLoader) { |
| super(layoutId, viewId, context, container, resourceLoader); |
| |
| mOverlayPanel = panel; |
| } |
| |
| @Override |
| public void destroy() { |
| super.destroy(); |
| |
| mOverlayPanel = null; |
| } |
| |
| @Override |
| protected int getWidthMeasureSpec() { |
| return View.MeasureSpec.makeMeasureSpec( |
| mOverlayPanel.getMaximumWidthPx(), View.MeasureSpec.EXACTLY); |
| } |
| |
| /** |
| * Sanitizes a string to be displayed on the Overlay Panel Bar. |
| * @param text The text to be sanitized. |
| * @return The sanitized text. |
| */ |
| public static String sanitizeText(String text) { |
| if (text == null) return null; |
| return text.replace(OBJ_CHARACTER, " ").trim(); |
| } |
| } |