| 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 "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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 |
| OLD | NEW |