[go: nahoru, domu]

blob: 365f8513edd942ad7d88656d17bd7a8e190fd7d5 [file] [log] [blame]
Nate Fischer29bbb1e2018-10-01 19:23:43 -07001/*
2 * Copyright 2018 The Android Open Source Project
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17package com.example.androidx.webkit;
18
19import android.app.Activity;
Nate Fischerc4988b52019-04-15 22:52:47 -070020import android.content.Context;
21import android.content.Intent;
Nate Fischerc3d5cbe2020-02-26 18:39:38 -080022import android.net.Uri;
Nate Fischer29bbb1e2018-10-01 19:23:43 -070023import android.os.Bundle;
Nate Fischerc4988b52019-04-15 22:52:47 -070024import android.webkit.ValueCallback;
Nate Fischerc3d5cbe2020-02-26 18:39:38 -080025import android.widget.TextView;
Nate Fischer29bbb1e2018-10-01 19:23:43 -070026
Nate Fischerc4988b52019-04-15 22:52:47 -070027import androidx.annotation.NonNull;
Nate Fischer29bbb1e2018-10-01 19:23:43 -070028import androidx.annotation.Nullable;
29import androidx.appcompat.app.AppCompatActivity;
Nate Fischerc4988b52019-04-15 22:52:47 -070030import androidx.webkit.WebViewCompat;
31import androidx.webkit.WebViewFeature;
Nate Fischer29bbb1e2018-10-01 19:23:43 -070032
33/**
34 * An {@link Activity} to exercise Safe Browsing functionality.
35 */
36public class SafeBrowsingActivity extends AppCompatActivity {
37
38 @Override
39 protected void onCreate(@Nullable Bundle savedInstanceState) {
40 super.onCreate(savedInstanceState);
41
Nate Fischerc4988b52019-04-15 22:52:47 -070042 if (WebViewFeature.isFeatureSupported(WebViewFeature.START_SAFE_BROWSING)) {
43 WebViewCompat.startSafeBrowsing(this.getApplicationContext(),
44 new ValueCallback<Boolean>() {
45 @Override
46 public void onReceiveValue(@NonNull Boolean value) {
47 if (value) {
48 setupLayout();
49 } else {
Nate Fischerc3d5cbe2020-02-26 18:39:38 -080050 TextView t = WebkitHelpers.showMessageInActivity(
51 SafeBrowsingActivity.this,
Nate Fischerc4988b52019-04-15 22:52:47 -070052 R.string.cannot_start_safe_browsing);
Nate Fischerc3d5cbe2020-02-26 18:39:38 -080053 t.setOnClickListener(v -> {
54 showSafeBrowsingRequirementsInBrowser();
55 });
Nate Fischerc4988b52019-04-15 22:52:47 -070056 }
57 }
58 });
59 } else {
60 WebkitHelpers.showMessageInActivity(SafeBrowsingActivity.this,
61 R.string.webkit_api_not_available);
62 }
63 }
64
Nate Fischerc3d5cbe2020-02-26 18:39:38 -080065 private void showSafeBrowsingRequirementsInBrowser() {
66 // Open documentation for WebView Safe Browsing to help the user
67 // debug what's wrong.
68 Uri safeBrowsingRequirementsUri = new Uri.Builder()
69 .scheme("https")
70 .authority("chromium.googlesource.com")
71 .path("/chromium/src/+/master/android_webview/browser/safe_browsing/README.md")
72 .encodedFragment("opt_in_consent_requirements")
73 .build();
74
75 Intent i = new Intent(Intent.ACTION_VIEW);
76 i.setData(safeBrowsingRequirementsUri);
77 startActivity(i);
78 }
79
Nate Fischerc4988b52019-04-15 22:52:47 -070080 private void setupLayout() {
Nate Fischer29bbb1e2018-10-01 19:23:43 -070081 setContentView(R.layout.activity_safe_browsing);
82 setTitle(R.string.safebrowsing_activity_title);
83 WebkitHelpers.appendWebViewVersionToTitle(this);
Nate Fischerc4988b52019-04-15 22:52:47 -070084
85 final Context activityContext = this;
86 MenuListView listView = findViewById(R.id.safe_browsing_list);
87 MenuListView.MenuItem[] menuItems = new MenuListView.MenuItem[] {
88 new MenuListView.MenuItem(
89 getResources().getString(R.string.small_interstitial_activity_title),
90 new Intent(activityContext, SmallInterstitialActivity.class)),
Nate Fischer65108de2019-04-19 18:56:52 -070091 new MenuListView.MenuItem(
92 getResources().getString(R.string.medium_wide_interstitial_activity_title),
93 new Intent(activityContext, MediumInterstitialActivity.class)
94 .putExtra(MediumInterstitialActivity.LAYOUT_HORIZONTAL, false)),
95 new MenuListView.MenuItem(
96 getResources().getString(R.string.medium_tall_interstitial_activity_title),
97 new Intent(activityContext, MediumInterstitialActivity.class)
98 .putExtra(MediumInterstitialActivity.LAYOUT_HORIZONTAL, true)),
Nate Fischerd58611ec2019-04-25 17:45:11 -070099 new MenuListView.MenuItem(
100 getResources().getString(R.string.loud_interstitial_activity_title),
101 new Intent(activityContext, LoudInterstitialActivity.class)),
Nate Fischere752fc22019-05-01 21:56:17 -0700102 new MenuListView.MenuItem(
103 getResources().getString(R.string.giant_interstitial_activity_title),
104 new Intent(activityContext, GiantInterstitialActivity.class)),
Nate Fischerd3c3eaa2019-05-06 14:40:26 -0700105 new MenuListView.MenuItem(
106 getResources().getString(R.string.per_web_view_enable_activity_title),
107 new Intent(activityContext, PerWebViewEnableActivity.class)),
Nate Fischerbb240282019-05-13 21:02:39 -0700108 new MenuListView.MenuItem(
109 getResources().getString(R.string.invisible_activity_title),
110 new Intent(activityContext, InvisibleActivity.class)),
111 new MenuListView.MenuItem(
112 getResources().getString(R.string.unattached_activity_title),
113 new Intent(activityContext, UnattachedActivity.class)),
Nate Fischer2d596f52019-05-14 21:50:53 -0700114 new MenuListView.MenuItem(
115 getResources().getString(R.string.custom_interstitial_activity_title),
116 new Intent(activityContext, CustomInterstitialActivity.class)),
Nate Fischerdc7f8622019-05-15 22:14:40 -0700117 new MenuListView.MenuItem(
Nate Fischerd626ac52020-07-16 14:20:33 -0700118 getResources().getString(R.string.allowlist_activity_title),
119 new Intent(activityContext, AllowlistActivity.class)),
Nate Fischerc4988b52019-04-15 22:52:47 -0700120 };
121 listView.setItems(menuItems);
Nate Fischer29bbb1e2018-10-01 19:23:43 -0700122 }
123}