• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright 2014, 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 
17 package com.android.managedprovisioning.uiflows;
18 
19 import android.app.Activity;
20 import android.content.Context;
21 import android.content.Intent;
22 import android.os.Bundle;
23 import android.view.View;
24 import android.view.View.OnLongClickListener;
25 import android.webkit.WebResourceRequest;
26 import android.webkit.WebView;
27 import android.webkit.WebViewClient;
28 
29 import com.android.managedprovisioning.ProvisionLogger;
30 import com.android.managedprovisioning.common.Utils;
31 
32 /**
33  * This activity shows a web view, which loads the url indicated in the starting intent. By default
34  * the user can click on links and load other urls. However, by passing the allowed url base, the
35  * web view can be limited to urls that start with this base.
36  *
37  * <p>This activity is currently used by the
38  * {@link com.android.managedprovisioning.UserConsentDialog} to display the google support web page
39  * about the provisioning concepts.
40  */
41 public class WebActivity extends Activity {
42     private static final String EXTRA_URL = "extra_url";
43 
44     // Users can only browse urls starting with the base specified by the following extra.
45     // If this extra is not used, there are no restrictions on browsable urls.
46     private static final String EXTRA_ALLOWED_URL_BASE = "extra_allowed_url_base";
47 
48     private WebView mWebView;
49     private final Utils mUtils = new Utils();
50 
51     @Override
onCreate(Bundle savedInstanceState)52     public void onCreate(Bundle savedInstanceState) {
53         super.onCreate(savedInstanceState);
54 
55         mWebView = new WebView(this);
56         final String extraUrl = getIntent().getStringExtra(EXTRA_URL);
57         final String extraAllowedUrlBase = getIntent().getStringExtra(EXTRA_ALLOWED_URL_BASE);
58         if (extraUrl == null) {
59             ProvisionLogger.loge("No url provided to WebActivity.");
60             finish();
61             return;
62         }
63         mWebView.loadUrl(extraUrl);
64         mWebView.setWebViewClient(new WebViewClient() {
65             @Override
66             public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
67                 String url = request.getUrl().toString();
68                 if (extraAllowedUrlBase != null && url.startsWith(extraAllowedUrlBase)) {
69                     view.loadUrl(url);
70                 }
71                 return true;
72             }
73         });
74         if (!mUtils.isUserSetupCompleted(this)) {
75             // User should not be able to escape provisioning if user setup isn't complete.
76             mWebView.setOnLongClickListener(new OnLongClickListener() {
77                 @Override
78                 public boolean onLongClick(View v) {
79                     return true;
80                 }
81             });
82         }
83         this.setContentView(mWebView);
84     }
85 
86     /**
87      * Creates an intent to launch the webactivity.
88      *
89      * @param url the url to be shown upon launching this activity
90      * @param allowedUrlBase the limit to all urls allowed to be seen in this webview
91      */
createIntent(Context context, String url, String allowedUrlBase)92     public static Intent createIntent(Context context, String url, String allowedUrlBase) {
93         Intent intent = new Intent(context, WebActivity.class);
94         intent.putExtra(WebActivity.EXTRA_URL, url);
95         intent.putExtra(WebActivity.EXTRA_ALLOWED_URL_BASE, allowedUrlBase);
96         return intent;
97     }
98 }