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); | |
246 | |
247 // Attach the chrome_inline referrer value, prefixed with "&" if the referrer | 241 // Attach the chrome_inline referrer value, prefixed with "&" if the referrer |
248 // is non empty. | 242 // is non empty. |
249 if (referrer.empty()) | 243 std::string referrer = ExtractQueryValueForName(url, "referrer"); |
250 referrer = kPlayInlineReferrer; | 244 if (!referrer.empty()) |
251 else | 245 referrer += "&"; |
252 referrer.append("&").append(kPlayInlineReferrer); | 246 referrer += "playinline=chrome_inline"; |
253 | 247 |
254 ScopedJavaLocalRef<jstring> jurl( | 248 ScopedJavaLocalRef<jstring> jurl( |
255 ConvertUTF8ToJavaString(env, validated_url_.spec())); | 249 ConvertUTF8ToJavaString(env, validated_url_.spec())); |
256 ScopedJavaLocalRef<jstring> jpackage(ConvertUTF8ToJavaString(env, id)); | 250 ScopedJavaLocalRef<jstring> jpackage(ConvertUTF8ToJavaString(env, id)); |
257 ScopedJavaLocalRef<jstring> jreferrer(ConvertUTF8ToJavaString(env, referrer)); | 251 ScopedJavaLocalRef<jstring> jreferrer(ConvertUTF8ToJavaString(env, referrer)); |
258 Java_AppBannerManager_fetchAppDetails(env, java_banner_manager_, jurl, | 252 Java_AppBannerManager_fetchAppDetails(env, java_banner_manager_, jurl, |
259 jpackage, jreferrer, | 253 jpackage, jreferrer, |
260 GetIdealIconSizeInDp()); | 254 GetIdealIconSizeInDp()); |
261 return true; | 255 return true; |
262 } | 256 } |
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
320 } | 314 } |
321 | 315 |
322 // static | 316 // static |
323 void SetTimeDeltaForTesting(JNIEnv* env, | 317 void SetTimeDeltaForTesting(JNIEnv* env, |
324 const JavaParamRef<jclass>& clazz, | 318 const JavaParamRef<jclass>& clazz, |
325 jint days) { | 319 jint days) { |
326 AppBannerManager::SetTimeDeltaForTesting(days); | 320 AppBannerManager::SetTimeDeltaForTesting(days); |
327 } | 321 } |
328 | 322 |
329 } // namespace banners | 323 } // namespace banners |
OLD | NEW |