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

Commit ae380fb8 authored by Chia-chi Yeh's avatar Chia-chi Yeh
Browse files

VpnDialogs: fix screen flickering when popping up dialogs.

Bug: 5699057
Change-Id: Iad1b32cafa32f98b27b6c96a63e1e9d97908983a
parent eda775cc
Loading
Loading
Loading
Loading
+2 −2
Original line number Original line Diff line number Diff line
@@ -5,7 +5,7 @@
    <application android:label="VpnDialogs"
    <application android:label="VpnDialogs"
            android:allowBackup="false" >
            android:allowBackup="false" >
        <activity android:name=".ConfirmDialog"
        <activity android:name=".ConfirmDialog"
                android:theme="@style/transparent">
                android:theme="@*android:style/Theme.Holo.Dialog.Alert">
            <intent-filter>
            <intent-filter>
                <action android:name="android.intent.action.MAIN"/>
                <action android:name="android.intent.action.MAIN"/>
                <category android:name="android.intent.category.DEFAULT"/>
                <category android:name="android.intent.category.DEFAULT"/>
@@ -13,7 +13,7 @@
        </activity>
        </activity>


        <activity android:name=".ManageDialog"
        <activity android:name=".ManageDialog"
                android:theme="@style/transparent"
                android:theme="@*android:style/Theme.Holo.Dialog.Alert"
                android:noHistory="true">
                android:noHistory="true">
            <intent-filter>
            <intent-filter>
                <action android:name="android.intent.action.MAIN"/>
                <action android:name="android.intent.action.MAIN"/>
+0 −7
Original line number Original line Diff line number Diff line
@@ -15,13 +15,6 @@
-->
-->


<resources>
<resources>

    <style name="transparent">
        <item name="android:windowBackground">@android:color/transparent</item>
        <item name="android:windowNoTitle">true</item>
        <item name="android:windowIsFloating">true</item>
    </style>

    <style name="label">
    <style name="label">
        <item name="android:gravity">center_vertical|right</item>
        <item name="android:gravity">center_vertical|right</item>
        <item name="android:paddingRight">2mm</item>
        <item name="android:paddingRight">2mm</item>
+17 −29
Original line number Original line Diff line number Diff line
@@ -16,8 +16,6 @@


package com.android.vpndialogs;
package com.android.vpndialogs;


import android.app.Activity;
import android.app.AlertDialog;
import android.content.Context;
import android.content.Context;
import android.content.DialogInterface;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.Intent;
@@ -32,15 +30,16 @@ import android.widget.CompoundButton;
import android.widget.ImageView;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.TextView;


public class ConfirmDialog extends Activity implements CompoundButton.OnCheckedChangeListener,
import com.android.internal.app.AlertActivity;
        DialogInterface.OnClickListener, DialogInterface.OnDismissListener {

public class ConfirmDialog extends AlertActivity implements
        CompoundButton.OnCheckedChangeListener, DialogInterface.OnClickListener {
    private static final String TAG = "VpnConfirm";
    private static final String TAG = "VpnConfirm";


    private String mPackage;
    private String mPackage;


    private IConnectivityManager mService;
    private IConnectivityManager mService;


    private AlertDialog mDialog;
    private Button mButton;
    private Button mButton;


    @Override
    @Override
@@ -67,18 +66,17 @@ public class ConfirmDialog extends Activity implements CompoundButton.OnCheckedC
                    getString(R.string.prompt, app.loadLabel(pm)));
                    getString(R.string.prompt, app.loadLabel(pm)));
            ((CompoundButton) view.findViewById(R.id.check)).setOnCheckedChangeListener(this);
            ((CompoundButton) view.findViewById(R.id.check)).setOnCheckedChangeListener(this);


            mDialog = new AlertDialog.Builder(this)
            mAlertParams.mIconId = android.R.drawable.ic_dialog_alert;
                    .setIcon(android.R.drawable.ic_dialog_alert)
            mAlertParams.mTitle = getText(android.R.string.dialog_alert_title);
                    .setTitle(android.R.string.dialog_alert_title)
            mAlertParams.mPositiveButtonText = getText(android.R.string.ok);
                    .setView(view)
            mAlertParams.mPositiveButtonListener = this;
                    .setPositiveButton(android.R.string.ok, this)
            mAlertParams.mNegativeButtonText = getText(android.R.string.cancel);
                    .setNegativeButton(android.R.string.cancel, this)
            mAlertParams.mNegativeButtonListener = this;
                    .setCancelable(false)
            mAlertParams.mView = view;
                    .create();
            setupAlert();
            mDialog.setOnDismissListener(this);

            mDialog.show();
            getWindow().setCloseOnTouchOutside(false);

            mButton = mAlert.getButton(DialogInterface.BUTTON_POSITIVE);
            mButton = mDialog.getButton(DialogInterface.BUTTON_POSITIVE);
            mButton.setEnabled(false);
            mButton.setEnabled(false);
        } catch (Exception e) {
        } catch (Exception e) {
            Log.e(TAG, "onResume", e);
            Log.e(TAG, "onResume", e);
@@ -87,12 +85,7 @@ public class ConfirmDialog extends Activity implements CompoundButton.OnCheckedC
    }
    }


    @Override
    @Override
    protected void onPause() {
    public void onBackPressed() {
        super.onPause();
        if (mDialog != null) {
            mDialog.setOnDismissListener(null);
            mDialog.dismiss();
        }
    }
    }


    @Override
    @Override
@@ -103,16 +96,11 @@ public class ConfirmDialog extends Activity implements CompoundButton.OnCheckedC
    @Override
    @Override
    public void onClick(DialogInterface dialog, int which) {
    public void onClick(DialogInterface dialog, int which) {
        try {
        try {
            if (which == AlertDialog.BUTTON_POSITIVE && mService.prepareVpn(null, mPackage)) {
            if (which == DialogInterface.BUTTON_POSITIVE && mService.prepareVpn(null, mPackage)) {
                setResult(RESULT_OK);
                setResult(RESULT_OK);
            }
            }
        } catch (Exception e) {
        } catch (Exception e) {
            Log.e(TAG, "onClick", e);
            Log.e(TAG, "onClick", e);
        }
        }
    }
    }

    @Override
    public void onDismiss(DialogInterface dialog) {
        finish();
    }
}
}
+20 −35
Original line number Original line Diff line number Diff line
@@ -16,8 +16,6 @@


package com.android.vpndialogs;
package com.android.vpndialogs;


import android.app.Activity;
import android.app.AlertDialog;
import android.content.Context;
import android.content.Context;
import android.content.DialogInterface;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.Intent;
@@ -35,20 +33,20 @@ import android.widget.CompoundButton;
import android.widget.ImageView;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.TextView;


import com.android.internal.app.AlertActivity;
import com.android.internal.net.VpnConfig;
import com.android.internal.net.VpnConfig;


import java.io.DataInputStream;
import java.io.DataInputStream;
import java.io.FileInputStream;
import java.io.FileInputStream;


public class ManageDialog extends Activity implements Handler.Callback,
public class ManageDialog extends AlertActivity implements
        DialogInterface.OnClickListener, DialogInterface.OnDismissListener {
        DialogInterface.OnClickListener, Handler.Callback {
    private static final String TAG = "VpnManage";
    private static final String TAG = "VpnManage";


    private VpnConfig mConfig;
    private VpnConfig mConfig;


    private IConnectivityManager mService;
    private IConnectivityManager mService;


    private AlertDialog mDialog;
    private TextView mDuration;
    private TextView mDuration;
    private TextView mDataTransmitted;
    private TextView mDataTransmitted;
    private TextView mDataReceived;
    private TextView mDataReceived;
@@ -80,31 +78,24 @@ public class ManageDialog extends Activity implements Handler.Callback,
            mDataReceived = (TextView) view.findViewById(R.id.data_received);
            mDataReceived = (TextView) view.findViewById(R.id.data_received);


            if (mConfig.user.equals(VpnConfig.LEGACY_VPN)) {
            if (mConfig.user.equals(VpnConfig.LEGACY_VPN)) {
                mDialog = new AlertDialog.Builder(this)
                mAlertParams.mIconId = android.R.drawable.ic_dialog_info;
                        .setIcon(android.R.drawable.ic_dialog_info)
                mAlertParams.mTitle = getText(R.string.legacy_title);
                        .setTitle(R.string.legacy_title)
                        .setView(view)
                        .setNeutralButton(R.string.disconnect, this)
                        .setNegativeButton(android.R.string.cancel, this)
                        .create();
            } else {
            } else {
                PackageManager pm = getPackageManager();
                PackageManager pm = getPackageManager();
                ApplicationInfo app = pm.getApplicationInfo(mConfig.user, 0);
                ApplicationInfo app = pm.getApplicationInfo(mConfig.user, 0);
                mDialog = new AlertDialog.Builder(this)
                mAlertParams.mIcon = app.loadIcon(pm);
                        .setIcon(app.loadIcon(pm))
                mAlertParams.mTitle = app.loadLabel(pm);
                        .setTitle(app.loadLabel(pm))
                        .setView(view)
                        .setNeutralButton(R.string.disconnect, this)
                        .setNegativeButton(android.R.string.cancel, this)
                        .create();
            }
            }

            if (mConfig.configureIntent != null) {
            if (mConfig.configureIntent != null) {
                mDialog.setButton(DialogInterface.BUTTON_POSITIVE,
                mAlertParams.mPositiveButtonText = getText(R.string.configure);
                        getText(R.string.configure), this);
                mAlertParams.mPositiveButtonListener = this;
            }
            }
            mDialog.setOnDismissListener(this);
            mAlertParams.mNeutralButtonText = getText(R.string.disconnect);
            mDialog.show();
            mAlertParams.mNeutralButtonListener = this;
            mAlertParams.mNegativeButtonText = getText(android.R.string.cancel);
            mAlertParams.mNegativeButtonListener = this;
            mAlertParams.mView = view;
            setupAlert();


            if (mHandler == null) {
            if (mHandler == null) {
                mHandler = new Handler(this);
                mHandler = new Handler(this);
@@ -119,18 +110,17 @@ public class ManageDialog extends Activity implements Handler.Callback,
    @Override
    @Override
    protected void onPause() {
    protected void onPause() {
        super.onPause();
        super.onPause();
        if (mDialog != null) {
        if (!isFinishing()) {
            mDialog.setOnDismissListener(null);
            finish();
            mDialog.dismiss();
        }
        }
    }
    }


    @Override
    @Override
    public void onClick(DialogInterface dialog, int which) {
    public void onClick(DialogInterface dialog, int which) {
        try {
        try {
            if (which == AlertDialog.BUTTON_POSITIVE) {
            if (which == DialogInterface.BUTTON_POSITIVE) {
                mConfig.configureIntent.send();
                mConfig.configureIntent.send();
            } else if (which == AlertDialog.BUTTON_NEUTRAL) {
            } else if (which == DialogInterface.BUTTON_NEUTRAL) {
                mService.prepareVpn(mConfig.user, VpnConfig.LEGACY_VPN);
                mService.prepareVpn(mConfig.user, VpnConfig.LEGACY_VPN);
            }
            }
        } catch (Exception e) {
        } catch (Exception e) {
@@ -139,16 +129,11 @@ public class ManageDialog extends Activity implements Handler.Callback,
        }
        }
    }
    }


    @Override
    public void onDismiss(DialogInterface dialog) {
        finish();
    }

    @Override
    @Override
    public boolean handleMessage(Message message) {
    public boolean handleMessage(Message message) {
        mHandler.removeMessages(0);
        mHandler.removeMessages(0);


        if (mDialog.isShowing()) {
        if (!isFinishing()) {
            if (mConfig.startTime != 0) {
            if (mConfig.startTime != 0) {
                long seconds = (SystemClock.elapsedRealtime() - mConfig.startTime) / 1000;
                long seconds = (SystemClock.elapsedRealtime() - mConfig.startTime) / 1000;
                mDuration.setText(String.format("%02d:%02d:%02d",
                mDuration.setText(String.format("%02d:%02d:%02d",