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

Commit 988f7e0c authored by Yara Hassan's avatar Yara Hassan
Browse files

Enabled Content Capture in Service

In AiAi we require calling the data share ContentCapture API from a Service.  Therefore we would like to enable ContentCapture in a Service. We do this by having the Service implement the ContentCaptureClient interface.

Bug: 150451947
Fix: 150451947
Test: Locally
Change-Id: I4a2c600e7c09a5441dc681d78549cd21abba44cc
parent 2da3da62
Loading
Loading
Loading
Loading
+25 −2
Original line number Diff line number Diff line
@@ -34,6 +34,7 @@ import android.os.Build;
import android.os.IBinder;
import android.os.RemoteException;
import android.util.Log;
import android.view.contentcapture.ContentCaptureManager;

import java.io.FileDescriptor;
import java.io.PrintWriter;
@@ -306,7 +307,8 @@ import java.lang.annotation.RetentionPolicy;
 * {@sample development/samples/ApiDemos/src/com/example/android/apis/app/MessengerServiceActivities.java
 *      bind}
 */
public abstract class Service extends ContextWrapper implements ComponentCallbacks2 {
public abstract class Service extends ContextWrapper implements ComponentCallbacks2,
        ContentCaptureManager.ContentCaptureClient {
    private static final String TAG = "Service";

    /**
@@ -817,6 +819,14 @@ public abstract class Service extends ContextWrapper implements ComponentCallbac
        writer.println("nothing to dump");
    }

    @Override
    protected void attachBaseContext(Context newBase) {
        super.attachBaseContext(newBase);
        if (newBase != null) {
            newBase.setContentCaptureOptions(getContentCaptureOptions());
        }
    }

    // ------------------ Internal API ------------------

    /**
@@ -835,6 +845,7 @@ public abstract class Service extends ContextWrapper implements ComponentCallbac
        mActivityManager = (IActivityManager)activityManager;
        mStartCompatibility = getApplicationInfo().targetSdkVersion
                < Build.VERSION_CODES.ECLAIR;
        setContentCaptureOptions(application.getContentCaptureOptions());
    }

    /**
@@ -849,6 +860,18 @@ public abstract class Service extends ContextWrapper implements ComponentCallbac
        return mClassName;
    }

    /** @hide */
    @Override
    public final ContentCaptureManager.ContentCaptureClient getContentCaptureClient() {
        return this;
    }

    /** @hide */
    @Override
    public final ComponentName contentCaptureClientGetComponentName() {
        return new ComponentName(this, mClassName);
    }

    // set by the thread after the constructor and before onCreate(Bundle icicle) is called.
    @UnsupportedAppUsage
    private ActivityThread mThread = null;
+3 −1
Original line number Diff line number Diff line
@@ -3,8 +3,10 @@ package com.android.server.notification;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.spy;

import android.app.Application;
import android.content.Intent;
import android.net.Uri;
import android.service.notification.Condition;
@@ -45,7 +47,7 @@ public class ScheduleConditionProviderTest extends UiServiceTestCase {
                null,               // ActivityThread not actually used in Service
                ScheduleConditionProvider.class.getName(),
                null,               // token not needed when not talking with the activity manager
                null,
                mock(Application.class),
                null                // mocked services don't talk with the activity manager
                );
        service.onCreate();