Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(658)

Side by Side Diff: chrome/browser/android/banners/app_banner_infobar_delegate_android.cc

Issue 2050933002: Upstream: Add additional checks before creating a WebAPK after clicking "Add to Homescreen" (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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
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
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698