blob: 8b04a7ea2096740e006521150aa599921e26ddb4 [file] [log] [blame]
/*
* Copyright 2017 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package androidx.browser.browseractions;
import static androidx.annotation.RestrictTo.Scope.LIBRARY;
import static androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX;
import android.app.PendingIntent;
import android.net.Uri;
import androidx.annotation.DrawableRes;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.annotation.RestrictTo;
/**
* A wrapper class holding custom item of Browser Actions menu.
* The Bitmap is optional for a BrowserActionItem.
*
* @deprecated Browser Actions are deprecated as of release 1.2.0.
*/
@SuppressWarnings("deprecation")
@Deprecated
public class BrowserActionItem {
private final String mTitle;
@Nullable private final PendingIntent mAction;
@DrawableRes
private int mIconId;
@Nullable private Uri mIconUri;
@Nullable private Runnable mRunnableAction;
/**
* Constructor for BrowserActionItem with icon, string and action provided.
* @param title The string shown for a custom item.
* @param action The PendingIntent executed when a custom item is selected
* @param iconId The resource id of the icon shown for a custom item.
*/
public BrowserActionItem(
@NonNull String title, @NonNull PendingIntent action, @DrawableRes int iconId) {
mTitle = title;
mAction = action;
mIconId = iconId;
}
/**
* Constructor for BrowserActionItem with icon access through a uri.
* @param title The string shown for a custom item.
* @param action The PendingIntent executed when a custom item is selected
* @param iconUri The {@link Uri} used to access the icon file. Note: make sure this is
* generated from {@link BrowserServiceFileProvider.generateUri(Context, Bitmap, String,
* int, List<ResolveInfo>)}.
*/
/** @hide */
@RestrictTo(LIBRARY_GROUP_PREFIX)
public BrowserActionItem(
@NonNull String title, @NonNull PendingIntent action, @NonNull Uri iconUri) {
mTitle = title;
mAction = action;
mIconUri = iconUri;
}
/**
* Constructs a predefined fallback menu item with a Runnable action. The item will have no
* icon and no custom PendingIntent action.
* @param title The title of the menu item.
* @param action The {@link Runnable} action to be executed when user choose the item.
*/
BrowserActionItem(@NonNull String title, @NonNull Runnable action) {
mTitle = title;
mAction = null;
mRunnableAction = action;
}
/**
* Constructor for BrowserActionItem with only string and action provided.
* @param title The icon shown for a custom item.
* @param action The string shown for a custom item.
*/
public BrowserActionItem(@NonNull String title, @NonNull PendingIntent action) {
this(title, action, 0);
}
/**
* @return The resource id of the icon.
*/
public int getIconId() {
return mIconId;
}
/**
* @return The title of a custom item.
*/
@NonNull
public String getTitle() {
return mTitle;
}
/**
* @return The action of a custom item.
*/
@NonNull
public PendingIntent getAction() {
if (mAction == null) {
// This is a bit ugly but the published API has getAction being @NonNull and we don't
// want to make a breaking change to the whole API because we're just applying
// NullAway to a deprecated class.
throw new IllegalStateException("Can't call getAction on BrowserActionItem with null "
+ "action.");
}
return mAction;
}
/**
* @return The uri used to get the icon of a custom item.
* @hide
*/
@RestrictTo(LIBRARY)
@Nullable
public Uri getIconUri() {
return mIconUri;
}
/**
* @return The {@link Runnable} action of a predefined fallback menu item.
*/
/** @hide */
@RestrictTo(LIBRARY_GROUP_PREFIX)
@Nullable
Runnable getRunnableAction() {
return mRunnableAction;
}
}