summaryrefslogtreecommitdiffstats
path: root/mobile/android/base/java/org/mozilla/gecko/widget/DoorHanger.java
diff options
context:
space:
mode:
Diffstat (limited to 'mobile/android/base/java/org/mozilla/gecko/widget/DoorHanger.java')
-rw-r--r--mobile/android/base/java/org/mozilla/gecko/widget/DoorHanger.java220
1 files changed, 0 insertions, 220 deletions
diff --git a/mobile/android/base/java/org/mozilla/gecko/widget/DoorHanger.java b/mobile/android/base/java/org/mozilla/gecko/widget/DoorHanger.java
deleted file mode 100644
index 7d32278e4..000000000
--- a/mobile/android/base/java/org/mozilla/gecko/widget/DoorHanger.java
+++ /dev/null
@@ -1,220 +0,0 @@
-/* -*- Mode: Java; c-basic-offset: 4; tab-width: 20; indent-tabs-mode: nil; -*-
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-package org.mozilla.gecko.widget;
-
-import android.content.Context;
-import android.content.res.Resources;
-import android.graphics.Bitmap;
-import android.graphics.drawable.BitmapDrawable;
-import android.support.v4.content.ContextCompat;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewStub;
-import android.widget.Button;
-import android.widget.ImageView;
-import android.widget.LinearLayout;
-import android.widget.TextView;
-import org.json.JSONObject;
-import org.mozilla.gecko.R;
-import org.mozilla.gecko.Tabs;
-import org.mozilla.gecko.Telemetry;
-import org.mozilla.gecko.TelemetryContract;
-
-import java.util.Locale;
-
-public abstract class DoorHanger extends LinearLayout {
-
- public static DoorHanger Get(Context context, DoorhangerConfig config) {
- final Type type = config.getType();
- switch (type) {
- case LOGIN:
- return new LoginDoorHanger(context, config);
- case TRACKING:
- return new ContentSecurityDoorHanger(context, config, type);
- }
- return new DefaultDoorHanger(context, config, type);
- }
-
- // Doorhanger types created from Gecko are checked against enum strings to determine type.
- public static enum Type { DEFAULT, LOGIN, TRACKING, GEOLOCATION, DESKTOPNOTIFICATION2, WEBRTC, VIBRATION }
-
- public interface OnButtonClickListener {
- public void onButtonClick(JSONObject response, DoorHanger doorhanger);
- }
-
- private static final String LOGTAG = "GeckoDoorHanger";
-
- // Divider between doorhangers.
- private final View mDivider;
-
- private final Button mNegativeButton;
- private final Button mPositiveButton;
- protected final OnButtonClickListener mOnButtonClickListener;
-
- // The tab this doorhanger is associated with.
- private final int mTabId;
-
- // DoorHanger identifier.
- private final String mIdentifier;
-
- protected final Type mType;
-
- protected final ImageView mIcon;
- protected final TextView mLink;
- protected final TextView mDoorhangerTitle;
-
- protected final Context mContext;
- protected final Resources mResources;
-
- protected int mDividerColor;
-
- protected boolean mPersistWhileVisible;
- protected int mPersistenceCount;
- protected long mTimeout;
-
- protected DoorHanger(Context context, DoorhangerConfig config, Type type) {
- super(context);
-
- mContext = context;
- mResources = context.getResources();
- mTabId = config.getTabId();
- mIdentifier = config.getId();
- mType = type;
-
- LayoutInflater.from(context).inflate(R.layout.doorhanger, this);
- setOrientation(VERTICAL);
-
- mDivider = findViewById(R.id.divider_doorhanger);
- mIcon = (ImageView) findViewById(R.id.doorhanger_icon);
- mLink = (TextView) findViewById(R.id.doorhanger_link);
- mDoorhangerTitle = (TextView) findViewById(R.id.doorhanger_title);
-
- mNegativeButton = (Button) findViewById(R.id.doorhanger_button_negative);
- mPositiveButton = (Button) findViewById(R.id.doorhanger_button_positive);
- mOnButtonClickListener = config.getButtonClickListener();
-
- mDividerColor = ContextCompat.getColor(context, R.color.toolbar_divider_grey);
-
- final ViewStub contentStub = (ViewStub) findViewById(R.id.content);
- contentStub.setLayoutResource(getContentResource());
- contentStub.inflate();
-
- final String typeExtra = mType.toString().toLowerCase(Locale.US);
- Telemetry.sendUIEvent(TelemetryContract.Event.SHOW, TelemetryContract.Method.DOORHANGER, typeExtra);
- }
-
- protected abstract int getContentResource();
-
- protected abstract void loadConfig(DoorhangerConfig config);
-
- protected void setOptions(final JSONObject options) {
- final int persistence = options.optInt("persistence");
- if (persistence > 0) {
- mPersistenceCount = persistence;
- }
-
- mPersistWhileVisible = options.optBoolean("persistWhileVisible");
-
- final long timeout = options.optLong("timeout");
- if (timeout > 0) {
- mTimeout = timeout;
- }
- }
-
- protected void addButtonsToLayout(DoorhangerConfig config) {
- final DoorhangerConfig.ButtonConfig negativeButtonConfig = config.getNegativeButtonConfig();
- final DoorhangerConfig.ButtonConfig positiveButtonConfig = config.getPositiveButtonConfig();
-
- if (negativeButtonConfig != null) {
- mNegativeButton.setText(negativeButtonConfig.label);
- mNegativeButton.setOnClickListener(makeOnButtonClickListener(negativeButtonConfig.callback, "negative"));
- mNegativeButton.setVisibility(VISIBLE);
- }
-
- if (positiveButtonConfig != null) {
- mPositiveButton.setText(positiveButtonConfig.label);
- mPositiveButton.setOnClickListener(makeOnButtonClickListener(positiveButtonConfig.callback, "positive"));
- mPositiveButton.setVisibility(VISIBLE);
- }
- }
-
- public int getTabId() {
- return mTabId;
- }
-
- public String getIdentifier() {
- return mIdentifier;
- }
-
- public void showDivider() {
- mDivider.setVisibility(View.VISIBLE);
- }
-
- public void hideDivider() {
- mDivider.setVisibility(View.GONE);
- }
-
- public void setIcon(int resId) {
- mIcon.setImageResource(resId);
- mIcon.setVisibility(View.VISIBLE);
- }
-
- protected void addLink(String label, final String url) {
- mLink.setText(label);
- mLink.setOnClickListener(new OnClickListener() {
- @Override
- public void onClick(View view) {
- final String typeExtra = mType.toString().toLowerCase(Locale.US);
- Telemetry.sendUIEvent(TelemetryContract.Event.LOAD_URL, TelemetryContract.Method.DOORHANGER, typeExtra);
- Tabs.getInstance().loadUrlInTab(url);
- }
- });
- mLink.setVisibility(VISIBLE);
- }
-
- protected abstract OnClickListener makeOnButtonClickListener(final int id, final String telemetryExtra);
-
- /*
- * Checks with persistence and timeout options to see if it's okay to remove a doorhanger.
- *
- * @param isShowing Whether or not this doorhanger is currently visible to the user.
- * (e.g. the DoorHanger view might be VISIBLE, but its parent could be hidden)
- */
- public boolean shouldRemove(boolean isShowing) {
- if (mPersistWhileVisible && isShowing) {
- // We still want to decrement mPersistence, even if the popup is showing
- if (mPersistenceCount != 0)
- mPersistenceCount--;
- return false;
- }
-
- // If persistence is set to -1, the doorhanger will never be
- // automatically removed.
- if (mPersistenceCount != 0) {
- mPersistenceCount--;
- return false;
- }
-
- if (System.currentTimeMillis() <= mTimeout) {
- return false;
- }
-
- return true;
- }
-
- public void showTitle(Bitmap favicon, String title) {
- mDoorhangerTitle.setText(title);
- mDoorhangerTitle.setCompoundDrawablesWithIntrinsicBounds(new BitmapDrawable(getResources(), favicon), null, null, null);
- if (favicon != null) {
- mDoorhangerTitle.setCompoundDrawablePadding((int) mContext.getResources().getDimension(R.dimen.doorhanger_drawable_padding));
- }
- mDoorhangerTitle.setVisibility(VISIBLE);
- }
-
- public void hideTitle() {
- mDoorhangerTitle.setVisibility(GONE);
- }
-}