Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 6b7b3484 authored by Griff Hazen's avatar Griff Hazen
Browse files

Merge commit 'e5b73ae2' into manualmerge

Conflicts:
	api/current.txt
	core/java/android/app/Notification.java

Change-Id: I3141ed6b456107b7e5aa8c0c9c98ffc1d77fdf75
parents 4e7a2255 e5b73ae2
Loading
Loading
Loading
Loading
+60 −5
Original line number Diff line number Diff line
@@ -4536,13 +4536,22 @@ package android.app {
    ctor public Notification.Action.Builder(android.app.Notification.Action);
    method public android.app.Notification.Action.Builder addExtras(android.os.Bundle);
    method public android.app.Notification.Action.Builder addRemoteInput(android.app.RemoteInput);
    method public android.app.Notification.Action.Builder apply(android.app.Notification.Action.Builder.Extender);
    method public android.app.Notification.Action build();
    method public android.app.Notification.Action.Builder extend(android.app.Notification.Action.Extender);
    method public android.os.Bundle getExtras();
  }
  public static abstract interface Notification.Action.Builder.Extender {
    method public abstract android.app.Notification.Action.Builder applyTo(android.app.Notification.Action.Builder);
  public static abstract interface Notification.Action.Extender {
    method public abstract android.app.Notification.Action.Builder extend(android.app.Notification.Action.Builder);
  }
  public static final class Notification.Action.WearableExtender implements android.app.Notification.Action.Extender {
    ctor public Notification.Action.WearableExtender();
    ctor public Notification.Action.WearableExtender(android.app.Notification.Action);
    method public android.app.Notification.Action.WearableExtender clone();
    method public android.app.Notification.Action.Builder extend(android.app.Notification.Action.Builder);
    method public boolean isAvailableOffline();
    method public android.app.Notification.Action.WearableExtender setAvailableOffline(boolean);
  }
  public static class Notification.BigPictureStyle extends android.app.Notification.Style {
@@ -4570,6 +4579,7 @@ package android.app {
    method public android.app.Notification.Builder addPerson(java.lang.String);
    method public android.app.Notification.Builder apply(android.app.Notification.Builder.Extender);
    method public android.app.Notification build();
    method public android.app.Notification.Builder extend(android.app.Notification.Extender);
    method public android.os.Bundle getExtras();
    method public deprecated android.app.Notification getNotification();
    method public android.app.Notification.Builder setAutoCancel(boolean);
@@ -4611,8 +4621,8 @@ package android.app {
    method public android.app.Notification.Builder setWhen(long);
  }
  public static abstract interface Notification.Builder.Extender {
    method public abstract android.app.Notification.Builder applyTo(android.app.Notification.Builder);
  public static abstract interface Notification.Extender {
    method public abstract android.app.Notification.Builder extend(android.app.Notification.Builder);
  }
  public static class Notification.InboxStyle extends android.app.Notification.Style {
@@ -4642,6 +4652,51 @@ package android.app {
    field protected android.app.Notification.Builder mBuilder;
  }
  public static final class Notification.WearableExtender implements android.app.Notification.Extender {
    ctor public Notification.WearableExtender();
    ctor public Notification.WearableExtender(android.app.Notification);
    method public android.app.Notification.WearableExtender addAction(android.app.Notification.Action);
    method public android.app.Notification.WearableExtender addActions(java.util.List<android.app.Notification.Action>);
    method public android.app.Notification.WearableExtender addPage(android.app.Notification);
    method public android.app.Notification.WearableExtender addPages(java.util.List<android.app.Notification>);
    method public android.app.Notification.WearableExtender clearActions();
    method public android.app.Notification.WearableExtender clearPages();
    method public android.app.Notification.WearableExtender clone();
    method public android.app.Notification.Builder extend(android.app.Notification.Builder);
    method public java.util.List<android.app.Notification.Action> getActions();
    method public android.graphics.Bitmap getBackground();
    method public int getContentAction();
    method public int getContentIcon();
    method public int getContentIconGravity();
    method public boolean getContentIntentAvailableOffline();
    method public int getCustomContentHeight();
    method public int getCustomSizePreset();
    method public android.app.PendingIntent getDisplayIntent();
    method public int getGravity();
    method public boolean getHintHideIcon();
    method public boolean getHintShowBackgroundOnly();
    method public java.util.List<android.app.Notification> getPages();
    method public boolean getStartScrollBottom();
    method public android.app.Notification.WearableExtender setBackground(android.graphics.Bitmap);
    method public android.app.Notification.WearableExtender setContentAction(int);
    method public android.app.Notification.WearableExtender setContentIcon(int);
    method public android.app.Notification.WearableExtender setContentIconGravity(int);
    method public android.app.Notification.WearableExtender setContentIntentAvailableOffline(boolean);
    method public android.app.Notification.WearableExtender setCustomContentHeight(int);
    method public android.app.Notification.WearableExtender setCustomSizePreset(int);
    method public android.app.Notification.WearableExtender setDisplayIntent(android.app.PendingIntent);
    method public android.app.Notification.WearableExtender setGravity(int);
    method public android.app.Notification.WearableExtender setHintHideIcon(boolean);
    method public android.app.Notification.WearableExtender setHintShowBackgroundOnly(boolean);
    method public android.app.Notification.WearableExtender setStartScrollBottom(boolean);
    field public static final int SIZE_DEFAULT = 0; // 0x0
    field public static final int SIZE_LARGE = 4; // 0x4
    field public static final int SIZE_MEDIUM = 3; // 0x3
    field public static final int SIZE_SMALL = 2; // 0x2
    field public static final int SIZE_XSMALL = 1; // 0x1
    field public static final int UNSET_ACTION_INDEX = -1; // 0xffffffff
  }
  public class NotificationManager {
    method public void cancel(int);
    method public void cancel(java.lang.String, int);
+753 −31

File changed.

Preview size limit exceeded, changes collapsed.

+23 −9
Original line number Diff line number Diff line
@@ -64,18 +64,24 @@ public final class RemoteInput implements Parcelable {
    /** Extra added to a clip data intent object to hold the results bundle. */
    public static final String EXTRA_RESULTS_DATA = "android.remoteinput.resultsData";

    // Flags bitwise-ored to mFlags
    private static final int FLAG_ALLOW_FREE_FORM_INPUT = 0x1;

    // Default value for flags integer
    private static final int DEFAULT_FLAGS = FLAG_ALLOW_FREE_FORM_INPUT;

    private final String mResultKey;
    private final CharSequence mLabel;
    private final CharSequence[] mChoices;
    private final boolean mAllowFreeFormInput;
    private final int mFlags;
    private final Bundle mExtras;

    private RemoteInput(String resultKey, CharSequence label, CharSequence[] choices,
            boolean allowFreeFormInput, Bundle extras) {
            int flags, Bundle extras) {
        this.mResultKey = resultKey;
        this.mLabel = label;
        this.mChoices = choices;
        this.mAllowFreeFormInput = allowFreeFormInput;
        this.mFlags = flags;
        this.mExtras = extras;
    }

@@ -108,7 +114,7 @@ public final class RemoteInput implements Parcelable {
     * if you set this to false and {@link #getChoices} returns {@code null} or empty.
     */
    public boolean getAllowFreeFormInput() {
        return mAllowFreeFormInput;
        return (mFlags & FLAG_ALLOW_FREE_FORM_INPUT) != 0;
    }

    /**
@@ -125,7 +131,7 @@ public final class RemoteInput implements Parcelable {
        private final String mResultKey;
        private CharSequence mLabel;
        private CharSequence[] mChoices;
        private boolean mAllowFreeFormInput = true;
        private int mFlags = DEFAULT_FLAGS;
        private Bundle mExtras = new Bundle();

        /**
@@ -178,7 +184,7 @@ public final class RemoteInput implements Parcelable {
         * @return this object for method chaining
         */
        public Builder setAllowFreeFormInput(boolean allowFreeFormInput) {
            mAllowFreeFormInput = allowFreeFormInput;
            setFlag(mFlags, allowFreeFormInput);
            return this;
        }

@@ -205,12 +211,20 @@ public final class RemoteInput implements Parcelable {
            return mExtras;
        }

        private void setFlag(int mask, boolean value) {
            if (value) {
                mFlags |= mask;
            } else {
                mFlags &= ~mask;
            }
        }

        /**
         * Combine all of the options that have been set and return a new {@link RemoteInput}
         * object.
         */
        public RemoteInput build() {
            return new RemoteInput(mResultKey, mLabel, mChoices, mAllowFreeFormInput, mExtras);
            return new RemoteInput(mResultKey, mLabel, mChoices, mFlags, mExtras);
        }
    }

@@ -218,7 +232,7 @@ public final class RemoteInput implements Parcelable {
        mResultKey = in.readString();
        mLabel = in.readCharSequence();
        mChoices = in.readCharSequenceArray();
        mAllowFreeFormInput = in.readInt() != 0;
        mFlags = in.readInt();
        mExtras = in.readBundle();
    }

@@ -279,7 +293,7 @@ public final class RemoteInput implements Parcelable {
        out.writeString(mResultKey);
        out.writeCharSequence(mLabel);
        out.writeCharSequenceArray(mChoices);
        out.writeInt(mAllowFreeFormInput ? 1 : 0);
        out.writeInt(mFlags);
        out.writeBundle(mExtras);
    }

+0 −176
Original line number Diff line number Diff line
/*
 * Copyright (C) 2014 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 android.app.wearable;

import android.app.Notification;
import android.os.Parcel;
import android.os.Parcelable;

/**
 * Wearable extensions to notification actions. To add extensions to an action,
 * create a new {@link WearableActionExtensions} object using
 * {@link WearableActionExtensions.Builder} and apply it to a
 * {@link android.app.Notification.Action.Builder}.
 *
 * <pre class="prettyprint">
 * Notification.Action action = new Notification.Action.Builder(
 *         R.drawable.archive_all, "Archive all", actionIntent)
 *         .apply(new WearableActionExtensions.Builder()
 *                 .setAvailableOffline(false)
 *                 .build())
 *         .build();
 * </pre>
 */
public final class WearableActionExtensions implements Notification.Action.Builder.Extender,
        Parcelable {
    /** Notification action extra which contains wearable extensions */
    private static final String EXTRA_WEARABLE_EXTENSIONS = "android.wearable.EXTENSIONS";

    // Flags bitwise-ored to mFlags
    private static final int FLAG_AVAILABLE_OFFLINE = 1 << 0;

    // Default value for flags integer
    private static final int DEFAULT_FLAGS = FLAG_AVAILABLE_OFFLINE;

    private final int mFlags;

    private WearableActionExtensions(int flags) {
        mFlags = flags;
    }

    private WearableActionExtensions(Parcel in) {
        mFlags = in.readInt();
    }

    /**
     * Create a {@link WearableActionExtensions} by reading wearable extensions present on an
     * existing notification action.
     * @param action the notification action to inspect.
     * @return a new {@link WearableActionExtensions} object.
     */
    public static WearableActionExtensions from(Notification.Action action) {
        WearableActionExtensions extensions = action.getExtras().getParcelable(
                EXTRA_WEARABLE_EXTENSIONS);
        if (extensions != null) {
            return extensions;
        } else {
            // Return a WearableActionExtensions with default values.
            return new Builder().build();
        }
    }

    /**
     * Get whether this action is available when the wearable device is not connected to
     * a companion device. The user can still trigger this action when the wearable device is
     * offline, but a visual hint will indicate that the action may not be available.
     * Defaults to true.
     */
    public boolean isAvailableOffline() {
        return (mFlags & FLAG_AVAILABLE_OFFLINE) != 0;
    }

    @Override
    public Notification.Action.Builder applyTo(Notification.Action.Builder builder) {
        builder.getExtras().putParcelable(EXTRA_WEARABLE_EXTENSIONS, this);
        return builder;
    }

    @Override
    public int describeContents() {
        return 0;
    }

    @Override
    public void writeToParcel(Parcel out, int flags) {
        out.writeInt(mFlags);
    }

    /**
     * Builder for {@link WearableActionExtensions} objects, which adds wearable extensions to
     * notification actions. To extend an action, create an instance of this class, call the set
     * methods present, call {@link #build}, and finally apply the options to a
     * {@link Notification.Action.Builder} using its
     * {@link android.app.Notification.Action.Builder#apply} method.
     */
    public static final class Builder {
        private int mFlags = DEFAULT_FLAGS;

        /**
         * Construct a builder to be used for adding wearable extensions to notification actions.
         *
         * <pre class="prettyprint">
         * Notification.Action action = new Notification.Action.Builder(
         *         R.drawable.archive_all, "Archive all", actionIntent)
         *         .apply(new WearableActionExtensions.Builder()
         *                 .setAvailableOffline(false)
         *                 .build())
         *         .build();</pre>
         */
        public Builder() {
        }

        /**
         * Create a {@link Builder} by reading wearable extensions present on an
         * existing {@code WearableActionExtensions} object.
         * @param other the existing extensions to inspect.
         */
        public Builder(WearableActionExtensions other) {
            mFlags = other.mFlags;
        }

        /**
         * Set whether this action is available when the wearable device is not connected to
         * a companion device. The user can still trigger this action when the wearable device is
         * offline, but a visual hint will indicate that the action may not be available.
         * Defaults to true.
         */
        public Builder setAvailableOffline(boolean availableOffline) {
            setFlag(FLAG_AVAILABLE_OFFLINE, availableOffline);
            return this;
        }

        /**
         * Build a new {@link WearableActionExtensions} object with the extensions
         * currently present on this builder.
         * @return the extensions object.
         */
        public WearableActionExtensions build() {
            return new WearableActionExtensions(mFlags);
        }

        private void setFlag(int mask, boolean value) {
            if (value) {
                mFlags |= mask;
            } else {
                mFlags &= ~mask;
            }
        }
    }

    public static final Creator<WearableActionExtensions> CREATOR =
            new Creator<WearableActionExtensions>() {
        @Override
        public WearableActionExtensions createFromParcel(Parcel in) {
            return new WearableActionExtensions(in);
        }

        @Override
        public WearableActionExtensions[] newArray(int size) {
            return new WearableActionExtensions[size];
        }
    };
}
+0 −702

File deleted.

Preview size limit exceeded, changes collapsed.