159 lines
6.2 KiB
Java
159 lines
6.2 KiB
Java
/*
|
|
* Copyright (C) 2024 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 android.graphics.pdf.logging;
|
|
|
|
import android.annotation.IntDef;
|
|
import android.graphics.pdf.PdfStatsLog;
|
|
|
|
import java.lang.annotation.Retention;
|
|
import java.lang.annotation.RetentionPolicy;
|
|
|
|
/**
|
|
* Class to log all the PDFViewer event related data to statsD.
|
|
*
|
|
* @hide
|
|
*/
|
|
public class PdfEventLogger {
|
|
|
|
private final int mProcessId;
|
|
private final long mDocId;
|
|
|
|
/**
|
|
* Creates a new object for the PdfEventLogger class.
|
|
*
|
|
* @param processId the uid of the process which is calling PdfViewer APIs.
|
|
* @param docId Unique identifier for a particular loaded document.
|
|
*/
|
|
public PdfEventLogger(int processId, long docId) {
|
|
mProcessId = processId;
|
|
mDocId = docId;
|
|
}
|
|
|
|
/**
|
|
* Logs data related to Pdf search events to statsD.
|
|
*
|
|
* @param loadDurationMillis Time take to load the search result.
|
|
* @param queryLength The number of characters in the search query.
|
|
* @param queryPageNumber The page number of the query.
|
|
* @param apiResponse The response type of the search API call.
|
|
* @param numPages The number of pages in the pdf being searched
|
|
* @param matchCount The number of matches for a particular query.
|
|
* @see com.android.os.pdf.PdfSearchReported
|
|
*/
|
|
public void logSearchReportedEvent(
|
|
long loadDurationMillis,
|
|
int queryLength,
|
|
int queryPageNumber,
|
|
@ApiResponseTypes.ApiResponseType int apiResponse,
|
|
int numPages,
|
|
int matchCount) {
|
|
PdfStatsLog.write(PdfStatsLog.PDF_SEARCH_REPORTED, mProcessId, loadDurationMillis,
|
|
queryLength, queryPageNumber, apiResponse, mDocId, numPages, matchCount);
|
|
}
|
|
|
|
/**
|
|
* Logs data related to Pdf load events to statsD.
|
|
*
|
|
* @param loadDurationMillis the time taken to load a PDF document in milliseconds.
|
|
* @param pdfSizeInKb The size of the PDF document which is loaded
|
|
* @param pdfLoadResult The result/ status of a PDF document which is loaded
|
|
* @param linearizationType The linearization type of the PDF document which is loaded
|
|
* @param numPages The number of pages in PDF document which is loaded
|
|
* @see com.android.os.pdf.PdfLoadReported
|
|
*/
|
|
public void logPdfLoadReportedEvent(
|
|
long loadDurationMillis,
|
|
float pdfSizeInKb,
|
|
@PdfLoadResults.PdfLoadResult int pdfLoadResult,
|
|
@LinearizationTypes.LinearizationType int linearizationType,
|
|
int numPages) {
|
|
PdfStatsLog.write(PdfStatsLog.PDF_LOAD_REPORTED, mProcessId, loadDurationMillis,
|
|
pdfSizeInKb, pdfLoadResult, linearizationType, numPages, mDocId);
|
|
}
|
|
|
|
/**
|
|
* Logs data related to Pdf API usage events to statsD.
|
|
*
|
|
* @param apiType The type of API being called.
|
|
* @param apiResponse The response type of the API call.
|
|
* @see com.android.os.pdf.PdfApiUsageReported
|
|
*/
|
|
public void logPdfApiUsageReportedEvent(
|
|
@ApiTypes.ApiType int apiType,
|
|
@ApiResponseTypes.ApiResponseType int apiResponse) {
|
|
PdfStatsLog.write(PdfStatsLog.PDF_API_USAGE_REPORTED, mProcessId, mDocId, apiType,
|
|
apiResponse);
|
|
}
|
|
|
|
// Represent the linearization type of the PDF document.
|
|
public static final class LinearizationTypes {
|
|
public static final int UNKNOWN = PdfStatsLog.PDF_LOAD_REPORTED__TYPE__UNKNOWN_TYPE;
|
|
public static final int LINEARIZED = PdfStatsLog.PDF_LOAD_REPORTED__TYPE__LINEARIZED_TYPE;
|
|
public static final int NON_LINEARIZED =
|
|
PdfStatsLog.PDF_LOAD_REPORTED__TYPE__NON_LINEARIZED_TYPE;
|
|
|
|
@IntDef({UNKNOWN, LINEARIZED, NON_LINEARIZED})
|
|
@Retention(RetentionPolicy.RUNTIME)
|
|
public @interface LinearizationType {
|
|
}
|
|
}
|
|
|
|
// Represents the status of the PDF load called on a document.
|
|
public static final class PdfLoadResults {
|
|
public static final int UNKNOWN =
|
|
PdfStatsLog.PDF_LOAD_REPORTED__LOAD_RESULT__RESULT_UNKNOWN;
|
|
public static final int LOADED = PdfStatsLog.PDF_LOAD_REPORTED__LOAD_RESULT__RESULT_LOADED;
|
|
public static final int ERROR = PdfStatsLog.PDF_LOAD_REPORTED__LOAD_RESULT__RESULT_ERROR;
|
|
public static final int WRONG_PASSWORD =
|
|
PdfStatsLog.PDF_LOAD_REPORTED__LOAD_RESULT__RESULT_WRONG_PASSWORD;
|
|
|
|
@IntDef({UNKNOWN, LOADED, ERROR, WRONG_PASSWORD})
|
|
@Retention(RetentionPolicy.RUNTIME)
|
|
public @interface PdfLoadResult {
|
|
}
|
|
}
|
|
|
|
// Represents the types of PdfViewer API being called.
|
|
public static final class ApiTypes {
|
|
public static final int UNKNOWN =
|
|
PdfStatsLog.PDF_API_USAGE_REPORTED__API_TYPE__API_TYPE_UNKNOWN;
|
|
public static final int SELECT_CONTENT =
|
|
PdfStatsLog.PDF_API_USAGE_REPORTED__API_TYPE__API_TYPE_SELECT_CONTENT;
|
|
|
|
@IntDef({UNKNOWN, SELECT_CONTENT})
|
|
@Retention(RetentionPolicy.RUNTIME)
|
|
public @interface ApiType {
|
|
}
|
|
}
|
|
|
|
// Represents the response of the API (success/failure) call.
|
|
public static final class ApiResponseTypes {
|
|
public static final int UNKNOWN =
|
|
PdfStatsLog.PDF_API_USAGE_REPORTED__API_RESPONSE_STATUS__RESPONSE_UNKNOWN;
|
|
public static final int SUCCESS =
|
|
PdfStatsLog.PDF_API_USAGE_REPORTED__API_RESPONSE_STATUS__RESPONSE_SUCCESS;
|
|
public static final int FAILURE =
|
|
PdfStatsLog.PDF_API_USAGE_REPORTED__API_RESPONSE_STATUS__RESPONSE_FAILURE;
|
|
|
|
@IntDef({UNKNOWN, SUCCESS, FAILURE})
|
|
@Retention(RetentionPolicy.RUNTIME)
|
|
public @interface ApiResponseType {
|
|
}
|
|
}
|
|
|
|
}
|