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

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

Issue 2324263002: Follow up "Trigger app banner when add to homescreen is pressed and WebAPKs are enabled." (Closed)
Patch Set: Created 4 years, 3 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 <utility> 5 #include <utility>
6 6
7 #include "chrome/browser/android/banners/app_banner_manager_android.h" 7 #include "chrome/browser/android/banners/app_banner_manager_android.h"
8 8
9 #include "base/android/jni_android.h" 9 #include "base/android/jni_android.h"
10 #include "base/android/jni_string.h" 10 #include "base/android/jni_string.h"
(...skipping 16 matching lines...) Expand all
27 using base::android::ConvertJavaStringToUTF8; 27 using base::android::ConvertJavaStringToUTF8;
28 using base::android::ConvertJavaStringToUTF16; 28 using base::android::ConvertJavaStringToUTF16;
29 using base::android::ConvertUTF8ToJavaString; 29 using base::android::ConvertUTF8ToJavaString;
30 using base::android::JavaParamRef; 30 using base::android::JavaParamRef;
31 using base::android::ScopedJavaLocalRef; 31 using base::android::ScopedJavaLocalRef;
32 32
33 DEFINE_WEB_CONTENTS_USER_DATA_KEY(banners::AppBannerManagerAndroid); 33 DEFINE_WEB_CONTENTS_USER_DATA_KEY(banners::AppBannerManagerAndroid);
34 34
35 namespace { 35 namespace {
36 36
37 const char kReferrerName[] = "referrer";
38 const char kIdName[] = "id";
39 const char kPlayInlineReferrer[] = "playinline=chrome_inline";
40
41 std::unique_ptr<ShortcutInfo> CreateShortcutInfo( 37 std::unique_ptr<ShortcutInfo> CreateShortcutInfo(
42 const GURL& manifest_url, 38 const GURL& manifest_url,
43 const content::Manifest& manifest, 39 const content::Manifest& manifest,
44 const GURL& icon_url) { 40 const GURL& icon_url) {
45 auto shortcut_info = base::MakeUnique<ShortcutInfo>(GURL()); 41 auto shortcut_info = base::MakeUnique<ShortcutInfo>(GURL());
46 if (!manifest.IsEmpty()) { 42 if (!manifest.IsEmpty()) {
47 shortcut_info->UpdateFromManifest(manifest); 43 shortcut_info->UpdateFromManifest(manifest);
48 shortcut_info->manifest_url = manifest_url; 44 shortcut_info->manifest_url = manifest_url;
49 shortcut_info->icon_url = icon_url; 45 shortcut_info->icon_url = icon_url;
50 shortcut_info->UpdateSource(ShortcutInfo::SOURCE_APP_BANNER); 46 shortcut_info->UpdateSource(ShortcutInfo::SOURCE_APP_BANNER);
(...skipping 178 matching lines...) Expand 10 before | Expand all | Expand 10 after
229 if (!CheckPlatformAndId(platform, id)) 225 if (!CheckPlatformAndId(platform, id))
230 return false; 226 return false;
231 227
232 banners::TrackDisplayEvent(DISPLAY_EVENT_NATIVE_APP_BANNER_REQUESTED); 228 banners::TrackDisplayEvent(DISPLAY_EVENT_NATIVE_APP_BANNER_REQUESTED);
233 229
234 // Send the info to the Java side to get info about the app. 230 // Send the info to the Java side to get info about the app.
235 JNIEnv* env = base::android::AttachCurrentThread(); 231 JNIEnv* env = base::android::AttachCurrentThread();
236 if (java_banner_manager_.is_null()) 232 if (java_banner_manager_.is_null())
237 return false; 233 return false;
238 234
239 std::string id_from_app_url = ExtractQueryValueForName(url, kIdName); 235 std::string id_from_app_url = ExtractQueryValueForName(url, "id");
240 if (id_from_app_url.size() && id != id_from_app_url) { 236 if (id_from_app_url.size() && id != id_from_app_url) {
241 ReportStatus(web_contents(), IDS_DO_NOT_MATCH); 237 ReportStatus(web_contents(), IDS_DO_NOT_MATCH);
242 return false; 238 return false;
243 } 239 }
244 240
245 std::string referrer = ExtractQueryValueForName(url, kReferrerName); 241 std::string referrer = ExtractQueryValueForName(url, "referrer");
246 242
247 // Attach the chrome_inline referrer value, prefixed with "&" if the referrer 243 // Attach the chrome_inline referrer value, prefixed with "&" if the referrer
248 // is non empty. 244 // is non empty.
245 const char kPlayInlineReferrer[] = "playinline=chrome_inline";
249 if (referrer.empty()) 246 if (referrer.empty())
250 referrer = kPlayInlineReferrer; 247 referrer = kPlayInlineReferrer;
251 else 248 else
252 referrer.append("&").append(kPlayInlineReferrer); 249 referrer.append("&").append(kPlayInlineReferrer);
Peter Kasting 2016/09/09 21:50:45 Nit: Slightly simpler: // Attach the chrome_inl
Xi Han 2016/09/12 13:49:51 Done.
253 250
254 ScopedJavaLocalRef<jstring> jurl( 251 ScopedJavaLocalRef<jstring> jurl(
255 ConvertUTF8ToJavaString(env, validated_url_.spec())); 252 ConvertUTF8ToJavaString(env, validated_url_.spec()));
256 ScopedJavaLocalRef<jstring> jpackage(ConvertUTF8ToJavaString(env, id)); 253 ScopedJavaLocalRef<jstring> jpackage(ConvertUTF8ToJavaString(env, id));
257 ScopedJavaLocalRef<jstring> jreferrer(ConvertUTF8ToJavaString(env, referrer)); 254 ScopedJavaLocalRef<jstring> jreferrer(ConvertUTF8ToJavaString(env, referrer));
258 Java_AppBannerManager_fetchAppDetails(env, java_banner_manager_, jurl, 255 Java_AppBannerManager_fetchAppDetails(env, java_banner_manager_, jurl,
259 jpackage, jreferrer, 256 jpackage, jreferrer,
260 GetIdealIconSizeInDp()); 257 GetIdealIconSizeInDp());
261 return true; 258 return true;
262 } 259 }
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
320 } 317 }
321 318
322 // static 319 // static
323 void SetTimeDeltaForTesting(JNIEnv* env, 320 void SetTimeDeltaForTesting(JNIEnv* env,
324 const JavaParamRef<jclass>& clazz, 321 const JavaParamRef<jclass>& clazz,
325 jint days) { 322 jint days) {
326 AppBannerManager::SetTimeDeltaForTesting(days); 323 AppBannerManager::SetTimeDeltaForTesting(days);
327 } 324 }
328 325
329 } // namespace banners 326 } // namespace banners
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698