| 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" |
| 11 #include "base/strings/string16.h" | 11 #include "base/strings/string16.h" |
| 12 #include "base/strings/utf_string_conversions.h" | 12 #include "base/strings/utf_string_conversions.h" |
| 13 #include "chrome/browser/android/shortcut_helper.h" | 13 #include "chrome/browser/android/shortcut_helper.h" |
| 14 #include "chrome/browser/android/shortcut_info.h" | |
| 15 #include "chrome/browser/android/tab_android.h" | 14 #include "chrome/browser/android/tab_android.h" |
| 16 #include "chrome/browser/banners/app_banner_data_fetcher.h" | 15 #include "chrome/browser/banners/app_banner_data_fetcher.h" |
| 17 #include "chrome/browser/banners/app_banner_metrics.h" | 16 #include "chrome/browser/banners/app_banner_metrics.h" |
| 18 #include "chrome/browser/banners/app_banner_settings_helper.h" | 17 #include "chrome/browser/banners/app_banner_settings_helper.h" |
| 19 #include "chrome/browser/browser_process.h" | 18 #include "chrome/browser/browser_process.h" |
| 20 #include "chrome/browser/infobars/infobar_service.h" | 19 #include "chrome/browser/infobars/infobar_service.h" |
| 21 #include "chrome/browser/ui/android/infobars/app_banner_infobar_android.h" | 20 #include "chrome/browser/ui/android/infobars/app_banner_infobar_android.h" |
| 22 #include "chrome/common/render_messages.h" | 21 #include "chrome/common/render_messages.h" |
| 23 #include "chrome/grit/generated_resources.h" | 22 #include "chrome/grit/generated_resources.h" |
| 24 #include "components/rappor/rappor_utils.h" | 23 #include "components/rappor/rappor_utils.h" |
| (...skipping 10 matching lines...) Expand all Loading... |
| 35 using base::android::ConvertUTF8ToJavaString; | 34 using base::android::ConvertUTF8ToJavaString; |
| 36 using base::android::ConvertUTF16ToJavaString; | 35 using base::android::ConvertUTF16ToJavaString; |
| 37 | 36 |
| 38 namespace banners { | 37 namespace banners { |
| 39 | 38 |
| 40 AppBannerInfoBarDelegateAndroid::AppBannerInfoBarDelegateAndroid( | 39 AppBannerInfoBarDelegateAndroid::AppBannerInfoBarDelegateAndroid( |
| 41 int event_request_id, | 40 int event_request_id, |
| 42 scoped_refptr<AppBannerDataFetcherAndroid> data_fetcher, | 41 scoped_refptr<AppBannerDataFetcherAndroid> data_fetcher, |
| 43 const base::string16& app_title, | 42 const base::string16& app_title, |
| 44 SkBitmap* app_icon, | 43 SkBitmap* app_icon, |
| 45 const content::Manifest& web_app_data) | 44 const content::Manifest& web_app_data, |
| 45 ShortcutInfo::Type webapp_type) |
| 46 : data_fetcher_(data_fetcher), | 46 : data_fetcher_(data_fetcher), |
| 47 app_title_(app_title), | 47 app_title_(app_title), |
| 48 app_icon_(app_icon), | 48 app_icon_(app_icon), |
| 49 event_request_id_(event_request_id), | 49 event_request_id_(event_request_id), |
| 50 web_app_data_(web_app_data), | 50 web_app_data_(web_app_data), |
| 51 webapp_type_(webapp_type), |
| 51 has_user_interaction_(false) { | 52 has_user_interaction_(false) { |
| 52 DCHECK(!web_app_data.IsEmpty()); | 53 DCHECK(!web_app_data.IsEmpty()); |
| 53 CreateJavaDelegate(); | 54 CreateJavaDelegate(); |
| 54 } | 55 } |
| 55 | 56 |
| 56 AppBannerInfoBarDelegateAndroid::AppBannerInfoBarDelegateAndroid( | 57 AppBannerInfoBarDelegateAndroid::AppBannerInfoBarDelegateAndroid( |
| 57 int event_request_id, | 58 int event_request_id, |
| 58 const base::string16& app_title, | 59 const base::string16& app_title, |
| 59 SkBitmap* app_icon, | 60 SkBitmap* app_icon, |
| 60 const base::android::ScopedJavaGlobalRef<jobject>& native_app_data, | 61 const base::android::ScopedJavaGlobalRef<jobject>& native_app_data, |
| 61 const std::string& native_app_package, | 62 const std::string& native_app_package, |
| 62 const std::string& referrer) | 63 const std::string& referrer) |
| 63 : app_title_(app_title), | 64 : app_title_(app_title), |
| 64 app_icon_(app_icon), | 65 app_icon_(app_icon), |
| 65 event_request_id_(event_request_id), | 66 event_request_id_(event_request_id), |
| 67 webapp_type_(ShortcutInfo::Type::OTHER), |
| 66 native_app_data_(native_app_data), | 68 native_app_data_(native_app_data), |
| 67 native_app_package_(native_app_package), | 69 native_app_package_(native_app_package), |
| 68 referrer_(referrer), | 70 referrer_(referrer), |
| 69 has_user_interaction_(false) { | 71 has_user_interaction_(false) { |
| 70 DCHECK(!native_app_data_.is_null()); | 72 DCHECK(!native_app_data_.is_null()); |
| 71 CreateJavaDelegate(); | 73 CreateJavaDelegate(); |
| 72 } | 74 } |
| 73 | 75 |
| 74 AppBannerInfoBarDelegateAndroid::~AppBannerInfoBarDelegateAndroid() { | 76 AppBannerInfoBarDelegateAndroid::~AppBannerInfoBarDelegateAndroid() { |
| 75 if (!has_user_interaction_) { | 77 if (!has_user_interaction_) { |
| (...skipping 167 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 243 } else if (!web_app_data_.IsEmpty()) { | 245 } else if (!web_app_data_.IsEmpty()) { |
| 244 TrackUserResponse(USER_RESPONSE_WEB_APP_ACCEPTED); | 246 TrackUserResponse(USER_RESPONSE_WEB_APP_ACCEPTED); |
| 245 | 247 |
| 246 AppBannerSettingsHelper::RecordBannerInstallEvent( | 248 AppBannerSettingsHelper::RecordBannerInstallEvent( |
| 247 web_contents, web_app_data_.start_url.spec(), | 249 web_contents, web_app_data_.start_url.spec(), |
| 248 AppBannerSettingsHelper::WEB); | 250 AppBannerSettingsHelper::WEB); |
| 249 | 251 |
| 250 ShortcutInfo info(GURL::EmptyGURL()); | 252 ShortcutInfo info(GURL::EmptyGURL()); |
| 251 info.UpdateFromManifest(web_app_data_); | 253 info.UpdateFromManifest(web_app_data_); |
| 252 info.UpdateSource(ShortcutInfo::SOURCE_APP_BANNER); | 254 info.UpdateSource(ShortcutInfo::SOURCE_APP_BANNER); |
| 255 info.type = webapp_type_; |
| 253 | 256 |
| 254 const std::string& uid = base::GenerateGUID(); | 257 const std::string& uid = base::GenerateGUID(); |
| 255 content::BrowserThread::PostTask( | 258 content::BrowserThread::PostTask( |
| 256 content::BrowserThread::IO, FROM_HERE, | 259 content::BrowserThread::IO, FROM_HERE, |
| 257 base::Bind(&ShortcutHelper::AddShortcutInBackgroundWithSkBitmap, info, | 260 base::Bind(&ShortcutHelper::AddShortcutInBackgroundWithSkBitmap, info, |
| 258 uid, *app_icon_.get(), | 261 uid, *app_icon_.get(), |
| 259 data_fetcher_->FetchWebappSplashScreenImageCallback(uid))); | 262 data_fetcher_->FetchWebappSplashScreenImageCallback(uid))); |
| 260 | 263 |
| 261 SendBannerAccepted(web_contents, "web"); | 264 SendBannerAccepted(web_contents, "web"); |
| 262 return true; | 265 return true; |
| (...skipping 26 matching lines...) Expand all Loading... |
| 289 | 292 |
| 290 TrackDismissEvent(DISMISS_EVENT_BANNER_CLICK); | 293 TrackDismissEvent(DISMISS_EVENT_BANNER_CLICK); |
| 291 return true; | 294 return true; |
| 292 } | 295 } |
| 293 | 296 |
| 294 bool RegisterAppBannerInfoBarDelegateAndroid(JNIEnv* env) { | 297 bool RegisterAppBannerInfoBarDelegateAndroid(JNIEnv* env) { |
| 295 return RegisterNativesImpl(env); | 298 return RegisterNativesImpl(env); |
| 296 } | 299 } |
| 297 | 300 |
| 298 } // namespace banners | 301 } // namespace banners |
| OLD | NEW |