Loading src/com/android/documentsui/Metrics.java +24 −0 Original line number Diff line number Diff line Loading @@ -85,6 +85,8 @@ public final class Metrics { = "docsui_external_storage_fileop_failure"; private static final String COUNT_MTP_FILEOP_FAILURE = "docsui_mtp_fileop_failure"; private static final String COUNT_OTHER_FILEOP_FAILURE = "docsui_other_fileop_failure"; private static final String COUNT_FILE_COPIED = "docsui_file_copied"; private static final String COUNT_FILE_MOVED = "docsui_file_moved"; // Indices for bucketing roots in the roots histogram. "Other" is the catch-all index for any // root that is not explicitly recognized by the Metrics code (see {@link Loading Loading @@ -352,6 +354,16 @@ public final class Metrics { @Retention(RetentionPolicy.SOURCE) public @interface UserAction {} // Codes representing different approaches to copy/move a document. OPMODE_PROVIDER indicates // it's an optimized operation provided by providers; OPMODE_CONVERTED means it's converted from // a virtual file; and OPMODE_CONVENTIONAL means it's byte copied. public static final int OPMODE_PROVIDER = 1; public static final int OPMODE_CONVERTED = 2; public static final int OPMODE_CONVENTIONAL = 3; @IntDef({OPMODE_PROVIDER, OPMODE_CONVERTED, OPMODE_CONVENTIONAL}) @Retention(RetentionPolicy.SOURCE) public @interface FileOpMode {} // Codes representing different menu actions. These are used for bucketing stats in the // COUNT_MENU_ACTION histogram. // Do not change or rearrange these values, that will break historical data. Only add to the Loading Loading @@ -514,6 +526,18 @@ public final class Metrics { } } public static void logFileOperated( Context context, @OpType int operationType, @FileOpMode int approach) { switch (operationType) { case FileOperationService.OPERATION_COPY: logHistogram(context, COUNT_FILE_COPIED, approach); break; case FileOperationService.OPERATION_MOVE: logHistogram(context, COUNT_FILE_MOVED, approach); break; } } /** * Logs create directory operation. It is a part of file operation stats. We do not * differentiate between internal and external locations, all create directory operations are Loading src/com/android/documentsui/services/CopyJob.java +8 −1 Original line number Diff line number Diff line Loading @@ -28,7 +28,6 @@ import static com.android.documentsui.base.Shared.DEBUG; import static com.android.documentsui.services.FileOperationService.EXTRA_DIALOG_TYPE; import static com.android.documentsui.services.FileOperationService.EXTRA_OPERATION_TYPE; import static com.android.documentsui.services.FileOperationService.EXTRA_FAILED_DOCS; import static com.android.documentsui.services.FileOperationService.EXTRA_SRC_LIST; import static com.android.documentsui.services.FileOperationService.OPERATION_COPY; import android.annotation.StringRes; Loading Loading @@ -348,6 +347,8 @@ class CopyJob extends ResolvedResourcesJob { try { if (DocumentsContract.copyDocument(getClient(src), src.derivedUri, dstDirInfo.derivedUri) != null) { Metrics.logFileOperated( appContext, operationType, Metrics.OPMODE_PROVIDER); return; } } catch (RemoteException | RuntimeException e) { Loading Loading @@ -540,6 +541,9 @@ class CopyJob extends ResolvedResourcesJob { throw new ResourceException("Failed to open a file input stream for %s due " + "an exception.", src.derivedUri, e); } Metrics.logFileOperated( appContext, operationType, Metrics.OPMODE_CONVERTED); } else { try { srcFile = getClient(src).openFile(src.derivedUri, "r", canceller); Loading @@ -550,6 +554,9 @@ class CopyJob extends ResolvedResourcesJob { "Failed to open a file for %s due to an exception.", src.derivedUri, e); } in = new ParcelFileDescriptor.AutoCloseInputStream(srcFile); Metrics.logFileOperated( appContext, operationType, Metrics.OPMODE_CONVENTIONAL); } try { Loading src/com/android/documentsui/services/MoveJob.java +2 −0 Original line number Diff line number Diff line Loading @@ -147,6 +147,8 @@ final class MoveJob extends CopyJob { if (DocumentsContract.moveDocument(getClient(src), src.derivedUri, srcParent != null ? srcParent.derivedUri : mSrcParent.derivedUri, dest.derivedUri) != null) { Metrics.logFileOperated( appContext, operationType, Metrics.OPMODE_PROVIDER); return; } } catch (RemoteException | RuntimeException e) { Loading Loading
src/com/android/documentsui/Metrics.java +24 −0 Original line number Diff line number Diff line Loading @@ -85,6 +85,8 @@ public final class Metrics { = "docsui_external_storage_fileop_failure"; private static final String COUNT_MTP_FILEOP_FAILURE = "docsui_mtp_fileop_failure"; private static final String COUNT_OTHER_FILEOP_FAILURE = "docsui_other_fileop_failure"; private static final String COUNT_FILE_COPIED = "docsui_file_copied"; private static final String COUNT_FILE_MOVED = "docsui_file_moved"; // Indices for bucketing roots in the roots histogram. "Other" is the catch-all index for any // root that is not explicitly recognized by the Metrics code (see {@link Loading Loading @@ -352,6 +354,16 @@ public final class Metrics { @Retention(RetentionPolicy.SOURCE) public @interface UserAction {} // Codes representing different approaches to copy/move a document. OPMODE_PROVIDER indicates // it's an optimized operation provided by providers; OPMODE_CONVERTED means it's converted from // a virtual file; and OPMODE_CONVENTIONAL means it's byte copied. public static final int OPMODE_PROVIDER = 1; public static final int OPMODE_CONVERTED = 2; public static final int OPMODE_CONVENTIONAL = 3; @IntDef({OPMODE_PROVIDER, OPMODE_CONVERTED, OPMODE_CONVENTIONAL}) @Retention(RetentionPolicy.SOURCE) public @interface FileOpMode {} // Codes representing different menu actions. These are used for bucketing stats in the // COUNT_MENU_ACTION histogram. // Do not change or rearrange these values, that will break historical data. Only add to the Loading Loading @@ -514,6 +526,18 @@ public final class Metrics { } } public static void logFileOperated( Context context, @OpType int operationType, @FileOpMode int approach) { switch (operationType) { case FileOperationService.OPERATION_COPY: logHistogram(context, COUNT_FILE_COPIED, approach); break; case FileOperationService.OPERATION_MOVE: logHistogram(context, COUNT_FILE_MOVED, approach); break; } } /** * Logs create directory operation. It is a part of file operation stats. We do not * differentiate between internal and external locations, all create directory operations are Loading
src/com/android/documentsui/services/CopyJob.java +8 −1 Original line number Diff line number Diff line Loading @@ -28,7 +28,6 @@ import static com.android.documentsui.base.Shared.DEBUG; import static com.android.documentsui.services.FileOperationService.EXTRA_DIALOG_TYPE; import static com.android.documentsui.services.FileOperationService.EXTRA_OPERATION_TYPE; import static com.android.documentsui.services.FileOperationService.EXTRA_FAILED_DOCS; import static com.android.documentsui.services.FileOperationService.EXTRA_SRC_LIST; import static com.android.documentsui.services.FileOperationService.OPERATION_COPY; import android.annotation.StringRes; Loading Loading @@ -348,6 +347,8 @@ class CopyJob extends ResolvedResourcesJob { try { if (DocumentsContract.copyDocument(getClient(src), src.derivedUri, dstDirInfo.derivedUri) != null) { Metrics.logFileOperated( appContext, operationType, Metrics.OPMODE_PROVIDER); return; } } catch (RemoteException | RuntimeException e) { Loading Loading @@ -540,6 +541,9 @@ class CopyJob extends ResolvedResourcesJob { throw new ResourceException("Failed to open a file input stream for %s due " + "an exception.", src.derivedUri, e); } Metrics.logFileOperated( appContext, operationType, Metrics.OPMODE_CONVERTED); } else { try { srcFile = getClient(src).openFile(src.derivedUri, "r", canceller); Loading @@ -550,6 +554,9 @@ class CopyJob extends ResolvedResourcesJob { "Failed to open a file for %s due to an exception.", src.derivedUri, e); } in = new ParcelFileDescriptor.AutoCloseInputStream(srcFile); Metrics.logFileOperated( appContext, operationType, Metrics.OPMODE_CONVENTIONAL); } try { Loading
src/com/android/documentsui/services/MoveJob.java +2 −0 Original line number Diff line number Diff line Loading @@ -147,6 +147,8 @@ final class MoveJob extends CopyJob { if (DocumentsContract.moveDocument(getClient(src), src.derivedUri, srcParent != null ? srcParent.derivedUri : mSrcParent.derivedUri, dest.derivedUri) != null) { Metrics.logFileOperated( appContext, operationType, Metrics.OPMODE_PROVIDER); return; } } catch (RemoteException | RuntimeException e) { Loading