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

Commit a06573a2 authored by shawnlin's avatar shawnlin
Browse files

Migrate to new statsd mechanism for mainline module

Test: atest DocumentsUITests
Test: adb shell cmd stats print-logs then check the log while operating DocumentsUI
Test: make DocumentsUI DocumentsUIGoogle ArcDocumentsUI
Fixes: 130203187
Change-Id: Ie108c2b943c1100452e70f4db5ee0b4e6e6802f1
parent 1ab79483
Loading
Loading
Loading
Loading
+16 −1
Original line number Diff line number Diff line
@@ -45,9 +45,24 @@ filegroup {
    name: "DocumentsUI-srcs",
    srcs: [
        "src/**/*.java",
	":statslog-docsui-java-gen",
    ],
}

java_library {
    name: "docsui-statsd",
    srcs: [
        ":statslog-docsui-java-gen",
    ],
}

genrule {
    name: "statslog-docsui-java-gen",
    tools: ["stats-log-api-gen"],
    cmd: "$(location stats-log-api-gen) --java $(out) --module docsui --javaPackage com.android.documentsui --javaClass DocumentsStatsLog",
    out: ["com/android/documentsui/DocumentsStatsLog.java"],
}

android_library {
    name: "DocumentsUI-res-lib",

@@ -78,7 +93,7 @@ android_app {
    manifest: "AndroidManifest.xml",

    srcs: [
        "src/**/*.java",
        ":DocumentsUI-srcs",
    ],

    resource_dirs: [
+2 −1
Original line number Diff line number Diff line
@@ -2,7 +2,8 @@ LOCAL_MODULE_TAGS := optional
LOCAL_PRIVILEGED_MODULE := true

LOCAL_STATIC_JAVA_LIBRARIES += guava \
        apache-commons-compress
        apache-commons-compress \
        docsui-statsd

LOCAL_STATIC_ANDROID_LIBRARIES := \
        androidx.legacy_legacy-support-core-ui \
+50 −30
Original line number Diff line number Diff line
@@ -20,7 +20,6 @@ import static android.content.ContentResolver.wrap;

import static com.android.documentsui.DocumentsApplication.acquireUnstableProviderOrThrow;

import androidx.annotation.Nullable;
import android.content.ContentProviderClient;
import android.content.Context;
import android.content.Intent;
@@ -30,9 +29,10 @@ import android.os.RemoteException;
import android.provider.DocumentsContract;
import android.provider.DocumentsContract.Path;
import android.provider.DocumentsProvider;
import android.util.DocumentsStatsLog;
import android.util.Log;

import androidx.annotation.Nullable;

import com.android.documentsui.base.DocumentInfo;
import com.android.documentsui.base.Providers;
import com.android.documentsui.base.RootInfo;
@@ -60,7 +60,8 @@ public final class Metrics {
     */
    public static void logActivityLaunch(State state, Intent intent) {
        Uri uri = intent.getData();
        DocumentsStatsLog.logActivityLaunch(toMetricsAction(state.action), false,
        DocumentsStatsLog.write(DocumentsStatsLog.DOCS_UI_LAUNCH_REPORTED,
                toMetricsAction(state.action), false,
                sanitizeMime(intent.getType()), sanitizeRoot(uri));
    }

@@ -72,7 +73,8 @@ public final class Metrics {
     *                support {@link DocumentsProvider#findDocumentPath(String, String)}
     */
    public static void logLaunchAtLocation(State state, @Nullable Uri rootUri) {
        DocumentsStatsLog.logActivityLaunch(toMetricsAction(state.action), true,
        DocumentsStatsLog.write(DocumentsStatsLog.DOCS_UI_LAUNCH_REPORTED,
                toMetricsAction(state.action), true,
                MetricConsts.MIME_UNKNOWN, sanitizeRoot(rootUri));
    }

@@ -83,7 +85,7 @@ public final class Metrics {
     * @param info
     */
    public static void logRootVisited(@MetricConsts.ContextScope int scope, RootInfo info) {
        DocumentsStatsLog.logRootVisited(scope, sanitizeRoot(info));
        DocumentsStatsLog.write(DocumentsStatsLog.DOCS_UI_ROOT_VISITED, scope, sanitizeRoot(info));
    }

    /**
@@ -93,7 +95,9 @@ public final class Metrics {
     * @param info
     */
    public static void logAppVisited(ResolveInfo info) {
        DocumentsStatsLog.logRootVisited(MetricConsts.PICKER_SCOPE, sanitizeRoot(info));
        DocumentsStatsLog.write(
                DocumentsStatsLog.DOCS_UI_ROOT_VISITED,
                MetricConsts.PICKER_SCOPE, sanitizeRoot(info));
    }

    /**
@@ -128,11 +132,11 @@ public final class Metrics {
            @OpType int operationType, @MetricConsts.FileOpMode int approach) {
        switch (operationType) {
            case FileOperationService.OPERATION_COPY:
                DocumentsStatsLog.logFileOperationCopyMoveMode(
                DocumentsStatsLog.write(DocumentsStatsLog.DOCS_UI_FILE_OP_COPY_MOVE_MODE_REPORTED,
                        MetricConsts.FILEOP_COPY, approach);
                break;
            case FileOperationService.OPERATION_MOVE:
                DocumentsStatsLog.logFileOperationCopyMoveMode(
                DocumentsStatsLog.write(DocumentsStatsLog.DOCS_UI_FILE_OP_COPY_MOVE_MODE_REPORTED,
                        MetricConsts.FILEOP_MOVE, approach);
                break;
        }
@@ -144,7 +148,7 @@ public final class Metrics {
     * logged under COUNT_FILEOP_SYSTEM. Call this when a create directory operation has completed.
     */
    public static void logCreateDirOperation() {
        DocumentsStatsLog.logFileOperation(
        DocumentsStatsLog.write(DocumentsStatsLog.DOCS_UI_PROVIDER_FILE_OP,
                MetricConsts.PROVIDER_SYSTEM, MetricConsts.FILEOP_CREATE_DIR);
    }

@@ -154,7 +158,7 @@ public final class Metrics {
     * COUNT_FILEOP_SYSTEM. Call this when a rename file operation has completed.
     */
    public static void logRenameFileOperation() {
        DocumentsStatsLog.logFileOperation(
        DocumentsStatsLog.write(DocumentsStatsLog.DOCS_UI_PROVIDER_FILE_OP,
                MetricConsts.PROVIDER_SYSTEM, MetricConsts.FILEOP_RENAME);
    }

@@ -190,10 +194,14 @@ public final class Metrics {
                break;
        }
        if (counts.systemProvider > 0) {
            DocumentsStatsLog.logFileOperation(MetricConsts.PROVIDER_SYSTEM, opCode);
            DocumentsStatsLog.write(
                    DocumentsStatsLog.DOCS_UI_PROVIDER_FILE_OP,
                    MetricConsts.PROVIDER_SYSTEM, opCode);
        }
        if (counts.externalProvider > 0) {
            DocumentsStatsLog.logFileOperation(MetricConsts.PROVIDER_EXTERNAL, opCode);
            DocumentsStatsLog.write(
                    DocumentsStatsLog.DOCS_UI_PROVIDER_FILE_OP,
                    MetricConsts.PROVIDER_EXTERNAL, opCode);
        }
    }

@@ -202,19 +210,27 @@ public final class Metrics {
        final String authority = docUri.getAuthority();
        switch (authority) {
            case Providers.AUTHORITY_MEDIA:
                DocumentsStatsLog.logFileOperationFailure(MetricConsts.AUTH_MEDIA, subFileOp);
                DocumentsStatsLog.write(
                        DocumentsStatsLog.DOCS_UI_FILE_OP_FAILURE,
                        MetricConsts.AUTH_MEDIA, subFileOp);
                break;
            case Providers.AUTHORITY_STORAGE:
                logStorageFileOperationFailure(context, subFileOp, docUri);
                break;
            case Providers.AUTHORITY_DOWNLOADS:
                DocumentsStatsLog.logFileOperationFailure(MetricConsts.AUTH_DOWNLOADS, subFileOp);
                DocumentsStatsLog.write(
                        DocumentsStatsLog.DOCS_UI_FILE_OP_FAILURE,
                        MetricConsts.AUTH_DOWNLOADS, subFileOp);
                break;
            case Providers.AUTHORITY_MTP:
                DocumentsStatsLog.logFileOperationFailure(MetricConsts.AUTH_MTP, subFileOp);
                DocumentsStatsLog.write(
                        DocumentsStatsLog.DOCS_UI_FILE_OP_FAILURE,
                        MetricConsts.AUTH_MTP, subFileOp);
                break;
            default:
                DocumentsStatsLog.logFileOperationFailure(MetricConsts.AUTH_OTHER, subFileOp);
                DocumentsStatsLog.write(
                        DocumentsStatsLog.DOCS_UI_FILE_OP_FAILURE,
                        MetricConsts.AUTH_OTHER, subFileOp);
                break;
        }
    }
@@ -225,7 +241,7 @@ public final class Metrics {
     * create directory operation fails.
     */
    public static void logCreateDirError() {
        DocumentsStatsLog.logFileOperation(
        DocumentsStatsLog.write(DocumentsStatsLog.DOCS_UI_PROVIDER_FILE_OP,
                MetricConsts.PROVIDER_SYSTEM, MetricConsts.FILEOP_CREATE_DIR_ERROR);
    }

@@ -235,7 +251,7 @@ public final class Metrics {
     * when a rename file operation fails.
     */
    public static void logRenameFileError() {
        DocumentsStatsLog.logFileOperation(
        DocumentsStatsLog.write(DocumentsStatsLog.DOCS_UI_PROVIDER_FILE_OP,
                MetricConsts.PROVIDER_SYSTEM, MetricConsts.FILEOP_RENAME_ERROR);
    }

@@ -245,7 +261,8 @@ public final class Metrics {
     * @param operationType
     */
    public static void logFileOperationCancelled(@OpType int operationType) {
        DocumentsStatsLog.logFileOperationCanceled(toMetricsOpType(operationType));
        DocumentsStatsLog.write(
                DocumentsStatsLog.DOCS_UI_FILE_OP_CANCELED, toMetricsOpType(operationType));
    }

    /**
@@ -254,7 +271,7 @@ public final class Metrics {
     * @param startupMs Startup time in milliseconds.
     */
    public static void logStartupMs(int startupMs) {
        DocumentsStatsLog.logStartupMs(startupMs);
        DocumentsStatsLog.write(DocumentsStatsLog.DOCS_UI_STARTUP_MS, startupMs);
    }

    private static void logInterProviderFileOps(
@@ -262,12 +279,13 @@ public final class Metrics {
            DocumentInfo dst,
            @OpType int operationType) {
        if (operationType == FileOperationService.OPERATION_DELETE) {
            DocumentsStatsLog.logFileOperation(providerType, MetricConsts.FILEOP_DELETE);
            DocumentsStatsLog.write(DocumentsStatsLog.DOCS_UI_PROVIDER_FILE_OP,
                    providerType, MetricConsts.FILEOP_DELETE);
        } else {
            assert(dst != null);
            @MetricConsts.Provider int opProviderType = isSystemProvider(dst.authority)
                    ? MetricConsts.PROVIDER_SYSTEM : MetricConsts.PROVIDER_EXTERNAL;
            DocumentsStatsLog.logFileOperation(
            DocumentsStatsLog.write(DocumentsStatsLog.DOCS_UI_PROVIDER_FILE_OP,
                    providerType, getOpCode(operationType, opProviderType));
        }
    }
@@ -275,7 +293,7 @@ public final class Metrics {
    private static void logIntraProviderFileOps(String authority, @OpType int operationType) {
        @MetricConsts.Provider int providerType = isSystemProvider(authority)
                ? MetricConsts.PROVIDER_SYSTEM : MetricConsts.PROVIDER_EXTERNAL;
        DocumentsStatsLog.logFileOperation(
        DocumentsStatsLog.write(DocumentsStatsLog.DOCS_UI_PROVIDER_FILE_OP,
                providerType, getOpCode(operationType, MetricConsts.PROVIDER_INTRA));
    }

@@ -285,24 +303,26 @@ public final class Metrics {
     * @param userAction
     */
    public static void logUserAction(@MetricConsts.UserAction int userAction) {
        DocumentsStatsLog.logUserAction(userAction);
        DocumentsStatsLog.write(DocumentsStatsLog.DOCS_UI_USER_ACTION_REPORTED, userAction);
    }

    public static void logPickerLaunchedFrom(String packgeName) {
        DocumentsStatsLog.logPickerLaunchedFrom(packgeName);
        DocumentsStatsLog.write(
                DocumentsStatsLog.DOCS_UI_PICKER_LAUNCHED_FROM_REPORTED, packgeName);
    }

    public static void logSearchType(int searchType) {
        // TODO:waiting for search history implementation, it's one of the search types.
        DocumentsStatsLog.logSearchType(searchType);
        DocumentsStatsLog.write(DocumentsStatsLog.DOCS_UI_SEARCH_TYPE_REPORTED, searchType);
    }

    public static void logSearchMode(boolean isKeywordSearch, boolean isChipsSearch) {
        DocumentsStatsLog.logSearchMode(getSearchMode(isKeywordSearch, isChipsSearch));
        DocumentsStatsLog.write(DocumentsStatsLog.DOCS_UI_SEARCH_MODE_REPORTED,
                getSearchMode(isKeywordSearch, isChipsSearch));
    }

    public static void logPickResult(PickResult result) {
        DocumentsStatsLog.logFilePick(
        DocumentsStatsLog.write(
                DocumentsStatsLog.DOCS_UI_PICK_RESULT_REPORTED,
                result.getActionCount(),
                result.getDuration(),
                result.getFileCount(),
@@ -330,7 +350,7 @@ public final class Metrics {
        }
        @MetricConsts.MetricsAuth final int authority = isInternal
                ? MetricConsts.AUTH_STORAGE_INTERNAL : MetricConsts.AUTH_STORAGE_EXTERNAL;
        DocumentsStatsLog.logFileOperationFailure(authority, subFileOp);
        DocumentsStatsLog.write(DocumentsStatsLog.DOCS_UI_FILE_OP_FAILURE, authority, subFileOp);
    }

    /**
+1 −3
Original line number Diff line number Diff line
@@ -16,8 +16,6 @@

package com.android.documentsui;

import android.util.DocumentsStatsLog;

/**
 * Methods for logging scoped directory access metrics.
 */
@@ -25,6 +23,6 @@ public final class ScopedAccessMetrics {
    private static final String TAG = "ScopedAccessMetrics";

    public static void logInvalidScopedAccessRequest(@MetricConsts.InvalidScopedAccess int type) {
        DocumentsStatsLog.logInvalidScopedAccessRequest(type);
        DocumentsStatsLog.write(DocumentsStatsLog.DOCS_UI_INVALID_SCOPED_ACCESS_REQUEST, type);
    }
}