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

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

Issue 1308533006: webapps: allow callers of icon downloader/selector to specify a minimum size (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@webapps-splashscreen-icon
Patch Set: Fix non-compiling test 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
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/android/shortcut_helper.h"
12 #include "chrome/browser/banners/app_banner_metrics.h" 13 #include "chrome/browser/banners/app_banner_metrics.h"
13 #include "chrome/common/chrome_constants.h" 14 #include "chrome/common/chrome_constants.h"
14 #include "content/public/browser/web_contents.h" 15 #include "content/public/browser/web_contents.h"
15 #include "content/public/common/frame_navigate_params.h" 16 #include "content/public/common/frame_navigate_params.h"
16 #include "jni/AppBannerManager_jni.h" 17 #include "jni/AppBannerManager_jni.h"
17 18
18 using base::android::ConvertJavaStringToUTF8; 19 using base::android::ConvertJavaStringToUTF8;
19 using base::android::ConvertJavaStringToUTF16; 20 using base::android::ConvertJavaStringToUTF16;
20 using base::android::ConvertUTF8ToJavaString; 21 using base::android::ConvertUTF8ToJavaString;
21 using base::android::ConvertUTF16ToJavaString; 22 using base::android::ConvertUTF16ToJavaString;
22 23
23 namespace { 24 namespace {
24 25
25 const char kPlayPlatform[] = "play"; 26 const char kPlayPlatform[] = "play";
26 const char kReferrerName[] = "referrer"; 27 const char kReferrerName[] = "referrer";
27 const char kIdName[] = "id"; 28 const char kIdName[] = "id";
28 const char kPlayInlineReferrer[] = "playinline=chrome_inline"; 29 const char kPlayInlineReferrer[] = "playinline=chrome_inline";
29 30
30 } // anonymous namespace 31 } // anonymous namespace
31 32
32 namespace banners { 33 namespace banners {
33 34
34 AppBannerManagerAndroid::AppBannerManagerAndroid( 35 AppBannerManagerAndroid::AppBannerManagerAndroid(
35 JNIEnv* env, 36 JNIEnv* env,
36 jobject obj, 37 jobject obj)
37 int ideal_splash_image_size_in_dp, 38 : AppBannerManager(),
38 int ideal_icon_size_in_dp)
39 : AppBannerManager(ideal_icon_size_in_dp),
40 ideal_splash_image_size_in_dp_(ideal_splash_image_size_in_dp),
41 weak_java_banner_view_manager_(env, obj) { 39 weak_java_banner_view_manager_(env, obj) {
42 } 40 }
43 41
44 AppBannerManagerAndroid::~AppBannerManagerAndroid() { 42 AppBannerManagerAndroid::~AppBannerManagerAndroid() {
45 } 43 }
46 44
47 void AppBannerManagerAndroid::Destroy(JNIEnv* env, jobject obj) { 45 void AppBannerManagerAndroid::Destroy(JNIEnv* env, jobject obj) {
48 delete this; 46 delete this;
49 } 47 }
50 48
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
86 referrer = kPlayInlineReferrer; 84 referrer = kPlayInlineReferrer;
87 else 85 else
88 referrer.append("&").append(kPlayInlineReferrer); 86 referrer.append("&").append(kPlayInlineReferrer);
89 87
90 ScopedJavaLocalRef<jstring> jurl( 88 ScopedJavaLocalRef<jstring> jurl(
91 ConvertUTF8ToJavaString(env, data_fetcher()->validated_url().spec())); 89 ConvertUTF8ToJavaString(env, data_fetcher()->validated_url().spec()));
92 ScopedJavaLocalRef<jstring> jpackage( 90 ScopedJavaLocalRef<jstring> jpackage(
93 ConvertUTF8ToJavaString(env, id)); 91 ConvertUTF8ToJavaString(env, id));
94 ScopedJavaLocalRef<jstring> jreferrer( 92 ScopedJavaLocalRef<jstring> jreferrer(
95 ConvertUTF8ToJavaString(env, referrer)); 93 ConvertUTF8ToJavaString(env, referrer));
96 Java_AppBannerManager_fetchAppDetails(env, jobj.obj(), jurl.obj(), 94 Java_AppBannerManager_fetchAppDetails(
97 jpackage.obj(), jreferrer.obj(), 95 env, jobj.obj(), jurl.obj(),
98 ideal_icon_size_in_dp()); 96 jpackage.obj(), jreferrer.obj(),
97 ShortcutHelper::GetIdealIconSizeInDp());
99 return true; 98 return true;
100 } 99 }
101 100
102 bool AppBannerManagerAndroid::CheckPlatformAndId(const std::string& platform, 101 bool AppBannerManagerAndroid::CheckPlatformAndId(const std::string& platform,
103 const std::string& id) { 102 const std::string& id) {
104 if (platform != kPlayPlatform) { 103 if (platform != kPlayPlatform) {
105 banners::OutputDeveloperDebugMessage( 104 banners::OutputDeveloperDebugMessage(
106 web_contents(), platform + banners::kIgnoredNotSupportedOnAndroid); 105 web_contents(), platform + banners::kIgnoredNotSupportedOnAndroid);
107 return false; 106 return false;
108 } 107 }
(...skipping 27 matching lines...) Expand all
136 while (url::ExtractQueryKeyValue(url_spec, &query, &key, &value)) { 135 while (url::ExtractQueryKeyValue(url_spec, &query, &key, &value)) {
137 std::string key_str(url_spec, key.begin, key.len); 136 std::string key_str(url_spec, key.begin, key.len);
138 std::string value_str(url_spec, value.begin, value.len); 137 std::string value_str(url_spec, value.begin, value.len);
139 if (key_str == name) 138 if (key_str == name)
140 return value_str; 139 return value_str;
141 } 140 }
142 return ""; 141 return "";
143 } 142 }
144 143
145 AppBannerDataFetcher* AppBannerManagerAndroid::CreateAppBannerDataFetcher( 144 AppBannerDataFetcher* AppBannerManagerAndroid::CreateAppBannerDataFetcher(
146 base::WeakPtr<Delegate> weak_delegate, 145 base::WeakPtr<Delegate> weak_delegate) {
147 const int ideal_icon_size_in_dp) { 146 return new AppBannerDataFetcherAndroid(
148 return new AppBannerDataFetcherAndroid(web_contents(), weak_delegate, 147 web_contents(),
149 ideal_splash_image_size_in_dp_, 148 weak_delegate,
150 ideal_icon_size_in_dp); 149 ShortcutHelper::GetIdealSplashImageSizeInDp(),
150 ShortcutHelper::GetMinimumSplashImageSizeInDp(),
151 ShortcutHelper::GetIdealIconSizeInDp(),
152 ShortcutHelper::GetMinimumIconSizeInDp());
gone 2015/09/08 21:01:57 Doing it like this means that doing 4 JNI calls wh
gone 2015/09/08 21:02:47 Cache as native-side statics, I mean.
Lalit Maganti 2015/09/11 13:06:00 The problem would be where this initialization wou
gone 2015/09/11 16:48:48 You should really turn down the hyperbole and inve
Lalit Maganti 2015/09/11 17:09:09 I did consider that but I really didn't like the b
gone 2015/09/11 17:17:54 How about caching the values when the first calls
Lalit Maganti 2015/09/11 17:26:03 That is another possibility yes but would still ha
gone 2015/09/11 17:33:03 A single 4 JNI call hit where you cache the values
Lalit Maganti 2015/09/11 17:38:49 No I don't mean create an object to call it. I mea
gone 2015/09/11 17:42:10 Sorry :/ Should have explained why this was less
Lalit Maganti 2015/09/14 11:35:19 Implemented the array solution in latest PS.
151 } 153 }
152 154
153 bool AppBannerManagerAndroid::OnAppDetailsRetrieved(JNIEnv* env, 155 bool AppBannerManagerAndroid::OnAppDetailsRetrieved(JNIEnv* env,
154 jobject obj, 156 jobject obj,
155 jobject japp_data, 157 jobject japp_data,
156 jstring japp_title, 158 jstring japp_title,
157 jstring japp_package, 159 jstring japp_package,
158 jstring jicon_url) { 160 jstring jicon_url) {
159 if (!CheckFetcherMatchesContents()) 161 if (!CheckFetcherMatchesContents())
160 return false; 162 return false;
(...skipping 13 matching lines...) Expand all
174 bool AppBannerManagerAndroid::IsFetcherActive(JNIEnv* env, jobject obj) { 176 bool AppBannerManagerAndroid::IsFetcherActive(JNIEnv* env, jobject obj) {
175 return AppBannerManager::IsFetcherActive(); 177 return AppBannerManager::IsFetcherActive();
176 } 178 }
177 179
178 // static 180 // static
179 bool AppBannerManagerAndroid::Register(JNIEnv* env) { 181 bool AppBannerManagerAndroid::Register(JNIEnv* env) {
180 return RegisterNativesImpl(env); 182 return RegisterNativesImpl(env);
181 } 183 }
182 184
183 jlong Init(JNIEnv* env, 185 jlong Init(JNIEnv* env,
184 const JavaParamRef<jobject>& obj, 186 const JavaParamRef<jobject>& obj) {
185 jint ideal_splash_image_size_in_dp,
186 jint ideal_icon_size_in_dp) {
187 AppBannerManagerAndroid* manager = 187 AppBannerManagerAndroid* manager =
188 new AppBannerManagerAndroid(env, obj, 188 new AppBannerManagerAndroid(env, obj);
189 ideal_splash_image_size_in_dp, ideal_icon_size_in_dp);
190 return reinterpret_cast<intptr_t>(manager); 189 return reinterpret_cast<intptr_t>(manager);
191 } 190 }
192 191
193 void SetTimeDeltaForTesting(JNIEnv* env, 192 void SetTimeDeltaForTesting(JNIEnv* env,
194 const JavaParamRef<jclass>& clazz, 193 const JavaParamRef<jclass>& clazz,
195 jint days) { 194 jint days) {
196 AppBannerDataFetcher::SetTimeDeltaForTesting(days); 195 AppBannerDataFetcher::SetTimeDeltaForTesting(days);
197 } 196 }
198 197
199 void DisableSecureSchemeCheckForTesting(JNIEnv* env, 198 void DisableSecureSchemeCheckForTesting(JNIEnv* env,
200 const JavaParamRef<jclass>& clazz) { 199 const JavaParamRef<jclass>& clazz) {
201 AppBannerManager::DisableSecureSchemeCheckForTesting(); 200 AppBannerManager::DisableSecureSchemeCheckForTesting();
202 } 201 }
203 202
204 void SetEngagementWeights(JNIEnv* env, 203 void SetEngagementWeights(JNIEnv* env,
205 const JavaParamRef<jclass>& clazz, 204 const JavaParamRef<jclass>& clazz,
206 jdouble direct_engagement, 205 jdouble direct_engagement,
207 jdouble indirect_engagement) { 206 jdouble indirect_engagement) {
208 AppBannerManager::SetEngagementWeights(direct_engagement, 207 AppBannerManager::SetEngagementWeights(direct_engagement,
209 indirect_engagement); 208 indirect_engagement);
210 } 209 }
211 210
212 jboolean IsEnabled(JNIEnv* env, const JavaParamRef<jclass>& clazz) { 211 jboolean IsEnabled(JNIEnv* env, const JavaParamRef<jclass>& clazz) {
213 return base::FieldTrialList::FindFullName("AppBanners") == "Enabled"; 212 return base::FieldTrialList::FindFullName("AppBanners") == "Enabled";
214 } 213 }
215 214
216 } // namespace banners 215 } // namespace banners
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698