Merge "Override performClick method to eliminate redundant click" into qt-dev
diff --git a/src/com/android/settings/widget/SwitchBar.java b/src/com/android/settings/widget/SwitchBar.java
index dfcc131..f8743d1 100644
--- a/src/com/android/settings/widget/SwitchBar.java
+++ b/src/com/android/settings/widget/SwitchBar.java
@@ -21,7 +21,6 @@
 import android.app.settings.SettingsEnums;
 import android.content.Context;
 import android.content.res.TypedArray;
-import android.graphics.Rect;
 import android.graphics.drawable.Drawable;
 import android.os.Parcel;
 import android.os.Parcelable;
@@ -112,8 +111,6 @@
         // Set the whole SwitchBar focusable and clickable.
         setFocusable(true);
         setClickable(true);
-        // Set a onClickListener to handle the functionality of ToggleSwitch.
-        setOnClickListener((View v) -> getDelegatingView().performClick());
 
         final TypedArray a = context.obtainStyledAttributes(attrs, XML_ATTRIBUTES);
         final int switchBarMarginStart = (int) a.getDimension(0, 0);
@@ -170,6 +167,12 @@
         mMetricsFeatureProvider = FeatureFactory.getFactory(context).getMetricsFeatureProvider();
     }
 
+    // Override the performClick method to eliminate redundant click.
+    @Override
+    public boolean performClick() {
+        return getDelegatingView().performClick();
+    }
+
     public void setMetricsTag(String tag) {
         mMetricsTag = tag;
     }
diff --git a/tests/robotests/src/com/android/settings/widget/SwitchBarTest.java b/tests/robotests/src/com/android/settings/widget/SwitchBarTest.java
index 35fa2c6..f186222 100644
--- a/tests/robotests/src/com/android/settings/widget/SwitchBarTest.java
+++ b/tests/robotests/src/com/android/settings/widget/SwitchBarTest.java
@@ -95,4 +95,11 @@
         mBar.setDisabledByAdmin(null);
         assertThat(mBar.getDelegatingView().getId()).isEqualTo(R.id.switch_widget);
     }
+
+    @Test
+    public void performClick_shouldIsCheckedValueChange() {
+        boolean isChecked = mBar.isChecked();
+        mBar.performClick();
+        assertThat(mBar.isChecked()).isEqualTo(!isChecked);
+    }
 }