Chromium Code Reviews| 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 <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 Loading... | |
| 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 Loading... | |
| 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 Loading... | |
| 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 |
| OLD | NEW |