Commit 93bb4747 authored by Evan Stade's avatar Evan Stade Committed by Chromium LUCI CQ

Move AddToHomescreen code into webapps:: namespace.

This will make the relocation into //components cleaner.

Bug: 1164069
Change-Id: I9cec4b2ea55721cf670c986699a91a5ce59cdf17
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2616727
Commit-Queue: Evan Stade <estade@chromium.org>
Reviewed-by: default avatarDominick Ng <dominickn@chromium.org>
Cr-Commit-Position: refs/heads/master@{#841520}
parent 0e07b023
...@@ -12,6 +12,7 @@ import androidx.annotation.StringRes; ...@@ -12,6 +12,7 @@ import androidx.annotation.StringRes;
import androidx.annotation.VisibleForTesting; import androidx.annotation.VisibleForTesting;
import org.chromium.base.annotations.CalledByNative; import org.chromium.base.annotations.CalledByNative;
import org.chromium.base.annotations.JNINamespace;
import org.chromium.chrome.browser.app.ChromeActivity; import org.chromium.chrome.browser.app.ChromeActivity;
import org.chromium.chrome.browser.banners.AppBannerManager; import org.chromium.chrome.browser.banners.AppBannerManager;
import org.chromium.chrome.browser.flags.ChromeFeatureList; import org.chromium.chrome.browser.flags.ChromeFeatureList;
...@@ -33,6 +34,7 @@ import org.chromium.ui.modelutil.PropertyModelChangeProcessor; ...@@ -33,6 +34,7 @@ import org.chromium.ui.modelutil.PropertyModelChangeProcessor;
* The {@link #showForAppMenu} method is used to show the add-to-homescreen UI when the user * The {@link #showForAppMenu} method is used to show the add-to-homescreen UI when the user
* chooses the "Add to Home screen" option from the app menu. * chooses the "Add to Home screen" option from the app menu.
*/ */
@JNINamespace("webapps")
public class AddToHomescreenCoordinator { public class AddToHomescreenCoordinator {
@VisibleForTesting @VisibleForTesting
Context mActivityContext; Context mActivityContext;
......
...@@ -10,6 +10,7 @@ import android.util.Pair; ...@@ -10,6 +10,7 @@ import android.util.Pair;
import androidx.annotation.StringRes; import androidx.annotation.StringRes;
import org.chromium.base.annotations.CalledByNative; import org.chromium.base.annotations.CalledByNative;
import org.chromium.base.annotations.JNINamespace;
import org.chromium.base.annotations.NativeMethods; import org.chromium.base.annotations.NativeMethods;
import org.chromium.chrome.browser.banners.AppData; import org.chromium.chrome.browser.banners.AppData;
import org.chromium.chrome.browser.webapps.AddToHomescreenProperties; import org.chromium.chrome.browser.webapps.AddToHomescreenProperties;
...@@ -28,6 +29,7 @@ import javax.annotation.Nonnull; ...@@ -28,6 +29,7 @@ import javax.annotation.Nonnull;
* information about the app is available. These methods modify the model that lives on the Java * information about the app is available. These methods modify the model that lives on the Java
* side. * side.
*/ */
@JNINamespace("webapps")
class AddToHomescreenMediator implements AddToHomescreenViewDelegate { class AddToHomescreenMediator implements AddToHomescreenViewDelegate {
private long mNativeAddToHomescreenMediator; private long mNativeAddToHomescreenMediator;
private PropertyModel mModel; private PropertyModel mModel;
......
...@@ -15,9 +15,11 @@ ...@@ -15,9 +15,11 @@
#include "chrome/browser/android/webapps/add_to_homescreen_params.h" #include "chrome/browser/android/webapps/add_to_homescreen_params.h"
#include "chrome/browser/banners/app_banner_manager.h" #include "chrome/browser/banners/app_banner_manager.h"
namespace webapps {
// static // static
bool AddToHomescreenCoordinator::ShowForAppBanner( bool AddToHomescreenCoordinator::ShowForAppBanner(
base::WeakPtr<webapps::AppBannerManager> weak_manager, base::WeakPtr<AppBannerManager> weak_manager,
std::unique_ptr<AddToHomescreenParams> params, std::unique_ptr<AddToHomescreenParams> params,
base::RepeatingCallback<void(AddToHomescreenInstaller::Event, base::RepeatingCallback<void(AddToHomescreenInstaller::Event,
const AddToHomescreenParams&)> const AddToHomescreenParams&)>
...@@ -36,3 +38,5 @@ bool AddToHomescreenCoordinator::ShowForAppBanner( ...@@ -36,3 +38,5 @@ bool AddToHomescreenCoordinator::ShowForAppBanner(
std::move(event_callback)); std::move(event_callback));
return true; return true;
} }
} // namespace webapps
...@@ -11,11 +11,10 @@ ...@@ -11,11 +11,10 @@
#include "base/memory/weak_ptr.h" #include "base/memory/weak_ptr.h"
#include "chrome/browser/android/webapps/add_to_homescreen_installer.h" #include "chrome/browser/android/webapps/add_to_homescreen_installer.h"
struct AddToHomescreenParams;
namespace webapps { namespace webapps {
struct AddToHomescreenParams;
class AppBannerManager; class AppBannerManager;
}
// AddToHomescreenCoordinator is the C++ counterpart of org.chromium.chrome. // AddToHomescreenCoordinator is the C++ counterpart of org.chromium.chrome.
// browser.webapps.addtohomescreen.AddToHomescreenCoordinator in Java. // browser.webapps.addtohomescreen.AddToHomescreenCoordinator in Java.
...@@ -23,7 +22,7 @@ class AddToHomescreenCoordinator { ...@@ -23,7 +22,7 @@ class AddToHomescreenCoordinator {
public: public:
// Called for showing the add-to-homescreen UI for AppBannerManager. // Called for showing the add-to-homescreen UI for AppBannerManager.
static bool ShowForAppBanner( static bool ShowForAppBanner(
base::WeakPtr<webapps::AppBannerManager> weak_manager, base::WeakPtr<AppBannerManager> weak_manager,
std::unique_ptr<AddToHomescreenParams> params, std::unique_ptr<AddToHomescreenParams> params,
base::RepeatingCallback<void(AddToHomescreenInstaller::Event, base::RepeatingCallback<void(AddToHomescreenInstaller::Event,
const AddToHomescreenParams&)> const AddToHomescreenParams&)>
...@@ -35,4 +34,6 @@ class AddToHomescreenCoordinator { ...@@ -35,4 +34,6 @@ class AddToHomescreenCoordinator {
delete; delete;
}; };
} // namespace webapps
#endif // CHROME_BROWSER_ANDROID_WEBAPPS_ADD_TO_HOMESCREEN_COORDINATOR_H_ #endif // CHROME_BROWSER_ANDROID_WEBAPPS_ADD_TO_HOMESCREEN_COORDINATOR_H_
...@@ -39,6 +39,8 @@ ...@@ -39,6 +39,8 @@
#include "ui/gfx/favicon_size.h" #include "ui/gfx/favicon_size.h"
#include "url/gurl.h" #include "url/gurl.h"
namespace webapps {
namespace { namespace {
// Looks up the original, online, visible URL of |web_contents|. The current // Looks up the original, online, visible URL of |web_contents|. The current
...@@ -49,23 +51,23 @@ GURL GetShortcutUrl(content::WebContents* web_contents) { ...@@ -49,23 +51,23 @@ GURL GetShortcutUrl(content::WebContents* web_contents) {
web_contents->GetVisibleURL()); web_contents->GetVisibleURL());
} }
webapps::InstallableParams ParamsToPerformManifestAndIconFetch() { InstallableParams ParamsToPerformManifestAndIconFetch() {
webapps::InstallableParams params; InstallableParams params;
params.valid_primary_icon = true; params.valid_primary_icon = true;
params.prefer_maskable_icon = params.prefer_maskable_icon =
webapps::WebappsIconUtils::DoesAndroidSupportMaskableIcons(); WebappsIconUtils::DoesAndroidSupportMaskableIcons();
params.wait_for_worker = true; params.wait_for_worker = true;
return params; return params;
} }
webapps::InstallableParams ParamsToPerformInstallableCheck() { InstallableParams ParamsToPerformInstallableCheck() {
webapps::InstallableParams params; InstallableParams params;
params.check_eligibility = true; params.check_eligibility = true;
params.valid_manifest = true; params.valid_manifest = true;
params.has_worker = true; params.has_worker = true;
params.valid_primary_icon = true; params.valid_primary_icon = true;
params.prefer_maskable_icon = params.prefer_maskable_icon =
webapps::WebappsIconUtils::DoesAndroidSupportMaskableIcons(); WebappsIconUtils::DoesAndroidSupportMaskableIcons();
params.wait_for_worker = true; params.wait_for_worker = true;
return params; return params;
} }
...@@ -82,9 +84,8 @@ void CreateLauncherIconInBackground( ...@@ -82,9 +84,8 @@ void CreateLauncherIconInBackground(
scoped_refptr<base::SequencedTaskRunner> ui_thread_task_runner, scoped_refptr<base::SequencedTaskRunner> ui_thread_task_runner,
base::OnceCallback<void(const SkBitmap&, bool)> callback) { base::OnceCallback<void(const SkBitmap&, bool)> callback) {
bool is_generated = false; bool is_generated = false;
SkBitmap primary_icon = SkBitmap primary_icon = WebappsIconUtils::FinalizeLauncherIconInBackground(
webapps::WebappsIconUtils::FinalizeLauncherIconInBackground( icon, maskable, start_url, &is_generated);
icon, maskable, start_url, &is_generated);
ui_thread_task_runner->PostTask( ui_thread_task_runner->PostTask(
FROM_HERE, FROM_HERE,
base::BindOnce(std::move(callback), primary_icon, is_generated)); base::BindOnce(std::move(callback), primary_icon, is_generated));
...@@ -120,8 +121,7 @@ AddToHomescreenDataFetcher::AddToHomescreenDataFetcher( ...@@ -120,8 +121,7 @@ AddToHomescreenDataFetcher::AddToHomescreenDataFetcher(
int data_timeout_ms, int data_timeout_ms,
Observer* observer) Observer* observer)
: content::WebContentsObserver(web_contents), : content::WebContentsObserver(web_contents),
installable_manager_( installable_manager_(InstallableManager::FromWebContents(web_contents)),
webapps::InstallableManager::FromWebContents(web_contents)),
observer_(observer), observer_(observer),
shortcut_info_(GetShortcutUrl(web_contents)), shortcut_info_(GetShortcutUrl(web_contents)),
has_maskable_primary_icon_(false), has_maskable_primary_icon_(false),
...@@ -172,7 +172,7 @@ void AddToHomescreenDataFetcher::OnDidGetWebPageMetadata( ...@@ -172,7 +172,7 @@ void AddToHomescreenDataFetcher::OnDidGetWebPageMetadata(
chrome::mojom::WebPageMobileCapable::ENABLED_APPLE) { chrome::mojom::WebPageMobileCapable::ENABLED_APPLE) {
shortcut_info_.display = blink::mojom::DisplayMode::kStandalone; shortcut_info_.display = blink::mojom::DisplayMode::kStandalone;
shortcut_info_.UpdateSource( shortcut_info_.UpdateSource(
webapps::ShortcutInfo::SOURCE_ADD_TO_HOMESCREEN_STANDALONE); ShortcutInfo::SOURCE_ADD_TO_HOMESCREEN_STANDALONE);
} }
// Record what type of shortcut was added by the user. // Record what type of shortcut was added by the user.
...@@ -225,7 +225,7 @@ void AddToHomescreenDataFetcher::OnDataTimedout() { ...@@ -225,7 +225,7 @@ void AddToHomescreenDataFetcher::OnDataTimedout() {
} }
void AddToHomescreenDataFetcher::OnDidGetManifestAndIcons( void AddToHomescreenDataFetcher::OnDidGetManifestAndIcons(
const webapps::InstallableData& data) { const InstallableData& data) {
if (!web_contents()) if (!web_contents())
return; return;
...@@ -254,9 +254,9 @@ void AddToHomescreenDataFetcher::OnDidGetManifestAndIcons( ...@@ -254,9 +254,9 @@ void AddToHomescreenDataFetcher::OnDidGetManifestAndIcons(
// Save the splash screen URL for the later download. // Save the splash screen URL for the later download.
shortcut_info_.ideal_splash_image_size_in_px = shortcut_info_.ideal_splash_image_size_in_px =
webapps::WebappsIconUtils::GetIdealSplashImageSizeInPx(); WebappsIconUtils::GetIdealSplashImageSizeInPx();
shortcut_info_.minimum_splash_image_size_in_px = shortcut_info_.minimum_splash_image_size_in_px =
webapps::WebappsIconUtils::GetMinimumSplashImageSizeInPx(); WebappsIconUtils::GetMinimumSplashImageSizeInPx();
shortcut_info_.splash_image_url = shortcut_info_.splash_image_url =
blink::ManifestIconSelector::FindBestMatchingSquareIcon( blink::ManifestIconSelector::FindBestMatchingSquareIcon(
data.manifest->icons, shortcut_info_.ideal_splash_image_size_in_px, data.manifest->icons, shortcut_info_.ideal_splash_image_size_in_px,
...@@ -270,7 +270,7 @@ void AddToHomescreenDataFetcher::OnDidGetManifestAndIcons( ...@@ -270,7 +270,7 @@ void AddToHomescreenDataFetcher::OnDidGetManifestAndIcons(
} }
void AddToHomescreenDataFetcher::OnDidPerformInstallableCheck( void AddToHomescreenDataFetcher::OnDidPerformInstallableCheck(
const webapps::InstallableData& data) { const InstallableData& data) {
StopTimer(); StopTimer();
if (!web_contents()) if (!web_contents())
...@@ -278,8 +278,7 @@ void AddToHomescreenDataFetcher::OnDidPerformInstallableCheck( ...@@ -278,8 +278,7 @@ void AddToHomescreenDataFetcher::OnDidPerformInstallableCheck(
bool webapk_compatible = bool webapk_compatible =
(data.NoBlockingErrors() && data.valid_manifest && data.has_worker && (data.NoBlockingErrors() && data.valid_manifest && data.has_worker &&
webapps::WebappsUtils::AreWebManifestUrlsWebApkCompatible( WebappsUtils::AreWebManifestUrlsWebApkCompatible(*data.manifest));
*data.manifest));
observer_->OnUserTitleAvailable( observer_->OnUserTitleAvailable(
webapk_compatible ? shortcut_info_.name : shortcut_info_.user_title, webapk_compatible ? shortcut_info_.name : shortcut_info_.user_title,
shortcut_info_.url, webapk_compatible); shortcut_info_.url, webapk_compatible);
...@@ -290,8 +289,7 @@ void AddToHomescreenDataFetcher::OnDidPerformInstallableCheck( ...@@ -290,8 +289,7 @@ void AddToHomescreenDataFetcher::OnDidPerformInstallableCheck(
// that icon is maskable. // that icon is maskable.
should_use_created_icon_for_launcher = false; should_use_created_icon_for_launcher = false;
primary_icon_ = raw_primary_icon_; primary_icon_ = raw_primary_icon_;
shortcut_info_.UpdateSource( shortcut_info_.UpdateSource(ShortcutInfo::SOURCE_ADD_TO_HOMESCREEN_PWA);
webapps::ShortcutInfo::SOURCE_ADD_TO_HOMESCREEN_PWA);
if (!has_maskable_primary_icon_) { if (!has_maskable_primary_icon_) {
// We can skip creating an icon for the view because the raw icon is // We can skip creating an icon for the view because the raw icon is
// sufficient when WebAPK-compatible and the icon is non-maskable. // sufficient when WebAPK-compatible and the icon is non-maskable.
...@@ -323,7 +321,7 @@ void AddToHomescreenDataFetcher::FetchFavicon() { ...@@ -323,7 +321,7 @@ void AddToHomescreenDataFetcher::FetchFavicon() {
// Using favicon if its size is not smaller than platform required size, // Using favicon if its size is not smaller than platform required size,
// otherwise using the largest icon among all available icons. // otherwise using the largest icon among all available icons.
int threshold_to_get_any_largest_icon = int threshold_to_get_any_largest_icon =
webapps::WebappsIconUtils::GetIdealHomescreenIconSizeInPx() - 1; WebappsIconUtils::GetIdealHomescreenIconSizeInPx() - 1;
favicon_service->GetLargestRawFaviconForPageURL( favicon_service->GetLargestRawFaviconForPageURL(
shortcut_info_.url, icon_types, threshold_to_get_any_largest_icon, shortcut_info_.url, icon_types, threshold_to_get_any_largest_icon,
base::BindOnce(&AddToHomescreenDataFetcher::OnFaviconFetched, base::BindOnce(&AddToHomescreenDataFetcher::OnFaviconFetched,
...@@ -387,3 +385,5 @@ void AddToHomescreenDataFetcher::OnIconCreated(bool use_for_launcher, ...@@ -387,3 +385,5 @@ void AddToHomescreenDataFetcher::OnIconCreated(bool use_for_launcher,
observer_->OnDataAvailable(shortcut_info_, icon_for_view); observer_->OnDataAvailable(shortcut_info_, icon_for_view);
} }
} // namespace webapps
...@@ -21,9 +21,9 @@ struct FaviconRawBitmapResult; ...@@ -21,9 +21,9 @@ struct FaviconRawBitmapResult;
} }
namespace webapps { namespace webapps {
class InstallableManager; class InstallableManager;
struct InstallableData; struct InstallableData;
} // namespace webapps
// Aysnchronously fetches and processes data needed to create a shortcut for an // Aysnchronously fetches and processes data needed to create a shortcut for an
// Android Home screen launcher. // Android Home screen launcher.
...@@ -39,7 +39,7 @@ class AddToHomescreenDataFetcher : public content::WebContentsObserver { ...@@ -39,7 +39,7 @@ class AddToHomescreenDataFetcher : public content::WebContentsObserver {
// Called when all the data needed to prompt the user to add to home screen // Called when all the data needed to prompt the user to add to home screen
// is available. // is available.
virtual void OnDataAvailable(const webapps::ShortcutInfo& info, virtual void OnDataAvailable(const ShortcutInfo& info,
const SkBitmap& primary_icon) = 0; const SkBitmap& primary_icon) = 0;
protected: protected:
...@@ -64,7 +64,7 @@ class AddToHomescreenDataFetcher : public content::WebContentsObserver { ...@@ -64,7 +64,7 @@ class AddToHomescreenDataFetcher : public content::WebContentsObserver {
// Accessors, etc. // Accessors, etc.
const SkBitmap& primary_icon() const { return primary_icon_; } const SkBitmap& primary_icon() const { return primary_icon_; }
webapps::ShortcutInfo& shortcut_info() { return shortcut_info_; } ShortcutInfo& shortcut_info() { return shortcut_info_; }
bool has_maskable_primary_icon() const { return has_maskable_primary_icon_; } bool has_maskable_primary_icon() const { return has_maskable_primary_icon_; }
private: private:
...@@ -75,10 +75,10 @@ class AddToHomescreenDataFetcher : public content::WebContentsObserver { ...@@ -75,10 +75,10 @@ class AddToHomescreenDataFetcher : public content::WebContentsObserver {
void OnDataTimedout(); void OnDataTimedout();
// Called when InstallableManager finishes looking for a manifest and icon. // Called when InstallableManager finishes looking for a manifest and icon.
void OnDidGetManifestAndIcons(const webapps::InstallableData& data); void OnDidGetManifestAndIcons(const InstallableData& data);
// Called when InstallableManager finishes checking for installability. // Called when InstallableManager finishes checking for installability.
void OnDidPerformInstallableCheck(const webapps::InstallableData& data); void OnDidPerformInstallableCheck(const InstallableData& data);
// Grabs the favicon for the current URL. // Grabs the favicon for the current URL.
void FetchFavicon(); void FetchFavicon();
...@@ -95,13 +95,13 @@ class AddToHomescreenDataFetcher : public content::WebContentsObserver { ...@@ -95,13 +95,13 @@ class AddToHomescreenDataFetcher : public content::WebContentsObserver {
const SkBitmap& icon_for_view, const SkBitmap& icon_for_view,
bool is_icon_generated); bool is_icon_generated);
webapps::InstallableManager* installable_manager_; InstallableManager* installable_manager_;
Observer* observer_; Observer* observer_;
// The icons must only be set on the UI thread for thread safety. // The icons must only be set on the UI thread for thread safety.
SkBitmap raw_primary_icon_; SkBitmap raw_primary_icon_;
SkBitmap primary_icon_; SkBitmap primary_icon_;
webapps::ShortcutInfo shortcut_info_; ShortcutInfo shortcut_info_;
bool has_maskable_primary_icon_; bool has_maskable_primary_icon_;
base::CancelableTaskTracker favicon_task_tracker_; base::CancelableTaskTracker favicon_task_tracker_;
...@@ -119,4 +119,6 @@ class AddToHomescreenDataFetcher : public content::WebContentsObserver { ...@@ -119,4 +119,6 @@ class AddToHomescreenDataFetcher : public content::WebContentsObserver {
delete; delete;
}; };
} // namespace webapps
#endif // CHROME_BROWSER_ANDROID_WEBAPPS_ADD_TO_HOMESCREEN_DATA_FETCHER_H_ #endif // CHROME_BROWSER_ANDROID_WEBAPPS_ADD_TO_HOMESCREEN_DATA_FETCHER_H_
...@@ -78,7 +78,7 @@ class ObserverWaiter : public AddToHomescreenDataFetcher::Observer { ...@@ -78,7 +78,7 @@ class ObserverWaiter : public AddToHomescreenDataFetcher::Observer {
is_webapk_compatible_ = is_webapk_compatible; is_webapk_compatible_ = is_webapk_compatible;
} }
void OnDataAvailable(const webapps::ShortcutInfo& info, void OnDataAvailable(const ShortcutInfo& info,
const SkBitmap& primary_icon) override { const SkBitmap& primary_icon) override {
// This should only be called once. // This should only be called once.
EXPECT_FALSE(data_available_); EXPECT_FALSE(data_available_);
......
...@@ -13,6 +13,8 @@ ...@@ -13,6 +13,8 @@
#include "chrome/browser/android/webapk/webapk_install_service.h" #include "chrome/browser/android/webapk/webapk_install_service.h"
#include "content/public/browser/web_contents.h" #include "content/public/browser/web_contents.h"
namespace webapps {
// static // static
void AddToHomescreenInstaller::Install( void AddToHomescreenInstaller::Install(
content::WebContents* web_contents, content::WebContents* web_contents,
...@@ -77,3 +79,5 @@ void AddToHomescreenInstaller::InstallShortcut( ...@@ -77,3 +79,5 @@ void AddToHomescreenInstaller::InstallShortcut(
web_contents, *(params.shortcut_info), params.primary_icon, web_contents, *(params.shortcut_info), params.primary_icon,
params.has_maskable_primary_icon); params.has_maskable_primary_icon);
} }
} // namespace webapps
...@@ -12,6 +12,8 @@ namespace content { ...@@ -12,6 +12,8 @@ namespace content {
class WebContents; class WebContents;
} }
namespace webapps {
// Helper class for installing a web app or an Android native app and recording // Helper class for installing a web app or an Android native app and recording
// related UMA. // related UMA.
class AddToHomescreenInstaller { class AddToHomescreenInstaller {
...@@ -53,4 +55,6 @@ class AddToHomescreenInstaller { ...@@ -53,4 +55,6 @@ class AddToHomescreenInstaller {
AddToHomescreenInstaller& operator=(const AddToHomescreenInstaller&) = delete; AddToHomescreenInstaller& operator=(const AddToHomescreenInstaller&) = delete;
}; };
} // namespace webapps
#endif // CHROME_BROWSER_ANDROID_WEBAPPS_ADD_TO_HOMESCREEN_INSTALLER_H_ #endif // CHROME_BROWSER_ANDROID_WEBAPPS_ADD_TO_HOMESCREEN_INSTALLER_H_
...@@ -25,6 +25,8 @@ ...@@ -25,6 +25,8 @@
using base::android::JavaParamRef; using base::android::JavaParamRef;
using base::android::ScopedJavaLocalRef; using base::android::ScopedJavaLocalRef;
namespace webapps {
namespace { namespace {
// The length of time to allow the add to homescreen data fetcher to run before // The length of time to allow the add to homescreen data fetcher to run before
...@@ -57,7 +59,7 @@ AddToHomescreenMediator::AddToHomescreenMediator( ...@@ -57,7 +59,7 @@ AddToHomescreenMediator::AddToHomescreenMediator(
} }
void AddToHomescreenMediator::StartForAppBanner( void AddToHomescreenMediator::StartForAppBanner(
base::WeakPtr<webapps::AppBannerManager> weak_manager, base::WeakPtr<AppBannerManager> weak_manager,
std::unique_ptr<AddToHomescreenParams> params, std::unique_ptr<AddToHomescreenParams> params,
base::RepeatingCallback<void(AddToHomescreenInstaller::Event, base::RepeatingCallback<void(AddToHomescreenInstaller::Event,
const AddToHomescreenParams&)> const AddToHomescreenParams&)>
...@@ -169,19 +171,18 @@ void AddToHomescreenMediator::OnUserTitleAvailable( ...@@ -169,19 +171,18 @@ void AddToHomescreenMediator::OnUserTitleAvailable(
SetWebAppInfo(user_title, url, is_webapk_compatible); SetWebAppInfo(user_title, url, is_webapk_compatible);
} }
void AddToHomescreenMediator::OnDataAvailable(const webapps::ShortcutInfo& info, void AddToHomescreenMediator::OnDataAvailable(const ShortcutInfo& info,
const SkBitmap& display_icon) { const SkBitmap& display_icon) {
params_ = std::make_unique<AddToHomescreenParams>(); params_ = std::make_unique<AddToHomescreenParams>();
params_->app_type = params_->app_type = info.source == ShortcutInfo::SOURCE_ADD_TO_HOMESCREEN_PWA
info.source == webapps::ShortcutInfo::SOURCE_ADD_TO_HOMESCREEN_PWA ? AddToHomescreenParams::AppType::WEBAPK
? AddToHomescreenParams::AppType::WEBAPK : AddToHomescreenParams::AppType::SHORTCUT;
: AddToHomescreenParams::AppType::SHORTCUT; params_->shortcut_info = std::make_unique<ShortcutInfo>(info);
params_->shortcut_info = std::make_unique<webapps::ShortcutInfo>(info);
params_->primary_icon = data_fetcher_->primary_icon(); params_->primary_icon = data_fetcher_->primary_icon();
params_->has_maskable_primary_icon = params_->has_maskable_primary_icon =
data_fetcher_->has_maskable_primary_icon(); data_fetcher_->has_maskable_primary_icon();
params_->install_source = webapps::InstallableMetrics::GetInstallSource( params_->install_source = InstallableMetrics::GetInstallSource(
data_fetcher_->web_contents(), webapps::InstallTrigger::MENU); data_fetcher_->web_contents(), InstallTrigger::MENU);
// AddToHomescreenMediator::OnDataAvailable() is called in the code path // AddToHomescreenMediator::OnDataAvailable() is called in the code path
// to show A2HS dialog from app menu. In this code path, display_icon is // to show A2HS dialog from app menu. In this code path, display_icon is
...@@ -194,17 +195,17 @@ void AddToHomescreenMediator::OnDataAvailable(const webapps::ShortcutInfo& info, ...@@ -194,17 +195,17 @@ void AddToHomescreenMediator::OnDataAvailable(const webapps::ShortcutInfo& info,
DCHECK_NE(-1, title_id_); DCHECK_NE(-1, title_id_);
switch (title_id_) { switch (title_id_) {
case webapps::AppBannerSettingsHelper::APP_MENU_OPTION_UNKNOWN: { case AppBannerSettingsHelper::APP_MENU_OPTION_UNKNOWN: {
entry = is_webapk ? AppTypeToMenuEntry::kUnknownMenuEntryForWebApp entry = is_webapk ? AppTypeToMenuEntry::kUnknownMenuEntryForWebApp
: AppTypeToMenuEntry::kUnknownMenuEntryForShortcut; : AppTypeToMenuEntry::kUnknownMenuEntryForShortcut;
break; break;
} }
case webapps::AppBannerSettingsHelper::APP_MENU_OPTION_ADD_TO_HOMESCREEN: { case AppBannerSettingsHelper::APP_MENU_OPTION_ADD_TO_HOMESCREEN: {
entry = is_webapk ? AppTypeToMenuEntry::kAddToHomeScreenShownForWebApp entry = is_webapk ? AppTypeToMenuEntry::kAddToHomeScreenShownForWebApp
: AppTypeToMenuEntry::kAddToHomeScreenShownForShortcut; : AppTypeToMenuEntry::kAddToHomeScreenShownForShortcut;
break; break;
} }
case webapps::AppBannerSettingsHelper::APP_MENU_OPTION_INSTALL: { case AppBannerSettingsHelper::APP_MENU_OPTION_INSTALL: {
entry = is_webapk ? AppTypeToMenuEntry::kInstallShownForWebApp entry = is_webapk ? AppTypeToMenuEntry::kInstallShownForWebApp
: AppTypeToMenuEntry::kInstallShownForShortcut; : AppTypeToMenuEntry::kInstallShownForShortcut;
break; break;
...@@ -229,16 +230,15 @@ void AddToHomescreenMediator::RecordEventForAppMenu( ...@@ -229,16 +230,15 @@ void AddToHomescreenMediator::RecordEventForAppMenu(
DCHECK_NE(a2hs_params.app_type, AddToHomescreenParams::AppType::NATIVE); DCHECK_NE(a2hs_params.app_type, AddToHomescreenParams::AppType::NATIVE);
switch (event) { switch (event) {
case AddToHomescreenInstaller::Event::INSTALL_STARTED: case AddToHomescreenInstaller::Event::INSTALL_STARTED:
webapps::AppBannerSettingsHelper::RecordBannerEvent( AppBannerSettingsHelper::RecordBannerEvent(
web_contents, web_contents->GetVisibleURL(), web_contents, web_contents->GetVisibleURL(),
a2hs_params.shortcut_info->url.spec(), a2hs_params.shortcut_info->url.spec(),
webapps::AppBannerSettingsHelper:: AppBannerSettingsHelper::APP_BANNER_EVENT_DID_ADD_TO_HOMESCREEN,
APP_BANNER_EVENT_DID_ADD_TO_HOMESCREEN,
base::Time::Now()); base::Time::Now());
break; break;
case AddToHomescreenInstaller::Event::INSTALL_REQUEST_FINISHED: { case AddToHomescreenInstaller::Event::INSTALL_REQUEST_FINISHED: {
webapps::AppBannerManagerAndroid* app_banner_manager = AppBannerManagerAndroid* app_banner_manager =
webapps::AppBannerManagerAndroid::FromWebContents(web_contents); AppBannerManagerAndroid::FromWebContents(web_contents);
// Fire the appinstalled event and do install time logging. // Fire the appinstalled event and do install time logging.
if (app_banner_manager) if (app_banner_manager)
app_banner_manager->OnInstall(a2hs_params.shortcut_info->display); app_banner_manager->OnInstall(a2hs_params.shortcut_info->display);
...@@ -258,3 +258,5 @@ content::WebContents* AddToHomescreenMediator::GetWebContents() { ...@@ -258,3 +258,5 @@ content::WebContents* AddToHomescreenMediator::GetWebContents() {
return nullptr; return nullptr;
} }
} // namespace webapps
...@@ -23,9 +23,8 @@ class WebContents; ...@@ -23,9 +23,8 @@ class WebContents;
} }
namespace webapps { namespace webapps {
struct ShortcutInfo;
}
struct ShortcutInfo;
class AddToHomescreenInstaller; class AddToHomescreenInstaller;
// AddToHomescreenMediator is the C++ counterpart of // AddToHomescreenMediator is the C++ counterpart of
...@@ -41,7 +40,7 @@ class AddToHomescreenMediator : public AddToHomescreenDataFetcher::Observer { ...@@ -41,7 +40,7 @@ class AddToHomescreenMediator : public AddToHomescreenDataFetcher::Observer {
const base::android::JavaParamRef<jobject>& java_ref); const base::android::JavaParamRef<jobject>& java_ref);
void StartForAppBanner( void StartForAppBanner(
base::WeakPtr<webapps::AppBannerManager> weak_manager, base::WeakPtr<AppBannerManager> weak_manager,
std::unique_ptr<AddToHomescreenParams> params, std::unique_ptr<AddToHomescreenParams> params,
base::RepeatingCallback<void(AddToHomescreenInstaller::Event, base::RepeatingCallback<void(AddToHomescreenInstaller::Event,
const AddToHomescreenParams&)> const AddToHomescreenParams&)>
...@@ -84,7 +83,7 @@ class AddToHomescreenMediator : public AddToHomescreenDataFetcher::Observer { ...@@ -84,7 +83,7 @@ class AddToHomescreenMediator : public AddToHomescreenDataFetcher::Observer {
const GURL& url, const GURL& url,
bool is_webapk_compatible) override; bool is_webapk_compatible) override;
void OnDataAvailable(const webapps::ShortcutInfo& info, void OnDataAvailable(const ShortcutInfo& info,
const SkBitmap& display_icon) override; const SkBitmap& display_icon) override;
void RecordEventForAppMenu(AddToHomescreenInstaller::Event event, void RecordEventForAppMenu(AddToHomescreenInstaller::Event event,
...@@ -95,7 +94,7 @@ class AddToHomescreenMediator : public AddToHomescreenDataFetcher::Observer { ...@@ -95,7 +94,7 @@ class AddToHomescreenMediator : public AddToHomescreenDataFetcher::Observer {
// Points to the Java reference. // Points to the Java reference.
base::android::ScopedJavaGlobalRef<jobject> java_ref_; base::android::ScopedJavaGlobalRef<jobject> java_ref_;
base::WeakPtr<webapps::AppBannerManager> weak_app_banner_manager_; base::WeakPtr<AppBannerManager> weak_app_banner_manager_;
// Fetches data required to add a shortcut. // Fetches data required to add a shortcut.
std::unique_ptr<AddToHomescreenDataFetcher> data_fetcher_; std::unique_ptr<AddToHomescreenDataFetcher> data_fetcher_;
...@@ -112,4 +111,6 @@ class AddToHomescreenMediator : public AddToHomescreenDataFetcher::Observer { ...@@ -112,4 +111,6 @@ class AddToHomescreenMediator : public AddToHomescreenDataFetcher::Observer {
AddToHomescreenMediator& operator=(const AddToHomescreenMediator&) = delete; AddToHomescreenMediator& operator=(const AddToHomescreenMediator&) = delete;
}; };
} // namespace webapps
#endif // CHROME_BROWSER_ANDROID_WEBAPPS_ADD_TO_HOMESCREEN_MEDIATOR_H_ #endif // CHROME_BROWSER_ANDROID_WEBAPPS_ADD_TO_HOMESCREEN_MEDIATOR_H_
...@@ -6,5 +6,9 @@ ...@@ -6,5 +6,9 @@
#include "components/webapps/android/shortcut_info.h" #include "components/webapps/android/shortcut_info.h"
namespace webapps {
AddToHomescreenParams::AddToHomescreenParams() = default; AddToHomescreenParams::AddToHomescreenParams() = default;
AddToHomescreenParams::~AddToHomescreenParams() = default; AddToHomescreenParams::~AddToHomescreenParams() = default;
} // namespace webapps
...@@ -13,8 +13,8 @@ ...@@ -13,8 +13,8 @@
#include "third_party/skia/include/core/SkBitmap.h" #include "third_party/skia/include/core/SkBitmap.h"
namespace webapps { namespace webapps {
struct ShortcutInfo; struct ShortcutInfo;
}
struct AddToHomescreenParams { struct AddToHomescreenParams {
// A Java counterpart will be generated for this enum. // A Java counterpart will be generated for this enum.
...@@ -29,8 +29,8 @@ struct AddToHomescreenParams { ...@@ -29,8 +29,8 @@ struct AddToHomescreenParams {
AppType app_type; AppType app_type;
SkBitmap primary_icon; SkBitmap primary_icon;
bool has_maskable_primary_icon = false; bool has_maskable_primary_icon = false;
std::unique_ptr<webapps::ShortcutInfo> shortcut_info; std::unique_ptr<ShortcutInfo> shortcut_info;
webapps::WebappInstallSource install_source; WebappInstallSource install_source;
std::string native_app_package_name; std::string native_app_package_name;
base::android::ScopedJavaGlobalRef<jobject> native_app_data; base::android::ScopedJavaGlobalRef<jobject> native_app_data;
...@@ -38,4 +38,6 @@ struct AddToHomescreenParams { ...@@ -38,4 +38,6 @@ struct AddToHomescreenParams {
~AddToHomescreenParams(); ~AddToHomescreenParams();
}; };
} // namespace webapps
#endif // CHROME_BROWSER_ANDROID_WEBAPPS_ADD_TO_HOMESCREEN_PARAMS_H_ #endif // CHROME_BROWSER_ANDROID_WEBAPPS_ADD_TO_HOMESCREEN_PARAMS_H_
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment