Commit d777047b authored by Hesen Zhang's avatar Hesen Zhang Committed by Commit Bot

[Update Notification Service]: Pull out update utils.

- Change handleUpdateIntent to onUpdateAvailable, and pull it out
to UpdateUtils for both implementation to use.

Bug: 1013685
Change-Id: I5474e4c8c025ce97b8cec74dfa7bbfb0f9f7bcef
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2001065
Commit-Queue: Hesen Zhang <hesen@chromium.org>
Auto-Submit: Hesen Zhang <hesen@chromium.org>
Reviewed-by: default avatarDavid Trainor <dtrainor@chromium.org>
Cr-Commit-Position: refs/heads/master@{#732670}
parent 63d9a0cf
...@@ -1121,6 +1121,7 @@ chrome_java_sources = [ ...@@ -1121,6 +1121,7 @@ chrome_java_sources = [
"java/src/org/chromium/chrome/browser/omaha/notification/UpdateNotificationControllerFactory.java", "java/src/org/chromium/chrome/browser/omaha/notification/UpdateNotificationControllerFactory.java",
"java/src/org/chromium/chrome/browser/omaha/notification/UpdateNotificationControllerImpl.java", "java/src/org/chromium/chrome/browser/omaha/notification/UpdateNotificationControllerImpl.java",
"java/src/org/chromium/chrome/browser/omaha/notification/UpdateNotificationServiceBridge.java", "java/src/org/chromium/chrome/browser/omaha/notification/UpdateNotificationServiceBridge.java",
"java/src/org/chromium/chrome/browser/omaha/notification/UpdateUtils.java",
"java/src/org/chromium/chrome/browser/omnibox/AutocompleteEditText.java", "java/src/org/chromium/chrome/browser/omnibox/AutocompleteEditText.java",
"java/src/org/chromium/chrome/browser/omnibox/AutocompleteEditTextModel.java", "java/src/org/chromium/chrome/browser/omnibox/AutocompleteEditTextModel.java",
"java/src/org/chromium/chrome/browser/omnibox/AutocompleteEditTextModelBase.java", "java/src/org/chromium/chrome/browser/omnibox/AutocompleteEditTextModelBase.java",
......
...@@ -26,8 +26,6 @@ import org.chromium.base.Log; ...@@ -26,8 +26,6 @@ import org.chromium.base.Log;
import org.chromium.base.metrics.RecordHistogram; import org.chromium.base.metrics.RecordHistogram;
import org.chromium.chrome.R; import org.chromium.chrome.R;
import org.chromium.chrome.browser.ChromeActivity; import org.chromium.chrome.browser.ChromeActivity;
import org.chromium.chrome.browser.IntentHandler;
import org.chromium.chrome.browser.document.ChromeLauncherActivity;
import org.chromium.chrome.browser.init.BrowserParts; import org.chromium.chrome.browser.init.BrowserParts;
import org.chromium.chrome.browser.init.ChromeBrowserInitializer; import org.chromium.chrome.browser.init.ChromeBrowserInitializer;
import org.chromium.chrome.browser.init.EmptyBrowserParts; import org.chromium.chrome.browser.init.EmptyBrowserParts;
...@@ -44,8 +42,6 @@ import org.chromium.chrome.browser.notifications.PendingIntentProvider; ...@@ -44,8 +42,6 @@ import org.chromium.chrome.browser.notifications.PendingIntentProvider;
import org.chromium.chrome.browser.notifications.channels.ChannelDefinitions; import org.chromium.chrome.browser.notifications.channels.ChannelDefinitions;
import org.chromium.chrome.browser.omaha.OmahaBase; import org.chromium.chrome.browser.omaha.OmahaBase;
import org.chromium.chrome.browser.omaha.UpdateStatusProvider; import org.chromium.chrome.browser.omaha.UpdateStatusProvider;
import org.chromium.chrome.browser.omaha.UpdateStatusProvider.UpdateInteractionSource;
import org.chromium.chrome.browser.omaha.UpdateStatusProvider.UpdateState;
import org.chromium.chrome.browser.omaha.UpdateStatusProvider.UpdateStatus; import org.chromium.chrome.browser.omaha.UpdateStatusProvider.UpdateStatus;
import java.lang.annotation.Retention; import java.lang.annotation.Retention;
...@@ -199,7 +195,9 @@ public class UpdateNotificationControllerImpl implements UpdateNotificationContr ...@@ -199,7 +195,9 @@ public class UpdateNotificationControllerImpl implements UpdateNotificationContr
"GoogleUpdate.Notification.LaunchEvent", LaunchEvent.START, "GoogleUpdate.Notification.LaunchEvent", LaunchEvent.START,
LaunchEvent.NUM_ENTRIES); LaunchEvent.NUM_ENTRIES);
try { try {
handleUpdateIntent(context, intent); int state = intent.getIntExtra(UPDATE_NOTIFICATION_STATE_EXTRA,
UpdateStatusProvider.UpdateState.NONE);
UpdateUtils.onUpdateAvailable(context, state);
} catch (IllegalArgumentException e) { } catch (IllegalArgumentException e) {
// If it takes too long to load native library, we may fail to start // If it takes too long to load native library, we may fail to start
// activity. // activity.
...@@ -215,33 +213,5 @@ public class UpdateNotificationControllerImpl implements UpdateNotificationContr ...@@ -215,33 +213,5 @@ public class UpdateNotificationControllerImpl implements UpdateNotificationContr
ChromeBrowserInitializer.getInstance().handlePreNativeStartup(parts); ChromeBrowserInitializer.getInstance().handlePreNativeStartup(parts);
ChromeBrowserInitializer.getInstance().handlePostNativeStartup(true, parts); ChromeBrowserInitializer.getInstance().handlePostNativeStartup(true, parts);
} }
private void handleUpdateIntent(Context context, Intent intent) {
@UpdateState
int state = intent.getIntExtra(UPDATE_NOTIFICATION_STATE_EXTRA, UpdateState.NONE);
switch (state) {
case INLINE_UPDATE_AVAILABLE:
Intent launchInlineUpdateIntent =
new Intent(Intent.ACTION_VIEW)
.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
.setClass(context, ChromeLauncherActivity.class)
.putExtra(INLINE_UPDATE_NOTIFICATION_RECEIVED_EXTRA, true);
IntentHandler.startActivityForTrustedIntent(launchInlineUpdateIntent);
break;
case UPDATE_AVAILABLE:
Callback<UpdateStatus> intentLauncher = new Callback<UpdateStatus>() {
@Override
public void onResult(UpdateStatus result) {
UpdateStatusProvider.getInstance().startIntentUpdate(context,
UpdateInteractionSource.FROM_NOTIFICATION, true /* newTask */);
UpdateStatusProvider.getInstance().removeObserver(this);
}
};
UpdateStatusProvider.getInstance().addObserver(intentLauncher);
break;
default:
break;
}
}
} }
} }
// Copyright 2020 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
package org.chromium.chrome.browser.omaha.notification;
import static org.chromium.chrome.browser.omaha.UpdateStatusProvider.UpdateState.INLINE_UPDATE_AVAILABLE;
import static org.chromium.chrome.browser.omaha.UpdateStatusProvider.UpdateState.UPDATE_AVAILABLE;
import android.content.Context;
import android.content.Intent;
import org.chromium.base.Callback;
import org.chromium.chrome.browser.IntentHandler;
import org.chromium.chrome.browser.document.ChromeLauncherActivity;
import org.chromium.chrome.browser.omaha.UpdateStatusProvider;
import org.chromium.chrome.browser.omaha.UpdateStatusProvider.UpdateState;
/**
* Util functions for update notification implementation.
*/
public class UpdateUtils {
private static final String INLINE_UPDATE_NOTIFICATION_RECEIVED_EXTRA =
"org.chromium.chrome.browser.omaha.inline_update_notification_received_extra";
/**
* Addresses different states for update notification.
* @param context A {@link Context} Context passing into receiver.
* @param state A {@link UpdateState} state of update notification.
*/
public static void onUpdateAvailable(Context context, @UpdateState int state) {
switch (state) {
case INLINE_UPDATE_AVAILABLE:
Intent launchInlineUpdateIntent =
new Intent(Intent.ACTION_VIEW)
.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
.setClass(context, ChromeLauncherActivity.class)
.putExtra(INLINE_UPDATE_NOTIFICATION_RECEIVED_EXTRA, true);
IntentHandler.startActivityForTrustedIntent(launchInlineUpdateIntent);
break;
case UPDATE_AVAILABLE:
Callback<UpdateStatusProvider.UpdateStatus> intentLauncher =
new Callback<UpdateStatusProvider.UpdateStatus>() {
@Override
public void onResult(UpdateStatusProvider.UpdateStatus result) {
UpdateStatusProvider.getInstance().startIntentUpdate(context,
UpdateStatusProvider.UpdateInteractionSource
.FROM_NOTIFICATION,
true /* newTask */);
UpdateStatusProvider.getInstance().removeObserver(this);
}
};
UpdateStatusProvider.getInstance().addObserver(intentLauncher);
break;
default:
break;
}
}
}
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment