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

Commit a1779c1e authored by Lee Shombert's avatar Lee Shombert
Browse files

PackageManager lock reduction: IntentResolver

Bug: 161323622

Address two comments on the IntentResolver: doCopy() is renamed to
copyFrom() and WatchableIntentResolver.java is moved to be a peer of
IntentResolver.java.

Test: atest
 * FrameworksServicesTests:UserSystemPackageInstallerTest
 * FrameworksServicesTests:PackageManagerSettingsTests
 * FrameworksServicesTests:PackageManagerServiceTest
 * FrameworksServicesTests:AppsFilterTest
 * FrameworksServicesTests:PackageInstallerSessionTest
 * FrameworksServicesTests:ScanTests
 * FrameworksServicesTests:WatcherTest

Change-Id: I0b17c3e8531e3e1324f9ca93516237297f810c1e
parent a6e588bf
Loading
Loading
Loading
Loading
+10 −2
Original line number Diff line number Diff line
@@ -839,14 +839,22 @@ public abstract class IntentResolver<F, R extends Object> {
        }
    };

    // Make <this> a copy of <orig>.  The presumption is that <this> is empty.
    protected void doCopy(IntentResolver orig) {
    // Make <this> a copy of <orig>.  The presumption is that <this> is empty but all
    // arrays are cleared out explicitly, just to be sure.
    protected void copyFrom(IntentResolver orig) {
        mFilters.clear();
        mFilters.addAll(orig.mFilters);
        mTypeToFilter.clear();
        mTypeToFilter.putAll(orig.mTypeToFilter);
        mBaseTypeToFilter.clear();
        mBaseTypeToFilter.putAll(orig.mBaseTypeToFilter);
        mWildTypeToFilter.clear();
        mWildTypeToFilter.putAll(orig.mWildTypeToFilter);
        mSchemeToFilter.clear();
        mSchemeToFilter.putAll(orig.mSchemeToFilter);
        mActionToFilter.clear();
        mActionToFilter.putAll(orig.mActionToFilter);
        mTypedActionToFilter.clear();
        mTypedActionToFilter.putAll(orig.mTypedActionToFilter);
    }

+4 −2
Original line number Diff line number Diff line
@@ -14,12 +14,14 @@
 * limitations under the License.
 */

package com.android.server.utils;
package com.android.server;

import android.annotation.NonNull;
import android.annotation.Nullable;

import com.android.server.IntentResolver;
import com.android.server.utils.Watchable;
import com.android.server.utils.WatchableImpl;
import com.android.server.utils.Watcher;

import java.util.List;

+2 −2
Original line number Diff line number Diff line
@@ -19,8 +19,8 @@ package com.android.server.pm;
import android.annotation.NonNull;
import android.content.IntentFilter;

import com.android.server.WatchableIntentResolver;
import com.android.server.utils.Snappable;
import com.android.server.utils.WatchableIntentResolver;

import java.util.List;

@@ -57,7 +57,7 @@ class CrossProfileIntentResolver
     */
    public CrossProfileIntentResolver snapshot() {
        CrossProfileIntentResolver result = new CrossProfileIntentResolver();
        result.doCopy(this);
        result.copyFrom(this);
        return result;
    }
}
+2 −2
Original line number Diff line number Diff line
@@ -19,8 +19,8 @@ package com.android.server.pm;
import android.annotation.NonNull;
import android.content.IntentFilter;

import com.android.server.WatchableIntentResolver;
import com.android.server.utils.Snappable;
import com.android.server.utils.WatchableIntentResolver;

public class PersistentPreferredIntentResolver
        extends WatchableIntentResolver<PersistentPreferredActivity, PersistentPreferredActivity>
@@ -47,7 +47,7 @@ public class PersistentPreferredIntentResolver
     */
    public PersistentPreferredIntentResolver snapshot() {
        PersistentPreferredIntentResolver result = new PersistentPreferredIntentResolver();
        result.doCopy(this);
        result.copyFrom(this);
        return result;
    }
}
+2 −2
Original line number Diff line number Diff line
@@ -19,8 +19,8 @@ package com.android.server.pm;
import android.annotation.NonNull;
import android.content.IntentFilter;

import com.android.server.WatchableIntentResolver;
import com.android.server.utils.Snappable;
import com.android.server.utils.WatchableIntentResolver;

import java.io.PrintWriter;
import java.util.ArrayList;
@@ -76,7 +76,7 @@ public class PreferredIntentResolver
     */
    public PreferredIntentResolver snapshot() {
        PreferredIntentResolver result = new PreferredIntentResolver();
        result.doCopy(this);
        result.copyFrom(this);
        return result;
    }
}
Loading