summaryrefslogtreecommitdiffstats
path: root/src/com/android/browser/PermissionsPrompt.java
diff options
context:
space:
mode:
authorTao Bai <michaelbai@google.com>2014-05-14 18:08:21 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2014-05-14 18:08:21 +0000
commit440030f0992eec8da2b717566ad4895d9621041c (patch)
tree6f211186400b35757a2d3f2665982257207915bc /src/com/android/browser/PermissionsPrompt.java
parentf6b6a1c69074801f8f4429cb22bc389e63f27de9 (diff)
parente1b6b3b2f9c0dbf201234162101023770835df9e (diff)
downloadpackages_apps_Browser-440030f0992eec8da2b717566ad4895d9621041c.tar.gz
packages_apps_Browser-440030f0992eec8da2b717566ad4895d9621041c.tar.bz2
packages_apps_Browser-440030f0992eec8da2b717566ad4895d9621041c.zip
Merge "Use general permission API."
Diffstat (limited to 'src/com/android/browser/PermissionsPrompt.java')
-rw-r--r--src/com/android/browser/PermissionsPrompt.java126
1 files changed, 126 insertions, 0 deletions
diff --git a/src/com/android/browser/PermissionsPrompt.java b/src/com/android/browser/PermissionsPrompt.java
new file mode 100644
index 000000000..284a3eae7
--- /dev/null
+++ b/src/com/android/browser/PermissionsPrompt.java
@@ -0,0 +1,126 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.browser;
+
+import android.content.Context;
+import android.net.Uri;
+import android.util.AttributeSet;
+import android.view.Gravity;
+import android.view.View;
+import android.webkit.GeolocationPermissions;
+import android.webkit.PermissionRequest;
+import android.widget.Button;
+import android.widget.CheckBox;
+import android.widget.RelativeLayout;
+import android.widget.TextView;
+import android.widget.Toast;
+
+import java.util.Enumeration;
+import java.util.Vector;
+
+public class PermissionsPrompt extends RelativeLayout {
+ private TextView mMessage;
+ private Button mAllowButton;
+ private Button mDenyButton;
+ private CheckBox mRemember;
+ private PermissionRequest mRequest;
+
+ public PermissionsPrompt(Context context) {
+ this(context, null);
+ }
+
+ public PermissionsPrompt(Context context, AttributeSet attrs) {
+ super(context, attrs);
+ }
+
+ @Override
+ protected void onFinishInflate() {
+ super.onFinishInflate();
+ init();
+ }
+
+ private void init() {
+ mMessage = (TextView) findViewById(R.id.message);
+ mAllowButton = (Button) findViewById(R.id.allow_button);
+ mDenyButton = (Button) findViewById(R.id.deny_button);
+ mRemember = (CheckBox) findViewById(R.id.remember);
+ // TODO: Retain permission.
+ // Hide the Remember checkBox as this feature is missing.
+ mRemember.setVisibility(View.INVISIBLE);
+
+ mAllowButton.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ handleButtonClick(true);
+ }
+ });
+ mDenyButton.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ handleButtonClick(false);
+ }
+ });
+ }
+
+ public void show(PermissionRequest request) {
+ mRequest = request;
+ setMessage();
+ mRemember.setChecked(true);
+ setVisibility(View.VISIBLE);
+ }
+
+ public void setMessage() {
+ long resources = mRequest.getResources();
+ Vector<String> strings = new Vector<String>();
+ if ((resources & PermissionRequest.RESOURCE_GEOLOCATION) != 0)
+ strings.add(getResources().getString(R.string.resource_geolocation));
+ else if ((resources & PermissionRequest.RESOURCE_VIDEO_CAPTURE) != 0)
+ strings.add(getResources().getString(R.string.resource_video_capture));
+ else if ((resources & PermissionRequest.RESOURCE_AUDIO_CAPTURE) != 0)
+ strings.add(getResources().getString(R.string.resource_audio_capture));
+ if (strings.isEmpty()) return;
+
+ Enumeration<String> e = strings.elements();
+ StringBuilder sb = new StringBuilder(e.nextElement());
+ if (e.hasMoreElements()) {
+ sb.append(", ");
+ sb.append(e.nextElement());
+ }
+
+ mMessage.setText(String.format(
+ getResources().getString(R.string.permissions_prompt_message),
+ mRequest.getOrigin(), sb.toString()));
+ }
+
+ /**
+ * Hides the prompt.
+ */
+ public void hide() {
+ setVisibility(View.GONE);
+ }
+
+ /**
+ * Handles a click on one the buttons by invoking the callback.
+ */
+ private void handleButtonClick(boolean allow) {
+ hide();
+ if (allow)
+ mRequest.grant(mRequest.getResources());
+ else
+ mRequest.deny();
+ }
+}