Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 38b9216e authored by Sunny Goyal's avatar Sunny Goyal Committed by Automerger Merge Worker
Browse files

Merge "Dumping view capture directly to file instead of loading it all in...

Merge "Dumping view capture directly to file instead of loading it all in memory" into tm-qpr-dev am: 68ef8bf3

Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/apps/Launcher3/+/19536173



Change-Id: I4abcac5302f53bf1f64695335093d885e0be42f8
Signed-off-by: default avatarAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
parents d6142daa 68ef8bf3
Loading
Loading
Loading
Loading
+4 −1
Original line number Diff line number Diff line
@@ -3027,7 +3027,10 @@ public class Launcher extends StatefulActivity<LauncherState>
        writer.println(prefix + "\tmAppWidgetHost.isListening: " + mAppWidgetHost.isListening());

        if (mViewCapture != null) {
            writer.println(prefix + "\tmViewCapture: " + mViewCapture.dumpToString());
            writer.print(prefix + "\tmViewCapture: ");
            writer.flush();
            mViewCapture.dump(fd);
            writer.println();
        }

        // Extra logging for general debugging
+11 −4
Original line number Diff line number Diff line
@@ -21,6 +21,7 @@ import android.os.Looper;
import android.os.SystemClock;
import android.os.Trace;
import android.util.Base64;
import android.util.Base64OutputStream;
import android.util.Log;
import android.view.View;
import android.view.ViewGroup;
@@ -32,6 +33,9 @@ import com.android.launcher3.view.ViewCaptureData.ExportedData;
import com.android.launcher3.view.ViewCaptureData.FrameData;
import com.android.launcher3.view.ViewCaptureData.ViewNode;

import java.io.FileDescriptor;
import java.io.FileOutputStream;
import java.io.OutputStream;
import java.util.concurrent.FutureTask;

/**
@@ -73,7 +77,7 @@ public class ViewCapture implements OnDrawListener {
    /**
     * Creates a proto of all the data captured so far.
     */
    public String dumpToString() {
    public void dump(FileDescriptor out) {
        Handler handler = mRoot.getHandler();
        if (handler == null) {
            handler = Executors.MAIN_EXECUTOR.getHandler();
@@ -84,12 +88,15 @@ public class ViewCapture implements OnDrawListener {
        } else {
            handler.post(task);
        }
        try {
            return Base64.encodeToString(task.get().toByteArray(),
        try (OutputStream os = new FileOutputStream(out)) {
            ExportedData data = task.get();
            Base64OutputStream encodedOS = new Base64OutputStream(os,
                    Base64.NO_CLOSE | Base64.NO_PADDING | Base64.NO_WRAP);
            data.writeTo(encodedOS);
            encodedOS.close();
            os.flush();
        } catch (Exception e) {
            Log.e(TAG, "Error capturing proto", e);
            return "--error--";
        }
    }