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

Commit fe76a525 authored by Muhammad Qureshi's avatar Muhammad Qureshi
Browse files

Create SystemApi for statsd ready broadcast

The statsd ready broadcast needs to be sent from statsd apex with
Intent.FLAG_RECEIVER_INCLUDE_BACKGROUND flag that is @hide and cannot be
promoted to @SystemApi.
In R, this was worked around by getting the list of registered broadcast
receivers and sending them directed broadcasts to wake them up in
ag/10404099.
However, this is inefficient if there are multiple receivers so this
change creates a SystemApi for sending the actual broadcast with the
flag as recommended in ag/10404099 after it was submitted.

Bug: 150746848
Test: m
Test: flash
Test: ensure broadcast is received via logcat
CTS-Coverage-Bug: 184014462

Change-Id: I5103d8c6e87bdb47930cb7457731050da3d8e566
Merged-In: I5103d8c6e87bdb47930cb7457731050da3d8e566
parent 6d7c9071
Loading
Loading
Loading
Loading
+8 −0
Original line number Diff line number Diff line
@@ -80,6 +80,14 @@ package com.android.server {

}

package com.android.server.stats {

  public final class StatsHelper {
    method public static void sendStatsdReadyBroadcast(@NonNull android.content.Context);
  }

}

package com.android.server.wifi {

  public class SupplicantManager {
+8 −0
Original line number Diff line number Diff line
@@ -35,6 +35,14 @@ package com.android.server {

}

package com.android.server.stats {

  public final class StatsHelper {
    method public static void sendStatsdReadyBroadcast(@NonNull android.content.Context);
  }

}

package com.android.server.wifi {

  public class SupplicantManager {
+45 −0
Original line number Diff line number Diff line
/*
 * Copyright (C) 2021 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 com.android.server.stats;

import static android.app.StatsManager.ACTION_STATSD_STARTED;

import android.annotation.NonNull;
import android.annotation.SystemApi;
import android.content.Context;
import android.content.Intent;
import android.os.UserHandle;

/**
 * Provides helper methods for the Statsd APEX
 *
 * @hide
 **/
@SystemApi(client = SystemApi.Client.SYSTEM_SERVER)
public final class StatsHelper {
    private StatsHelper() {}

    /**
     * Send statsd ready broadcast
     *
     **/
    public static void sendStatsdReadyBroadcast(@NonNull final Context context) {
        context.sendBroadcastAsUser(
                new Intent(ACTION_STATSD_STARTED).addFlags(Intent.FLAG_RECEIVER_INCLUDE_BACKGROUND),
                UserHandle.SYSTEM, android.Manifest.permission.DUMP);
    }
}