1 // Copyright 2017 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 package org.chromium.base.process_launcher; 6 7 import android.os.Parcel; 8 import android.os.ParcelFileDescriptor; 9 import android.os.Parcelable; 10 11 import org.chromium.base.annotations.MainDex; 12 import org.chromium.base.annotations.UsedByReflection; 13 14 import javax.annotation.concurrent.Immutable; 15 16 /** 17 * Parcelable class that contains file descriptor and file region information to 18 * be passed to child processes. 19 */ 20 @Immutable 21 @MainDex 22 @UsedByReflection("child_process_launcher_helper_android.cc") 23 public final class FileDescriptorInfo implements Parcelable { 24 public final int id; 25 public final ParcelFileDescriptor fd; 26 public final long offset; 27 public final long size; 28 FileDescriptorInfo(int id, ParcelFileDescriptor fd, long offset, long size)29 public FileDescriptorInfo(int id, ParcelFileDescriptor fd, long offset, long size) { 30 this.id = id; 31 this.fd = fd; 32 this.offset = offset; 33 this.size = size; 34 } 35 FileDescriptorInfo(Parcel in)36 FileDescriptorInfo(Parcel in) { 37 id = in.readInt(); 38 fd = in.readParcelable(ParcelFileDescriptor.class.getClassLoader()); 39 offset = in.readLong(); 40 size = in.readLong(); 41 } 42 43 @Override describeContents()44 public int describeContents() { 45 return CONTENTS_FILE_DESCRIPTOR; 46 } 47 48 @Override writeToParcel(Parcel dest, int flags)49 public void writeToParcel(Parcel dest, int flags) { 50 dest.writeInt(id); 51 dest.writeParcelable(fd, CONTENTS_FILE_DESCRIPTOR); 52 dest.writeLong(offset); 53 dest.writeLong(size); 54 } 55 56 public static final Parcelable.Creator<FileDescriptorInfo> CREATOR = 57 new Parcelable.Creator<FileDescriptorInfo>() { 58 @Override 59 public FileDescriptorInfo createFromParcel(Parcel in) { 60 return new FileDescriptorInfo(in); 61 } 62 63 @Override 64 public FileDescriptorInfo[] newArray(int size) { 65 return new FileDescriptorInfo[size]; 66 } 67 }; 68 } 69