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

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

Issue 2611623003: Use exact pixel sizes instead of dip in webapp/WebAPK installability code (Closed)
Patch Set: Rebased version of pkotwicz@'s original patch Created 3 years, 11 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 <memory> 7 #include <memory>
8 #include <utility> 8 #include <utility>
9 9
10 #include "base/android/jni_android.h" 10 #include "base/android/jni_android.h"
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
64 JNIEnv* env = base::android::AttachCurrentThread(); 64 JNIEnv* env = base::android::AttachCurrentThread();
65 Java_AppBannerManager_destroy(env, java_banner_manager_); 65 Java_AppBannerManager_destroy(env, java_banner_manager_);
66 java_banner_manager_.Reset(); 66 java_banner_manager_.Reset();
67 } 67 }
68 68
69 base::Closure AppBannerManagerAndroid::FetchWebappSplashScreenImageCallback( 69 base::Closure AppBannerManagerAndroid::FetchWebappSplashScreenImageCallback(
70 const std::string& webapp_id) { 70 const std::string& webapp_id) {
71 content::WebContents* contents = web_contents(); 71 content::WebContents* contents = web_contents();
72 DCHECK(contents); 72 DCHECK(contents);
73 73
74 int ideal_splash_image_size_in_dp = 74 int ideal_splash_image_size_in_px =
75 ShortcutHelper::GetIdealSplashImageSizeInDp(); 75 ShortcutHelper::GetIdealSplashImageSizeInPx();
76 int minimum_splash_image_size_in_dp = 76 int minimum_splash_image_size_in_px =
77 ShortcutHelper::GetMinimumSplashImageSizeInDp(); 77 ShortcutHelper::GetMinimumSplashImageSizeInPx();
78 GURL image_url = ManifestIconSelector::FindBestMatchingIcon( 78 GURL image_url = ManifestIconSelector::FindBestMatchingIcon(
79 manifest_.icons, ideal_splash_image_size_in_dp, 79 manifest_.icons, ideal_splash_image_size_in_px,
80 minimum_splash_image_size_in_dp); 80 minimum_splash_image_size_in_px);
81 81
82 return base::Bind(&ShortcutHelper::FetchSplashScreenImage, contents, 82 return base::Bind(&ShortcutHelper::FetchSplashScreenImage, contents,
83 image_url, ideal_splash_image_size_in_dp, 83 image_url, ideal_splash_image_size_in_px,
84 minimum_splash_image_size_in_dp, webapp_id); 84 minimum_splash_image_size_in_px, webapp_id);
85 } 85 }
86 86
87 const base::android::ScopedJavaGlobalRef<jobject>& 87 const base::android::ScopedJavaGlobalRef<jobject>&
88 AppBannerManagerAndroid::GetJavaBannerManager() const { 88 AppBannerManagerAndroid::GetJavaBannerManager() const {
89 return java_banner_manager_; 89 return java_banner_manager_;
90 } 90 }
91 91
92 bool AppBannerManagerAndroid::IsActiveForTesting( 92 bool AppBannerManagerAndroid::IsActiveForTesting(
93 JNIEnv* env, 93 JNIEnv* env,
94 const JavaParamRef<jobject>& obj) { 94 const JavaParamRef<jobject>& obj) {
95 return is_active(); 95 return is_active();
96 } 96 }
97 97
98 bool AppBannerManagerAndroid::OnAppDetailsRetrieved( 98 bool AppBannerManagerAndroid::OnAppDetailsRetrieved(
99 JNIEnv* env, 99 JNIEnv* env,
100 const JavaParamRef<jobject>& obj, 100 const JavaParamRef<jobject>& obj,
101 const JavaParamRef<jobject>& japp_data, 101 const JavaParamRef<jobject>& japp_data,
102 const JavaParamRef<jstring>& japp_title, 102 const JavaParamRef<jstring>& japp_title,
103 const JavaParamRef<jstring>& japp_package, 103 const JavaParamRef<jstring>& japp_package,
104 const JavaParamRef<jstring>& jicon_url) { 104 const JavaParamRef<jstring>& jicon_url) {
105 native_app_data_.Reset(japp_data); 105 native_app_data_.Reset(japp_data);
106 app_title_ = ConvertJavaStringToUTF16(env, japp_title); 106 app_title_ = ConvertJavaStringToUTF16(env, japp_title);
107 native_app_package_ = ConvertJavaStringToUTF8(env, japp_package); 107 native_app_package_ = ConvertJavaStringToUTF8(env, japp_package);
108 icon_url_ = GURL(ConvertJavaStringToUTF8(env, jicon_url)); 108 icon_url_ = GURL(ConvertJavaStringToUTF8(env, jicon_url));
109 109
110 return ManifestIconDownloader::Download( 110 return ManifestIconDownloader::Download(
111 web_contents(), icon_url_, GetIdealIconSizeInDp(), 111 web_contents(), icon_url_, GetIdealIconSizeInPx(),
112 GetMinimumIconSizeInDp(), 112 GetMinimumIconSizeInPx(),
113 base::Bind(&AppBannerManager::OnAppIconFetched, GetWeakPtr())); 113 base::Bind(&AppBannerManager::OnAppIconFetched, GetWeakPtr()));
114 } 114 }
115 115
116 void AppBannerManagerAndroid::RequestAppBanner(const GURL& validated_url, 116 void AppBannerManagerAndroid::RequestAppBanner(const GURL& validated_url,
117 bool is_debug_mode) { 117 bool is_debug_mode) {
118 JNIEnv* env = base::android::AttachCurrentThread(); 118 JNIEnv* env = base::android::AttachCurrentThread();
119 if (!Java_AppBannerManager_isEnabledForTab(env, java_banner_manager_)) 119 if (!Java_AppBannerManager_isEnabledForTab(env, java_banner_manager_))
120 return; 120 return;
121 121
122 AppBannerManager::RequestAppBanner(validated_url, is_debug_mode); 122 AppBannerManager::RequestAppBanner(validated_url, is_debug_mode);
123 } 123 }
124 124
125 std::string AppBannerManagerAndroid::GetAppIdentifier() { 125 std::string AppBannerManagerAndroid::GetAppIdentifier() {
126 return native_app_data_.is_null() ? AppBannerManager::GetAppIdentifier() 126 return native_app_data_.is_null() ? AppBannerManager::GetAppIdentifier()
127 : native_app_package_; 127 : native_app_package_;
128 } 128 }
129 129
130 std::string AppBannerManagerAndroid::GetBannerType() { 130 std::string AppBannerManagerAndroid::GetBannerType() {
131 return native_app_data_.is_null() ? AppBannerManager::GetBannerType() 131 return native_app_data_.is_null() ? AppBannerManager::GetBannerType()
132 : "play"; 132 : "play";
133 } 133 }
134 134
135 int AppBannerManagerAndroid::GetIdealIconSizeInDp() { 135 int AppBannerManagerAndroid::GetIdealIconSizeInPx() {
136 return ShortcutHelper::GetIdealHomescreenIconSizeInDp(); 136 return ShortcutHelper::GetIdealHomescreenIconSizeInPx();
137 } 137 }
138 138
139 int AppBannerManagerAndroid::GetMinimumIconSizeInDp() { 139 int AppBannerManagerAndroid::GetMinimumIconSizeInPx() {
140 return ShortcutHelper::GetMinimumHomescreenIconSizeInDp(); 140 return ShortcutHelper::GetMinimumHomescreenIconSizeInPx();
141 } 141 }
142 142
143 bool AppBannerManagerAndroid::IsWebAppInstalled( 143 bool AppBannerManagerAndroid::IsWebAppInstalled(
144 content::BrowserContext* browser_context, 144 content::BrowserContext* browser_context,
145 const GURL& start_url) { 145 const GURL& start_url) {
146 // Returns true if a WebAPK is installed. Does not check whether a non-WebAPK 146 // Returns true if a WebAPK is installed. Does not check whether a non-WebAPK
147 // web app is installed: this is detected by the content settings check in 147 // web app is installed: this is detected by the content settings check in
148 // AppBannerSettingsHelper::ShouldShowBanner (due to the lack of an API to 148 // AppBannerSettingsHelper::ShouldShowBanner (due to the lack of an API to
149 // detect what is and isn't on the Android homescreen). 149 // detect what is and isn't on the Android homescreen).
150 // This method will still detect the presence of a WebAPK even if Chrome's 150 // This method will still detect the presence of a WebAPK even if Chrome's
(...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after
245 if (!referrer.empty()) 245 if (!referrer.empty())
246 referrer += "&"; 246 referrer += "&";
247 referrer += "playinline=chrome_inline"; 247 referrer += "playinline=chrome_inline";
248 248
249 ScopedJavaLocalRef<jstring> jurl( 249 ScopedJavaLocalRef<jstring> jurl(
250 ConvertUTF8ToJavaString(env, validated_url_.spec())); 250 ConvertUTF8ToJavaString(env, validated_url_.spec()));
251 ScopedJavaLocalRef<jstring> jpackage(ConvertUTF8ToJavaString(env, id)); 251 ScopedJavaLocalRef<jstring> jpackage(ConvertUTF8ToJavaString(env, id));
252 ScopedJavaLocalRef<jstring> jreferrer(ConvertUTF8ToJavaString(env, referrer)); 252 ScopedJavaLocalRef<jstring> jreferrer(ConvertUTF8ToJavaString(env, referrer));
253 Java_AppBannerManager_fetchAppDetails(env, java_banner_manager_, jurl, 253 Java_AppBannerManager_fetchAppDetails(env, java_banner_manager_, jurl,
254 jpackage, jreferrer, 254 jpackage, jreferrer,
255 GetIdealIconSizeInDp()); 255 GetIdealIconSizeInPx());
256 return true; 256 return true;
257 } 257 }
258 258
259 void AppBannerManagerAndroid::CreateJavaBannerManager() { 259 void AppBannerManagerAndroid::CreateJavaBannerManager() {
260 JNIEnv* env = base::android::AttachCurrentThread(); 260 JNIEnv* env = base::android::AttachCurrentThread();
261 java_banner_manager_.Reset( 261 java_banner_manager_.Reset(
262 Java_AppBannerManager_create(env, reinterpret_cast<intptr_t>(this))); 262 Java_AppBannerManager_create(env, reinterpret_cast<intptr_t>(this)));
263 } 263 }
264 264
265 bool AppBannerManagerAndroid::CheckPlatformAndId(const std::string& platform, 265 bool AppBannerManagerAndroid::CheckPlatformAndId(const std::string& platform,
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
323 } 323 }
324 324
325 // static 325 // static
326 void SetTotalEngagementToTrigger(JNIEnv* env, 326 void SetTotalEngagementToTrigger(JNIEnv* env,
327 const JavaParamRef<jclass>& clazz, 327 const JavaParamRef<jclass>& clazz,
328 jdouble engagement) { 328 jdouble engagement) {
329 AppBannerSettingsHelper::SetTotalEngagementToTrigger(engagement); 329 AppBannerSettingsHelper::SetTotalEngagementToTrigger(engagement);
330 } 330 }
331 331
332 } // namespace banners 332 } // namespace banners
OLDNEW
« no previous file with comments | « chrome/browser/android/banners/app_banner_manager_android.h ('k') | chrome/browser/android/shortcut_helper.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698