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

Commit cd0fe608 authored by Salvador Martinez's avatar Salvador Martinez
Browse files

Added feature for surveys provider to Settings

It is now possible to create and show surveys to a user
asking them for feedback within the Settings app.

Test: In Master Branch
Bug: 27823357
Change-Id: I824899045f6ce30e5b6f46d20888da673114f658
parent 6688dae1
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -61,6 +61,8 @@ public abstract class FeatureFactory {

    public abstract SupportFeatureProvider getSupportFeatureProvider(Context context);

    public abstract SurveyFeatureProvider getSurveyFeatureProvider(Context context);

    public static final class FactoryNotFoundException extends RuntimeException {
        public FactoryNotFoundException(Throwable throwable) {
            super("Unable to create factory. Did you misconfigure Proguard?", throwable);
+8 −1
Original line number Diff line number Diff line
@@ -17,15 +17,22 @@
package com.android.settings.overlay;

import android.content.Context;
import android.support.annotation.Keep;

/**
 * {@link FeatureFactory} implementation for AOSP Settings.
 */
public final class FeatureFactoryImpl extends FeatureFactory {
@Keep
public class FeatureFactoryImpl extends FeatureFactory {

    @Override
    public SupportFeatureProvider getSupportFeatureProvider(Context context) {
        return null;
    }

    @Override
    public SurveyFeatureProvider getSurveyFeatureProvider(Context context) {
        return null;
    }

}
+55 −0
Original line number Diff line number Diff line
/*
 * Copyright (C) 2016 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.settings.overlay;

import android.app.Activity;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.IntentFilter;
import android.support.annotation.Nullable;

/**
 * An interface for classes wishing to provide the ability to serve surveys to implement.
 */
public interface SurveyFeatureProvider {

    /**
     * Downloads a survey asynchronously to shared preferences to be served at a later date.
     *
     * @param activity A valid context.
     * @param surveyId A unique Id representing a survey to download.
     * @param data a text blob to be attached to the survey results.
     */
    void downloadSurvey(Activity activity, String surveyId, @Nullable String data);

    /**
     * Shows a previously downloaded survey/prompt if possible in the activity provided.
     *
     * @param activity The host activity to show the survey in.
     * @param surveyId A unique Id representing a survey to download.
     */
    void showSurveyIfAvailable(Activity activity, String surveyId);

    /**
     * A helper method to get the surveyId. Implementers should create a mapping of
     * keys to surveyIds and provide them via this function.
     *
     * @param context A valid context.
     * @param key The key to get the surveyId for.
     * @return The unique Id as a string or null on error.
     */
    String getSurveyId(Context context, String key);
}