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

Commit d65de0ce authored by android-build-team Robot's avatar android-build-team Robot
Browse files

Snap for 5817401 from 776d0367 to qt-c2f2-release

Change-Id: Ic72fbe830ed6b6e2f5f8819fa66166f9b21619bb
parents 9d7a5eaa 776d0367
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -32,7 +32,7 @@ import android.net.Uri;
 * avoid unintentionally granting requests for new permissions, you should pass the
 * specific permissions you intend to grant to {@link #grant(String[]) grant()},
 * and avoid writing code like this example:
 * <pre>
 * <pre class="prettyprint">
 * permissionRequest.grant(permissionRequest.getResources())  // This is wrong!!!
 * </pre>
 * See the WebView's release notes for information about new protected resources.
+11 −9
Original line number Diff line number Diff line
@@ -519,15 +519,17 @@ public class WebChromeClient {
         * may not be supported and applications wishing to support these sources
         * or more advanced file operations should build their own Intent.
         *
         * <pre>
         * How to use:
         * 1. Build an intent using {@link #createIntent}
         * 2. Fire the intent using {@link android.app.Activity#startActivityForResult}.
         * 3. Check for ActivityNotFoundException and take a user friendly action if thrown.
         * 4. Listen the result using {@link android.app.Activity#onActivityResult}
         * 5. Parse the result using {@link #parseResult} only if media capture was not requested.
         * 6. Send the result using filePathCallback of {@link WebChromeClient#onShowFileChooser}
         * </pre>
         * <p>How to use:
         * <ol>
         *   <li>Build an intent using {@link #createIntent}</li>
         *   <li>Fire the intent using {@link android.app.Activity#startActivityForResult}.</li>
         *   <li>Check for ActivityNotFoundException and take a user friendly action if thrown.</li>
         *   <li>Listen the result using {@link android.app.Activity#onActivityResult}</li>
         *   <li>Parse the result using {@link #parseResult} only if media capture was not
         *   requested.</li>
         *   <li>Send the result using filePathCallback of {@link
         *   WebChromeClient#onShowFileChooser}</li>
         * </ol>
         *
         * @return an Intent that supports basic file chooser sources.
         */
+2 −2
Original line number Diff line number Diff line
@@ -762,7 +762,7 @@ public class WebView extends AbsoluteLayout
     * encoded. If the data is base64 encoded, the value of the encoding
     * parameter must be {@code "base64"}. HTML can be encoded with {@link
     * android.util.Base64#encodeToString(byte[],int)} like so:
     * <pre>
     * <pre class="prettyprint">
     * String unencodedHtml =
     *     "&lt;html&gt;&lt;body&gt;'%28' is the code for '('&lt;/body&gt;&lt;/html&gt;";
     * String encodedHtml = Base64.encodeToString(unencodedHtml.getBytes(), Base64.NO_PADDING);
@@ -1854,7 +1854,7 @@ public class WebView extends AbsoluteLayout
     * important security note below for implications.
     * <p> Note that injected objects will not appear in JavaScript until the page is next
     * (re)loaded. JavaScript should be enabled before injecting the object. For example:
     * <pre>
     * <pre class="prettyprint">
     * class JsObject {
     *    {@literal @}JavascriptInterface
     *    public String toString() { return "injectedObject"; }
+25 −3
Original line number Diff line number Diff line
@@ -146,7 +146,13 @@ public class EglHelper {
     * @return true if EglSurface is ready.
     */
    public boolean createEglSurface(SurfaceHolder surfaceHolder) {
        if (hasEglDisplay()) {
            mEglSurface = eglCreateWindowSurface(mEglDisplay, mEglConfig, surfaceHolder, null, 0);
        } else {
            Log.w(TAG, "mEglDisplay is null");
            return false;
        }

        if (mEglSurface == null || mEglSurface == EGL_NO_SURFACE) {
            Log.w(TAG, "createWindowSurface failed: " + GLUtils.getEGLErrorString(eglGetError()));
            return false;
@@ -186,7 +192,13 @@ public class EglHelper {
    public boolean createEglContext() {
        int[] attrib_list = new int[] {EGL_CONTEXT_CLIENT_VERSION, 2,
                EGL_CONTEXT_PRIORITY_LEVEL_IMG, EGL_CONTEXT_PRIORITY_LOW_IMG, EGL_NONE};
        if (hasEglDisplay()) {
            mEglContext = eglCreateContext(mEglDisplay, mEglConfig, EGL_NO_CONTEXT, attrib_list, 0);
        } else {
            Log.w(TAG, "mEglDisplay is null");
            return false;
        }

        if (mEglContext == EGL_NO_CONTEXT) {
            Log.w(TAG, "eglCreateContext failed: " + GLUtils.getEGLErrorString(eglGetError()));
            return false;
@@ -212,6 +224,14 @@ public class EglHelper {
        return mEglContext != null;
    }

    /**
     * Check if we have EglDisplay.
     * @return true if EglDisplay is ready.
     */
    public boolean hasEglDisplay() {
        return mEglDisplay != null;
    }

    /**
     * Swap buffer to display.
     * @return true if swap successfully.
@@ -235,7 +255,9 @@ public class EglHelper {
        if (hasEglContext()) {
            destroyEglContext();
        }
        if (hasEglDisplay()) {
            eglTerminate(mEglDisplay);
        }
        mEglReady = false;
    }

+67 −0
Original line number Diff line number Diff line
/*
 * Copyright (C) 2019 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 com.android.systemui.glwallpaper;

import static org.junit.Assert.*;
import static org.mockito.Mockito.RETURNS_DEFAULTS;
import static org.mockito.Mockito.mock;

import android.testing.AndroidTestingRunner;
import android.testing.TestableLooper;
import android.view.SurfaceHolder;

import androidx.test.filters.SmallTest;

import com.android.systemui.SysuiTestCase;

import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;


@SmallTest
@RunWith(AndroidTestingRunner.class)
@TestableLooper.RunWithLooper
public class EglHelperTest extends SysuiTestCase {

    @Mock
    private EglHelper mEglHelper;
    @Mock
    private SurfaceHolder mSurfaceHolder;

    @Before
    public void setUp() throws Exception {
        mEglHelper = mock(EglHelper.class, RETURNS_DEFAULTS);
        mSurfaceHolder = mock(SurfaceHolder.class, RETURNS_DEFAULTS);
    }

    @Test
    public void testInit_finish() {
        mEglHelper.init(mSurfaceHolder);
        mEglHelper.finish();
    }

    @Test
    public void testFinish_shouldNotCrash() {
        assertFalse(mEglHelper.hasEglDisplay());
        assertFalse(mEglHelper.hasEglSurface());
        assertFalse(mEglHelper.hasEglContext());

        mEglHelper.finish();
    }
}
Loading