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

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

Issue 1312343003: Append playinline=chrome_inline to the store referrer on native app banner install. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix tests not caught by trybots Created 5 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
« no previous file with comments | « chrome/android/javatests/src/org/chromium/chrome/browser/banners/AppBannerManagerTest.java ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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_manager_android.h" 5 #include "chrome/browser/android/banners/app_banner_manager_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/command_line.h" 9 #include "base/command_line.h"
10 #include "base/metrics/field_trial.h" 10 #include "base/metrics/field_trial.h"
11 #include "chrome/browser/android/banners/app_banner_data_fetcher_android.h" 11 #include "chrome/browser/android/banners/app_banner_data_fetcher_android.h"
12 #include "chrome/browser/banners/app_banner_metrics.h" 12 #include "chrome/browser/banners/app_banner_metrics.h"
13 #include "chrome/common/chrome_constants.h" 13 #include "chrome/common/chrome_constants.h"
14 #include "content/public/browser/web_contents.h" 14 #include "content/public/browser/web_contents.h"
15 #include "content/public/common/frame_navigate_params.h" 15 #include "content/public/common/frame_navigate_params.h"
16 #include "jni/AppBannerManager_jni.h" 16 #include "jni/AppBannerManager_jni.h"
17 17
18 using base::android::ConvertJavaStringToUTF8; 18 using base::android::ConvertJavaStringToUTF8;
19 using base::android::ConvertJavaStringToUTF16; 19 using base::android::ConvertJavaStringToUTF16;
20 using base::android::ConvertUTF8ToJavaString; 20 using base::android::ConvertUTF8ToJavaString;
21 using base::android::ConvertUTF16ToJavaString; 21 using base::android::ConvertUTF16ToJavaString;
22 22
23 namespace { 23 namespace {
24 24
25 const char kPlayPlatform[] = "play"; 25 const char kPlayPlatform[] = "play";
26 const char kReferrerName[] = "referrer"; 26 const char kReferrerName[] = "referrer";
27 const char kIdName[] = "id"; 27 const char kIdName[] = "id";
28 const char kPlayInlineReferrer[] = "playinline=chrome_inline";
28 29
29 } // anonymous namespace 30 } // anonymous namespace
30 31
31 namespace banners { 32 namespace banners {
32 33
33 AppBannerManagerAndroid::AppBannerManagerAndroid(JNIEnv* env, 34 AppBannerManagerAndroid::AppBannerManagerAndroid(JNIEnv* env,
34 jobject obj, 35 jobject obj,
35 int icon_size) 36 int icon_size)
36 : AppBannerManager(icon_size), 37 : AppBannerManager(icon_size),
37 weak_java_banner_view_manager_(env, obj) { 38 weak_java_banner_view_manager_(env, obj) {
(...skipping 28 matching lines...) Expand all
66 if (jobj.is_null()) 67 if (jobj.is_null())
67 return false; 68 return false;
68 69
69 std::string id_from_app_url = ExtractQueryValueForName(url, kIdName); 70 std::string id_from_app_url = ExtractQueryValueForName(url, kIdName);
70 if (id_from_app_url.size() && id != id_from_app_url) { 71 if (id_from_app_url.size() && id != id_from_app_url) {
71 banners::OutputDeveloperDebugMessage(web_contents(), 72 banners::OutputDeveloperDebugMessage(web_contents(),
72 banners::kIgnoredIdsDoNotMatch); 73 banners::kIgnoredIdsDoNotMatch);
73 return false; 74 return false;
74 } 75 }
75 76
76 std::string referrer = ExtractQueryValueForName(url, kReferrerName); 77 std::string referrer =
78 ExtractQueryValueForName(url, kReferrerName);
79
80 // Attach the chrome_inline referrer value, prefixed with "&" if the referrer
81 // is non empty.
82 if (referrer.empty())
83 referrer = kPlayInlineReferrer;
84 else
85 referrer.append("&").append(kPlayInlineReferrer);
77 86
78 ScopedJavaLocalRef<jstring> jurl( 87 ScopedJavaLocalRef<jstring> jurl(
79 ConvertUTF8ToJavaString(env, data_fetcher()->validated_url().spec())); 88 ConvertUTF8ToJavaString(env, data_fetcher()->validated_url().spec()));
80 ScopedJavaLocalRef<jstring> jpackage( 89 ScopedJavaLocalRef<jstring> jpackage(
81 ConvertUTF8ToJavaString(env, id)); 90 ConvertUTF8ToJavaString(env, id));
82 ScopedJavaLocalRef<jstring> jreferrer( 91 ScopedJavaLocalRef<jstring> jreferrer(
83 ConvertUTF8ToJavaString(env, referrer)); 92 ConvertUTF8ToJavaString(env, referrer));
84 Java_AppBannerManager_fetchAppDetails(env, jobj.obj(), jurl.obj(), 93 Java_AppBannerManager_fetchAppDetails(env, jobj.obj(), jurl.obj(),
85 jpackage.obj(), jreferrer.obj(), 94 jpackage.obj(), jreferrer.obj(),
86 ideal_icon_size()); 95 ideal_icon_size());
(...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after
187 jdouble indirect_engagement) { 196 jdouble indirect_engagement) {
188 AppBannerManager::ForceEngagementWeightsForTesting(direct_engagement, 197 AppBannerManager::ForceEngagementWeightsForTesting(direct_engagement,
189 indirect_engagement); 198 indirect_engagement);
190 } 199 }
191 200
192 jboolean IsEnabled(JNIEnv* env, jclass clazz) { 201 jboolean IsEnabled(JNIEnv* env, jclass clazz) {
193 return base::FieldTrialList::FindFullName("AppBanners") == "Enabled"; 202 return base::FieldTrialList::FindFullName("AppBanners") == "Enabled";
194 } 203 }
195 204
196 } // namespace banners 205 } // namespace banners
OLDNEW
« no previous file with comments | « chrome/android/javatests/src/org/chromium/chrome/browser/banners/AppBannerManagerTest.java ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698