Skip to content
This repository was archived by the owner on Dec 6, 2019. It is now read-only.

Commit 4b392c0

Browse files
committed
Update to 63.0.3239.90
1 parent bce81da commit 4b392c0

28 files changed

+124
-126
lines changed

app/src/main/assets/icudtl.dat

560 Bytes
Binary file not shown.
3.92 KB
Binary file not shown.

app/src/main/assets/zh-CN.pak

-6 Bytes
Binary file not shown.

app/src/main/java/org/chromium/base/library_loader/NativeLibraries.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -8,5 +8,5 @@ public class NativeLibraries {
88
public static final String[] LIBRARIES =
99
{"chrome"};
1010
static String sVersionNumber =
11-
"63.0.3239.65";
11+
"63.0.3239.90";
1212
}

app/src/main/java/org/chromium/chrome/browser/ChromeFeatureList.java

+1
Original file line numberDiff line numberDiff line change
@@ -165,6 +165,7 @@ public static boolean getFieldTrialParamByFeatureAsBoolean(
165165
public static final String CHROME_HOME_PERSONALIZED_OMNIBOX_SUGGESTIONS =
166166
"ChromeHomePersonalizedOmniboxSuggestions";
167167
public static final String CHROME_HOME_PROMO = "ChromeHomePromo";
168+
public static final String CHROME_HOME_PROMO_INFO_ONLY = "ChromeHomePromoInfoOnly";
168169
public static final String CHROME_HOME_PROMO_ON_STARTUP = "ChromeHomePromoOnStartup";
169170
public static final String CHROME_MEMEX = "ChromeMemex";
170171
public static final String CHROME_SMART_SELECTION = "ChromeSmartSelection";

app/src/main/java/org/chromium/chrome/browser/externalnav/ExternalNavigationDelegate.java

+4-2
Original file line numberDiff line numberDiff line change
@@ -75,16 +75,18 @@ interface ExternalNavigationDelegate {
7575
/**
7676
* Display a dialog warning the user that they may be leaving Chrome by starting this
7777
* intent. Give the user the opportunity to cancel the action. And if it is canceled, a
78-
* navigation will happen in Chrome.
78+
* navigation will happen in Chrome. Catches BadTokenExceptions caused by showing the dialog
79+
* on certain devices. (crbug.com/782602)
7980
* @param intent The intent for external application that will be sent.
8081
* @param referrerUrl The referrer for the current navigation.
8182
* @param fallbackUrl The URL to load if the user doesn't proceed with external intent.
8283
* @param tab The current tab.
8384
* @param needsToCloseTab Whether the current tab has to be closed after the intent is sent.
8485
* @param proxy Whether we need to proxy the intent through AuthenticatedProxyActivity (this is
8586
* used by Instant Apps intents.
87+
* @return True if the function returned error free, false if it threw an exception.
8688
*/
87-
void startIncognitoIntent(Intent intent, String referrerUrl, String fallbackUrl, Tab tab,
89+
boolean startIncognitoIntent(Intent intent, String referrerUrl, String fallbackUrl, Tab tab,
8890
boolean needsToCloseTab, boolean proxy);
8991

9092
/**

app/src/main/java/org/chromium/chrome/browser/externalnav/ExternalNavigationDelegateImpl.java

+14-1
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
import android.provider.Telephony;
2222
import android.support.v7.app.AlertDialog;
2323
import android.text.TextUtils;
24+
import android.view.WindowManager.BadTokenException;
2425
import android.webkit.MimeTypeMap;
2526

2627
import org.chromium.base.ApplicationState;
@@ -379,7 +380,19 @@ private void recordExternalNavigationDispatched(Intent intent) {
379380
}
380381

381382
@Override
382-
public void startIncognitoIntent(final Intent intent, final String referrerUrl,
383+
public boolean startIncognitoIntent(final Intent intent, final String referrerUrl,
384+
final String fallbackUrl, final Tab tab, final boolean needsToCloseTab,
385+
final boolean proxy) {
386+
try {
387+
startIncognitoIntentInternal(
388+
intent, referrerUrl, fallbackUrl, tab, needsToCloseTab, proxy);
389+
} catch (BadTokenException e) {
390+
return false;
391+
}
392+
return true;
393+
}
394+
395+
private void startIncognitoIntentInternal(final Intent intent, final String referrerUrl,
383396
final String fallbackUrl, final Tab tab, final boolean needsToCloseTab,
384397
final boolean proxy) {
385398
Context context = tab.getWindowAndroid().getContext().get();

app/src/main/java/org/chromium/chrome/browser/externalnav/ExternalNavigationHandler.java

+14-7
Original file line numberDiff line numberDiff line change
@@ -489,10 +489,13 @@ && resolversSubsetOf(resolvingInfos,
489489
if (params.isIncognito() && !mDelegate.willChromeHandleIntent(intent)) {
490490
// This intent may leave Chrome. Warn the user that incognito does not carry over
491491
// to apps out side of Chrome.
492-
mDelegate.startIncognitoIntent(intent, params.getReferrerUrl(),
493-
hasBrowserFallbackUrl ? browserFallbackUrl : null, params.getTab(),
494-
params.shouldCloseContentsOnOverrideUrlLoadingAndLaunchIntent(),
495-
shouldProxyForInstantApps);
492+
if (!mDelegate.startIncognitoIntent(intent, params.getReferrerUrl(),
493+
hasBrowserFallbackUrl ? browserFallbackUrl : null, params.getTab(),
494+
params.shouldCloseContentsOnOverrideUrlLoadingAndLaunchIntent(),
495+
shouldProxyForInstantApps)) {
496+
if (DEBUG) Log.i(TAG, "NO_OVERRIDE: Failed to show incognito alert dialog.");
497+
return OverrideUrlLoadingResult.NO_OVERRIDE;
498+
}
496499
if (DEBUG) Log.i(TAG, "OVERRIDE_WITH_ASYNC_ACTION: Incognito navigation out");
497500
return OverrideUrlLoadingResult.OVERRIDE_WITH_ASYNC_ACTION;
498501
}
@@ -572,9 +575,13 @@ private OverrideUrlLoadingResult sendIntentToMarket(String packageName, String m
572575
intent.putExtra(Intent.EXTRA_REFERRER, Uri.parse(params.getReferrerUrl()));
573576
}
574577
if (params.isIncognito()) {
575-
mDelegate.startIncognitoIntent(intent, params.getReferrerUrl(), null,
576-
params.getTab(),
577-
params.shouldCloseContentsOnOverrideUrlLoadingAndLaunchIntent(), false);
578+
if (!mDelegate.startIncognitoIntent(intent, params.getReferrerUrl(), null,
579+
params.getTab(),
580+
params.shouldCloseContentsOnOverrideUrlLoadingAndLaunchIntent(),
581+
false)) {
582+
if (DEBUG) Log.i(TAG, "NO_OVERRIDE: Failed to show incognito alert dialog.");
583+
return OverrideUrlLoadingResult.NO_OVERRIDE;
584+
}
578585
if (DEBUG) Log.i(TAG, "OVERRIDE_WITH_ASYNC_ACTION: Incognito intent to Play Store");
579586
return OverrideUrlLoadingResult.OVERRIDE_WITH_ASYNC_ACTION;
580587
} else {

app/src/main/java/org/chromium/chrome/browser/installedapp/InstalledAppProviderImpl.java

+4
Original file line numberDiff line numberDiff line change
@@ -249,6 +249,10 @@ private static JSONArray getAssetStatements(String packageName, PackageManager p
249249
// Get the <meta-data> from this app's manifest.
250250
// Throws NameNotFoundException if the application is not installed.
251251
ApplicationInfo appInfo = pm.getApplicationInfo(packageName, PackageManager.GET_META_DATA);
252+
if (appInfo == null || appInfo.metaData == null) {
253+
return new JSONArray();
254+
}
255+
252256
int identifier = appInfo.metaData.getInt(ASSET_STATEMENTS_KEY);
253257
if (identifier == 0) {
254258
return new JSONArray();

app/src/main/java/org/chromium/chrome/browser/util/FeatureUtilities.java

+31-7
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import android.annotation.TargetApi;
99
import android.content.Context;
1010
import android.content.Intent;
11+
import android.content.SharedPreferences;
1112
import android.content.pm.PackageManager;
1213
import android.content.pm.ResolveInfo;
1314
import android.os.Build;
@@ -21,6 +22,7 @@
2122
import org.chromium.base.ContextUtils;
2223
import org.chromium.base.FieldTrialList;
2324
import org.chromium.base.Log;
25+
import org.chromium.base.StrictModeContext;
2426
import org.chromium.base.ThreadUtils;
2527
import org.chromium.base.VisibleForTesting;
2628
import org.chromium.base.annotations.CalledByNative;
@@ -52,6 +54,8 @@ public class FeatureUtilities {
5254
private static final String ENABLED_EXPERIMENT_GROUP = "Enabled";
5355
private static final String DISABLED_EXPERIMENT_GROUP = "Disabled";
5456

57+
private static final long CHROME_HOME_MAX_ENABLED_TIME_MS = 60000; // 60 seconds.
58+
5559
private static Boolean sHasGoogleAccountAuthenticator;
5660
private static Boolean sHasRecognitionIntentHandler;
5761
private static Boolean sChromeHomeEnabled;
@@ -375,16 +379,36 @@ public static String getChromeHomeSwipeLogicType() {
375379
* @return Whether the Chrome Home promo should be shown for cold-start.
376380
*/
377381
public static boolean shouldShowChromeHomePromoForStartup() {
378-
if (DeviceFormFactor.isTablet() || isChromeHomeEnabled()
379-
|| !ChromeFeatureList.isEnabled(ChromeFeatureList.CHROME_HOME_PROMO)
380-
|| !ChromeFeatureList.isEnabled(ChromeFeatureList.CHROME_HOME_PROMO_ON_STARTUP)) {
381-
return false;
382-
}
382+
if (DeviceFormFactor.isTablet()) return false;
383383

384+
// The preference will be set if the promo has been seen before. If that is the case, do not
385+
// show it again.
384386
ChromePreferenceManager prefManager = ChromePreferenceManager.getInstance();
387+
boolean isChromeHomePrefSet = prefManager.isChromeHomeUserPreferenceSet();
388+
if (isChromeHomePrefSet) return false;
389+
390+
if (isChromeHomeEnabled()
391+
&& ChromeFeatureList.isEnabled(ChromeFeatureList.CHROME_HOME_PROMO_INFO_ONLY)) {
392+
long chromeHomeEnabledDate = System.currentTimeMillis();
393+
394+
try (StrictModeContext unused = StrictModeContext.allowDiskReads()) {
395+
SharedPreferences sharedPreferences = ContextUtils.getAppSharedPreferences();
396+
chromeHomeEnabledDate = sharedPreferences.getLong(
397+
ChromePreferenceManager.CHROME_HOME_SHARED_PREFERENCES_KEY,
398+
chromeHomeEnabledDate);
399+
}
400+
401+
long timeDeadlineForPromo = chromeHomeEnabledDate + CHROME_HOME_MAX_ENABLED_TIME_MS;
402+
403+
// If Chrome Home has been enabled for < 60 seconds, show the info dialog.
404+
return System.currentTimeMillis() < timeDeadlineForPromo;
405+
} else if (!isChromeHomeEnabled()
406+
&& ChromeFeatureList.isEnabled(ChromeFeatureList.CHROME_HOME_PROMO)
407+
&& ChromeFeatureList.isEnabled(ChromeFeatureList.CHROME_HOME_PROMO_ON_STARTUP)) {
408+
return true;
409+
}
385410

386-
// Don't show the promo is the user has Chrome Home enabled.
387-
return !prefManager.isChromeHomeUserPreferenceSet();
411+
return false;
388412
}
389413

390414
/**

app/src/main/java/org/chromium/chrome/browser/vr_shell/VrExternalNavigationDelegate.java

+3-2
Original file line numberDiff line numberDiff line change
@@ -28,9 +28,10 @@ public boolean startActivityIfNeeded(Intent intent, boolean proxy) {
2828
}
2929

3030
@Override
31-
public void startIncognitoIntent(Intent intent, String referrerUrl, String fallbackUrl, Tab tab,
32-
boolean needsToCloseTab, boolean proxy) {
31+
public boolean startIncognitoIntent(Intent intent, String referrerUrl, String fallbackUrl,
32+
Tab tab, boolean needsToCloseTab, boolean proxy) {
3333
VrShellDelegate.showDoffAndExitVr(false);
34+
return true;
3435
}
3536

3637
@Override

0 commit comments

Comments
 (0)