blob: 734b40de6b908d651e51aee20e253b7923824582 [file] [log] [blame]
// Copyright 2018 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.browserservices;
import android.content.Context;
import org.chromium.base.CommandLine;
import org.chromium.chrome.R;
import org.chromium.chrome.browser.ChromeSwitches;
import org.chromium.chrome.browser.preferences.ChromePreferenceManager;
import org.chromium.ui.widget.Toast;
import java.util.Date;
import java.util.concurrent.TimeUnit;
/**
* Since Trusted Web Activities are part of Chrome they have access to the cookie jar and have the
* same reporting and metrics as other parts of Chrome. However, they have no UI making the fact
* they are part of Chrome obvious to the user. Therefore we show a disclosure Toast whenever an
* app opens a Trusted Web Activity, at most once per week per app.
*/
public class TrustedWebActivityDisclosure {
private static final int DISCLOSURE_PERIOD_DAYS = 7;
/**
* Show the "Running in Chrome" disclosure (Toast) if one hasn't been shown recently.
*/
public static void showIfNeeded(Context context, String packageName) {
ChromePreferenceManager prefs = ChromePreferenceManager.getInstance();
Date now = new Date();
Date lastShown = prefs.getTrustedWebActivityLastDisclosureTime(packageName);
long millisSince = now.getTime() - lastShown.getTime();
long daysSince = TimeUnit.DAYS.convert(millisSince, TimeUnit.MILLISECONDS);
boolean force = CommandLine.getInstance().hasSwitch(
ChromeSwitches.FORCE_TRUSTED_WEB_ACTIVITY_DISCLOSURE);
if (!force && daysSince <= DISCLOSURE_PERIOD_DAYS) return;
prefs.setTrustedWebActivityLastDisclosureTime(packageName, now);
String disclosure = context.getResources().getString(R.string.twa_running_in_chrome);
Toast.makeText(context, disclosure, Toast.LENGTH_LONG).show();
}
private TrustedWebActivityDisclosure() {}
}