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

Commit e91ab7f0 authored by Dianne Hackborn's avatar Dianne Hackborn Committed by Android Git Automerger
Browse files

am 377d80ba: Merge "Put native apps above browser in resolver activity." into lmp-mr1-dev

* commit '377d80ba':
  Put native apps above browser in resolver activity.
parents 8d6699cc 377d80ba
Loading
Loading
Loading
Loading
+22 −2
Original line number Diff line number Diff line
@@ -840,7 +840,7 @@ public class ResolverActivity extends Activity implements AdapterView.OnItemClic
                }
                if (N > 1) {
                    Comparator<ResolveInfo> rComparator =
                            new ResolverComparator(ResolverActivity.this);
                            new ResolverComparator(ResolverActivity.this, mIntent);
                    Collections.sort(currentResolveList, rComparator);
                }
                // First put the initial items at the top.
@@ -1093,11 +1093,20 @@ public class ResolverActivity extends Activity implements AdapterView.OnItemClic
        }
    }

    static final boolean isSpecificUriMatch(int match) {
        match = match&IntentFilter.MATCH_CATEGORY_MASK;
        return match >= IntentFilter.MATCH_CATEGORY_HOST
                && match <= IntentFilter.MATCH_CATEGORY_PATH;
    }

    class ResolverComparator implements Comparator<ResolveInfo> {
        private final Collator mCollator;
        private final boolean mHttp;

        public ResolverComparator(Context context) {
        public ResolverComparator(Context context, Intent intent) {
            mCollator = Collator.getInstance(context.getResources().getConfiguration().locale);
            String scheme = intent.getScheme();
            mHttp = "http".equals(scheme) || "https".equals(scheme);
        }

        @Override
@@ -1107,6 +1116,17 @@ public class ResolverActivity extends Activity implements AdapterView.OnItemClic
                return 1;
            }

            if (mHttp) {
                // Special case: we want filters that match URI paths/schemes to be
                // ordered before others.  This is for the case when opening URIs,
                // to make native apps go above browsers.
                final boolean lhsSpecific = isSpecificUriMatch(lhs.match);
                final boolean rhsSpecific = isSpecificUriMatch(rhs.match);
                if (lhsSpecific != rhsSpecific) {
                    return lhsSpecific ? -1 : 1;
                }
            }

            if (mStats != null) {
                final long timeDiff =
                        getPackageTimeSpent(rhs.activityInfo.packageName) -