// Copyright 2015 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.physicalweb; import android.content.Context; import android.content.Intent; import android.net.Uri; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.text.SpannableString; import android.text.TextPaint; import android.text.method.LinkMovementMethod; import android.text.style.ClickableSpan; import android.view.View; import android.widget.Button; import android.widget.TextView; import org.chromium.chrome.R; import org.chromium.chrome.browser.preferences.privacy.PrivacyPreferencesManager; import org.chromium.ui.text.SpanApplier; import org.chromium.ui.text.SpanApplier.SpanInfo; /** * This activity invites the user to opt-in to the Physical Web feature. */ public class PhysicalWebOptInActivity extends AppCompatActivity { private static final String EXTRA_CUSTOM_TABS_SESSION = "android.support.customtabs.extra.SESSION"; private static final String PHYSICAL_WEB_LEARN_MORE_URL = "https://support.google.com/chrome/answer/6239299/"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.physical_web_optin); PhysicalWebUma.onOptInNotificationPressed(this); TextView description = (TextView) findViewById(R.id.physical_web_optin_description); description.setMovementMethod(LinkMovementMethod.getInstance()); description.setText(getDescriptionText()); Button declineButton = (Button) findViewById(R.id.physical_web_decline); declineButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { PhysicalWebUma.onOptInDeclineButtonPressed(PhysicalWebOptInActivity.this); PrivacyPreferencesManager.getInstance().setPhysicalWebEnabled(false); finish(); } }); Button enableButton = (Button) findViewById(R.id.physical_web_enable); enableButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { PhysicalWebUma.onOptInEnableButtonPressed(PhysicalWebOptInActivity.this); PrivacyPreferencesManager.getInstance().setPhysicalWebEnabled(true); startActivity(createListUrlsIntent(PhysicalWebOptInActivity.this)); finish(); } }); } private static Intent createListUrlsIntent(Context context) { Intent intent = new Intent(context, ListUrlsActivity.class); intent.putExtra(ListUrlsActivity.REFERER_KEY, ListUrlsActivity.OPTIN_REFERER); return intent; } private SpannableString getDescriptionText() { return SpanApplier.applySpans( getString(R.string.physical_web_optin_description), new SpanInfo("<learnmore>", "</learnmore>", new ClickableSpan() { @Override public void onClick(View v) { Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(PHYSICAL_WEB_LEARN_MORE_URL)); // Add the SESSION extra to indicate we want a Chrome custom tab. This // allows the help page to open in the same task as the opt-in activity so // they can share a back stack. String session = null; intent.putExtra(EXTRA_CUSTOM_TABS_SESSION, session); PhysicalWebOptInActivity.this.startActivity(intent); } @Override public void updateDrawState(TextPaint ds) { // Color links but do not underline them. ds.setColor(ds.linkColor); } })); } }