Currently Chrome channels only start to appear in Android Settings once they have a notification posted to them. But ideally channels should be initialized on first launch of the app. See https://docs.google.com/document/d/1K9pjvlHF1oANNI8TqZgy151tap9zs1KUr2qfBXo1s_4/edit#heading=h.3s2n5cjjhiyh for more discussion
Some thoughts about how best to initialize on first launch, upgrade and boot: https://docs.google.com/document/d/1hvQlpAbzjuwnvgAJD3Djx8nVkHle1QSWFayLJvBFmYM/edit?usp=sharing They will also need to be re-initialized on locale changed, but no extra checks are required there.
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/7776b8449261779e9660d4b3b48eca20492e21d3 commit 7776b8449261779e9660d4b3b48eca20492e21d3 Author: awdf <awdf@chromium.org> Date: Tue Apr 11 18:20:35 2017 [Android O] Refactor channel initialization - All the notification channel properties are now defined in the ChannelsInitializer and only the channel ID needs to be passed to the ChromeNotificationBuilder. - This avoids previous duplication and this logic can be reused when we start initializing channels on launch and upgrade. BUG= 707211 Review-Url: https://codereview.chromium.org/2808163002 Cr-Commit-Position: refs/heads/master@{#463688} [modify] https://crrev.com/7776b8449261779e9660d4b3b48eca20492e21d3/chrome/android/java/src/org/chromium/chrome/browser/download/DownloadNotificationService.java [modify] https://crrev.com/7776b8449261779e9660d4b3b48eca20492e21d3/chrome/android/java/src/org/chromium/chrome/browser/incognito/IncognitoNotificationManager.java [modify] https://crrev.com/7776b8449261779e9660d4b3b48eca20492e21d3/chrome/android/java/src/org/chromium/chrome/browser/media/MediaCaptureNotificationService.java [modify] https://crrev.com/7776b8449261779e9660d4b3b48eca20492e21d3/chrome/android/java/src/org/chromium/chrome/browser/media/ui/MediaNotificationManager.java [add] https://crrev.com/7776b8449261779e9660d4b3b48eca20492e21d3/chrome/android/java/src/org/chromium/chrome/browser/notifications/ChannelsInitializer.java [modify] https://crrev.com/7776b8449261779e9660d4b3b48eca20492e21d3/chrome/android/java/src/org/chromium/chrome/browser/notifications/CustomNotificationBuilder.java [modify] https://crrev.com/7776b8449261779e9660d4b3b48eca20492e21d3/chrome/android/java/src/org/chromium/chrome/browser/notifications/NotificationBuilderFactory.java [modify] https://crrev.com/7776b8449261779e9660d4b3b48eca20492e21d3/chrome/android/java/src/org/chromium/chrome/browser/notifications/NotificationBuilderForO.java [modify] https://crrev.com/7776b8449261779e9660d4b3b48eca20492e21d3/chrome/android/java/src/org/chromium/chrome/browser/notifications/NotificationConstants.java [modify] https://crrev.com/7776b8449261779e9660d4b3b48eca20492e21d3/chrome/android/java/src/org/chromium/chrome/browser/notifications/NotificationManagerProxy.java [modify] https://crrev.com/7776b8449261779e9660d4b3b48eca20492e21d3/chrome/android/java/src/org/chromium/chrome/browser/notifications/NotificationManagerProxyImpl.java [modify] https://crrev.com/7776b8449261779e9660d4b3b48eca20492e21d3/chrome/android/java/src/org/chromium/chrome/browser/notifications/StandardNotificationBuilder.java [modify] https://crrev.com/7776b8449261779e9660d4b3b48eca20492e21d3/chrome/android/java/src/org/chromium/chrome/browser/ntp/ContentSuggestionsNotificationHelper.java [modify] https://crrev.com/7776b8449261779e9660d4b3b48eca20492e21d3/chrome/android/java/src/org/chromium/chrome/browser/physicalweb/PhysicalWebBroadcastService.java [modify] https://crrev.com/7776b8449261779e9660d4b3b48eca20492e21d3/chrome/android/java/src/org/chromium/chrome/browser/sync/SyncNotificationController.java [modify] https://crrev.com/7776b8449261779e9660d4b3b48eca20492e21d3/chrome/android/java_sources.gni [add] https://crrev.com/7776b8449261779e9660d4b3b48eca20492e21d3/chrome/android/junit/src/org/chromium/chrome/browser/notifications/ChannelsInitializerTest.java [modify] https://crrev.com/7776b8449261779e9660d4b3b48eca20492e21d3/chrome/test/android/javatests/src/org/chromium/chrome/test/util/browser/notifications/MockNotificationManagerProxy.java
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/02dc9f2819cf895bc4ec0dd2a67a90435c58f1bc commit 02dc9f2819cf895bc4ec0dd2a67a90435c58f1bc Author: awdf <awdf@chromium.org> Date: Wed Apr 12 15:38:39 2017 [Android O] Initialize channels on first launch/upgrade - Previously channels would only be created lazily, when a notification was posted to them. - Now they are initialized on first launch (asynchronously) and on app upgrade, so they appear in OS Settings much sooner. - Further work is still required to re-initialize channels on locale change, and maybe on boot to catch OS upgrade as soon as possible. BUG= 707211 Review-Url: https://codereview.chromium.org/2807213002 Cr-Commit-Position: refs/heads/master@{#464036} [modify] https://crrev.com/02dc9f2819cf895bc4ec0dd2a67a90435c58f1bc/chrome/android/java/src/org/chromium/chrome/browser/DeferredStartupHandler.java [modify] https://crrev.com/02dc9f2819cf895bc4ec0dd2a67a90435c58f1bc/chrome/android/java/src/org/chromium/chrome/browser/notifications/ChannelsInitializer.java [add] https://crrev.com/02dc9f2819cf895bc4ec0dd2a67a90435c58f1bc/chrome/android/java/src/org/chromium/chrome/browser/notifications/ChannelsUpdater.java [modify] https://crrev.com/02dc9f2819cf895bc4ec0dd2a67a90435c58f1bc/chrome/android/java/src/org/chromium/chrome/browser/notifications/NotificationManagerProxy.java [modify] https://crrev.com/02dc9f2819cf895bc4ec0dd2a67a90435c58f1bc/chrome/android/java/src/org/chromium/chrome/browser/notifications/NotificationManagerProxyImpl.java [modify] https://crrev.com/02dc9f2819cf895bc4ec0dd2a67a90435c58f1bc/chrome/android/java/src/org/chromium/chrome/browser/upgrade/PackageReplacedBroadcastReceiver.java [modify] https://crrev.com/02dc9f2819cf895bc4ec0dd2a67a90435c58f1bc/chrome/android/java_sources.gni [modify] https://crrev.com/02dc9f2819cf895bc4ec0dd2a67a90435c58f1bc/chrome/android/junit/src/org/chromium/chrome/browser/notifications/ChannelsInitializerTest.java [add] https://crrev.com/02dc9f2819cf895bc4ec0dd2a67a90435c58f1bc/chrome/android/junit/src/org/chromium/chrome/browser/notifications/ChannelsUpdaterTest.java [modify] https://crrev.com/02dc9f2819cf895bc4ec0dd2a67a90435c58f1bc/chrome/test/android/javatests/src/org/chromium/chrome/test/util/browser/notifications/MockNotificationManagerProxy.java
Resolving this as fixed, created separate bugs for initializing on locale change / OS upgrade: https://bugs.chromium.org/p/chromium/issues/detail?id=710925 https://bugs.chromium.org/p/chromium/issues/detail?id=710926
Comment 1 by awdf@chromium.org
, Mar 31 2017