| 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 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 43 auto shortcut_info = base::MakeUnique<ShortcutInfo>(GURL()); | 43 auto shortcut_info = base::MakeUnique<ShortcutInfo>(GURL()); |
| 44 if (!manifest.IsEmpty()) { | 44 if (!manifest.IsEmpty()) { |
| 45 shortcut_info->UpdateFromManifest(manifest); | 45 shortcut_info->UpdateFromManifest(manifest); |
| 46 shortcut_info->manifest_url = manifest_url; | 46 shortcut_info->manifest_url = manifest_url; |
| 47 shortcut_info->best_primary_icon_url = icon_url; | 47 shortcut_info->best_primary_icon_url = icon_url; |
| 48 shortcut_info->UpdateSource(ShortcutInfo::SOURCE_APP_BANNER); | 48 shortcut_info->UpdateSource(ShortcutInfo::SOURCE_APP_BANNER); |
| 49 } | 49 } |
| 50 | 50 |
| 51 shortcut_info->ideal_splash_image_size_in_px = | 51 shortcut_info->ideal_splash_image_size_in_px = |
| 52 ShortcutHelper::GetIdealSplashImageSizeInPx(); | 52 ShortcutHelper::GetIdealSplashImageSizeInPx(); |
| 53 shortcut_info->minimum_splash_image_size_in_px = | |
| 54 ShortcutHelper::GetMinimumSplashImageSizeInPx(); | |
| 55 shortcut_info->splash_image_url = ManifestIconSelector::FindBestMatchingIcon( | 53 shortcut_info->splash_image_url = ManifestIconSelector::FindBestMatchingIcon( |
| 56 manifest.icons, shortcut_info->ideal_splash_image_size_in_px, | 54 manifest.icons, shortcut_info->ideal_splash_image_size_in_px, |
| 57 shortcut_info->minimum_splash_image_size_in_px, | 55 InstallableManager::GetMinimumIconSizeInPx(), |
| 58 content::Manifest::Icon::IconPurpose::ANY); | 56 content::Manifest::Icon::IconPurpose::ANY); |
| 59 | 57 |
| 60 return shortcut_info; | 58 return shortcut_info; |
| 61 } | 59 } |
| 62 | 60 |
| 63 } // anonymous namespace | 61 } // anonymous namespace |
| 64 | 62 |
| 65 namespace banners { | 63 namespace banners { |
| 66 | 64 |
| 67 AppBannerManagerAndroid::AppBannerManagerAndroid( | 65 AppBannerManagerAndroid::AppBannerManagerAndroid( |
| (...skipping 30 matching lines...) Expand all Loading... |
| 98 native_app_data_.Reset(japp_data); | 96 native_app_data_.Reset(japp_data); |
| 99 app_title_ = ConvertJavaStringToUTF16(env, japp_title); | 97 app_title_ = ConvertJavaStringToUTF16(env, japp_title); |
| 100 native_app_package_ = ConvertJavaStringToUTF8(env, japp_package); | 98 native_app_package_ = ConvertJavaStringToUTF8(env, japp_package); |
| 101 primary_icon_url_ = GURL(ConvertJavaStringToUTF8(env, jicon_url)); | 99 primary_icon_url_ = GURL(ConvertJavaStringToUTF8(env, jicon_url)); |
| 102 | 100 |
| 103 if (!CheckIfShouldShowBanner()) | 101 if (!CheckIfShouldShowBanner()) |
| 104 return false; | 102 return false; |
| 105 | 103 |
| 106 return ManifestIconDownloader::Download( | 104 return ManifestIconDownloader::Download( |
| 107 web_contents(), primary_icon_url_, GetIdealPrimaryIconSizeInPx(), | 105 web_contents(), primary_icon_url_, GetIdealPrimaryIconSizeInPx(), |
| 108 GetMinimumPrimaryIconSizeInPx(), | 106 InstallableManager::GetMinimumIconSizeInPx(), |
| 109 base::Bind(&AppBannerManager::OnAppIconFetched, GetWeakPtr())); | 107 base::Bind(&AppBannerManager::OnAppIconFetched, GetWeakPtr())); |
| 110 } | 108 } |
| 111 | 109 |
| 112 void AppBannerManagerAndroid::RequestAppBanner(const GURL& validated_url, | 110 void AppBannerManagerAndroid::RequestAppBanner(const GURL& validated_url, |
| 113 bool is_debug_mode) { | 111 bool is_debug_mode) { |
| 114 JNIEnv* env = base::android::AttachCurrentThread(); | 112 JNIEnv* env = base::android::AttachCurrentThread(); |
| 115 if (!Java_AppBannerManager_isEnabledForTab(env, java_banner_manager_)) | 113 if (!Java_AppBannerManager_isEnabledForTab(env, java_banner_manager_)) |
| 116 return; | 114 return; |
| 117 | 115 |
| 118 AppBannerManager::RequestAppBanner(validated_url, is_debug_mode); | 116 AppBannerManager::RequestAppBanner(validated_url, is_debug_mode); |
| (...skipping 10 matching lines...) Expand all Loading... |
| 129 | 127 |
| 130 std::string AppBannerManagerAndroid::GetBannerType() { | 128 std::string AppBannerManagerAndroid::GetBannerType() { |
| 131 return native_app_data_.is_null() ? AppBannerManager::GetBannerType() | 129 return native_app_data_.is_null() ? AppBannerManager::GetBannerType() |
| 132 : "play"; | 130 : "play"; |
| 133 } | 131 } |
| 134 | 132 |
| 135 int AppBannerManagerAndroid::GetIdealPrimaryIconSizeInPx() { | 133 int AppBannerManagerAndroid::GetIdealPrimaryIconSizeInPx() { |
| 136 return ShortcutHelper::GetIdealHomescreenIconSizeInPx(); | 134 return ShortcutHelper::GetIdealHomescreenIconSizeInPx(); |
| 137 } | 135 } |
| 138 | 136 |
| 139 int AppBannerManagerAndroid::GetMinimumPrimaryIconSizeInPx() { | |
| 140 return ShortcutHelper::GetMinimumHomescreenIconSizeInPx(); | |
| 141 } | |
| 142 | |
| 143 bool AppBannerManagerAndroid::IsWebAppInstalled( | 137 bool AppBannerManagerAndroid::IsWebAppInstalled( |
| 144 content::BrowserContext* browser_context, | 138 content::BrowserContext* browser_context, |
| 145 const GURL& start_url, | 139 const GURL& start_url, |
| 146 const GURL& manifest_url) { | 140 const GURL& manifest_url) { |
| 147 // Returns true if a WebAPK is installed or is being installed. | 141 // Returns true if a WebAPK is installed or is being installed. |
| 148 // Does not check whether a non-WebAPK web app is installed: this is detected | 142 // Does not check whether a non-WebAPK web app is installed: this is detected |
| 149 // by the content settings check in AppBannerSettingsHelper::ShouldShowBanner | 143 // by the content settings check in AppBannerSettingsHelper::ShouldShowBanner |
| 150 // (due to the lack of an API to detect what is and isn't on the Android | 144 // (due to the lack of an API to detect what is and isn't on the Android |
| 151 // homescreen). This method will still detect the presence of a WebAPK even if | 145 // homescreen). This method will still detect the presence of a WebAPK even if |
| 152 // Chrome's data is cleared. | 146 // Chrome's data is cleared. |
| 153 return ShortcutHelper::IsWebApkInstalled(browser_context, start_url, | 147 return ShortcutHelper::IsWebApkInstalled(browser_context, start_url, |
| 154 manifest_url); | 148 manifest_url); |
| 155 } | 149 } |
| 156 | 150 |
| 157 InstallableParams AppBannerManagerAndroid::ParamsToPerformInstallableCheck() { | 151 InstallableParams AppBannerManagerAndroid::ParamsToPerformInstallableCheck() { |
| 158 InstallableParams params = | 152 InstallableParams params = |
| 159 AppBannerManager::ParamsToPerformInstallableCheck(); | 153 AppBannerManager::ParamsToPerformInstallableCheck(); |
| 160 | 154 |
| 161 if (can_install_webapk_) { | 155 if (can_install_webapk_) { |
| 162 params.ideal_badge_icon_size_in_px = GetIdealBadgeIconSizeInPx(); | 156 params.ideal_badge_icon_size_in_px = GetIdealBadgeIconSizeInPx(); |
| 163 params.minimum_badge_icon_size_in_px = GetIdealBadgeIconSizeInPx(); | |
| 164 params.fetch_valid_badge_icon = true; | 157 params.fetch_valid_badge_icon = true; |
| 165 } | 158 } |
| 166 | 159 |
| 167 return params; | 160 return params; |
| 168 } | 161 } |
| 169 | 162 |
| 170 void AppBannerManagerAndroid::PerformInstallableCheck() { | 163 void AppBannerManagerAndroid::PerformInstallableCheck() { |
| 171 // Check if the manifest prefers that we show a native app banner. If so, call | 164 // Check if the manifest prefers that we show a native app banner. If so, call |
| 172 // to Java to verify the details. | 165 // to Java to verify the details. |
| 173 if (manifest_.prefer_related_applications && | 166 if (manifest_.prefer_related_applications && |
| (...skipping 182 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 356 } | 349 } |
| 357 | 350 |
| 358 // static | 351 // static |
| 359 void SetTotalEngagementToTrigger(JNIEnv* env, | 352 void SetTotalEngagementToTrigger(JNIEnv* env, |
| 360 const JavaParamRef<jclass>& clazz, | 353 const JavaParamRef<jclass>& clazz, |
| 361 jdouble engagement) { | 354 jdouble engagement) { |
| 362 AppBannerSettingsHelper::SetTotalEngagementToTrigger(engagement); | 355 AppBannerSettingsHelper::SetTotalEngagementToTrigger(engagement); |
| 363 } | 356 } |
| 364 | 357 |
| 365 } // namespace banners | 358 } // namespace banners |
| OLD | NEW |