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 |