OLD | NEW |
1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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/android/banners/app_banner_infobar_delegate_android.h" | 5 #include "chrome/browser/android/banners/app_banner_infobar_delegate_android.h" |
6 | 6 |
7 #include "base/android/jni_android.h" | 7 #include "base/android/jni_android.h" |
8 #include "base/android/jni_string.h" | 8 #include "base/android/jni_string.h" |
9 #include "base/guid.h" | 9 #include "base/guid.h" |
10 #include "base/location.h" | 10 #include "base/location.h" |
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
80 AppBannerInfoBarDelegateAndroid::~AppBannerInfoBarDelegateAndroid() { | 80 AppBannerInfoBarDelegateAndroid::~AppBannerInfoBarDelegateAndroid() { |
81 if (!has_user_interaction_) { | 81 if (!has_user_interaction_) { |
82 if (!native_app_data_.is_null()) | 82 if (!native_app_data_.is_null()) |
83 TrackUserResponse(USER_RESPONSE_NATIVE_APP_IGNORED); | 83 TrackUserResponse(USER_RESPONSE_NATIVE_APP_IGNORED); |
84 else if (!manifest_.IsEmpty()) | 84 else if (!manifest_.IsEmpty()) |
85 TrackUserResponse(USER_RESPONSE_WEB_APP_IGNORED); | 85 TrackUserResponse(USER_RESPONSE_WEB_APP_IGNORED); |
86 } | 86 } |
87 | 87 |
88 TrackDismissEvent(DISMISS_EVENT_DISMISSED); | 88 TrackDismissEvent(DISMISS_EVENT_DISMISSED); |
89 JNIEnv* env = base::android::AttachCurrentThread(); | 89 JNIEnv* env = base::android::AttachCurrentThread(); |
90 Java_AppBannerInfoBarDelegateAndroid_destroy(env, | 90 Java_AppBannerInfoBarDelegateAndroid_destroy(env, java_delegate_); |
91 java_delegate_.obj()); | |
92 java_delegate_.Reset(); | 91 java_delegate_.Reset(); |
93 } | 92 } |
94 | 93 |
95 void AppBannerInfoBarDelegateAndroid::UpdateInstallState( | 94 void AppBannerInfoBarDelegateAndroid::UpdateInstallState( |
96 JNIEnv* env, | 95 JNIEnv* env, |
97 const JavaParamRef<jobject>& obj) { | 96 const JavaParamRef<jobject>& obj) { |
98 if (native_app_data_.is_null()) | 97 if (native_app_data_.is_null()) |
99 return; | 98 return; |
100 | 99 |
101 int newState = Java_AppBannerInfoBarDelegateAndroid_determineInstallState( | 100 int newState = Java_AppBannerInfoBarDelegateAndroid_determineInstallState( |
102 env, | 101 env, java_delegate_, native_app_data_); |
103 java_delegate_.obj(), | |
104 native_app_data_.obj()); | |
105 static_cast<AppBannerInfoBarAndroid*>(infobar()) | 102 static_cast<AppBannerInfoBarAndroid*>(infobar()) |
106 ->OnInstallStateChanged(newState); | 103 ->OnInstallStateChanged(newState); |
107 } | 104 } |
108 | 105 |
109 void AppBannerInfoBarDelegateAndroid::OnInstallIntentReturned( | 106 void AppBannerInfoBarDelegateAndroid::OnInstallIntentReturned( |
110 JNIEnv* env, | 107 JNIEnv* env, |
111 const JavaParamRef<jobject>& obj, | 108 const JavaParamRef<jobject>& obj, |
112 jboolean jis_installing) { | 109 jboolean jis_installing) { |
113 if (!infobar()) | 110 if (!infobar()) |
114 return; | 111 return; |
(...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
225 JNIEnv* env = base::android::AttachCurrentThread(); | 222 JNIEnv* env = base::android::AttachCurrentThread(); |
226 | 223 |
227 TabAndroid* tab = TabAndroid::FromWebContents(web_contents); | 224 TabAndroid* tab = TabAndroid::FromWebContents(web_contents); |
228 if (tab == nullptr) { | 225 if (tab == nullptr) { |
229 TrackDismissEvent(DISMISS_EVENT_ERROR); | 226 TrackDismissEvent(DISMISS_EVENT_ERROR); |
230 return true; | 227 return true; |
231 } | 228 } |
232 ScopedJavaLocalRef<jstring> jreferrer( | 229 ScopedJavaLocalRef<jstring> jreferrer( |
233 ConvertUTF8ToJavaString(env, referrer_)); | 230 ConvertUTF8ToJavaString(env, referrer_)); |
234 | 231 |
235 bool was_opened = Java_AppBannerInfoBarDelegateAndroid_installOrOpenNativeAp
p( | 232 bool was_opened = |
236 env, | 233 Java_AppBannerInfoBarDelegateAndroid_installOrOpenNativeApp( |
237 java_delegate_.obj(), | 234 env, java_delegate_, tab->GetJavaObject(), native_app_data_, |
238 tab->GetJavaObject().obj(), | 235 jreferrer); |
239 native_app_data_.obj(), | |
240 jreferrer.obj()); | |
241 | 236 |
242 if (was_opened) { | 237 if (was_opened) { |
243 TrackDismissEvent(DISMISS_EVENT_APP_OPEN); | 238 TrackDismissEvent(DISMISS_EVENT_APP_OPEN); |
244 } else { | 239 } else { |
245 TrackInstallEvent(INSTALL_EVENT_NATIVE_APP_INSTALL_TRIGGERED); | 240 TrackInstallEvent(INSTALL_EVENT_NATIVE_APP_INSTALL_TRIGGERED); |
246 } | 241 } |
247 SendBannerAccepted(web_contents, "play"); | 242 SendBannerAccepted(web_contents, "play"); |
248 return was_opened; | 243 return was_opened; |
249 } else if (!manifest_.IsEmpty()) { | 244 } else if (!manifest_.IsEmpty()) { |
250 TrackUserResponse(USER_RESPONSE_WEB_APP_ACCEPTED); | 245 TrackUserResponse(USER_RESPONSE_WEB_APP_ACCEPTED); |
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
283 | 278 |
284 content::WebContents* web_contents = | 279 content::WebContents* web_contents = |
285 InfoBarService::WebContentsFromInfoBar(infobar()); | 280 InfoBarService::WebContentsFromInfoBar(infobar()); |
286 TabAndroid* tab = web_contents ? TabAndroid::FromWebContents(web_contents) | 281 TabAndroid* tab = web_contents ? TabAndroid::FromWebContents(web_contents) |
287 : nullptr; | 282 : nullptr; |
288 if (tab == nullptr) { | 283 if (tab == nullptr) { |
289 TrackDismissEvent(DISMISS_EVENT_ERROR); | 284 TrackDismissEvent(DISMISS_EVENT_ERROR); |
290 return true; | 285 return true; |
291 } | 286 } |
292 | 287 |
293 Java_AppBannerInfoBarDelegateAndroid_showAppDetails(env, | 288 Java_AppBannerInfoBarDelegateAndroid_showAppDetails( |
294 java_delegate_.obj(), | 289 env, java_delegate_, tab->GetJavaObject(), native_app_data_); |
295 tab->GetJavaObject().obj(), | |
296 native_app_data_.obj()); | |
297 | 290 |
298 TrackDismissEvent(DISMISS_EVENT_BANNER_CLICK); | 291 TrackDismissEvent(DISMISS_EVENT_BANNER_CLICK); |
299 return true; | 292 return true; |
300 } | 293 } |
301 | 294 |
302 bool RegisterAppBannerInfoBarDelegateAndroid(JNIEnv* env) { | 295 bool RegisterAppBannerInfoBarDelegateAndroid(JNIEnv* env) { |
303 return RegisterNativesImpl(env); | 296 return RegisterNativesImpl(env); |
304 } | 297 } |
305 | 298 |
306 } // namespace banners | 299 } // namespace banners |
OLD | NEW |