OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "chrome/browser/ui/android/infobars/infobar_container_android.h" | 5 #include "chrome/browser/ui/android/infobars/infobar_container_android.h" |
6 | 6 |
7 #include "base/android/jni_android.h" | 7 #include "base/android/jni_android.h" |
8 #include "base/logging.h" | 8 #include "base/logging.h" |
9 #include "base/message_loop/message_loop.h" | 9 #include "base/message_loop/message_loop.h" |
10 #include "base/metrics/sparse_histogram.h" | 10 #include "base/metrics/sparse_histogram.h" |
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
58 | 58 |
59 AttachJavaInfoBar(android_bar); | 59 AttachJavaInfoBar(android_bar); |
60 } | 60 } |
61 | 61 |
62 void InfoBarContainerAndroid::AttachJavaInfoBar(InfoBarAndroid* android_bar) { | 62 void InfoBarContainerAndroid::AttachJavaInfoBar(InfoBarAndroid* android_bar) { |
63 if (android_bar->HasSetJavaInfoBar()) | 63 if (android_bar->HasSetJavaInfoBar()) |
64 return; | 64 return; |
65 JNIEnv* env = base::android::AttachCurrentThread(); | 65 JNIEnv* env = base::android::AttachCurrentThread(); |
66 | 66 |
67 if (Java_InfoBarContainer_nextInfoBarWillBeVisible( | 67 if (Java_InfoBarContainer_nextInfoBarWillBeVisible( |
68 env, weak_java_infobar_container_.get(env).obj())) { | 68 env, weak_java_infobar_container_.get(env))) { |
69 UMA_HISTOGRAM_SPARSE_SLOWLY("InfoBar.Shown.Visible", | 69 UMA_HISTOGRAM_SPARSE_SLOWLY("InfoBar.Shown.Visible", |
70 android_bar->delegate()->GetIdentifier()); | 70 android_bar->delegate()->GetIdentifier()); |
71 } else { | 71 } else { |
72 UMA_HISTOGRAM_SPARSE_SLOWLY("InfoBar.Shown.Hidden", | 72 UMA_HISTOGRAM_SPARSE_SLOWLY("InfoBar.Shown.Hidden", |
73 android_bar->delegate()->GetIdentifier()); | 73 android_bar->delegate()->GetIdentifier()); |
74 } | 74 } |
75 | 75 |
76 base::android::ScopedJavaLocalRef<jobject> java_infobar = | 76 base::android::ScopedJavaLocalRef<jobject> java_infobar = |
77 android_bar->CreateRenderInfoBar(env); | 77 android_bar->CreateRenderInfoBar(env); |
78 Java_InfoBarContainer_addInfoBar( | 78 Java_InfoBarContainer_addInfoBar(env, weak_java_infobar_container_.get(env), |
79 env, weak_java_infobar_container_.get(env).obj(), java_infobar.obj()); | 79 java_infobar); |
80 android_bar->SetJavaInfoBar(java_infobar); | 80 android_bar->SetJavaInfoBar(java_infobar); |
81 } | 81 } |
82 | 82 |
83 void InfoBarContainerAndroid::PlatformSpecificReplaceInfoBar( | 83 void InfoBarContainerAndroid::PlatformSpecificReplaceInfoBar( |
84 infobars::InfoBar* old_infobar, | 84 infobars::InfoBar* old_infobar, |
85 infobars::InfoBar* new_infobar) { | 85 infobars::InfoBar* new_infobar) { |
86 static_cast<InfoBarAndroid*>(new_infobar)->PassJavaInfoBar( | 86 static_cast<InfoBarAndroid*>(new_infobar)->PassJavaInfoBar( |
87 static_cast<InfoBarAndroid*>(old_infobar)); | 87 static_cast<InfoBarAndroid*>(old_infobar)); |
88 } | 88 } |
89 | 89 |
90 void InfoBarContainerAndroid::PlatformSpecificRemoveInfoBar( | 90 void InfoBarContainerAndroid::PlatformSpecificRemoveInfoBar( |
91 infobars::InfoBar* infobar) { | 91 infobars::InfoBar* infobar) { |
92 InfoBarAndroid* android_infobar = static_cast<InfoBarAndroid*>(infobar); | 92 InfoBarAndroid* android_infobar = static_cast<InfoBarAndroid*>(infobar); |
93 android_infobar->CloseJavaInfoBar(); | 93 android_infobar->CloseJavaInfoBar(); |
94 } | 94 } |
95 | 95 |
96 | 96 |
97 // Native JNI methods --------------------------------------------------------- | 97 // Native JNI methods --------------------------------------------------------- |
98 | 98 |
99 static jlong Init(JNIEnv* env, const JavaParamRef<jobject>& obj) { | 99 static jlong Init(JNIEnv* env, const JavaParamRef<jobject>& obj) { |
100 InfoBarContainerAndroid* infobar_container = | 100 InfoBarContainerAndroid* infobar_container = |
101 new InfoBarContainerAndroid(env, obj); | 101 new InfoBarContainerAndroid(env, obj); |
102 return reinterpret_cast<intptr_t>(infobar_container); | 102 return reinterpret_cast<intptr_t>(infobar_container); |
103 } | 103 } |
104 | 104 |
105 bool RegisterInfoBarContainer(JNIEnv* env) { | 105 bool RegisterInfoBarContainer(JNIEnv* env) { |
106 return RegisterNativesImpl(env); | 106 return RegisterNativesImpl(env); |
107 } | 107 } |
OLD | NEW |