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

Commit bf78fc2a authored by Adam Powell's avatar Adam Powell Committed by Android Git Automerger
Browse files

am 89e68d78: Merge "Create main activity intents as needed for...

am 89e68d78: Merge "Create main activity intents as needed for TaskStackBuilder/Up nav" into jb-mr1-dev

* commit '89e68d78':
  Create main activity intents as needed for TaskStackBuilder/Up nav
parents e3dc7055 89e68d78
Loading
Loading
Loading
Loading
+15 −1
Original line number Original line Diff line number Diff line
@@ -5010,7 +5010,21 @@ public class Activity extends ContextThemeWrapper
        if (TextUtils.isEmpty(parentName)) {
        if (TextUtils.isEmpty(parentName)) {
            return null;
            return null;
        }
        }
        return new Intent().setClassName(this, parentName);

        // If the parent itself has no parent, generate a main activity intent.
        final ComponentName target = new ComponentName(this, parentName);
        try {
            final ActivityInfo parentInfo = getPackageManager().getActivityInfo(target, 0);
            final String parentActivity = parentInfo.parentActivityName;
            final Intent parentIntent = parentActivity == null
                    ? Intent.makeMainActivity(target)
                    : new Intent().setComponent(target);
            return parentIntent;
        } catch (NameNotFoundException e) {
            Log.e(TAG, "getParentActivityIntent: bad parentActivityName '" + parentName +
                    "' in manifest");
            return null;
        }
    }
    }


    // ------------------ Internal API ------------------
    // ------------------ Internal API ------------------
+13 −40
Original line number Original line Diff line number Diff line
@@ -124,24 +124,12 @@ public class TaskStackBuilder {
     * @return This TaskStackBuilder for method chaining
     * @return This TaskStackBuilder for method chaining
     */
     */
    public TaskStackBuilder addParentStack(Activity sourceActivity) {
    public TaskStackBuilder addParentStack(Activity sourceActivity) {
        final int insertAt = mIntents.size();
        final Intent parent = sourceActivity.getParentActivityIntent();
        Intent parent = sourceActivity.getParentActivityIntent();
        if (parent != null) {
        PackageManager pm = sourceActivity.getPackageManager();
            // We have the actual parent intent, build the rest from static metadata
        while (parent != null) {
            // then add the direct parent intent to the end.
            mIntents.add(insertAt, parent);
            addParentStack(parent.getComponent());
            try {
            addNextIntent(parent);
                ActivityInfo info = pm.getActivityInfo(parent.getComponent(), 0);
                String parentActivity = info.parentActivityName;
                if (parentActivity != null) {
                    parent = new Intent().setComponent(
                            new ComponentName(mSourceContext, parentActivity));
                } else {
                    parent = null;
                }
            } catch (NameNotFoundException e) {
                Log.e(TAG, "Bad ComponentName while traversing activity parent metadata");
                throw new IllegalArgumentException(e);
            }
        }
        }
        return this;
        return this;
    }
    }
@@ -155,24 +143,7 @@ public class TaskStackBuilder {
     * @return This TaskStackBuilder for method chaining
     * @return This TaskStackBuilder for method chaining
     */
     */
    public TaskStackBuilder addParentStack(Class<?> sourceActivityClass) {
    public TaskStackBuilder addParentStack(Class<?> sourceActivityClass) {
        final int insertAt = mIntents.size();
        return addParentStack(new ComponentName(mSourceContext, sourceActivityClass));
        PackageManager pm = mSourceContext.getPackageManager();
        try {
            ActivityInfo info = pm.getActivityInfo(
                    new ComponentName(mSourceContext, sourceActivityClass), 0);
            String parentActivity = info.parentActivityName;
            while (parentActivity != null) {
                Intent parent = new Intent().setComponent(
                        new ComponentName(mSourceContext, parentActivity));
                mIntents.add(insertAt, parent);
                info = pm.getActivityInfo(parent.getComponent(), 0);
                parentActivity = info.parentActivityName;
            }
        } catch (NameNotFoundException e) {
            Log.e(TAG, "Bad ComponentName while traversing activity parent metadata");
            throw new IllegalArgumentException(e);
        }
        return this;
    }
    }


    /**
    /**
@@ -191,11 +162,13 @@ public class TaskStackBuilder {
            ActivityInfo info = pm.getActivityInfo(sourceActivityName, 0);
            ActivityInfo info = pm.getActivityInfo(sourceActivityName, 0);
            String parentActivity = info.parentActivityName;
            String parentActivity = info.parentActivityName;
            while (parentActivity != null) {
            while (parentActivity != null) {
                Intent parent = new Intent().setComponent(
                final ComponentName target = new ComponentName(mSourceContext, parentActivity);
                        new ComponentName(info.packageName, parentActivity));
                info = pm.getActivityInfo(target, 0);
                mIntents.add(insertAt, parent);
                info = pm.getActivityInfo(parent.getComponent(), 0);
                parentActivity = info.parentActivityName;
                parentActivity = info.parentActivityName;
                final Intent parent = parentActivity == null && insertAt == 0
                        ? Intent.makeMainActivity(target)
                        : new Intent().setComponent(target);
                mIntents.add(insertAt, parent);
            }
            }
        } catch (NameNotFoundException e) {
        } catch (NameNotFoundException e) {
            Log.e(TAG, "Bad ComponentName while traversing activity parent metadata");
            Log.e(TAG, "Bad ComponentName while traversing activity parent metadata");