script-astra/Android/Sdk/sources/android-35/android/graphics/pdf/logging/PdfEventLogger.java
localadmin 4380f00a78 init
2025-01-20 18:15:20 +03:00

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 {
}
}
}