Index: chrome/browser/ui/android/infobars/permission_group_infobar_android.cc |
diff --git a/chrome/browser/ui/android/infobars/permission_group_infobar_android.cc b/chrome/browser/ui/android/infobars/permission_group_infobar_android.cc |
new file mode 100644 |
index 0000000000000000000000000000000000000000..e5702be1d3cf3d6a25bef420d8b3e9510ce0458b |
--- /dev/null |
+++ b/chrome/browser/ui/android/infobars/permission_group_infobar_android.cc |
@@ -0,0 +1,85 @@ |
+// 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. |
+ |
+#include "chrome/browser/ui/android/infobars/permission_group_infobar_android.h" |
+ |
+#include "base/android/jni_android.h" |
+#include "base/android/jni_array.h" |
+#include "base/android/jni_string.h" |
+#include "base/android/scoped_java_ref.h" |
+#include "chrome/browser/android/permissions/permission_group_infobar_delegate_android.h" |
+#include "chrome/browser/infobars/infobar_service.h" |
+#include "content/public/browser/android/content_view_core.h" |
+#include "content/public/browser/web_contents.h" |
+#include "jni/PermissionGroupInfoBarAndroid_jni.h" |
+#include "net/base/registry_controlled_domains/registry_controlled_domain.h" |
gone
2015/09/25 10:34:43
get rid of the ones you don't use
Lalit Maganti
2015/09/25 13:09:24
Done.
|
+#include "ui/android/window_android.h" |
+#include "ui/gfx/android/java_bitmap.h" |
+#include "ui/gfx/image/image.h" |
+ |
+PermissionGroupInfoBarAndroid::PermissionGroupInfoBarAndroid( |
+ scoped_ptr<PermissionGroupInfoBarDelegateAndroid> delegate, |
+ std::vector<int> permission_types) |
+ : ConfirmInfoBar(delegate.Pass()), |
+ permission_types_(permission_types) { |
+} |
+ |
+PermissionGroupInfoBarAndroid::~PermissionGroupInfoBarAndroid() { |
+ if (java_infobar_.is_null()) |
+ return; |
+ |
+ JNIEnv* env = base::android::AttachCurrentThread(); |
+ Java_PermissionGroupInfoBarAndroid_onNativeDestroyed( |
+ env, java_infobar_.obj()); |
+ java_infobar_.Reset(); |
+} |
+ |
+PermissionGroupInfoBarDelegateAndroid* |
+PermissionGroupInfoBarAndroid::GetDelegate() { |
+ return static_cast<PermissionGroupInfoBarDelegateAndroid*>(delegate()); |
+} |
+ |
+void PermissionGroupInfoBarAndroid::OnCheckedStateUpdate( |
+ JNIEnv* env, |
+ jobject obj, |
+ jbooleanArray raw_checked_states) { |
+ jint array_size = env->GetArrayLength(raw_checked_states); |
+ jboolean* states_ptr = env->GetBooleanArrayElements( |
+ raw_checked_states, NULL); |
+ |
+ GetDelegate()->OnCheckedStateUpdate(states_ptr, array_size); |
+} |
+ |
+base::android::ScopedJavaLocalRef<jobject> |
+PermissionGroupInfoBarAndroid::CreateRenderInfoBar(JNIEnv* env) { |
+ content::WebContents* web_contents = |
+ InfoBarService::WebContentsFromInfoBar(this); |
+ DCHECK(web_contents); |
+ content::ContentViewCore* cvc = |
+ content::ContentViewCore::FromWebContents(web_contents); |
+ DCHECK(cvc); |
+ |
+ base::android::ScopedJavaLocalRef<jobject> jwindow_android = |
+ cvc->GetWindowAndroid()->GetJavaObject(); |
+ base::android::ScopedJavaLocalRef<jstring> title_message = |
+ base::android::ConvertUTF16ToJavaString( |
+ env, GetDelegate()->GetMessageText()); |
+ base::android::ScopedJavaLocalRef<jintArray> jtypes = |
+ base::android::ToJavaIntArray(env, permission_types_); |
+ |
+ base::android::ScopedJavaLocalRef<jobject> infobar; |
+ infobar.Reset(Java_PermissionGroupInfoBarAndroid_createInfoBar(env, |
+ reinterpret_cast<intptr_t>(this), |
+ jwindow_android.obj(), |
+ title_message.obj(), |
+ jtypes.obj())); |
+ java_infobar_.Reset(env, infobar.obj()); |
+ return infobar; |
+} |
+ |
+// Native JNI methods --------------------------------------------------------- |
+ |
+bool RegisterPermissionGroupInfoBarAndroid(JNIEnv* env) { |
+ return RegisterNativesImpl(env); |
+} |