|  | /* | 
|  | * Copyright (C) 2020 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.view; | 
|  |  | 
|  | import android.graphics.FrameInfo; | 
|  | import android.os.IInputConstants; | 
|  |  | 
|  | /** | 
|  | * The timing information of events taking place in ViewRootImpl | 
|  | * @hide | 
|  | */ | 
|  | public class ViewFrameInfo { | 
|  | public long drawStart; | 
|  |  | 
|  |  | 
|  | // Various flags set to provide extra metadata about the current frame. See flag definitions | 
|  | // inside FrameInfo. | 
|  | // @see android.graphics.FrameInfo.FLAG_WINDOW_LAYOUT_CHANGED | 
|  | public long flags; | 
|  |  | 
|  | private int mInputEventId; | 
|  |  | 
|  | private int mViewsMeasuredCounts; | 
|  |  | 
|  | /** | 
|  | * Populate the missing fields using the data from ViewFrameInfo | 
|  | * @param frameInfo : the structure FrameInfo object to populate | 
|  | */ | 
|  | public void populateFrameInfo(FrameInfo frameInfo) { | 
|  | frameInfo.frameInfo[FrameInfo.FLAGS] |= flags; | 
|  | frameInfo.frameInfo[FrameInfo.DRAW_START] = drawStart; | 
|  | frameInfo.frameInfo[FrameInfo.INPUT_EVENT_ID] = mInputEventId; | 
|  | } | 
|  |  | 
|  | /** | 
|  | * Reset this data. Should typically be invoked after calling "populateFrameInfo". | 
|  | */ | 
|  | public void reset() { | 
|  | drawStart = 0; | 
|  | mInputEventId = IInputConstants.INVALID_INPUT_EVENT_ID; | 
|  | flags = 0; | 
|  | mViewsMeasuredCounts = 0; | 
|  | } | 
|  |  | 
|  | /** | 
|  | * Record the current time, and store it in 'drawStart' | 
|  | */ | 
|  | public void markDrawStart() { | 
|  | drawStart = System.nanoTime(); | 
|  | } | 
|  |  | 
|  | /** | 
|  | * Record the number of view being measured for the current frame. | 
|  | */ | 
|  | public int getAndIncreaseViewMeasuredCount() { | 
|  | return ++mViewsMeasuredCounts; | 
|  | } | 
|  |  | 
|  | /** | 
|  | * Assign the value for input event id | 
|  | * @param eventId the id of the input event | 
|  | */ | 
|  | public void setInputEvent(int eventId) { | 
|  | mInputEventId = eventId; | 
|  | } | 
|  | } |