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 12 matching lines...) Expand all Loading... |
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 const GURL& app_icon_url, | 43 const GURL& app_icon_url, |
45 SkBitmap* app_icon, | 44 SkBitmap* app_icon, |
46 const GURL& manifest_url, | 45 const GURL& manifest_url, |
47 const content::Manifest& manifest) | 46 const content::Manifest& manifest, |
| 47 ShortcutInfo::Type webapp_type) |
48 : data_fetcher_(data_fetcher), | 48 : data_fetcher_(data_fetcher), |
49 app_title_(app_title), | 49 app_title_(app_title), |
50 app_icon_url_(app_icon_url), | 50 app_icon_url_(app_icon_url), |
51 app_icon_(app_icon), | 51 app_icon_(app_icon), |
52 event_request_id_(event_request_id), | 52 event_request_id_(event_request_id), |
53 manifest_url_(manifest_url), | 53 manifest_url_(manifest_url), |
54 manifest_(manifest), | 54 manifest_(manifest), |
| 55 webapp_type_(webapp_type), |
55 has_user_interaction_(false) { | 56 has_user_interaction_(false) { |
56 DCHECK(!manifest.IsEmpty()); | 57 DCHECK(!manifest.IsEmpty()); |
57 CreateJavaDelegate(); | 58 CreateJavaDelegate(); |
58 } | 59 } |
59 | 60 |
60 AppBannerInfoBarDelegateAndroid::AppBannerInfoBarDelegateAndroid( | 61 AppBannerInfoBarDelegateAndroid::AppBannerInfoBarDelegateAndroid( |
61 int event_request_id, | 62 int event_request_id, |
62 const base::string16& app_title, | 63 const base::string16& app_title, |
63 SkBitmap* app_icon, | 64 SkBitmap* app_icon, |
64 const base::android::ScopedJavaGlobalRef<jobject>& native_app_data, | 65 const base::android::ScopedJavaGlobalRef<jobject>& native_app_data, |
65 const std::string& native_app_package, | 66 const std::string& native_app_package, |
66 const std::string& referrer) | 67 const std::string& referrer) |
67 : app_title_(app_title), | 68 : app_title_(app_title), |
68 app_icon_(app_icon), | 69 app_icon_(app_icon), |
69 event_request_id_(event_request_id), | 70 event_request_id_(event_request_id), |
| 71 webapp_type_(ShortcutInfo::Type::OTHER), |
70 native_app_data_(native_app_data), | 72 native_app_data_(native_app_data), |
71 native_app_package_(native_app_package), | 73 native_app_package_(native_app_package), |
72 referrer_(referrer), | 74 referrer_(referrer), |
73 has_user_interaction_(false) { | 75 has_user_interaction_(false) { |
74 DCHECK(!native_app_data_.is_null()); | 76 DCHECK(!native_app_data_.is_null()); |
75 CreateJavaDelegate(); | 77 CreateJavaDelegate(); |
76 } | 78 } |
77 | 79 |
78 AppBannerInfoBarDelegateAndroid::~AppBannerInfoBarDelegateAndroid() { | 80 AppBannerInfoBarDelegateAndroid::~AppBannerInfoBarDelegateAndroid() { |
79 if (!has_user_interaction_) { | 81 if (!has_user_interaction_) { |
(...skipping 169 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
249 | 251 |
250 AppBannerSettingsHelper::RecordBannerInstallEvent( | 252 AppBannerSettingsHelper::RecordBannerInstallEvent( |
251 web_contents, manifest_.start_url.spec(), | 253 web_contents, manifest_.start_url.spec(), |
252 AppBannerSettingsHelper::WEB); | 254 AppBannerSettingsHelper::WEB); |
253 | 255 |
254 ShortcutInfo info(GURL::EmptyGURL()); | 256 ShortcutInfo info(GURL::EmptyGURL()); |
255 info.UpdateFromManifest(manifest_); | 257 info.UpdateFromManifest(manifest_); |
256 info.manifest_url = manifest_url_; | 258 info.manifest_url = manifest_url_; |
257 info.icon_url = app_icon_url_; | 259 info.icon_url = app_icon_url_; |
258 info.UpdateSource(ShortcutInfo::SOURCE_APP_BANNER); | 260 info.UpdateSource(ShortcutInfo::SOURCE_APP_BANNER); |
| 261 info.type = webapp_type_; |
259 | 262 |
260 const std::string& uid = base::GenerateGUID(); | 263 const std::string& uid = base::GenerateGUID(); |
261 content::BrowserThread::PostTask( | 264 content::BrowserThread::PostTask( |
262 content::BrowserThread::IO, FROM_HERE, | 265 content::BrowserThread::IO, FROM_HERE, |
263 base::Bind(&ShortcutHelper::AddShortcutInBackgroundWithSkBitmap, info, | 266 base::Bind(&ShortcutHelper::AddShortcutInBackgroundWithSkBitmap, info, |
264 uid, *app_icon_.get(), | 267 uid, *app_icon_.get(), |
265 data_fetcher_->FetchWebappSplashScreenImageCallback(uid))); | 268 data_fetcher_->FetchWebappSplashScreenImageCallback(uid))); |
266 | 269 |
267 SendBannerAccepted(web_contents, "web"); | 270 SendBannerAccepted(web_contents, "web"); |
268 return true; | 271 return true; |
(...skipping 26 matching lines...) Expand all Loading... |
295 | 298 |
296 TrackDismissEvent(DISMISS_EVENT_BANNER_CLICK); | 299 TrackDismissEvent(DISMISS_EVENT_BANNER_CLICK); |
297 return true; | 300 return true; |
298 } | 301 } |
299 | 302 |
300 bool RegisterAppBannerInfoBarDelegateAndroid(JNIEnv* env) { | 303 bool RegisterAppBannerInfoBarDelegateAndroid(JNIEnv* env) { |
301 return RegisterNativesImpl(env); | 304 return RegisterNativesImpl(env); |
302 } | 305 } |
303 | 306 |
304 } // namespace banners | 307 } // namespace banners |
OLD | NEW |