diff --git a/res/values-bs/arrays.xml b/res/values-bs/arrays.xml
index 8a649e6..f17c338 100644
--- a/res/values-bs/arrays.xml
+++ b/res/values-bs/arrays.xml
@@ -362,9 +362,9 @@
     <item msgid="1319652728542138112">"Zadano"</item>
     <item msgid="1016452621833735880">"Sans-serif"</item>
     <item msgid="2496277987934654454">"Sans-serif kondenzovani"</item>
-    <item msgid="7247838127505318669">"Sans-serif fiksnog razmaka"</item>
+    <item msgid="7247838127505318669">"Sans-serif monospace"</item>
     <item msgid="4478414822462359763">"Serif"</item>
-    <item msgid="7502451783483660829">"Serif fiksnog razmaka"</item>
+    <item msgid="7502451783483660829">"Serif monospace"</item>
     <item msgid="639503332147461010">"Casual"</item>
     <item msgid="7967169925231332424">"Kurziv"</item>
     <item msgid="561832997193039673">"Mala početna slova"</item>
diff --git a/res/values-ca/arrays.xml b/res/values-ca/arrays.xml
index 6b8103f..a4454cd 100644
--- a/res/values-ca/arrays.xml
+++ b/res/values-ca/arrays.xml
@@ -380,7 +380,7 @@
     <item msgid="4733815704128258753">"Predeterminat"</item>
     <item msgid="3217099060748617005">"Cap"</item>
     <item msgid="7467615139904599420">"Contorn"</item>
-    <item msgid="5623165557468608975">"Ombra paral·lela"</item>
+    <item msgid="5623165557468608975">"Ombra"</item>
     <item msgid="8088451174058214588">"Elevat"</item>
     <item msgid="3821418743395480313">"Enfonsat"</item>
   </string-array>
diff --git a/res/values-eu/arrays.xml b/res/values-eu/arrays.xml
index ff5120f..b14ea41 100644
--- a/res/values-eu/arrays.xml
+++ b/res/values-eu/arrays.xml
@@ -350,7 +350,7 @@
     <item msgid="2404067308793740341">"Idatzi memorian"</item>
     <item msgid="5832543806893763620">"Aktibatu pantaila"</item>
     <item msgid="5258373962467495905">"Lortu kontuak"</item>
-    <item msgid="334625385979270703">"Abiarazi atzeko planoan"</item>
+    <item msgid="334625385979270703">"Exekutatu atzeko planoan"</item>
     <item msgid="9039213578110332702">"Erabilerraztasun-eginbideen bolumena"</item>
   </string-array>
   <string-array name="long_press_timeout_selector_titles">
@@ -443,7 +443,7 @@
     <item msgid="3396458970745718652">"Garrantzitsua (atzeko planokoa)"</item>
     <item msgid="5214825238247511992">"Babeskopiak"</item>
     <item msgid="311372689168254967">"Handia"</item>
-    <item msgid="7438189122367820362">"Zerbitzua (abian)"</item>
+    <item msgid="7438189122367820362">"Zerbitzua (exekutatzen)"</item>
     <item msgid="918687422516982498">"Zerbitzua (berrabiarazten)"</item>
     <item msgid="6807727069641853029">"Hargailua"</item>
     <item msgid="6782857406100845127">"Hasiera"</item>
diff --git a/res/values-fr/arrays.xml b/res/values-fr/arrays.xml
index cad7583..52b9675 100644
--- a/res/values-fr/arrays.xml
+++ b/res/values-fr/arrays.xml
@@ -485,7 +485,7 @@
     <item msgid="3863157480502955888">"Oui"</item>
   </string-array>
   <string-array name="dark_ui_mode_entries">
-    <item msgid="4047603501491142527">"Sombre"</item>
+    <item msgid="4047603501491142527">"Foncé"</item>
     <item msgid="2291969684082074001">"Clair"</item>
   </string-array>
   <string-array name="autofill_logging_level_entries">
diff --git a/res/values-hi/arrays.xml b/res/values-hi/arrays.xml
index 98deee9..80f3100 100644
--- a/res/values-hi/arrays.xml
+++ b/res/values-hi/arrays.xml
@@ -239,7 +239,7 @@
     <item msgid="4600463921908905030">"मैसेज (एसएमएस) पाएं"</item>
     <item msgid="5958926493289432745">"आपातकालीन मैसेज (एसएमएस) पाएं"</item>
     <item msgid="4945269495221089540">"मल्टीमीडिया मैसेज (एमएमएस) पाएं"</item>
-    <item msgid="5570472453573929087">"WAP पुश पाएं"</item>
+    <item msgid="5570472453573929087">"WAP पुश प्राप्त करें"</item>
     <item msgid="7125408150230860501">"मैसेज (एसएमएस) भेजें"</item>
     <item msgid="7080337936612188061">"ICC मैसेज (एसएमएस) पढ़ें"</item>
     <item msgid="587124103118495063">"ICC मैसेज (एसएमएस) लिखें"</item>
@@ -263,7 +263,7 @@
     <item msgid="2029227495214047094">"सचेत रखें"</item>
     <item msgid="26109888160231211">"जगह की निगरानी करें"</item>
     <item msgid="5753382310468855812">"उच्च पावर वाली जगह की निगरानी करें"</item>
-    <item msgid="3356591542543137332">"उपयोग के आंकड़े पाएं"</item>
+    <item msgid="3356591542543137332">"उपयोग के आंकड़े प्राप्त करें"</item>
     <item msgid="3073734345226842233">"माइक्रोफ़ोन म्यूट/अनम्यूट करें"</item>
     <item msgid="2111767435887685265">"टोस्ट दिखाएं"</item>
     <item msgid="1091168669714823370">"प्रोजेक्ट मीडिया"</item>
@@ -282,7 +282,7 @@
     <item msgid="3591971310048485247">"मेमोरी पढ़ें"</item>
     <item msgid="4041187808621866119">"मेमोरी लिखें"</item>
     <item msgid="6628873315024166197">"स्क्रीन चालू करें"</item>
-    <item msgid="3253368931113490863">"खाते पाएं"</item>
+    <item msgid="3253368931113490863">"खाते प्राप्त करें"</item>
     <item msgid="780392378084812901">"पृष्ठभूमि में चलाएं"</item>
     <item msgid="2629748510881309577">"सुलभता सुविधाओं के लिए आवाज़"</item>
   </string-array>
@@ -330,7 +330,7 @@
     <item msgid="4665183401128289653">"सचेत रखें"</item>
     <item msgid="8584357129746649222">"जगह"</item>
     <item msgid="7669257279311110599">"जगह"</item>
-    <item msgid="3459320345690097795">"उपयोग के आंकड़े पाएं"</item>
+    <item msgid="3459320345690097795">"उपयोग के आंकड़े प्राप्त करें"</item>
     <item msgid="1312534577834048535">"माइक्रोफ़ोन म्यूट/अनम्यूट करें"</item>
     <item msgid="427580389823724225">"टोस्ट दिखाएं"</item>
     <item msgid="4992007785575926253">"प्रोजेक्ट मीडिया"</item>
@@ -349,7 +349,7 @@
     <item msgid="1246296877820358565">"मेमोरी पढ़ें"</item>
     <item msgid="2404067308793740341">"मेमोरी लिखें"</item>
     <item msgid="5832543806893763620">"स्क्रीन चालू करें"</item>
-    <item msgid="5258373962467495905">"खाते पाएं"</item>
+    <item msgid="5258373962467495905">"खाते प्राप्त करें"</item>
     <item msgid="334625385979270703">"पृष्ठभूमि में चलाएं"</item>
     <item msgid="9039213578110332702">"सुलभता सुविधाओं के लिए आवाज़"</item>
   </string-array>
@@ -359,7 +359,7 @@
     <item msgid="2372711992605524591">"ज़्यादा"</item>
   </string-array>
   <string-array name="captioning_typeface_selector_titles">
-    <item msgid="1319652728542138112">"डिफ़ॉल्ट"</item>
+    <item msgid="1319652728542138112">"सामान्य"</item>
     <item msgid="1016452621833735880">"Sans-serif"</item>
     <item msgid="2496277987934654454">"Sans-serif condensed"</item>
     <item msgid="7247838127505318669">"Sans-serif monospace"</item>
diff --git a/res/values-hy/arrays.xml b/res/values-hy/arrays.xml
index 1b35ec4..3037194 100644
--- a/res/values-hy/arrays.xml
+++ b/res/values-hy/arrays.xml
@@ -88,7 +88,7 @@
     <item msgid="8937994881315223448">"Միացված է <xliff:g id="NETWORK_NAME">%1$s</xliff:g>-ին"</item>
     <item msgid="1330262655415760617">"Անջատված"</item>
     <item msgid="7698638434317271902">"Անջատվում է <xliff:g id="NETWORK_NAME">%1$s</xliff:g>-ից…"</item>
-    <item msgid="197508606402264311">"Անջատված է"</item>
+    <item msgid="197508606402264311">"Անջատած է"</item>
     <item msgid="8578370891960825148">"Անհաջող"</item>
     <item msgid="5660739516542454527">"Արգելափակված"</item>
     <item msgid="1805837518286731242">"Վատ ցանցից ժամանակավոր խուսափում"</item>
diff --git a/res/values-ne/arrays.xml b/res/values-ne/arrays.xml
index e6ac03c..bd35c42fc 100644
--- a/res/values-ne/arrays.xml
+++ b/res/values-ne/arrays.xml
@@ -473,7 +473,7 @@
   </string-array>
   <string-array name="wifi_metered_entries">
     <item msgid="5200910605264415911">"स्वतः पत्ता लगाउनुहोस्"</item>
-    <item msgid="8745603368609022803">"सशुल्क वाइफाइका रूपमा लिनुहोस्"</item>
+    <item msgid="8745603368609022803">"मिटर गरिएको रूपमा व्यवहार गर्नुहोस्"</item>
     <item msgid="2266114985518865625">"मिटर नगरिएको रूपमा व्यवहार गर्नुहोस्"</item>
   </string-array>
   <string-array name="wifi_privacy_entries">
diff --git a/res/values-ta/arrays.xml b/res/values-ta/arrays.xml
index fd1ce3e..c293c7d 100644
--- a/res/values-ta/arrays.xml
+++ b/res/values-ta/arrays.xml
@@ -372,7 +372,7 @@
   <string-array name="captioning_font_size_selector_titles">
     <item msgid="4800919809575254054">"மிகச் சிறியது"</item>
     <item msgid="6781094565687692782">"சிறியது"</item>
-    <item msgid="8222123259497646551">"சராசரி"</item>
+    <item msgid="8222123259497646551">"இயல்பானது"</item>
     <item msgid="5813217276778560466">"பெரியது"</item>
     <item msgid="9044232017390975191">"மிகப் பெரியது"</item>
   </string-array>
diff --git a/src/com/android/settings/development/BubbleGlobalPreferenceController.java b/src/com/android/settings/development/BubbleGlobalPreferenceController.java
index 86d7be1..2f22d09 100644
--- a/src/com/android/settings/development/BubbleGlobalPreferenceController.java
+++ b/src/com/android/settings/development/BubbleGlobalPreferenceController.java
@@ -16,8 +16,6 @@
 
 package com.android.settings.development;
 
-import static android.provider.Settings.Secure.NOTIFICATION_BUBBLES;
-
 import android.content.Context;
 import android.provider.Settings;
 
@@ -42,7 +40,7 @@
 
     @Override
     public String getPreferenceKey() {
-        return NOTIFICATION_BUBBLES;
+        return Settings.Global.NOTIFICATION_BUBBLES;
     }
 
     @Override
@@ -64,12 +62,12 @@
     }
 
     private boolean isEnabled() {
-        return Settings.Secure.getInt(mContext.getContentResolver(),
-                NOTIFICATION_BUBBLES, OFF) == ON;
+        return Settings.Global.getInt(mContext.getContentResolver(),
+                Settings.Global.NOTIFICATION_BUBBLES, OFF) == ON;
     }
 
     private void writeSetting(boolean isEnabled) {
-        Settings.Secure.putInt(mContext.getContentResolver(),
-                NOTIFICATION_BUBBLES, isEnabled ? ON : OFF);
+        Settings.Global.putInt(mContext.getContentResolver(),
+                Settings.Global.NOTIFICATION_BUBBLES, isEnabled ? ON : OFF);
     }
 }
diff --git a/src/com/android/settings/notification/BubblePreferenceController.java b/src/com/android/settings/notification/BubblePreferenceController.java
index b68f11d..b57a911 100644
--- a/src/com/android/settings/notification/BubblePreferenceController.java
+++ b/src/com/android/settings/notification/BubblePreferenceController.java
@@ -16,7 +16,7 @@
 
 package com.android.settings.notification;
 
-import static android.provider.Settings.Secure.NOTIFICATION_BUBBLES;
+import static android.provider.Settings.Global.NOTIFICATION_BUBBLES;
 
 import android.annotation.Nullable;
 import android.content.Context;
@@ -113,7 +113,7 @@
     }
 
     private boolean isGloballyEnabled() {
-        return Settings.Secure.getInt(mContext.getContentResolver(),
+        return Settings.Global.getInt(mContext.getContentResolver(),
                 NOTIFICATION_BUBBLES, SYSTEM_WIDE_OFF) == SYSTEM_WIDE_ON;
     }
 
@@ -124,7 +124,7 @@
         backend.setAllowBubbles(pkg, uid, false);
         // changing the global settings will cause the observer on the host page to reload
         // correct preference state
-        Settings.Secure.putInt(mContext.getContentResolver(),
+        Settings.Global.putInt(mContext.getContentResolver(),
                 NOTIFICATION_BUBBLES, SYSTEM_WIDE_OFF);
     }
 
@@ -134,7 +134,7 @@
         backend.setAllowBubbles(pkg, uid, true);
         // changing the global settings will cause the observer on the host page to reload
         // correct preference state
-        Settings.Secure.putInt(mContext.getContentResolver(),
+        Settings.Global.putInt(mContext.getContentResolver(),
                 NOTIFICATION_BUBBLES, SYSTEM_WIDE_ON);
     }
 }
diff --git a/src/com/android/settings/notification/BubbleSummaryPreferenceController.java b/src/com/android/settings/notification/BubbleSummaryPreferenceController.java
index b1632c4..cc687cf 100644
--- a/src/com/android/settings/notification/BubbleSummaryPreferenceController.java
+++ b/src/com/android/settings/notification/BubbleSummaryPreferenceController.java
@@ -16,7 +16,7 @@
 
 package com.android.settings.notification;
 
-import static android.provider.Settings.Secure.NOTIFICATION_BUBBLES;
+import static android.provider.Settings.Global.NOTIFICATION_BUBBLES;
 
 import android.app.settings.SettingsEnums;
 import android.content.Context;
@@ -100,7 +100,7 @@
     }
 
     private boolean isGloballyEnabled() {
-        return Settings.Secure.getInt(mContext.getContentResolver(),
+        return Settings.Global.getInt(mContext.getContentResolver(),
                 NOTIFICATION_BUBBLES, SYSTEM_WIDE_OFF) == SYSTEM_WIDE_ON;
     }
 }
diff --git a/src/com/android/settings/notification/GentleNotificationsPreferenceController.java b/src/com/android/settings/notification/GentleNotificationsPreferenceController.java
index ea16e72..67a4707 100644
--- a/src/com/android/settings/notification/GentleNotificationsPreferenceController.java
+++ b/src/com/android/settings/notification/GentleNotificationsPreferenceController.java
@@ -16,8 +16,6 @@
 
 package com.android.settings.notification;
 
-import static android.provider.Settings.Secure.NOTIFICATION_BUBBLES;
-
 import android.content.Context;
 import android.provider.Settings;
 
diff --git a/src/com/android/settings/notification/GlobalBubblePermissionObserverMixin.java b/src/com/android/settings/notification/GlobalBubblePermissionObserverMixin.java
index 398931d..0118a95 100644
--- a/src/com/android/settings/notification/GlobalBubblePermissionObserverMixin.java
+++ b/src/com/android/settings/notification/GlobalBubblePermissionObserverMixin.java
@@ -47,8 +47,8 @@
 
     public void onStart() {
         mContext.getContentResolver().registerContentObserver(
-                Settings.Secure.getUriFor(
-                        Settings.Secure.NOTIFICATION_BUBBLES),
+                Settings.Global.getUriFor(
+                        Settings.Global.NOTIFICATION_BUBBLES),
                 false /* notifyForDescendants */,
                 this /* observer */);
     }
diff --git a/tests/robotests/src/com/android/settings/development/BubbleGlobalPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/development/BubbleGlobalPreferenceControllerTest.java
index 11ca63f..9e52a88 100644
--- a/tests/robotests/src/com/android/settings/development/BubbleGlobalPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/development/BubbleGlobalPreferenceControllerTest.java
@@ -16,7 +16,7 @@
 
 package com.android.settings.development;
 
-import static android.provider.Settings.Secure.NOTIFICATION_BUBBLES;
+import static android.provider.Settings.Global.NOTIFICATION_BUBBLES;
 
 import static com.android.settings.development.BubbleGlobalPreferenceController.OFF;
 import static com.android.settings.development.BubbleGlobalPreferenceController.ON;
@@ -77,7 +77,7 @@
 
     @Test
     public void updateState_settingEnabled_preferenceShouldBeChecked() {
-        Settings.Secure.putInt(mContext.getContentResolver(),
+        Settings.Global.putInt(mContext.getContentResolver(),
                 NOTIFICATION_BUBBLES, 1 /* enabled */);
         mController.updateState(mPreference);
 
@@ -86,7 +86,7 @@
 
     @Test
     public void updateState_settingReset_defaultDisabled_preferenceShouldNotBeChecked() {
-        Settings.Secure.putInt(mContext.getContentResolver(),
+        Settings.Global.putInt(mContext.getContentResolver(),
                 NOTIFICATION_BUBBLES, 0 /* enabled */);
         mController.updateState(mPreference);
 
@@ -104,7 +104,7 @@
     }
 
     private boolean isSettingEnabled() {
-        return Settings.Secure.getInt(mContext.getContentResolver(), NOTIFICATION_BUBBLES,
+        return Settings.Global.getInt(mContext.getContentResolver(), NOTIFICATION_BUBBLES,
                 OFF /* default off */) == ON;
     }
 
diff --git a/tests/robotests/src/com/android/settings/notification/BubblePreferenceControllerTest.java b/tests/robotests/src/com/android/settings/notification/BubblePreferenceControllerTest.java
index aafefb51..470cc27 100644
--- a/tests/robotests/src/com/android/settings/notification/BubblePreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/notification/BubblePreferenceControllerTest.java
@@ -20,7 +20,7 @@
 import static android.app.NotificationManager.IMPORTANCE_HIGH;
 import static android.app.NotificationManager.IMPORTANCE_LOW;
 import static android.app.NotificationManager.IMPORTANCE_NONE;
-import static android.provider.Settings.Secure.NOTIFICATION_BUBBLES;
+import static android.provider.Settings.Global.NOTIFICATION_BUBBLES;
 
 import static com.android.settings.notification.BubblePreferenceController.SYSTEM_WIDE_OFF;
 import static com.android.settings.notification.BubblePreferenceController.SYSTEM_WIDE_ON;
@@ -103,7 +103,7 @@
 
     @Test
     public void testIsAvailable_notIfAppBlocked() {
-        Settings.Secure.putInt(mContext.getContentResolver(), NOTIFICATION_BUBBLES, SYSTEM_WIDE_ON);
+        Settings.Global.putInt(mContext.getContentResolver(), NOTIFICATION_BUBBLES, SYSTEM_WIDE_ON);
         NotificationBackend.AppRow appRow = new NotificationBackend.AppRow();
         appRow.banned = true;
         mController.onResume(appRow, mock(NotificationChannel.class), null, null);
@@ -112,7 +112,7 @@
 
     @Test
     public void testIsAvailable_notIfChannelBlocked() {
-        Settings.Secure.putInt(mContext.getContentResolver(), NOTIFICATION_BUBBLES, SYSTEM_WIDE_ON);
+        Settings.Global.putInt(mContext.getContentResolver(), NOTIFICATION_BUBBLES, SYSTEM_WIDE_ON);
         NotificationBackend.AppRow appRow = new NotificationBackend.AppRow();
         NotificationChannel channel = mock(NotificationChannel.class);
         when(channel.getImportance()).thenReturn(IMPORTANCE_NONE);
@@ -122,7 +122,7 @@
 
     @Test
     public void testIsAvailable_channel_notIfAppOff() {
-        Settings.Secure.putInt(mContext.getContentResolver(), NOTIFICATION_BUBBLES, SYSTEM_WIDE_ON);
+        Settings.Global.putInt(mContext.getContentResolver(), NOTIFICATION_BUBBLES, SYSTEM_WIDE_ON);
         NotificationBackend.AppRow appRow = new NotificationBackend.AppRow();
         appRow.allowBubbles = false;
         NotificationChannel channel = mock(NotificationChannel.class);
@@ -136,7 +136,7 @@
     public void testIsNotAvailable_ifOffGlobally_app() {
         NotificationBackend.AppRow appRow = new NotificationBackend.AppRow();
         mController.onResume(appRow, null, null, null);
-        Settings.Secure.putInt(mContext.getContentResolver(),
+        Settings.Global.putInt(mContext.getContentResolver(),
                 NOTIFICATION_BUBBLES, SYSTEM_WIDE_OFF);
 
         assertFalse(mController.isAvailable());
@@ -148,7 +148,7 @@
         NotificationChannel channel = mock(NotificationChannel.class);
         when(channel.getImportance()).thenReturn(IMPORTANCE_HIGH);
         mController.onResume(appRow, channel, null, null);
-        Settings.Secure.putInt(mContext.getContentResolver(),
+        Settings.Global.putInt(mContext.getContentResolver(),
                 NOTIFICATION_BUBBLES, SYSTEM_WIDE_OFF);
 
         assertFalse(mController.isAvailable());
@@ -158,7 +158,7 @@
     public void testIsAvailable_app_evenIfOffGlobally() {
         NotificationBackend.AppRow appRow = new NotificationBackend.AppRow();
         mAppPageController.onResume(appRow, null, null, null);
-        Settings.Secure.putInt(mContext.getContentResolver(),
+        Settings.Global.putInt(mContext.getContentResolver(),
                 NOTIFICATION_BUBBLES, SYSTEM_WIDE_OFF);
 
         assertTrue(mAppPageController.isAvailable());
@@ -168,7 +168,7 @@
     public void testIsAvailable_app() {
         NotificationBackend.AppRow appRow = new NotificationBackend.AppRow();
         mController.onResume(appRow, null, null, null);
-        Settings.Secure.putInt(mContext.getContentResolver(), NOTIFICATION_BUBBLES, SYSTEM_WIDE_ON);
+        Settings.Global.putInt(mContext.getContentResolver(), NOTIFICATION_BUBBLES, SYSTEM_WIDE_ON);
 
         assertTrue(mController.isAvailable());
     }
@@ -181,7 +181,7 @@
         when(channel.getImportance()).thenReturn(IMPORTANCE_HIGH);
         when(channel.getId()).thenReturn(DEFAULT_CHANNEL_ID);
         mController.onResume(appRow, channel, null, null);
-        Settings.Secure.putInt(mContext.getContentResolver(), NOTIFICATION_BUBBLES, SYSTEM_WIDE_ON);
+        Settings.Global.putInt(mContext.getContentResolver(), NOTIFICATION_BUBBLES, SYSTEM_WIDE_ON);
 
         assertTrue(mController.isAvailable());
     }
@@ -193,7 +193,7 @@
         NotificationChannel channel = mock(NotificationChannel.class);
         when(channel.getImportance()).thenReturn(IMPORTANCE_HIGH);
         mController.onResume(appRow, channel, null, null);
-        Settings.Secure.putInt(mContext.getContentResolver(), NOTIFICATION_BUBBLES, SYSTEM_WIDE_ON);
+        Settings.Global.putInt(mContext.getContentResolver(), NOTIFICATION_BUBBLES, SYSTEM_WIDE_ON);
 
         assertTrue(mController.isAvailable());
     }
@@ -205,7 +205,7 @@
         NotificationChannel channel = mock(NotificationChannel.class);
         when(channel.getImportance()).thenReturn(IMPORTANCE_HIGH);
         mController.onResume(appRow, channel, null, null);
-        Settings.Secure.putInt(mContext.getContentResolver(), NOTIFICATION_BUBBLES, SYSTEM_WIDE_ON);
+        Settings.Global.putInt(mContext.getContentResolver(), NOTIFICATION_BUBBLES, SYSTEM_WIDE_ON);
 
         assertFalse(mController.isAvailable());
     }
@@ -225,7 +225,7 @@
 
     @Test
     public void testUpdateState_channelNotBlockable() {
-        Settings.Secure.putInt(mContext.getContentResolver(), NOTIFICATION_BUBBLES, SYSTEM_WIDE_ON);
+        Settings.Global.putInt(mContext.getContentResolver(), NOTIFICATION_BUBBLES, SYSTEM_WIDE_ON);
         NotificationBackend.AppRow appRow = new NotificationBackend.AppRow();
         NotificationChannel channel = mock(NotificationChannel.class);
         when(channel.isImportanceLockedByCriticalDeviceFunction()).thenReturn(true);
@@ -239,7 +239,7 @@
 
     @Test
     public void testUpdateState_channel() {
-        Settings.Secure.putInt(mContext.getContentResolver(), NOTIFICATION_BUBBLES, SYSTEM_WIDE_ON);
+        Settings.Global.putInt(mContext.getContentResolver(), NOTIFICATION_BUBBLES, SYSTEM_WIDE_ON);
         NotificationBackend.AppRow appRow = new NotificationBackend.AppRow();
         NotificationChannel channel = mock(NotificationChannel.class);
         when(channel.canBubble()).thenReturn(true);
@@ -259,7 +259,7 @@
 
     @Test
     public void testUpdateState_app() {
-        Settings.Secure.putInt(mContext.getContentResolver(), NOTIFICATION_BUBBLES, SYSTEM_WIDE_ON);
+        Settings.Global.putInt(mContext.getContentResolver(), NOTIFICATION_BUBBLES, SYSTEM_WIDE_ON);
         NotificationBackend.AppRow appRow = new NotificationBackend.AppRow();
         appRow.label = "App!";
         appRow.allowBubbles = true;
@@ -281,7 +281,7 @@
 
     @Test
     public void testUpdateState_app_offGlobally() {
-        Settings.Secure.putInt(mContext.getContentResolver(),
+        Settings.Global.putInt(mContext.getContentResolver(),
                 NOTIFICATION_BUBBLES, SYSTEM_WIDE_OFF);
         NotificationBackend.AppRow appRow = new NotificationBackend.AppRow();
         appRow.label = "App!";
@@ -295,7 +295,7 @@
 
     @Test
     public void testOnPreferenceChange_on_channel() {
-        Settings.Secure.putInt(mContext.getContentResolver(), NOTIFICATION_BUBBLES, SYSTEM_WIDE_ON);
+        Settings.Global.putInt(mContext.getContentResolver(), NOTIFICATION_BUBBLES, SYSTEM_WIDE_ON);
         NotificationBackend.AppRow appRow = new NotificationBackend.AppRow();
         appRow.allowBubbles = true;
         NotificationChannel channel =
@@ -315,7 +315,7 @@
 
     @Test
     public void testOnPreferenceChange_off_channel() {
-        Settings.Secure.putInt(mContext.getContentResolver(), NOTIFICATION_BUBBLES, SYSTEM_WIDE_ON);
+        Settings.Global.putInt(mContext.getContentResolver(), NOTIFICATION_BUBBLES, SYSTEM_WIDE_ON);
         NotificationBackend.AppRow appRow = new NotificationBackend.AppRow();
         appRow.allowBubbles = true;
         NotificationChannel channel =
@@ -335,7 +335,7 @@
 
     @Test
     public void testOnPreferenceChange_on_app() {
-        Settings.Secure.putInt(mContext.getContentResolver(), NOTIFICATION_BUBBLES, SYSTEM_WIDE_ON);
+        Settings.Global.putInt(mContext.getContentResolver(), NOTIFICATION_BUBBLES, SYSTEM_WIDE_ON);
         NotificationBackend.AppRow appRow = new NotificationBackend.AppRow();
         appRow.allowBubbles = false;
         mController.onResume(appRow, null, null, null);
@@ -353,7 +353,7 @@
 
     @Test
     public void testOnPreferenceChange_off_app() {
-        Settings.Secure.putInt(mContext.getContentResolver(), NOTIFICATION_BUBBLES, SYSTEM_WIDE_ON);
+        Settings.Global.putInt(mContext.getContentResolver(), NOTIFICATION_BUBBLES, SYSTEM_WIDE_ON);
         NotificationBackend.AppRow appRow = new NotificationBackend.AppRow();
         appRow.allowBubbles = true;
         mController.onResume(appRow, null, null, null);
@@ -371,7 +371,7 @@
 
     @Test
     public void testOnPreferenceChange_on_app_offGlobally() {
-        Settings.Secure.putInt(mContext.getContentResolver(), NOTIFICATION_BUBBLES,
+        Settings.Global.putInt(mContext.getContentResolver(), NOTIFICATION_BUBBLES,
                 SYSTEM_WIDE_OFF);
         NotificationBackend.AppRow appRow = new NotificationBackend.AppRow();
         appRow.allowBubbles = false;
diff --git a/tests/robotests/src/com/android/settings/notification/BubbleSummaryPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/notification/BubbleSummaryPreferenceControllerTest.java
index 04c8e4e..2710203 100644
--- a/tests/robotests/src/com/android/settings/notification/BubbleSummaryPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/notification/BubbleSummaryPreferenceControllerTest.java
@@ -20,7 +20,7 @@
 import static android.app.NotificationManager.IMPORTANCE_HIGH;
 import static android.app.NotificationManager.IMPORTANCE_LOW;
 import static android.app.NotificationManager.IMPORTANCE_NONE;
-import static android.provider.Settings.Secure.NOTIFICATION_BUBBLES;
+import static android.provider.Settings.Global.NOTIFICATION_BUBBLES;
 
 import static com.android.settings.notification.BubbleSummaryPreferenceController.SYSTEM_WIDE_OFF;
 import static com.android.settings.notification.BubbleSummaryPreferenceController.SYSTEM_WIDE_ON;
@@ -98,7 +98,7 @@
         NotificationChannel channel = mock(NotificationChannel.class);
         when(channel.getImportance()).thenReturn(IMPORTANCE_HIGH);
         mController.onResume(appRow, channel, null, null);
-        Settings.Secure.putInt(mContext.getContentResolver(), NOTIFICATION_BUBBLES,
+        Settings.Global.putInt(mContext.getContentResolver(), NOTIFICATION_BUBBLES,
                 SYSTEM_WIDE_OFF);
 
         assertFalse(mController.isAvailable());
@@ -108,7 +108,7 @@
     public void testIsAvailable_app() {
         NotificationBackend.AppRow appRow = new NotificationBackend.AppRow();
         mController.onResume(appRow, null, null, null);
-        Settings.Secure.putInt(mContext.getContentResolver(), NOTIFICATION_BUBBLES, SYSTEM_WIDE_ON);
+        Settings.Global.putInt(mContext.getContentResolver(), NOTIFICATION_BUBBLES, SYSTEM_WIDE_ON);
 
         assertTrue(mController.isAvailable());
     }
@@ -117,7 +117,7 @@
     public void testIsNotAvailable_app_globalOff() {
         NotificationBackend.AppRow appRow = new NotificationBackend.AppRow();
         mController.onResume(appRow, null, null, null);
-        Settings.Secure.putInt(mContext.getContentResolver(), NOTIFICATION_BUBBLES,
+        Settings.Global.putInt(mContext.getContentResolver(), NOTIFICATION_BUBBLES,
                 SYSTEM_WIDE_OFF);
 
         assertFalse(mController.isAvailable());
@@ -131,7 +131,7 @@
         when(channel.getImportance()).thenReturn(IMPORTANCE_HIGH);
         when(channel.getId()).thenReturn(DEFAULT_CHANNEL_ID);
         mController.onResume(appRow, channel, null, null);
-        Settings.Secure.putInt(mContext.getContentResolver(), NOTIFICATION_BUBBLES, SYSTEM_WIDE_ON);
+        Settings.Global.putInt(mContext.getContentResolver(), NOTIFICATION_BUBBLES, SYSTEM_WIDE_ON);
 
         assertTrue(mController.isAvailable());
     }
@@ -149,18 +149,18 @@
 
     @Test
     public void testGetSummary() {
-        Settings.Secure.putInt(mContext.getContentResolver(), NOTIFICATION_BUBBLES, SYSTEM_WIDE_ON);
+        Settings.Global.putInt(mContext.getContentResolver(), NOTIFICATION_BUBBLES, SYSTEM_WIDE_ON);
         NotificationBackend.AppRow appRow = new NotificationBackend.AppRow();
         appRow.allowBubbles = true;
         mController.onResume(appRow, null, null, null);
 
         assertEquals("On", mController.getSummary());
 
-        Settings.Secure.putInt(mContext.getContentResolver(), NOTIFICATION_BUBBLES,
+        Settings.Global.putInt(mContext.getContentResolver(), NOTIFICATION_BUBBLES,
                 SYSTEM_WIDE_OFF);
         assertEquals("Off", mController.getSummary());
 
-        Settings.Secure.putInt(mContext.getContentResolver(), NOTIFICATION_BUBBLES, SYSTEM_WIDE_ON);
+        Settings.Global.putInt(mContext.getContentResolver(), NOTIFICATION_BUBBLES, SYSTEM_WIDE_ON);
         appRow.allowBubbles = false;
         mController.onResume(appRow, null, null, null);
 
diff --git a/tests/robotests/src/com/android/settings/notification/GentleNotificationsPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/notification/GentleNotificationsPreferenceControllerTest.java
index 4821322..bd01379 100644
--- a/tests/robotests/src/com/android/settings/notification/GentleNotificationsPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/notification/GentleNotificationsPreferenceControllerTest.java
@@ -16,8 +16,6 @@
 
 package com.android.settings.notification;
 
-import static android.provider.Settings.Secure.NOTIFICATION_BUBBLES;
-
 import static com.android.settings.notification.BadgingNotificationPreferenceController.OFF;
 import static com.android.settings.notification.BadgingNotificationPreferenceController.ON;
 
