Commit 2cf88859 authored by Jim Chen's avatar Jim Chen
Browse files

Bug 1395170 - Fix lint warnings/errors from BasicGeckoViewPrompt; r=droeh

Fix the following lint errors/warnings,

* Using inlined constants on older versions
  Add version check for usages of Intent.EXTRA_ALLOW_MULTIPLE and
  Intent.EXTRA_MIME_TYPES.

* Calling new methods on older versions
  Change usages of AlertDialog.Builder#setOnDismissListener to
  Dialog#setOnDismissListener instead.

* Missing recycle() calls
  Add missing TypedArray#recycle call

MozReview-Commit-ID: EwZFDKqoCjL
parent 378bd857
Loading
Loading
Loading
Loading
+58 −57
Original line number Diff line number Diff line
@@ -5,6 +5,7 @@

package org.mozilla.geckoview_example;

import android.annotation.TargetApi;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.ActivityNotFoundException;
@@ -106,14 +107,9 @@ final class BasicGeckoViewPrompt implements GeckoView.PromptDelegate {
        final AlertDialog.Builder builder = new AlertDialog.Builder(activity)
                .setTitle(title)
                .setMessage(msg)
                .setPositiveButton(android.R.string.ok, /* onClickListener */ null)
                .setOnDismissListener(new DialogInterface.OnDismissListener() {
                    @Override
                    public void onDismiss(final DialogInterface dialog) {
                        callback.dismiss();
                    }
                });
        addCheckbox(builder, /* parent */ null, callback).show();
                .setPositiveButton(android.R.string.ok, /* onClickListener */ null);
        createStandardDialog(addCheckbox(builder, /* parent */ null, callback),
                             callback).show();
    }

    public void promptForButton(final GeckoView view, final String title, final String msg,
@@ -126,13 +122,7 @@ final class BasicGeckoViewPrompt implements GeckoView.PromptDelegate {
        }
        final AlertDialog.Builder builder = new AlertDialog.Builder(activity)
                .setTitle(title)
                .setMessage(msg)
                .setOnDismissListener(new DialogInterface.OnDismissListener() {
                    @Override
                    public void onDismiss(final DialogInterface dialog) {
                        callback.dismiss();
                    }
                });
                .setMessage(msg);
        final DialogInterface.OnClickListener listener =
            new DialogInterface.OnClickListener() {
                @Override
@@ -157,18 +147,20 @@ final class BasicGeckoViewPrompt implements GeckoView.PromptDelegate {
        if (btnMsg[BUTTON_TYPE_NEGATIVE] != null) {
            builder.setNegativeButton(btnMsg[BUTTON_TYPE_NEGATIVE], listener);
        }
        addCheckbox(builder, /* parent */ null, callback).show();
        createStandardDialog(addCheckbox(builder, /* parent */ null, callback),
                             callback).show();
    }

    private int getViewPadding(final AlertDialog.Builder builder) {
        final TypedArray attr = builder.getContext().obtainStyledAttributes(
                new int[] { android.R.attr.listPreferredItemPaddingLeft });
        return attr.getDimensionPixelSize(0, 1);
        final int padding = attr.getDimensionPixelSize(0, 1);
        attr.recycle();
        return padding;
    }

    private LinearLayout addStandardLayout(final AlertDialog.Builder builder,
                                           final String title, final String msg,
                                           final AlertCallback callback) {
                                           final String title, final String msg) {
        final ScrollView scrollView = new ScrollView(builder.getContext());
        final LinearLayout container = new LinearLayout(builder.getContext());
        final int horizontalPadding = getViewPadding(builder);
@@ -179,14 +171,20 @@ final class BasicGeckoViewPrompt implements GeckoView.PromptDelegate {
        scrollView.addView(container);
        builder.setTitle(title)
               .setMessage(msg)
               .setOnDismissListener(new DialogInterface.OnDismissListener() {
               .setView(scrollView);
        return container;
    }

    private AlertDialog createStandardDialog(final AlertDialog.Builder builder,
                                             final AlertCallback callback) {
        final AlertDialog dialog = builder.create();
        dialog.setOnDismissListener(new DialogInterface.OnDismissListener() {
                    @Override
                    public void onDismiss(final DialogInterface dialog) {
                        callback.dismiss();
                    }
                })
               .setView(scrollView);
        return container;
                });
        return dialog;
    }

    public void promptForText(final GeckoView view, final String title, final String msg,
@@ -198,7 +196,7 @@ final class BasicGeckoViewPrompt implements GeckoView.PromptDelegate {
            return;
        }
        final AlertDialog.Builder builder = new AlertDialog.Builder(activity);
        final LinearLayout container = addStandardLayout(builder, title, msg, callback);
        final LinearLayout container = addStandardLayout(builder, title, msg);
        final EditText editText = new EditText(builder.getContext());
        editText.setText(value);
        container.addView(editText);
@@ -212,7 +210,7 @@ final class BasicGeckoViewPrompt implements GeckoView.PromptDelegate {
                    }
                });

        addCheckbox(builder, container, callback).show();
        createStandardDialog(addCheckbox(builder, container, callback), callback).show();
    }

    public void promptForAuth(final GeckoView view, final String title, final String msg,
@@ -224,7 +222,7 @@ final class BasicGeckoViewPrompt implements GeckoView.PromptDelegate {
            return;
        }
        final AlertDialog.Builder builder = new AlertDialog.Builder(activity);
        final LinearLayout container = addStandardLayout(builder, title, msg, callback);
        final LinearLayout container = addStandardLayout(builder, title, msg);

        final int flags = options.getInt("flags");
        final int level = options.getInt("level");
@@ -264,7 +262,7 @@ final class BasicGeckoViewPrompt implements GeckoView.PromptDelegate {
                        }
                    }
                });
        addCheckbox(builder, container, callback).show();
        createStandardDialog(addCheckbox(builder, container, callback), callback).show();
    }

    private void addChoiceItems(final int type, final ArrayAdapter<GeckoBundle> list,
@@ -303,7 +301,7 @@ final class BasicGeckoViewPrompt implements GeckoView.PromptDelegate {
            return;
        }
        final AlertDialog.Builder builder = new AlertDialog.Builder(activity);
        addStandardLayout(builder, title, msg, callback);
        addStandardLayout(builder, title, msg);

        final ListView list = new ListView(builder.getContext());
        if (type == CHOICE_TYPE_MULTIPLE) {
@@ -413,7 +411,7 @@ final class BasicGeckoViewPrompt implements GeckoView.PromptDelegate {

        final AlertDialog dialog;
        if (type == CHOICE_TYPE_SINGLE || type == CHOICE_TYPE_MENU) {
            dialog = builder.create();
            dialog = createStandardDialog(builder, callback);
            list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
                @Override
                public void onItemClick(final AdapterView<?> parent, final View v,
@@ -460,7 +458,7 @@ final class BasicGeckoViewPrompt implements GeckoView.PromptDelegate {
                    callback.confirm(items.toArray(new String[items.size()]));
                }
            });
            dialog = builder.create();
            dialog = createStandardDialog(builder, callback);
        } else {
            throw new UnsupportedOperationException();
        }
@@ -484,7 +482,7 @@ final class BasicGeckoViewPrompt implements GeckoView.PromptDelegate {
            return;
        }
        final AlertDialog.Builder builder = new AlertDialog.Builder(activity);
        addStandardLayout(builder, title, /* msg */ null, callback);
        addStandardLayout(builder, title, /* msg */ null);

        final int initial = parseColor(value, /* def */ 0);
        final ArrayAdapter<Integer> adapter = new ArrayAdapter<Integer>(
@@ -537,7 +535,7 @@ final class BasicGeckoViewPrompt implements GeckoView.PromptDelegate {
        list.setAdapter(adapter);
        builder.setView(list);

        final AlertDialog dialog = builder.create();
        final AlertDialog dialog = createStandardDialog(builder, callback);
        list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(final AdapterView<?> parent, final View v,
@@ -665,8 +663,7 @@ final class BasicGeckoViewPrompt implements GeckoView.PromptDelegate {
            timePicker = null;
        }

        final LinearLayout container = addStandardLayout(builder, title,
                                                         /* msg */ null, callback);
        final LinearLayout container = addStandardLayout(builder, title, /* msg */ null);
        container.setPadding(/* left */ 0, /* top */ 0, /* right */ 0, /* bottom */ 0);
        if (datePicker != null) {
            container.addView(datePicker);
@@ -696,10 +693,11 @@ final class BasicGeckoViewPrompt implements GeckoView.PromptDelegate {
        };
        builder.setNegativeButton(android.R.string.cancel, /* listener */ null)
               .setNeutralButton(R.string.clear_field, listener)
               .setPositiveButton(android.R.string.ok, listener)
               .show();
               .setPositiveButton(android.R.string.ok, listener);
        createStandardDialog(builder, callback).show();
    }

    @TargetApi(19)
    public void promptForFile(GeckoView view, String title, int type,
                              String[] mimeTypes, FileCallback callback)
    {
@@ -738,10 +736,10 @@ final class BasicGeckoViewPrompt implements GeckoView.PromptDelegate {
                       (mimeSubtype != null ? mimeSubtype : "*"));
        intent.addCategory(Intent.CATEGORY_OPENABLE);
        intent.putExtra(Intent.EXTRA_LOCAL_ONLY, true);
        if (type == FILE_TYPE_MULTIPLE) {
        if (Build.VERSION.SDK_INT >= 18 && type == FILE_TYPE_MULTIPLE) {
            intent.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, true);
        }
        if (mimeTypes.length > 0) {
        if (Build.VERSION.SDK_INT >= 19 && mimeTypes.length > 0) {
            intent.putExtra(Intent.EXTRA_MIME_TYPES, mimeTypes);
        }

@@ -799,20 +797,22 @@ final class BasicGeckoViewPrompt implements GeckoView.PromptDelegate {
        }
        final AlertDialog.Builder builder = new AlertDialog.Builder(activity);
        builder.setTitle(title)
               .setOnDismissListener(new DialogInterface.OnDismissListener() {
                   @Override
                   public void onDismiss(final DialogInterface dialog) {
                       callback.reject();
                   }
               })
               .setNegativeButton(android.R.string.cancel, /* onClickListener */ null)
               .setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() {
                   @Override
                   public void onClick(final DialogInterface dialog, final int which) {
                       callback.grant();
                   }
               })
               .show();
               });

        final AlertDialog dialog = builder.create();
        dialog.setOnDismissListener(new DialogInterface.OnDismissListener() {
                   @Override
                   public void onDismiss(final DialogInterface dialog) {
                       callback.reject();
                   }
               });
        dialog.show();
    }

    private Spinner addMediaSpinner(final Context context, final ViewGroup container,
@@ -858,8 +858,7 @@ final class BasicGeckoViewPrompt implements GeckoView.PromptDelegate {
            return;
        }
        final AlertDialog.Builder builder = new AlertDialog.Builder(activity);
        final LinearLayout container = addStandardLayout(builder, title, /* msg */ null,
                                                         /* callback */ null);
        final LinearLayout container = addStandardLayout(builder, title, /* msg */ null);

        final Spinner videoSpinner;
        if (video != null) {
@@ -875,13 +874,7 @@ final class BasicGeckoViewPrompt implements GeckoView.PromptDelegate {
            audioSpinner = null;
        }

        builder.setOnDismissListener(new DialogInterface.OnDismissListener() {
                    @Override
                    public void onDismiss(final DialogInterface dialog) {
                        callback.reject();
                    }
                })
               .setNegativeButton(android.R.string.cancel, /* listener */ null)
        builder.setNegativeButton(android.R.string.cancel, /* listener */ null)
               .setPositiveButton(android.R.string.ok,
                                  new DialogInterface.OnClickListener() {
                    @Override
@@ -892,7 +885,15 @@ final class BasicGeckoViewPrompt implements GeckoView.PromptDelegate {
                                ? (GeckoBundle) audioSpinner.getSelectedItem() : null;
                        callback.grant(video, audio);
                    }
                })
               .show();
                });

        final AlertDialog dialog = builder.create();
        dialog.setOnDismissListener(new DialogInterface.OnDismissListener() {
                    @Override
                    public void onDismiss(final DialogInterface dialog) {
                        callback.reject();
                    }
                });
        dialog.show();
    }
}